--[[

This Isaac mod was created with the IsaacScript tool.

The Lua code in this file is not actually the source code for the program. Rather, it was
automatically generated from higher-level TypeScript code, and might be hard to read. If you want to
understand how the code in this mod works, you should read the actual TypeScript source code
directly instead of trying to read this file. Usually, the link to the source code can be found in
the mod's description on the Steam Workshop. If not, you can ask the mod author directly if the
source code is publicly available.

IsaacScript provides a lot of advantages over using raw Lua. For more information about the tool,
see the official website: https://isaacscript.github.io/

--]]

---@diagnostic disable: deprecated


local ____modules = {}
local ____moduleCache = {}
local ____originalRequire = require
local function require(file, ...)
    if ____moduleCache[file] then
        return ____moduleCache[file].value
    end
    if ____modules[file] then
        local module = ____modules[file]
        ____moduleCache[file] = { value = (select("#", ...) > 0) and module(...) or module(file) }
        return ____moduleCache[file].value
    else
        if ____originalRequire then
            return ____originalRequire(file)
        else
            error("module '" .. file .. "' not found")
        end
    end
end
____modules = {
["lualib_bundle"] = function(...) 
local function __TS__ArrayIsArray(value)
    return type(value) == "table" and (value[1] ~= nil or next(value) == nil)
end

local function __TS__ArrayConcat(self, ...)
    local items = {...}
    local result = {}
    local len = 0
    for i = 1, #self do
        len = len + 1
        result[len] = self[i]
    end
    for i = 1, #items do
        local item = items[i]
        if __TS__ArrayIsArray(item) then
            for j = 1, #item do
                len = len + 1
                result[len] = item[j]
            end
        else
            len = len + 1
            result[len] = item
        end
    end
    return result
end

local __TS__Symbol, Symbol
do
    local symbolMetatable = {__tostring = function(self)
        return ("Symbol(" .. (self.description or "")) .. ")"
    end}
    function __TS__Symbol(description)
        return setmetatable({description = description}, symbolMetatable)
    end
    Symbol = {
        iterator = __TS__Symbol("Symbol.iterator"),
        hasInstance = __TS__Symbol("Symbol.hasInstance"),
        species = __TS__Symbol("Symbol.species"),
        toStringTag = __TS__Symbol("Symbol.toStringTag")
    }
end

local function __TS__ArrayEntries(array)
    local key = 0
    return {
        [Symbol.iterator] = function(self)
            return self
        end,
        next = function(self)
            local result = {done = array[key + 1] == nil, value = {key, array[key + 1]}}
            key = key + 1
            return result
        end
    }
end

local function __TS__ArrayEvery(self, callbackfn, thisArg)
    for i = 1, #self do
        if not callbackfn(thisArg, self[i], i - 1, self) then
            return false
        end
    end
    return true
end

local function __TS__ArrayFilter(self, callbackfn, thisArg)
    local result = {}
    local len = 0
    for i = 1, #self do
        if callbackfn(thisArg, self[i], i - 1, self) then
            len = len + 1
            result[len] = self[i]
        end
    end
    return result
end

local function __TS__ArrayForEach(self, callbackFn, thisArg)
    for i = 1, #self do
        callbackFn(thisArg, self[i], i - 1, self)
    end
end

local function __TS__ArrayFind(self, predicate, thisArg)
    for i = 1, #self do
        local elem = self[i]
        if predicate(thisArg, elem, i - 1, self) then
            return elem
        end
    end
    return nil
end

local function __TS__ArrayFindIndex(self, callbackFn, thisArg)
    for i = 1, #self do
        if callbackFn(thisArg, self[i], i - 1, self) then
            return i - 1
        end
    end
    return -1
end

local __TS__Iterator
do
    local function iteratorGeneratorStep(self)
        local co = self.____coroutine
        local status, value = coroutine.resume(co)
        if not status then
            error(value, 0)
        end
        if coroutine.status(co) == "dead" then
            return
        end
        return true, value
    end
    local function iteratorIteratorStep(self)
        local result = self:next()
        if result.done then
            return
        end
        return true, result.value
    end
    local function iteratorStringStep(self, index)
        index = index + 1
        if index > #self then
            return
        end
        return index, string.sub(self, index, index)
    end
    function __TS__Iterator(iterable)
        if type(iterable) == "string" then
            return iteratorStringStep, iterable, 0
        elseif iterable.____coroutine ~= nil then
            return iteratorGeneratorStep, iterable
        elseif iterable[Symbol.iterator] then
            local iterator = iterable[Symbol.iterator](iterable)
            return iteratorIteratorStep, iterator
        else
            return ipairs(iterable)
        end
    end
end

local __TS__ArrayFrom
do
    local function arrayLikeStep(self, index)
        index = index + 1
        if index > self.length then
            return
        end
        return index, self[index]
    end
    local function arrayLikeIterator(arr)
        if type(arr.length) == "number" then
            return arrayLikeStep, arr, 0
        end
        return __TS__Iterator(arr)
    end
    function __TS__ArrayFrom(arrayLike, mapFn, thisArg)
        local result = {}
        if mapFn == nil then
            for ____, v in arrayLikeIterator(arrayLike) do
                result[#result + 1] = v
            end
        else
            for i, v in arrayLikeIterator(arrayLike) do
                result[#result + 1] = mapFn(thisArg, v, i - 1)
            end
        end
        return result
    end
end

local function __TS__ArrayIncludes(self, searchElement, fromIndex)
    if fromIndex == nil then
        fromIndex = 0
    end
    local len = #self
    local k = fromIndex
    if fromIndex < 0 then
        k = len + fromIndex
    end
    if k < 0 then
        k = 0
    end
    for i = k + 1, len do
        if self[i] == searchElement then
            return true
        end
    end
    return false
end

local function __TS__ArrayIndexOf(self, searchElement, fromIndex)
    if fromIndex == nil then
        fromIndex = 0
    end
    local len = #self
    if len == 0 then
        return -1
    end
    if fromIndex >= len then
        return -1
    end
    if fromIndex < 0 then
        fromIndex = len + fromIndex
        if fromIndex < 0 then
            fromIndex = 0
        end
    end
    for i = fromIndex + 1, len do
        if self[i] == searchElement then
            return i - 1
        end
    end
    return -1
end

local function __TS__ArrayJoin(self, separator)
    if separator == nil then
        separator = ","
    end
    local parts = {}
    for i = 1, #self do
        parts[i] = tostring(self[i])
    end
    return table.concat(parts, separator)
end

local function __TS__ArrayMap(self, callbackfn, thisArg)
    local result = {}
    for i = 1, #self do
        result[i] = callbackfn(thisArg, self[i], i - 1, self)
    end
    return result
end

local function __TS__ArrayPush(self, ...)
    local items = {...}
    local len = #self
    for i = 1, #items do
        len = len + 1
        self[len] = items[i]
    end
    return len
end

local function __TS__ArrayPushArray(self, items)
    local len = #self
    for i = 1, #items do
        len = len + 1
        self[len] = items[i]
    end
    return len
end

local function __TS__CountVarargs(...)
    return select("#", ...)
end

local function __TS__ArrayReduce(self, callbackFn, ...)
    local len = #self
    local k = 0
    local accumulator = nil
    if __TS__CountVarargs(...) ~= 0 then
        accumulator = ...
    elseif len > 0 then
        accumulator = self[1]
        k = 1
    else
        error("Reduce of empty array with no initial value", 0)
    end
    for i = k + 1, len do
        accumulator = callbackFn(
            nil,
            accumulator,
            self[i],
            i - 1,
            self
        )
    end
    return accumulator
end

local function __TS__ArrayReduceRight(self, callbackFn, ...)
    local len = #self
    local k = len - 1
    local accumulator = nil
    if __TS__CountVarargs(...) ~= 0 then
        accumulator = ...
    elseif len > 0 then
        accumulator = self[k + 1]
        k = k - 1
    else
        error("Reduce of empty array with no initial value", 0)
    end
    for i = k + 1, 1, -1 do
        accumulator = callbackFn(
            nil,
            accumulator,
            self[i],
            i - 1,
            self
        )
    end
    return accumulator
end

local function __TS__ArrayReverse(self)
    local i = 1
    local j = #self
    while i < j do
        local temp = self[j]
        self[j] = self[i]
        self[i] = temp
        i = i + 1
        j = j - 1
    end
    return self
end

local function __TS__ArrayUnshift(self, ...)
    local items = {...}
    local numItemsToInsert = #items
    if numItemsToInsert == 0 then
        return #self
    end
    for i = #self, 1, -1 do
        self[i + numItemsToInsert] = self[i]
    end
    for i = 1, numItemsToInsert do
        self[i] = items[i]
    end
    return #self
end

local function __TS__ArraySort(self, compareFn)
    if compareFn ~= nil then
        table.sort(
            self,
            function(a, b) return compareFn(nil, a, b) < 0 end
        )
    else
        table.sort(self)
    end
    return self
end

local function __TS__ArraySlice(self, first, last)
    local len = #self
    local ____first_0 = first
    if ____first_0 == nil then
        ____first_0 = 0
    end
    first = ____first_0
    if first < 0 then
        first = len + first
        if first < 0 then
            first = 0
        end
    else
        if first > len then
            first = len
        end
    end
    local ____last_1 = last
    if ____last_1 == nil then
        ____last_1 = len
    end
    last = ____last_1
    if last < 0 then
        last = len + last
        if last < 0 then
            last = 0
        end
    else
        if last > len then
            last = len
        end
    end
    local out = {}
    first = first + 1
    last = last + 1
    local n = 1
    while first < last do
        out[n] = self[first]
        first = first + 1
        n = n + 1
    end
    return out
end

local function __TS__ArraySome(self, callbackfn, thisArg)
    for i = 1, #self do
        if callbackfn(thisArg, self[i], i - 1, self) then
            return true
        end
    end
    return false
end

local function __TS__ArraySplice(self, ...)
    local args = {...}
    local len = #self
    local actualArgumentCount = __TS__CountVarargs(...)
    local start = args[1]
    local deleteCount = args[2]
    if start < 0 then
        start = len + start
        if start < 0 then
            start = 0
        end
    elseif start > len then
        start = len
    end
    local itemCount = actualArgumentCount - 2
    if itemCount < 0 then
        itemCount = 0
    end
    local actualDeleteCount
    if actualArgumentCount == 0 then
        actualDeleteCount = 0
    elseif actualArgumentCount == 1 then
        actualDeleteCount = len - start
    else
        local ____deleteCount_0 = deleteCount
        if ____deleteCount_0 == nil then
            ____deleteCount_0 = 0
        end
        actualDeleteCount = ____deleteCount_0
        if actualDeleteCount < 0 then
            actualDeleteCount = 0
        end
        if actualDeleteCount > len - start then
            actualDeleteCount = len - start
        end
    end
    local out = {}
    for k = 1, actualDeleteCount do
        local from = start + k
        if self[from] ~= nil then
            out[k] = self[from]
        end
    end
    if itemCount < actualDeleteCount then
        for k = start + 1, len - actualDeleteCount do
            local from = k + actualDeleteCount
            local to = k + itemCount
            if self[from] then
                self[to] = self[from]
            else
                self[to] = nil
            end
        end
        for k = len - actualDeleteCount + itemCount + 1, len do
            self[k] = nil
        end
    elseif itemCount > actualDeleteCount then
        for k = len - actualDeleteCount, start + 1, -1 do
            local from = k + actualDeleteCount
            local to = k + itemCount
            if self[from] then
                self[to] = self[from]
            else
                self[to] = nil
            end
        end
    end
    local j = start + 1
    for i = 3, actualArgumentCount do
        self[j] = args[i]
        j = j + 1
    end
    for k = #self, len - actualDeleteCount + itemCount + 1, -1 do
        self[k] = nil
    end
    return out
end

local function __TS__ArrayToObject(self)
    local object = {}
    for i = 1, #self do
        object[i - 1] = self[i]
    end
    return object
end

local function __TS__ArrayFlat(self, depth)
    if depth == nil then
        depth = 1
    end
    local result = {}
    local len = 0
    for i = 1, #self do
        local value = self[i]
        if depth > 0 and __TS__ArrayIsArray(value) then
            local toAdd
            if depth == 1 then
                toAdd = value
            else
                toAdd = __TS__ArrayFlat(value, depth - 1)
            end
            for j = 1, #toAdd do
                local val = toAdd[j]
                len = len + 1
                result[len] = val
            end
        else
            len = len + 1
            result[len] = value
        end
    end
    return result
end

local function __TS__ArrayFlatMap(self, callback, thisArg)
    local result = {}
    local len = 0
    for i = 1, #self do
        local value = callback(thisArg, self[i], i - 1, self)
        if __TS__ArrayIsArray(value) then
            for j = 1, #value do
                len = len + 1
                result[len] = value[j]
            end
        else
            len = len + 1
            result[len] = value
        end
    end
    return result
end

local function __TS__ArraySetLength(self, length)
    if length < 0 or length ~= length or length == math.huge or math.floor(length) ~= length then
        error(
            "invalid array length: " .. tostring(length),
            0
        )
    end
    for i = length + 1, #self do
        self[i] = nil
    end
    return length
end

local function __TS__InstanceOf(obj, classTbl)
    if type(classTbl) ~= "table" then
        error("Right-hand side of 'instanceof' is not an object", 0)
    end
    if classTbl[Symbol.hasInstance] ~= nil then
        return not not classTbl[Symbol.hasInstance](classTbl, obj)
    end
    if type(obj) == "table" then
        local luaClass = obj.constructor
        while luaClass ~= nil do
            if luaClass == classTbl then
                return true
            end
            luaClass = luaClass.____super
        end
    end
    return false
end

local function __TS__New(target, ...)
    local instance = setmetatable({}, target.prototype)
    instance:____constructor(...)
    return instance
end

local function __TS__Class(self)
    local c = {prototype = {}}
    c.prototype.__index = c.prototype
    c.prototype.constructor = c
    return c
end

local __TS__Unpack = table.unpack or unpack

local function __TS__FunctionBind(fn, ...)
    local boundArgs = {...}
    return function(____, ...)
        local args = {...}
        __TS__ArrayUnshift(
            args,
            __TS__Unpack(boundArgs)
        )
        return fn(__TS__Unpack(args))
    end
end

local __TS__Promise
do
    local function promiseDeferred(self)
        local resolve
        local reject
        local promise = __TS__New(
            __TS__Promise,
            function(____, res, rej)
                resolve = res
                reject = rej
            end
        )
        return {promise = promise, resolve = resolve, reject = reject}
    end
    local function isPromiseLike(self, thing)
        return __TS__InstanceOf(thing, __TS__Promise)
    end
    __TS__Promise = __TS__Class()
    __TS__Promise.name = "__TS__Promise"
    function __TS__Promise.prototype.____constructor(self, executor)
        self.state = 0
        self.fulfilledCallbacks = {}
        self.rejectedCallbacks = {}
        self.finallyCallbacks = {}
        do
            local function ____catch(e)
                self:reject(e)
            end
            local ____try, ____hasReturned = pcall(function()
                executor(
                    nil,
                    __TS__FunctionBind(self.resolve, self),
                    __TS__FunctionBind(self.reject, self)
                )
            end)
            if not ____try then
                ____catch(____hasReturned)
            end
        end
    end
    function __TS__Promise.resolve(data)
        local promise = __TS__New(
            __TS__Promise,
            function()
            end
        )
        promise.state = 1
        promise.value = data
        return promise
    end
    function __TS__Promise.reject(reason)
        local promise = __TS__New(
            __TS__Promise,
            function()
            end
        )
        promise.state = 2
        promise.rejectionReason = reason
        return promise
    end
    __TS__Promise.prototype["then"] = function(self, onFulfilled, onRejected)
        local ____promiseDeferred_result_0 = promiseDeferred(nil)
        local promise = ____promiseDeferred_result_0.promise
        local resolve = ____promiseDeferred_result_0.resolve
        local reject = ____promiseDeferred_result_0.reject
        local isFulfilled = self.state == 1
        local isRejected = self.state == 2
        if onFulfilled then
            local internalCallback = self:createPromiseResolvingCallback(onFulfilled, resolve, reject)
            local ____self_fulfilledCallbacks_1 = self.fulfilledCallbacks
            ____self_fulfilledCallbacks_1[#____self_fulfilledCallbacks_1 + 1] = internalCallback
            if isFulfilled then
                internalCallback(nil, self.value)
            end
        else
            local ____self_fulfilledCallbacks_2 = self.fulfilledCallbacks
            ____self_fulfilledCallbacks_2[#____self_fulfilledCallbacks_2 + 1] = function(____, v) return resolve(nil, v) end
        end
        if onRejected then
            local internalCallback = self:createPromiseResolvingCallback(onRejected, resolve, reject)
            local ____self_rejectedCallbacks_3 = self.rejectedCallbacks
            ____self_rejectedCallbacks_3[#____self_rejectedCallbacks_3 + 1] = internalCallback
            if isRejected then
                internalCallback(nil, self.rejectionReason)
            end
        else
            local ____self_rejectedCallbacks_4 = self.rejectedCallbacks
            ____self_rejectedCallbacks_4[#____self_rejectedCallbacks_4 + 1] = function(____, err) return reject(nil, err) end
        end
        if isFulfilled then
            resolve(nil, self.value)
        end
        if isRejected then
            reject(nil, self.rejectionReason)
        end
        return promise
    end
    function __TS__Promise.prototype.catch(self, onRejected)
        return self["then"](self, nil, onRejected)
    end
    function __TS__Promise.prototype.finally(self, onFinally)
        if onFinally then
            local ____self_finallyCallbacks_5 = self.finallyCallbacks
            ____self_finallyCallbacks_5[#____self_finallyCallbacks_5 + 1] = onFinally
            if self.state ~= 0 then
                onFinally(nil)
            end
        end
        return self
    end
    function __TS__Promise.prototype.resolve(self, data)
        if __TS__InstanceOf(data, __TS__Promise) then
            data["then"](
                data,
                function(____, v) return self:resolve(v) end,
                function(____, err) return self:reject(err) end
            )
            return
        end
        if self.state == 0 then
            self.state = 1
            self.value = data
            for ____, callback in ipairs(self.fulfilledCallbacks) do
                callback(nil, data)
            end
            for ____, callback in ipairs(self.finallyCallbacks) do
                callback(nil)
            end
        end
    end
    function __TS__Promise.prototype.reject(self, reason)
        if self.state == 0 then
            self.state = 2
            self.rejectionReason = reason
            for ____, callback in ipairs(self.rejectedCallbacks) do
                callback(nil, reason)
            end
            for ____, callback in ipairs(self.finallyCallbacks) do
                callback(nil)
            end
        end
    end
    function __TS__Promise.prototype.createPromiseResolvingCallback(self, f, resolve, reject)
        return function(____, value)
            do
                local function ____catch(e)
                    reject(nil, e)
                end
                local ____try, ____hasReturned = pcall(function()
                    self:handleCallbackData(
                        f(nil, value),
                        resolve,
                        reject
                    )
                end)
                if not ____try then
                    ____catch(____hasReturned)
                end
            end
        end
    end
    function __TS__Promise.prototype.handleCallbackData(self, data, resolve, reject)
        if isPromiseLike(nil, data) then
            local nextpromise = data
            if nextpromise.state == 1 then
                resolve(nil, nextpromise.value)
            elseif nextpromise.state == 2 then
                reject(nil, nextpromise.rejectionReason)
            else
                data["then"](data, resolve, reject)
            end
        else
            resolve(nil, data)
        end
    end
end

local function __TS__AsyncAwaiter(generator)
    return __TS__New(
        __TS__Promise,
        function(____, resolve, reject)
            local adopt, fulfilled, step, resolved, asyncCoroutine
            function adopt(self, value)
                local ____temp_0
                if __TS__InstanceOf(value, __TS__Promise) then
                    ____temp_0 = value
                else
                    ____temp_0 = __TS__Promise.resolve(value)
                end
                return ____temp_0
            end
            function fulfilled(self, value)
                local success, resultOrError = coroutine.resume(asyncCoroutine, value)
                if success then
                    step(nil, resultOrError)
                else
                    reject(nil, resultOrError)
                end
            end
            function step(self, result)
                if resolved then
                    return
                end
                if coroutine.status(asyncCoroutine) == "dead" then
                    resolve(nil, result)
                else
                    local ____self_1 = adopt(nil, result)
                    ____self_1["then"](____self_1, fulfilled, reject)
                end
            end
            resolved = false
            asyncCoroutine = coroutine.create(generator)
            local success, resultOrError = coroutine.resume(
                asyncCoroutine,
                function(____, v)
                    resolved = true
                    local ____self_2 = adopt(nil, v)
                    ____self_2["then"](____self_2, resolve, reject)
                end
            )
            if success then
                step(nil, resultOrError)
            else
                reject(nil, resultOrError)
            end
        end
    )
end
local function __TS__Await(thing)
    return coroutine.yield(thing)
end

local function __TS__ClassExtends(target, base)
    target.____super = base
    local staticMetatable = setmetatable({__index = base}, base)
    setmetatable(target, staticMetatable)
    local baseMetatable = getmetatable(base)
    if baseMetatable then
        if type(baseMetatable.__index) == "function" then
            staticMetatable.__index = baseMetatable.__index
        end
        if type(baseMetatable.__newindex) == "function" then
            staticMetatable.__newindex = baseMetatable.__newindex
        end
    end
    setmetatable(target.prototype, base.prototype)
    if type(base.prototype.__index) == "function" then
        target.prototype.__index = base.prototype.__index
    end
    if type(base.prototype.__newindex) == "function" then
        target.prototype.__newindex = base.prototype.__newindex
    end
    if type(base.prototype.__tostring) == "function" then
        target.prototype.__tostring = base.prototype.__tostring
    end
end

local function __TS__CloneDescriptor(____bindingPattern0)
    local value
    local writable
    local set
    local get
    local configurable
    local enumerable
    enumerable = ____bindingPattern0.enumerable
    configurable = ____bindingPattern0.configurable
    get = ____bindingPattern0.get
    set = ____bindingPattern0.set
    writable = ____bindingPattern0.writable
    value = ____bindingPattern0.value
    local descriptor = {enumerable = enumerable == true, configurable = configurable == true}
    local hasGetterOrSetter = get ~= nil or set ~= nil
    local hasValueOrWritableAttribute = writable ~= nil or value ~= nil
    if hasGetterOrSetter and hasValueOrWritableAttribute then
        error("Invalid property descriptor. Cannot both specify accessors and a value or writable attribute.", 0)
    end
    if get or set then
        descriptor.get = get
        descriptor.set = set
    else
        descriptor.value = value
        descriptor.writable = writable == true
    end
    return descriptor
end

local function __TS__ObjectAssign(target, ...)
    local sources = {...}
    for i = 1, #sources do
        local source = sources[i]
        for key in pairs(source) do
            target[key] = source[key]
        end
    end
    return target
end

local function __TS__ObjectGetOwnPropertyDescriptor(object, key)
    local metatable = getmetatable(object)
    if not metatable then
        return
    end
    if not rawget(metatable, "_descriptors") then
        return
    end
    return rawget(metatable, "_descriptors")[key]
end

local __TS__SetDescriptor
do
    local function descriptorIndex(self, key)
        local value = rawget(self, key)
        if value ~= nil then
            return value
        end
        local metatable = getmetatable(self)
        while metatable do
            local rawResult = rawget(metatable, key)
            if rawResult ~= nil then
                return rawResult
            end
            local descriptors = rawget(metatable, "_descriptors")
            if descriptors then
                local descriptor = descriptors[key]
                if descriptor then
                    if descriptor.get then
                        return descriptor.get(self)
                    end
                    return descriptor.value
                end
            end
            metatable = getmetatable(metatable)
        end
    end
    local function descriptorNewIndex(self, key, value)
        local metatable = getmetatable(self)
        while metatable do
            local descriptors = rawget(metatable, "_descriptors")
            if descriptors then
                local descriptor = descriptors[key]
                if descriptor then
                    if descriptor.set then
                        descriptor.set(self, value)
                    else
                        if descriptor.writable == false then
                            error(
                                ((("Cannot assign to read only property '" .. key) .. "' of object '") .. tostring(self)) .. "'",
                                0
                            )
                        end
                        descriptor.value = value
                    end
                    return
                end
            end
            metatable = getmetatable(metatable)
        end
        rawset(self, key, value)
    end
    function __TS__SetDescriptor(target, key, desc, isPrototype)
        if isPrototype == nil then
            isPrototype = false
        end
        local ____isPrototype_0
        if isPrototype then
            ____isPrototype_0 = target
        else
            ____isPrototype_0 = getmetatable(target)
        end
        local metatable = ____isPrototype_0
        if not metatable then
            metatable = {}
            setmetatable(target, metatable)
        end
        local value = rawget(target, key)
        if value ~= nil then
            rawset(target, key, nil)
        end
        if not rawget(metatable, "_descriptors") then
            metatable._descriptors = {}
        end
        local descriptor = __TS__CloneDescriptor(desc)
        metatable._descriptors[key] = descriptor
        metatable.__index = descriptorIndex
        metatable.__newindex = descriptorNewIndex
    end
end

local function __TS__Decorate(decorators, target, key, desc)
    local result = target
    do
        local i = #decorators
        while i >= 0 do
            local decorator = decorators[i + 1]
            if decorator then
                local oldResult = result
                if key == nil then
                    result = decorator(nil, result)
                elseif desc == true then
                    local value = rawget(target, key)
                    local descriptor = __TS__ObjectGetOwnPropertyDescriptor(target, key) or ({configurable = true, writable = true, value = value})
                    local desc = decorator(nil, target, key, descriptor) or descriptor
                    local isSimpleValue = desc.configurable == true and desc.writable == true and not desc.get and not desc.set
                    if isSimpleValue then
                        rawset(target, key, desc.value)
                    else
                        __TS__SetDescriptor(
                            target,
                            key,
                            __TS__ObjectAssign({}, descriptor, desc)
                        )
                    end
                elseif desc == false then
                    result = decorator(nil, target, key, desc)
                else
                    result = decorator(nil, target, key)
                end
                result = result or oldResult
            end
            i = i - 1
        end
    end
    return result
end

local function __TS__DecorateParam(paramIndex, decorator)
    return function(____, target, key) return decorator(nil, target, key, paramIndex) end
end

local function __TS__StringIncludes(self, searchString, position)
    if not position then
        position = 1
    else
        position = position + 1
    end
    local index = string.find(self, searchString, position, true)
    return index ~= nil
end

local Error, RangeError, ReferenceError, SyntaxError, TypeError, URIError
do
    local function getErrorStack(self, constructor)
        local level = 1
        while true do
            local info = debug.getinfo(level, "f")
            level = level + 1
            if not info then
                level = 1
                break
            elseif info.func == constructor then
                break
            end
        end
        if __TS__StringIncludes(_VERSION, "Lua 5.0") then
            return debug.traceback(("[Level " .. tostring(level)) .. "]")
        else
            return debug.traceback(nil, level)
        end
    end
    local function wrapErrorToString(self, getDescription)
        return function(self)
            local description = getDescription(self)
            local caller = debug.getinfo(3, "f")
            local isClassicLua = __TS__StringIncludes(_VERSION, "Lua 5.0") or _VERSION == "Lua 5.1"
            if isClassicLua or caller and caller.func ~= error then
                return description
            else
                return (tostring(description) .. "\n") .. self.stack
            end
        end
    end
    local function initErrorClass(self, Type, name)
        Type.name = name
        return setmetatable(
            Type,
            {__call = function(____, _self, message) return __TS__New(Type, message) end}
        )
    end
    local ____initErrorClass_2 = initErrorClass
    local ____class_0 = __TS__Class()
    ____class_0.name = ""
    function ____class_0.prototype.____constructor(self, message)
        if message == nil then
            message = ""
        end
        self.message = message
        self.name = "Error"
        self.stack = getErrorStack(nil, self.constructor.new)
        local metatable = getmetatable(self)
        if not metatable.__errorToStringPatched then
            metatable.__errorToStringPatched = true
            metatable.__tostring = wrapErrorToString(nil, metatable.__tostring)
        end
    end
    function ____class_0.prototype.__tostring(self)
        local ____temp_1
        if self.message ~= "" then
            ____temp_1 = (self.name .. ": ") .. self.message
        else
            ____temp_1 = self.name
        end
        return ____temp_1
    end
    Error = ____initErrorClass_2(nil, ____class_0, "Error")
    local function createErrorClass(self, name)
        local ____initErrorClass_4 = initErrorClass
        local ____class_3 = __TS__Class()
        ____class_3.name = ____class_3.name
        __TS__ClassExtends(____class_3, Error)
        function ____class_3.prototype.____constructor(self, ...)
            ____class_3.____super.prototype.____constructor(self, ...)
            self.name = name
        end
        return ____initErrorClass_4(nil, ____class_3, name)
    end
    RangeError = createErrorClass(nil, "RangeError")
    ReferenceError = createErrorClass(nil, "ReferenceError")
    SyntaxError = createErrorClass(nil, "SyntaxError")
    TypeError = createErrorClass(nil, "TypeError")
    URIError = createErrorClass(nil, "URIError")
end

local function __TS__ObjectGetOwnPropertyDescriptors(object)
    local metatable = getmetatable(object)
    if not metatable then
        return {}
    end
    return rawget(metatable, "_descriptors") or ({})
end

local function __TS__Delete(target, key)
    local descriptors = __TS__ObjectGetOwnPropertyDescriptors(target)
    local descriptor = descriptors[key]
    if descriptor then
        if not descriptor.configurable then
            error(
                __TS__New(
                    TypeError,
                    ((("Cannot delete property " .. tostring(key)) .. " of ") .. tostring(target)) .. "."
                ),
                0
            )
        end
        descriptors[key] = nil
        return true
    end
    target[key] = nil
    return true
end

local function __TS__StringAccess(self, index)
    if index >= 0 and index < #self then
        return string.sub(self, index + 1, index + 1)
    end
end

local function __TS__DelegatedYield(iterable)
    if type(iterable) == "string" then
        for index = 0, #iterable - 1 do
            coroutine.yield(__TS__StringAccess(iterable, index))
        end
    elseif iterable.____coroutine ~= nil then
        local co = iterable.____coroutine
        while true do
            local status, value = coroutine.resume(co)
            if not status then
                error(value, 0)
            end
            if coroutine.status(co) == "dead" then
                return value
            else
                coroutine.yield(value)
            end
        end
    elseif iterable[Symbol.iterator] then
        local iterator = iterable[Symbol.iterator](iterable)
        while true do
            local result = iterator:next()
            if result.done then
                return result.value
            else
                coroutine.yield(result.value)
            end
        end
    else
        for ____, value in ipairs(iterable) do
            coroutine.yield(value)
        end
    end
end

local __TS__Generator
do
    local function generatorIterator(self)
        return self
    end
    local function generatorNext(self, ...)
        local co = self.____coroutine
        if coroutine.status(co) == "dead" then
            return {done = true}
        end
        local status, value = coroutine.resume(co, ...)
        if not status then
            error(value, 0)
        end
        return {
            value = value,
            done = coroutine.status(co) == "dead"
        }
    end
    function __TS__Generator(fn)
        return function(...)
            local args = {...}
            local argsLength = __TS__CountVarargs(...)
            return {
                ____coroutine = coroutine.create(function() return fn(__TS__Unpack(args, 1, argsLength)) end),
                [Symbol.iterator] = generatorIterator,
                next = generatorNext
            }
        end
    end
end

local function __TS__InstanceOfObject(value)
    local valueType = type(value)
    return valueType == "table" or valueType == "function"
end

local function __TS__LuaIteratorSpread(self, state, firstKey)
    local results = {}
    local key, value = self(state, firstKey)
    while key do
        results[#results + 1] = {key, value}
        key, value = self(state, key)
    end
    return __TS__Unpack(results)
end

local Map
do
    Map = __TS__Class()
    Map.name = "Map"
    function Map.prototype.____constructor(self, entries)
        self[Symbol.toStringTag] = "Map"
        self.items = {}
        self.size = 0
        self.nextKey = {}
        self.previousKey = {}
        if entries == nil then
            return
        end
        local iterable = entries
        if iterable[Symbol.iterator] then
            local iterator = iterable[Symbol.iterator](iterable)
            while true do
                local result = iterator:next()
                if result.done then
                    break
                end
                local value = result.value
                self:set(value[1], value[2])
            end
        else
            local array = entries
            for ____, kvp in ipairs(array) do
                self:set(kvp[1], kvp[2])
            end
        end
    end
    function Map.prototype.clear(self)
        self.items = {}
        self.nextKey = {}
        self.previousKey = {}
        self.firstKey = nil
        self.lastKey = nil
        self.size = 0
    end
    function Map.prototype.delete(self, key)
        local contains = self:has(key)
        if contains then
            self.size = self.size - 1
            local next = self.nextKey[key]
            local previous = self.previousKey[key]
            if next and previous then
                self.nextKey[previous] = next
                self.previousKey[next] = previous
            elseif next then
                self.firstKey = next
                self.previousKey[next] = nil
            elseif previous then
                self.lastKey = previous
                self.nextKey[previous] = nil
            else
                self.firstKey = nil
                self.lastKey = nil
            end
            self.nextKey[key] = nil
            self.previousKey[key] = nil
        end
        self.items[key] = nil
        return contains
    end
    function Map.prototype.forEach(self, callback)
        for ____, key in __TS__Iterator(self:keys()) do
            callback(nil, self.items[key], key, self)
        end
    end
    function Map.prototype.get(self, key)
        return self.items[key]
    end
    function Map.prototype.has(self, key)
        return self.nextKey[key] ~= nil or self.lastKey == key
    end
    function Map.prototype.set(self, key, value)
        local isNewValue = not self:has(key)
        if isNewValue then
            self.size = self.size + 1
        end
        self.items[key] = value
        if self.firstKey == nil then
            self.firstKey = key
            self.lastKey = key
        elseif isNewValue then
            self.nextKey[self.lastKey] = key
            self.previousKey[key] = self.lastKey
            self.lastKey = key
        end
        return self
    end
    Map.prototype[Symbol.iterator] = function(self)
        return self:entries()
    end
    function Map.prototype.entries(self)
        local items = self.items
        local nextKey = self.nextKey
        local key = self.firstKey
        return {
            [Symbol.iterator] = function(self)
                return self
            end,
            next = function(self)
                local result = {done = not key, value = {key, items[key]}}
                key = nextKey[key]
                return result
            end
        }
    end
    function Map.prototype.keys(self)
        local nextKey = self.nextKey
        local key = self.firstKey
        return {
            [Symbol.iterator] = function(self)
                return self
            end,
            next = function(self)
                local result = {done = not key, value = key}
                key = nextKey[key]
                return result
            end
        }
    end
    function Map.prototype.values(self)
        local items = self.items
        local nextKey = self.nextKey
        local key = self.firstKey
        return {
            [Symbol.iterator] = function(self)
                return self
            end,
            next = function(self)
                local result = {done = not key, value = items[key]}
                key = nextKey[key]
                return result
            end
        }
    end
    Map[Symbol.species] = Map
end

local __TS__Match = string.match

local __TS__MathAtan2 = math.atan2 or math.atan

local __TS__MathModf = math.modf

local function __TS__MathSign(val)
    if val > 0 then
        return 1
    elseif val < 0 then
        return -1
    end
    return 0
end

local function __TS__Modulo50(a, b)
    return a - math.floor(a / b) * b
end

local function __TS__Number(value)
    local valueType = type(value)
    if valueType == "number" then
        return value
    elseif valueType == "string" then
        local numberValue = tonumber(value)
        if numberValue then
            return numberValue
        end
        if value == "Infinity" then
            return math.huge
        end
        if value == "-Infinity" then
            return -math.huge
        end
        local stringWithoutSpaces = string.gsub(value, "%s", "")
        if stringWithoutSpaces == "" then
            return 0
        end
        return 0 / 0
    elseif valueType == "boolean" then
        return value and 1 or 0
    else
        return 0 / 0
    end
end

local function __TS__NumberIsFinite(value)
    return type(value) == "number" and value == value and value ~= math.huge and value ~= -math.huge
end

local function __TS__NumberIsNaN(value)
    return value ~= value
end

local __TS__NumberToString
do
    local radixChars = "0123456789abcdefghijklmnopqrstuvwxyz"
    function __TS__NumberToString(self, radix)
        if radix == nil or radix == 10 or self == math.huge or self == -math.huge or self ~= self then
            return tostring(self)
        end
        radix = math.floor(radix)
        if radix < 2 or radix > 36 then
            error("toString() radix argument must be between 2 and 36", 0)
        end
        local integer, fraction = __TS__MathModf(math.abs(self))
        local result = ""
        if radix == 8 then
            result = string.format("%o", integer)
        elseif radix == 16 then
            result = string.format("%x", integer)
        else
            repeat
                do
                    result = __TS__StringAccess(radixChars, integer % radix) .. result
                    integer = math.floor(integer / radix)
                end
            until not (integer ~= 0)
        end
        if fraction ~= 0 then
            result = result .. "."
            local delta = 1e-16
            repeat
                do
                    fraction = fraction * radix
                    delta = delta * radix
                    local digit = math.floor(fraction)
                    result = result .. __TS__StringAccess(radixChars, digit)
                    fraction = fraction - digit
                end
            until not (fraction >= delta)
        end
        if self < 0 then
            result = "-" .. result
        end
        return result
    end
end

local function __TS__ObjectDefineProperty(target, key, desc)
    local ____temp_0
    if type(key) == "number" then
        ____temp_0 = key + 1
    else
        ____temp_0 = key
    end
    local luaKey = ____temp_0
    local value = rawget(target, luaKey)
    local hasGetterOrSetter = desc.get ~= nil or desc.set ~= nil
    local descriptor
    if hasGetterOrSetter then
        if value ~= nil then
            error(
                "Cannot redefine property: " .. tostring(key),
                0
            )
        end
        descriptor = desc
    else
        local valueExists = value ~= nil
        local ____desc_set_5 = desc.set
        local ____desc_get_6 = desc.get
        local ____temp_1
        if desc.configurable ~= nil then
            ____temp_1 = desc.configurable
        else
            ____temp_1 = valueExists
        end
        local ____temp_2
        if desc.enumerable ~= nil then
            ____temp_2 = desc.enumerable
        else
            ____temp_2 = valueExists
        end
        local ____temp_3
        if desc.writable ~= nil then
            ____temp_3 = desc.writable
        else
            ____temp_3 = valueExists
        end
        local ____temp_4
        if desc.value ~= nil then
            ____temp_4 = desc.value
        else
            ____temp_4 = value
        end
        descriptor = {
            set = ____desc_set_5,
            get = ____desc_get_6,
            configurable = ____temp_1,
            enumerable = ____temp_2,
            writable = ____temp_3,
            value = ____temp_4
        }
    end
    __TS__SetDescriptor(target, luaKey, descriptor)
    return target
end

local function __TS__ObjectEntries(obj)
    local result = {}
    local len = 0
    for key in pairs(obj) do
        len = len + 1
        result[len] = {key, obj[key]}
    end
    return result
end

local function __TS__ObjectFromEntries(entries)
    local obj = {}
    local iterable = entries
    if iterable[Symbol.iterator] then
        local iterator = iterable[Symbol.iterator](iterable)
        while true do
            local result = iterator:next()
            if result.done then
                break
            end
            local value = result.value
            obj[value[1]] = value[2]
        end
    else
        for ____, entry in ipairs(entries) do
            obj[entry[1]] = entry[2]
        end
    end
    return obj
end

local function __TS__ObjectKeys(obj)
    local result = {}
    local len = 0
    for key in pairs(obj) do
        len = len + 1
        result[len] = key
    end
    return result
end

local function __TS__ObjectRest(target, usedProperties)
    local result = {}
    for property in pairs(target) do
        if not usedProperties[property] then
            result[property] = target[property]
        end
    end
    return result
end

local function __TS__ObjectValues(obj)
    local result = {}
    local len = 0
    for key in pairs(obj) do
        len = len + 1
        result[len] = obj[key]
    end
    return result
end

local function __TS__ParseFloat(numberString)
    local infinityMatch = __TS__Match(numberString, "^%s*(-?Infinity)")
    if infinityMatch then
        local ____temp_0
        if __TS__StringAccess(infinityMatch, 0) == "-" then
            ____temp_0 = -math.huge
        else
            ____temp_0 = math.huge
        end
        return ____temp_0
    end
    local number = tonumber(__TS__Match(numberString, "^%s*(-?%d+%.?%d*)"))
    local ____number_1 = number
    if ____number_1 == nil then
        ____number_1 = 0 / 0
    end
    return ____number_1
end

local function __TS__StringSubstr(self, from, length)
    if from ~= from then
        from = 0
    end
    if length ~= nil then
        if length ~= length or length <= 0 then
            return ""
        end
        length = length + from
    end
    if from >= 0 then
        from = from + 1
    end
    return string.sub(self, from, length)
end

local function __TS__StringSubstring(self, start, ____end)
    if ____end ~= ____end then
        ____end = 0
    end
    if ____end ~= nil and start > ____end then
        start, ____end = ____end, start
    end
    if start >= 0 then
        start = start + 1
    else
        start = 1
    end
    if ____end ~= nil and ____end < 0 then
        ____end = 0
    end
    return string.sub(self, start, ____end)
end

local __TS__ParseInt
do
    local parseIntBasePattern = "0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTvVwWxXyYzZ"
    function __TS__ParseInt(numberString, base)
        if base == nil then
            base = 10
            local hexMatch = __TS__Match(numberString, "^%s*-?0[xX]")
            if hexMatch then
                base = 16
                local ____TS__Match_result__0_0
                if __TS__Match(hexMatch, "-") then
                    ____TS__Match_result__0_0 = "-" .. __TS__StringSubstr(numberString, #hexMatch)
                else
                    ____TS__Match_result__0_0 = __TS__StringSubstr(numberString, #hexMatch)
                end
                numberString = ____TS__Match_result__0_0
            end
        end
        if base < 2 or base > 36 then
            return 0 / 0
        end
        local ____temp_1
        if base <= 10 then
            ____temp_1 = __TS__StringSubstring(parseIntBasePattern, 0, base)
        else
            ____temp_1 = __TS__StringSubstr(parseIntBasePattern, 0, 10 + 2 * (base - 10))
        end
        local allowedDigits = ____temp_1
        local pattern = ("^%s*(-?[" .. allowedDigits) .. "]*)"
        local number = tonumber(
            __TS__Match(numberString, pattern),
            base
        )
        if number == nil then
            return 0 / 0
        end
        if number >= 0 then
            return math.floor(number)
        else
            return math.ceil(number)
        end
    end
end

local function __TS__PromiseAll(iterable)
    local results = {}
    local toResolve = {}
    local numToResolve = 0
    local i = 0
    for ____, item in __TS__Iterator(iterable) do
        if __TS__InstanceOf(item, __TS__Promise) then
            if item.state == 1 then
                results[i + 1] = item.value
            elseif item.state == 2 then
                return __TS__Promise.reject(item.rejectionReason)
            else
                numToResolve = numToResolve + 1
                toResolve[i] = item
            end
        else
            results[i + 1] = item
        end
        i = i + 1
    end
    if numToResolve == 0 then
        return __TS__Promise.resolve(results)
    end
    return __TS__New(
        __TS__Promise,
        function(____, resolve, reject)
            for index, promise in pairs(toResolve) do
                promise["then"](
                    promise,
                    function(____, data)
                        results[index + 1] = data
                        numToResolve = numToResolve - 1
                        if numToResolve == 0 then
                            resolve(nil, results)
                        end
                    end,
                    function(____, reason)
                        reject(nil, reason)
                    end
                )
            end
        end
    )
end

local function __TS__PromiseAllSettled(iterable)
    local results = {}
    local toResolve = {}
    local numToResolve = 0
    local i = 0
    for ____, item in __TS__Iterator(iterable) do
        if __TS__InstanceOf(item, __TS__Promise) then
            if item.state == 1 then
                results[i + 1] = {status = "fulfilled", value = item.value}
            elseif item.state == 2 then
                results[i + 1] = {status = "rejected", reason = item.rejectionReason}
            else
                numToResolve = numToResolve + 1
                toResolve[i] = item
            end
        else
            results[i + 1] = {status = "fulfilled", value = item}
        end
        i = i + 1
    end
    if numToResolve == 0 then
        return __TS__Promise.resolve(results)
    end
    return __TS__New(
        __TS__Promise,
        function(____, resolve)
            for index, promise in pairs(toResolve) do
                promise["then"](
                    promise,
                    function(____, data)
                        results[index + 1] = {status = "fulfilled", value = data}
                        numToResolve = numToResolve - 1
                        if numToResolve == 0 then
                            resolve(nil, results)
                        end
                    end,
                    function(____, reason)
                        results[index + 1] = {status = "rejected", reason = reason}
                        numToResolve = numToResolve - 1
                        if numToResolve == 0 then
                            resolve(nil, results)
                        end
                    end
                )
            end
        end
    )
end

local function __TS__PromiseAny(iterable)
    local rejections = {}
    local pending = {}
    for ____, item in __TS__Iterator(iterable) do
        if __TS__InstanceOf(item, __TS__Promise) then
            if item.state == 1 then
                return __TS__Promise.resolve(item.value)
            elseif item.state == 2 then
                rejections[#rejections + 1] = item.rejectionReason
            else
                pending[#pending + 1] = item
            end
        else
            return __TS__Promise.resolve(item)
        end
    end
    if #pending == 0 then
        return __TS__Promise.reject("No promises to resolve with .any()")
    end
    local numResolved = 0
    return __TS__New(
        __TS__Promise,
        function(____, resolve, reject)
            for ____, promise in ipairs(pending) do
                promise["then"](
                    promise,
                    function(____, data)
                        resolve(nil, data)
                    end,
                    function(____, reason)
                        rejections[#rejections + 1] = reason
                        numResolved = numResolved + 1
                        if numResolved == #pending then
                            reject(nil, {name = "AggregateError", message = "All Promises rejected", errors = rejections})
                        end
                    end
                )
            end
        end
    )
end

local function __TS__PromiseRace(iterable)
    local pending = {}
    for ____, item in __TS__Iterator(iterable) do
        if __TS__InstanceOf(item, __TS__Promise) then
            if item.state == 1 then
                return __TS__Promise.resolve(item.value)
            elseif item.state == 2 then
                return __TS__Promise.reject(item.rejectionReason)
            else
                pending[#pending + 1] = item
            end
        else
            return __TS__Promise.resolve(item)
        end
    end
    return __TS__New(
        __TS__Promise,
        function(____, resolve, reject)
            for ____, promise in ipairs(pending) do
                promise["then"](
                    promise,
                    function(____, value) return resolve(nil, value) end,
                    function(____, reason) return reject(nil, reason) end
                )
            end
        end
    )
end

local Set
do
    Set = __TS__Class()
    Set.name = "Set"
    function Set.prototype.____constructor(self, values)
        self[Symbol.toStringTag] = "Set"
        self.size = 0
        self.nextKey = {}
        self.previousKey = {}
        if values == nil then
            return
        end
        local iterable = values
        if iterable[Symbol.iterator] then
            local iterator = iterable[Symbol.iterator](iterable)
            while true do
                local result = iterator:next()
                if result.done then
                    break
                end
                self:add(result.value)
            end
        else
            local array = values
            for ____, value in ipairs(array) do
                self:add(value)
            end
        end
    end
    function Set.prototype.add(self, value)
        local isNewValue = not self:has(value)
        if isNewValue then
            self.size = self.size + 1
        end
        if self.firstKey == nil then
            self.firstKey = value
            self.lastKey = value
        elseif isNewValue then
            self.nextKey[self.lastKey] = value
            self.previousKey[value] = self.lastKey
            self.lastKey = value
        end
        return self
    end
    function Set.prototype.clear(self)
        self.nextKey = {}
        self.previousKey = {}
        self.firstKey = nil
        self.lastKey = nil
        self.size = 0
    end
    function Set.prototype.delete(self, value)
        local contains = self:has(value)
        if contains then
            self.size = self.size - 1
            local next = self.nextKey[value]
            local previous = self.previousKey[value]
            if next and previous then
                self.nextKey[previous] = next
                self.previousKey[next] = previous
            elseif next then
                self.firstKey = next
                self.previousKey[next] = nil
            elseif previous then
                self.lastKey = previous
                self.nextKey[previous] = nil
            else
                self.firstKey = nil
                self.lastKey = nil
            end
            self.nextKey[value] = nil
            self.previousKey[value] = nil
        end
        return contains
    end
    function Set.prototype.forEach(self, callback)
        for ____, key in __TS__Iterator(self:keys()) do
            callback(nil, key, key, self)
        end
    end
    function Set.prototype.has(self, value)
        return self.nextKey[value] ~= nil or self.lastKey == value
    end
    Set.prototype[Symbol.iterator] = function(self)
        return self:values()
    end
    function Set.prototype.entries(self)
        local nextKey = self.nextKey
        local key = self.firstKey
        return {
            [Symbol.iterator] = function(self)
                return self
            end,
            next = function(self)
                local result = {done = not key, value = {key, key}}
                key = nextKey[key]
                return result
            end
        }
    end
    function Set.prototype.keys(self)
        local nextKey = self.nextKey
        local key = self.firstKey
        return {
            [Symbol.iterator] = function(self)
                return self
            end,
            next = function(self)
                local result = {done = not key, value = key}
                key = nextKey[key]
                return result
            end
        }
    end
    function Set.prototype.values(self)
        local nextKey = self.nextKey
        local key = self.firstKey
        return {
            [Symbol.iterator] = function(self)
                return self
            end,
            next = function(self)
                local result = {done = not key, value = key}
                key = nextKey[key]
                return result
            end
        }
    end
    Set[Symbol.species] = Set
end

local function __TS__SparseArrayNew(...)
    local sparseArray = {...}
    sparseArray.sparseLength = __TS__CountVarargs(...)
    return sparseArray
end

local function __TS__SparseArrayPush(sparseArray, ...)
    local args = {...}
    local argsLen = __TS__CountVarargs(...)
    local listLen = sparseArray.sparseLength
    for i = 1, argsLen do
        sparseArray[listLen + i] = args[i]
    end
    sparseArray.sparseLength = listLen + argsLen
end

local function __TS__SparseArraySpread(sparseArray)
    local ____unpack_0 = unpack
    if ____unpack_0 == nil then
        ____unpack_0 = table.unpack
    end
    local _unpack = ____unpack_0
    return _unpack(sparseArray, 1, sparseArray.sparseLength)
end

local WeakMap
do
    WeakMap = __TS__Class()
    WeakMap.name = "WeakMap"
    function WeakMap.prototype.____constructor(self, entries)
        self[Symbol.toStringTag] = "WeakMap"
        self.items = {}
        setmetatable(self.items, {__mode = "k"})
        if entries == nil then
            return
        end
        local iterable = entries
        if iterable[Symbol.iterator] then
            local iterator = iterable[Symbol.iterator](iterable)
            while true do
                local result = iterator:next()
                if result.done then
                    break
                end
                local value = result.value
                self.items[value[1]] = value[2]
            end
        else
            for ____, kvp in ipairs(entries) do
                self.items[kvp[1]] = kvp[2]
            end
        end
    end
    function WeakMap.prototype.delete(self, key)
        local contains = self:has(key)
        self.items[key] = nil
        return contains
    end
    function WeakMap.prototype.get(self, key)
        return self.items[key]
    end
    function WeakMap.prototype.has(self, key)
        return self.items[key] ~= nil
    end
    function WeakMap.prototype.set(self, key, value)
        self.items[key] = value
        return self
    end
    WeakMap[Symbol.species] = WeakMap
end

local WeakSet
do
    WeakSet = __TS__Class()
    WeakSet.name = "WeakSet"
    function WeakSet.prototype.____constructor(self, values)
        self[Symbol.toStringTag] = "WeakSet"
        self.items = {}
        setmetatable(self.items, {__mode = "k"})
        if values == nil then
            return
        end
        local iterable = values
        if iterable[Symbol.iterator] then
            local iterator = iterable[Symbol.iterator](iterable)
            while true do
                local result = iterator:next()
                if result.done then
                    break
                end
                self.items[result.value] = true
            end
        else
            for ____, value in ipairs(values) do
                self.items[value] = true
            end
        end
    end
    function WeakSet.prototype.add(self, value)
        self.items[value] = true
        return self
    end
    function WeakSet.prototype.delete(self, value)
        local contains = self:has(value)
        self.items[value] = nil
        return contains
    end
    function WeakSet.prototype.has(self, value)
        return self.items[value] == true
    end
    WeakSet[Symbol.species] = WeakSet
end

local function __TS__SourceMapTraceBack(fileName, sourceMap)
    _G.__TS__sourcemap = _G.__TS__sourcemap or ({})
    _G.__TS__sourcemap[fileName] = sourceMap
    if _G.__TS__originalTraceback == nil then
        local originalTraceback = debug.traceback
        _G.__TS__originalTraceback = originalTraceback
        debug.traceback = function(thread, message, level)
            local trace
            if thread == nil and message == nil and level == nil then
                trace = originalTraceback()
            elseif __TS__StringIncludes(_VERSION, "Lua 5.0") then
                trace = originalTraceback((("[Level " .. tostring(level)) .. "] ") .. message)
            else
                trace = originalTraceback(thread, message, level)
            end
            if type(trace) ~= "string" then
                return trace
            end
            local function replacer(____, file, srcFile, line)
                local fileSourceMap = _G.__TS__sourcemap[file]
                if fileSourceMap and fileSourceMap[line] then
                    local data = fileSourceMap[line]
                    if type(data) == "number" then
                        return (srcFile .. ":") .. tostring(data)
                    end
                    return (tostring(data.file) .. ":") .. tostring(data.line)
                end
                return (file .. ":") .. line
            end
            local result = string.gsub(
                trace,
                "(%S+)%.lua:(%d+)",
                function(file, line) return replacer(nil, file .. ".lua", file .. ".ts", line) end
            )
            local function stringReplacer(____, file, line)
                local fileSourceMap = _G.__TS__sourcemap[file]
                if fileSourceMap and fileSourceMap[line] then
                    local chunkName = __TS__Match(file, "%[string \"([^\"]+)\"%]")
                    local sourceName = string.gsub(chunkName, ".lua$", ".ts")
                    local data = fileSourceMap[line]
                    if type(data) == "number" then
                        return (sourceName .. ":") .. tostring(data)
                    end
                    return (tostring(data.file) .. ":") .. tostring(data.line)
                end
                return (file .. ":") .. line
            end
            result = string.gsub(
                result,
                "(%[string \"[^\"]+\"%]):(%d+)",
                function(file, line) return stringReplacer(nil, file, line) end
            )
            return result
        end
    end
end

local function __TS__Spread(iterable)
    local arr = {}
    if type(iterable) == "string" then
        for i = 0, #iterable - 1 do
            arr[i + 1] = __TS__StringAccess(iterable, i)
        end
    else
        local len = 0
        for ____, item in __TS__Iterator(iterable) do
            len = len + 1
            arr[len] = item
        end
    end
    return __TS__Unpack(arr)
end

local function __TS__StringCharAt(self, pos)
    if pos ~= pos then
        pos = 0
    end
    if pos < 0 then
        return ""
    end
    return string.sub(self, pos + 1, pos + 1)
end

local function __TS__StringCharCodeAt(self, index)
    if index ~= index then
        index = 0
    end
    if index < 0 then
        return 0 / 0
    end
    local ____string_byte_result_0 = string.byte(self, index + 1)
    if ____string_byte_result_0 == nil then
        ____string_byte_result_0 = 0 / 0
    end
    return ____string_byte_result_0
end

local function __TS__StringEndsWith(self, searchString, endPosition)
    if endPosition == nil or endPosition > #self then
        endPosition = #self
    end
    return string.sub(self, endPosition - #searchString + 1, endPosition) == searchString
end

local function __TS__StringPadEnd(self, maxLength, fillString)
    if fillString == nil then
        fillString = " "
    end
    if maxLength ~= maxLength then
        maxLength = 0
    end
    if maxLength == -math.huge or maxLength == math.huge then
        error("Invalid string length", 0)
    end
    if #self >= maxLength or #fillString == 0 then
        return self
    end
    maxLength = maxLength - #self
    if maxLength > #fillString then
        fillString = fillString .. string.rep(
            fillString,
            math.floor(maxLength / #fillString)
        )
    end
    return self .. string.sub(
        fillString,
        1,
        math.floor(maxLength)
    )
end

local function __TS__StringPadStart(self, maxLength, fillString)
    if fillString == nil then
        fillString = " "
    end
    if maxLength ~= maxLength then
        maxLength = 0
    end
    if maxLength == -math.huge or maxLength == math.huge then
        error("Invalid string length", 0)
    end
    if #self >= maxLength or #fillString == 0 then
        return self
    end
    maxLength = maxLength - #self
    if maxLength > #fillString then
        fillString = fillString .. string.rep(
            fillString,
            math.floor(maxLength / #fillString)
        )
    end
    return string.sub(
        fillString,
        1,
        math.floor(maxLength)
    ) .. self
end

local __TS__StringReplace
do
    local sub = string.sub
    function __TS__StringReplace(source, searchValue, replaceValue)
        local startPos, endPos = string.find(source, searchValue, nil, true)
        if not startPos then
            return source
        end
        local before = sub(source, 1, startPos - 1)
        local ____temp_0
        if type(replaceValue) == "string" then
            ____temp_0 = replaceValue
        else
            ____temp_0 = replaceValue(nil, searchValue, startPos - 1, source)
        end
        local replacement = ____temp_0
        local after = sub(source, endPos + 1)
        return (before .. replacement) .. after
    end
end

local __TS__StringSplit
do
    local sub = string.sub
    local find = string.find
    function __TS__StringSplit(source, separator, limit)
        if limit == nil then
            limit = 4294967295
        end
        if limit == 0 then
            return {}
        end
        local result = {}
        local resultIndex = 1
        if separator == nil or separator == "" then
            for i = 1, #source do
                result[resultIndex] = sub(source, i, i)
                resultIndex = resultIndex + 1
            end
        else
            local currentPos = 1
            while resultIndex <= limit do
                local startPos, endPos = find(source, separator, currentPos, true)
                if not startPos then
                    break
                end
                result[resultIndex] = sub(source, currentPos, startPos - 1)
                resultIndex = resultIndex + 1
                currentPos = endPos + 1
            end
            if resultIndex <= limit then
                result[resultIndex] = sub(source, currentPos)
            end
        end
        return result
    end
end

local __TS__StringReplaceAll
do
    local sub = string.sub
    local find = string.find
    function __TS__StringReplaceAll(source, searchValue, replaceValue)
        if type(replaceValue) == "string" then
            local concat = table.concat(
                __TS__StringSplit(source, searchValue),
                replaceValue
            )
            if #searchValue == 0 then
                return (replaceValue .. concat) .. replaceValue
            end
            return concat
        end
        local parts = {}
        local partsIndex = 1
        if #searchValue == 0 then
            parts[1] = replaceValue(nil, "", 0, source)
            partsIndex = 2
            for i = 1, #source do
                parts[partsIndex] = sub(source, i, i)
                parts[partsIndex + 1] = replaceValue(nil, "", i, source)
                partsIndex = partsIndex + 2
            end
        else
            local currentPos = 1
            while true do
                local startPos, endPos = find(source, searchValue, currentPos, true)
                if not startPos then
                    break
                end
                parts[partsIndex] = sub(source, currentPos, startPos - 1)
                parts[partsIndex + 1] = replaceValue(nil, searchValue, startPos - 1, source)
                partsIndex = partsIndex + 2
                currentPos = endPos + 1
            end
            parts[partsIndex] = sub(source, currentPos)
        end
        return table.concat(parts)
    end
end

local function __TS__StringSlice(self, start, ____end)
    if start == nil or start ~= start then
        start = 0
    end
    if ____end ~= ____end then
        ____end = 0
    end
    if start >= 0 then
        start = start + 1
    end
    if ____end ~= nil and ____end < 0 then
        ____end = ____end - 1
    end
    return string.sub(self, start, ____end)
end

local function __TS__StringStartsWith(self, searchString, position)
    if position == nil or position < 0 then
        position = 0
    end
    return string.sub(self, position + 1, #searchString + position) == searchString
end

local function __TS__StringTrim(self)
    local result = string.gsub(self, "^[%s ﻿]*(.-)[%s ﻿]*$", "%1")
    return result
end

local function __TS__StringTrimEnd(self)
    local result = string.gsub(self, "[%s ﻿]*$", "")
    return result
end

local function __TS__StringTrimStart(self)
    local result = string.gsub(self, "^[%s ﻿]*", "")
    return result
end

local __TS__SymbolRegistryFor, __TS__SymbolRegistryKeyFor
do
    local symbolRegistry = {}
    function __TS__SymbolRegistryFor(key)
        if not symbolRegistry[key] then
            symbolRegistry[key] = __TS__Symbol(key)
        end
        return symbolRegistry[key]
    end
    function __TS__SymbolRegistryKeyFor(sym)
        for key in pairs(symbolRegistry) do
            if symbolRegistry[key] == sym then
                return key
            end
        end
    end
end

local function __TS__TypeOf(value)
    local luaType = type(value)
    if luaType == "table" then
        return "object"
    elseif luaType == "nil" then
        return "undefined"
    else
        return luaType
    end
end

return {
  __TS__ArrayConcat = __TS__ArrayConcat,
  __TS__ArrayEntries = __TS__ArrayEntries,
  __TS__ArrayEvery = __TS__ArrayEvery,
  __TS__ArrayFilter = __TS__ArrayFilter,
  __TS__ArrayForEach = __TS__ArrayForEach,
  __TS__ArrayFind = __TS__ArrayFind,
  __TS__ArrayFindIndex = __TS__ArrayFindIndex,
  __TS__ArrayFrom = __TS__ArrayFrom,
  __TS__ArrayIncludes = __TS__ArrayIncludes,
  __TS__ArrayIndexOf = __TS__ArrayIndexOf,
  __TS__ArrayIsArray = __TS__ArrayIsArray,
  __TS__ArrayJoin = __TS__ArrayJoin,
  __TS__ArrayMap = __TS__ArrayMap,
  __TS__ArrayPush = __TS__ArrayPush,
  __TS__ArrayPushArray = __TS__ArrayPushArray,
  __TS__ArrayReduce = __TS__ArrayReduce,
  __TS__ArrayReduceRight = __TS__ArrayReduceRight,
  __TS__ArrayReverse = __TS__ArrayReverse,
  __TS__ArrayUnshift = __TS__ArrayUnshift,
  __TS__ArraySort = __TS__ArraySort,
  __TS__ArraySlice = __TS__ArraySlice,
  __TS__ArraySome = __TS__ArraySome,
  __TS__ArraySplice = __TS__ArraySplice,
  __TS__ArrayToObject = __TS__ArrayToObject,
  __TS__ArrayFlat = __TS__ArrayFlat,
  __TS__ArrayFlatMap = __TS__ArrayFlatMap,
  __TS__ArraySetLength = __TS__ArraySetLength,
  __TS__AsyncAwaiter = __TS__AsyncAwaiter,
  __TS__Await = __TS__Await,
  __TS__Class = __TS__Class,
  __TS__ClassExtends = __TS__ClassExtends,
  __TS__CloneDescriptor = __TS__CloneDescriptor,
  __TS__CountVarargs = __TS__CountVarargs,
  __TS__Decorate = __TS__Decorate,
  __TS__DecorateParam = __TS__DecorateParam,
  __TS__Delete = __TS__Delete,
  __TS__DelegatedYield = __TS__DelegatedYield,
  Error = Error,
  RangeError = RangeError,
  ReferenceError = ReferenceError,
  SyntaxError = SyntaxError,
  TypeError = TypeError,
  URIError = URIError,
  __TS__FunctionBind = __TS__FunctionBind,
  __TS__Generator = __TS__Generator,
  __TS__InstanceOf = __TS__InstanceOf,
  __TS__InstanceOfObject = __TS__InstanceOfObject,
  __TS__Iterator = __TS__Iterator,
  __TS__LuaIteratorSpread = __TS__LuaIteratorSpread,
  Map = Map,
  __TS__Match = __TS__Match,
  __TS__MathAtan2 = __TS__MathAtan2,
  __TS__MathModf = __TS__MathModf,
  __TS__MathSign = __TS__MathSign,
  __TS__Modulo50 = __TS__Modulo50,
  __TS__New = __TS__New,
  __TS__Number = __TS__Number,
  __TS__NumberIsFinite = __TS__NumberIsFinite,
  __TS__NumberIsNaN = __TS__NumberIsNaN,
  __TS__NumberToString = __TS__NumberToString,
  __TS__ObjectAssign = __TS__ObjectAssign,
  __TS__ObjectDefineProperty = __TS__ObjectDefineProperty,
  __TS__ObjectEntries = __TS__ObjectEntries,
  __TS__ObjectFromEntries = __TS__ObjectFromEntries,
  __TS__ObjectGetOwnPropertyDescriptor = __TS__ObjectGetOwnPropertyDescriptor,
  __TS__ObjectGetOwnPropertyDescriptors = __TS__ObjectGetOwnPropertyDescriptors,
  __TS__ObjectKeys = __TS__ObjectKeys,
  __TS__ObjectRest = __TS__ObjectRest,
  __TS__ObjectValues = __TS__ObjectValues,
  __TS__ParseFloat = __TS__ParseFloat,
  __TS__ParseInt = __TS__ParseInt,
  __TS__Promise = __TS__Promise,
  __TS__PromiseAll = __TS__PromiseAll,
  __TS__PromiseAllSettled = __TS__PromiseAllSettled,
  __TS__PromiseAny = __TS__PromiseAny,
  __TS__PromiseRace = __TS__PromiseRace,
  Set = Set,
  __TS__SetDescriptor = __TS__SetDescriptor,
  __TS__SparseArrayNew = __TS__SparseArrayNew,
  __TS__SparseArrayPush = __TS__SparseArrayPush,
  __TS__SparseArraySpread = __TS__SparseArraySpread,
  WeakMap = WeakMap,
  WeakSet = WeakSet,
  __TS__SourceMapTraceBack = __TS__SourceMapTraceBack,
  __TS__Spread = __TS__Spread,
  __TS__StringAccess = __TS__StringAccess,
  __TS__StringCharAt = __TS__StringCharAt,
  __TS__StringCharCodeAt = __TS__StringCharCodeAt,
  __TS__StringEndsWith = __TS__StringEndsWith,
  __TS__StringIncludes = __TS__StringIncludes,
  __TS__StringPadEnd = __TS__StringPadEnd,
  __TS__StringPadStart = __TS__StringPadStart,
  __TS__StringReplace = __TS__StringReplace,
  __TS__StringReplaceAll = __TS__StringReplaceAll,
  __TS__StringSlice = __TS__StringSlice,
  __TS__StringSplit = __TS__StringSplit,
  __TS__StringStartsWith = __TS__StringStartsWith,
  __TS__StringSubstr = __TS__StringSubstr,
  __TS__StringSubstring = __TS__StringSubstring,
  __TS__StringTrim = __TS__StringTrim,
  __TS__StringTrimEnd = __TS__StringTrimEnd,
  __TS__StringTrimStart = __TS__StringTrimStart,
  __TS__Symbol = __TS__Symbol,
  Symbol = Symbol,
  __TS__SymbolRegistryFor = __TS__SymbolRegistryFor,
  __TS__SymbolRegistryKeyFor = __TS__SymbolRegistryKeyFor,
  __TS__TypeOf = __TS__TypeOf,
  __TS__Unpack = __TS__Unpack
}
 end,
["scripts.Config"] = function(...) 
local ____exports = {}
____exports.IRFconfig = {
    Laser = false,
    Hitbox = false,
    RageCreep = true,
    Uriel = true,
    Gabriel = true,
    Monstro = true,
    Adversary = true,
    DarkOne = true,
    SoulSucker = true,
    Vis = true,
    RedGhost = true,
    Goat = true,
    BrimstoneHead = true,
    Krampus = true,
    BlightedOvum = true,
    Forsaken = true,
    BloodEye = true,
    ReapCreep = true,
    Bloat = true,
    Sister = true,
    Visage = true,
    BrimBomb = true,
    Mother = true,
    Satan = true,
    TheLamb = true,
    Dogma = true,
    Gluttony = true,
    UltraGreed = true,
    Haunt = true,
    Mom = true,
    MegaSatan = true,
    TheBeast = true,
    Delirium = false,
    Pride = true,
    Frail = true,
    Punker = true,
    Cat = true,
    Maxwell = true
}
return ____exports
 end,
["scripts.DeliriumHell"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__StringIncludes = ____lualib.__TS__StringIncludes
local ____exports = {}
function ____exports.IHateDelirium(self, ent, EntSprite, data, IRFconfig, spawnTracer, RemoveLaserIndicator, AfterDedLaserIndicator, TargetLaserIndicator)
    local fileName = EntSprite:GetFilename()
    if __TS__StringIncludes(fileName, "Dark One.anm2") then
        if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() < 25 then
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                50,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() > 25 or EntSprite:IsFinished("Attack2") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if __TS__StringIncludes(fileName, "angel.anm2") then
        if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Charging") then
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                50,
                false,
                2,
                2,
                2
            )
            return
        end
        if BetterMonsters == nil or ent.Variant == 0 then
            if ent:ToNPC().State == 10 and EntSprite:IsPlaying("Charging") then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {0.5, 1.5},
                    50,
                    true,
                    2,
                    2,
                    2
                )
                return
            end
        else
            if ent:ToNPC().State == 10 and EntSprite:IsPlaying("Charging") or ent:ToNPC().State == 12 and EntSprite:IsPlaying("LaserShot") and EntSprite:GetFrame() <= 5 and ent.Variant == 1 then
                data.Rotate = true
                local angle = (ent.Position - Vector(
                    ent:ToNPC():GetPlayerTarget().Position.X,
                    ent:ToNPC():GetPlayerTarget().Position.Y + 30
                )):GetAngleDegrees()
                TargetLaserIndicator(
                    nil,
                    ent,
                    {angle, angle},
                    {215, 145},
                    40,
                    false,
                    1,
                    1,
                    1
                )
            end
        end
        if EntSprite:IsPlaying("LaserShot") and EntSprite:GetFrame() >= 5 or EntSprite:IsFinished("LaserShot") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if __TS__StringIncludes(fileName, "angel2.anm2") then
        if ent:ToNPC().State == 9 and (EntSprite:IsPlaying("Charging") or EntSprite:IsPlaying("Float") or EntSprite:IsPlaying("Shield")) then
            if BetterMonsters ~= nil and ent.Variant == 1 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1, 2, 3, 4},
                    50,
                    false,
                    2,
                    2,
                    2
                )
            else
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1, 2, 3, 4},
                    50,
                    true,
                    2,
                    2,
                    2
                )
            end
            return
        elseif ent:ToNPC().State == 10 and EntSprite:IsPlaying("Charging2") and (BetterMonsters == nil or ent.Variant == 0) then
            spawnTracer(
                nil,
                ent,
                90,
                {0.5, 1.5, 2.5, 3.5},
                50,
                true,
                2,
                2,
                2
            )
            return
        end
        if EntSprite:IsPlaying("LaserShot") and EntSprite:GetFrame() > 4 or EntSprite:IsFinished("LaserShot") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if __TS__StringIncludes(fileName, "Monstro II.anm2") then
        if ent:ToNPC().State == 8 and EntSprite:IsPlaying("Taunt") and EntSprite:GetFrame() < 20 and EntSprite:GetFrame() > 5 then
            if EntSprite.FlipX == true then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {4},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            else
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if EntSprite:IsPlaying("Taunt") and EntSprite:GetFrame() > 20 or EntSprite:IsFinished("Taunt") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if __TS__StringIncludes(fileName, "Dark One 2.anm2") then
        if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() < 25 then
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                50,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() > 25 or EntSprite:IsFinished("Attack2") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if __TS__StringIncludes(fileName, "the fallen.anm2") then
        if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() < 35 then
            spawnTracer(
                nil,
                ent,
                90,
                {1, 2, 3, 4},
                40,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() > 35 or EntSprite:IsFinished("Attack2") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if __TS__StringIncludes(fileName, "Krampus") then
        if EntSprite:IsPlaying("Attack2Alt") and EntSprite:GetFrame() < 31 and EntSprite:GetFrame() > 5 then
            spawnTracer(
                nil,
                ent,
                90,
                {1, 2, 3, 4},
                40,
                false,
                2,
                0,
                0
            )
        end
        if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() < 35 then
            spawnTracer(
                nil,
                ent,
                90,
                {
                    1,
                    2,
                    3,
                    4,
                    1.5,
                    2.5,
                    3.5,
                    4.5
                },
                40,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() > 35 or EntSprite:IsPlaying("Attack2Alt") and EntSprite:GetFrame() > 31 or EntSprite:IsFinished("Attack2") or EntSprite:IsFinished("Attack2Alt") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if __TS__StringIncludes(fileName, "Ovum Baby.anm2") and BetterMonsters == nil then
        if EntSprite:IsPlaying("Attack01") and EntSprite.FlipX == false and EntSprite:GetFrame() < 30 then
            spawnTracer(
                nil,
                ent,
                90,
                {4},
                40,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack01") and EntSprite.FlipX == true and EntSprite:GetFrame() < 30 then
            spawnTracer(
                nil,
                ent,
                90,
                {2},
                40,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack01") and EntSprite:GetFrame() > 35 or EntSprite:IsFinished("Attack01") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if __TS__StringIncludes(fileName, "TheForsaken.anm2") then
        if BetterMonsters == nil then
            data.Rotate = true
            if EntSprite:IsPlaying("BlastStart") and EntSprite:GetFrame() <= 22 then
                local angle = (ent.Position - ent:ToNPC():GetPlayerTarget().Position):GetAngleDegrees()
                TargetLaserIndicator(
                    nil,
                    ent,
                    {angle, angle, angle},
                    {0, 120, 240},
                    30,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("BlastStart") and EntSprite:GetFrame() >= 23 or EntSprite:IsPlaying("Blasting") or EntSprite:IsFinished("Blasting") then
                if data.IndicatorBrim then
                    data.Danger = 0
                    RemoveLaserIndicator(nil, ent)
                    return
                end
            end
        end
    end
    if __TS__StringIncludes(fileName, "The Bloat.anm2") then
        if EntSprite:IsPlaying("AttackAlt01") and EntSprite:GetFrame() < 10 then
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                50,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("AttackAlt02") and EntSprite:GetFrame() < 10 then
            spawnTracer(
                nil,
                ent,
                90,
                {2, 4},
                70,
                false,
                2,
                0,
                0
            )
            return
        end
        if (EntSprite:IsPlaying("AttackAlt01") or EntSprite:IsPlaying("AttackAlt02")) and EntSprite:GetFrame() > 10 or EntSprite:IsFinished("AttackAlt01") or EntSprite:IsFinished("AttackAlt02") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if __TS__StringIncludes(fileName, "SistersVis.anm2") then
        data.Mega = true
        if EntSprite:IsPlaying("LaserStartDown") and EntSprite:GetFrame() > 26 and (ent:ToNPC().State == 10 or ent:ToNPC().State == 9 or ent:ToNPC().State == 11) then
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                30,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("LaserStartSide") and EntSprite:GetFrame() > 26 and EntSprite.FlipX == true and (ent:ToNPC().State == 10 or ent:ToNPC().State == 9 or ent:ToNPC().State == 11) then
            spawnTracer(
                nil,
                ent,
                90,
                {2},
                30,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("LaserStartSide") and EntSprite:GetFrame() > 26 and EntSprite.FlipX == false and (ent:ToNPC().State == 10 or ent:ToNPC().State == 9 or ent:ToNPC().State == 11) then
            spawnTracer(
                nil,
                ent,
                90,
                {4},
                30,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("LaserStartUp") and EntSprite:GetFrame() > 26 and (ent:ToNPC().State == 10 or ent:ToNPC().State == 9 or ent:ToNPC().State == 11) then
            spawnTracer(
                nil,
                ent,
                90,
                {3},
                30,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("LaserLoopDown") or EntSprite:IsPlaying("LaserLoopUp") or EntSprite:IsPlaying("LaserLoopSide") or EntSprite:IsFinished("LaserStartDown") or EntSprite:IsFinished("LaserStartSide") or EntSprite:IsFinished("LaserStartUp") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if __TS__StringIncludes(fileName, "Satan.anm2") then
        if BetterMonsters ~= nil then
            if EntSprite:IsPlaying("Attack02") and EntSprite:GetFrame() < 20 and ent:ToNPC().State == 9 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    50,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("Attack03") and EntSprite:GetFrame() >= 5 and EntSprite:GetFrame() <= 20 and ent:ToNPC().State == 13 then
                local angle = (Vector(ent.Position.X + 100, ent.Position.Y) - Vector(
                    ent:ToNPC():GetPlayerTarget().Position.X,
                    ent:ToNPC():GetPlayerTarget().Position.Y + 30
                )):GetAngleDegrees()
                local angle2 = (Vector(ent.Position.X - 100, ent.Position.Y) - Vector(
                    ent:ToNPC():GetPlayerTarget().Position.X,
                    ent:ToNPC():GetPlayerTarget().Position.Y + 30
                )):GetAngleDegrees()
                TargetLaserIndicator(
                    nil,
                    ent,
                    {angle2, angle},
                    {180, 180},
                    40,
                    false,
                    2,
                    0,
                    0,
                    {100, -100}
                )
                return
            end
            if EntSprite:IsPlaying("Attack02") and EntSprite:GetFrame() > 20 or EntSprite:IsPlaying("Attack03") and EntSprite:GetFrame() > 15 or EntSprite:IsFinished("Attack02") or EntSprite:IsFinished("Attack03") then
                if data.IndicatorBrim then
                    data.Danger = 0
                    RemoveLaserIndicator(nil, ent)
                    return
                end
            end
        else
            if EntSprite:IsPlaying("Attack02") and EntSprite:GetFrame() < 20 and ent:ToNPC().State == 9 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    50,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("Attack03") and EntSprite:GetFrame() < 15 and ent:ToNPC().State == 10 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1.3, 4.7},
                    40,
                    false,
                    2,
                    0,
                    0,
                    {110, -110}
                )
                return
            end
            if EntSprite:IsPlaying("Attack02") and EntSprite:GetFrame() > 20 or EntSprite:IsPlaying("Attack03") and EntSprite:GetFrame() > 15 or EntSprite:IsFinished("Attack02") or EntSprite:IsFinished("Attack03") then
                if data.IndicatorBrim then
                    data.Danger = 0
                    RemoveLaserIndicator(nil, ent)
                    return
                end
            end
        end
    end
    if __TS__StringIncludes(fileName, "TheLamb.anm2") then
        if EntSprite:IsPlaying("HeadCharge") and ent:ToNPC().State == 11 then
            spawnTracer(
                nil,
                ent,
                90,
                {1, 2, 3, 4},
                50,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("HeadShoot2Start") and EntSprite:GetFrame() > 10 or EntSprite:IsFinished("HeadShoot2Start") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if __TS__StringIncludes(fileName, "Haunt.anm2") then
        if ent.SubType == 0 then
            if EntSprite:IsPlaying("LaserNoSkin") and ent:ToNPC().State == 9 and EntSprite:GetFrame() < 20 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    50,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if ent.SubType == 2 then
            if EntSprite:IsPlaying("LaserNoSkin") and ent:ToNPC().State == 9 and EntSprite:GetFrame() < 20 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {0.5, 1.5},
                    50,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if EntSprite:IsPlaying("LaserNoSkin") and EntSprite:GetFrame() > 20 or EntSprite:IsFinished("LaserNoSkin") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
        if data.IndicatorBrim then
            if EntSprite:IsFinished("LaserShot") or EntSprite:IsFinished("Attack2") or EntSprite:IsFinished("LaserShot") or EntSprite:IsFinished("Taunt") or EntSprite:IsFinished("Attack2Alt") or EntSprite:IsFinished("Attack01") or EntSprite:IsFinished("Blasting") or EntSprite:IsFinished("AttackAlt01") or EntSprite:IsFinished("AttackAlt02") or EntSprite:IsFinished("LaserStartDown") or EntSprite:IsFinished("LaserStartSide") or EntSprite:IsFinished("LaserStartUp") or EntSprite:IsFinished("Attack02") or EntSprite:IsFinished("Attack03") or EntSprite:IsFinished("HeadShoot2Start") or EntSprite:IsFinished("LaserNoSkin") then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
end
return ____exports
 end,
["scripts.modConfigMenu"] = function(...) 
local ____exports = {}
function ____exports.ModConfig(self, IRFconfig)
    if ModConfigMenu ~= nil then
        ModConfigMenu.RemoveCategory("Watch out, laser!")
        ModConfigMenu.AddSpace("Watch out, laser!", "About")
        ModConfigMenu.AddText(
            "Watch out, laser!",
            "About",
            function() return "Watch out, laser!" end
        )
        ModConfigMenu.AddSpace("Watch out, laser!", "About")
        ModConfigMenu.AddText(
            "Watch out, laser!",
            "About",
            function() return "Version 1.0.5" end
        )
        ModConfigMenu.AddSpace("Watch out, laser!", "About")
        ModConfigMenu.AddText(
            "Watch out, laser!",
            "About",
            function() return "Mod made by Tidloas with love" end
        )
        ModConfigMenu.AddSpace("Watch out, laser!", "About")
        ModConfigMenu.AddSetting(
            "Watch out, laser!",
            "Vanilla",
            {
                Type = 4,
                CurrentSetting = function()
                    return IRFconfig.Laser
                end,
                Display = function()
                    local onOff = "Tracer"
                    if IRFconfig.Laser == true then
                        onOff = "Laser"
                    end
                    return "Style for the indicator: " .. onOff
                end,
                OnChange = function(IsOn)
                    IRFconfig.Laser = IsOn
                end,
                Info = {"Laser or Tracer"}
            }
        )
        local function addItem(self, entity, ____type, name, desc)
            ModConfigMenu.AddSetting(
                "Watch out, laser!",
                tostring(____type),
                {
                    Type = 4,
                    CurrentSetting = function()
                        return IRFconfig[entity]
                    end,
                    Display = function()
                        local onOff = "Disabled"
                        if IRFconfig[entity] == true then
                            onOff = "Enabled"
                        end
                        return (tostring(name) .. ": ") .. onOff
                    end,
                    OnChange = function(IsOn)
                        IRFconfig[entity] = IsOn
                    end,
                    Info = {tostring(desc)}
                }
            )
        end
        addItem(
            nil,
            "Hitbox",
            "Vanilla",
            "Real Hitbox",
            "Shows the real hitbox of some lasers, mainly the holy laser of uriel and gabriel.."
        )
        addItem(
            nil,
            "RageCreep",
            "Vanilla",
            "Rage Creep",
            "Enables the indicator for RageCreep and his variants."
        )
        addItem(
            nil,
            "Uriel",
            "Vanilla",
            "Uriel",
            "Enables the indicator for Uriel"
        )
        addItem(
            nil,
            "Gabriel",
            "Vanilla",
            "Gabriel",
            "Enables the indicator for Gabriel"
        )
        addItem(
            nil,
            "Monstro",
            "Vanilla",
            "Monstro",
            "Enables the indicator for Monstro and his variants."
        )
        addItem(
            nil,
            "Adversary",
            "Vanilla",
            "The Adversary",
            "Enables the indicator for Adversary."
        )
        addItem(
            nil,
            "DarkOne",
            "Vanilla",
            "Dark One",
            "Enables the indicator for Dark One."
        )
        addItem(
            nil,
            "SoulSucker",
            "Vanilla",
            "Soul Sucker",
            "Enables the indicator for SoulSucker and his variants."
        )
        addItem(
            nil,
            "Vis",
            "Vanilla",
            "Vis",
            "Enables the indicator for Vis and his variants."
        )
        addItem(
            nil,
            "RedGhost",
            "Vanilla",
            "RedGhost",
            "Enables the indicator for Red Ghost."
        )
        addItem(
            nil,
            "Goat",
            "Vanilla",
            "Goat",
            "Enables the indicator for the Goat."
        )
        addItem(
            nil,
            "BrimstoneHead",
            "Vanilla",
            "Brimstone Head",
            "Enables the indicator for BrimstoneHead(obstacle)."
        )
        addItem(
            nil,
            "Krampus",
            "Vanilla",
            "Krampus",
            "Enables the indicator for Krampus(I really did my best...)."
        )
        addItem(
            nil,
            "BlightedOvum",
            "Vanilla",
            "BlightedOvum",
            "Enables the indicator for Blighted Ovum."
        )
        addItem(
            nil,
            "Forsaken",
            "Vanilla",
            "Forsaken",
            "Enables the indicator for Forsaken and his variants."
        )
        addItem(
            nil,
            "BloodEye",
            "Vanilla",
            "Blood Eye",
            "Enables the indicator for BloodEye."
        )
        addItem(
            nil,
            "ReapCreep",
            "Vanilla",
            "Reap Creep",
            "Enables the indicator for Reap Creep."
        )
        addItem(
            nil,
            "Bloat",
            "Vanilla",
            "Bloat",
            "Enables the indicator for Bloat."
        )
        addItem(
            nil,
            "Sister",
            "Vanilla",
            "Sister vis",
            "Enables the indicator for Sister's vis."
        )
        addItem(
            nil,
            "Visage",
            "Vanilla",
            "Visage",
            "Enables the indicator for Visage."
        )
        addItem(
            nil,
            "BrimBomb",
            "Vanilla",
            "BrimBomb",
            "Enables the indicator for BrimBomb(horny boys)."
        )
        addItem(
            nil,
            "Mother",
            "Vanilla",
            "Mother",
            "Enables the indicator for Mother(witness)."
        )
        addItem(
            nil,
            "TheLamb",
            "Vanilla",
            "The Lamb",
            "Enables the indicator for The Lamb."
        )
        addItem(
            nil,
            "Dogma",
            "Vanilla",
            "Dogma",
            "Enables the indicator for Dogma."
        )
        addItem(
            nil,
            "Gluttony",
            "Vanilla",
            "Gluttony",
            "Enables the indicator for Gluttony."
        )
        addItem(
            nil,
            "UltraGreed",
            "Vanilla",
            "Ultra Greed",
            "Enables the indicator for Ultra Greed(door)."
        )
        addItem(
            nil,
            "Haunt",
            "Vanilla",
            "Haunt",
            "Enables the indicator for Haunt."
        )
        addItem(
            nil,
            "Mom",
            "Vanilla",
            "Mom",
            "Enables the indicator for Mom(door)."
        )
        addItem(
            nil,
            "MegaSatan",
            "Vanilla",
            "Mega Satan",
            "Enables the indicator for Mega Satan."
        )
        addItem(
            nil,
            "TheBeast",
            "Vanilla",
            "The Beast",
            "Enables the indicator for The Beast."
        )
        addItem(
            nil,
            "Delirium",
            "Vanilla",
            "Delirium",
            "Enables the indicator for Delirium."
        )
        addItem(
            nil,
            "Pride",
            "Vanilla",
            "Pride",
            "Enables the indicator for Pride."
        )
        addItem(
            nil,
            "Frail",
            "Vanilla",
            "The Frail",
            "Enables the indicator for the Frail."
        )
        addItem(
            nil,
            "Punker",
            "Rev",
            "Punker",
            "Enables the indicator for Punker."
        )
        addItem(
            nil,
            "Cat",
            "Rev",
            "Catastroph",
            "Enables the indicator for Catastroph."
        )
        addItem(
            nil,
            "Maxwell",
            "Rev",
            "Maxwell",
            "Enables the indicator for Maxwell."
        )
        ModConfigMenu.AddSpace("Watch out, laser!", "ChangeLog")
        ModConfigMenu.AddText(
            "Watch out, laser!",
            "ChangeLog",
            function() return "+Reworked foes Pride" end
        )
    end
end
return ____exports
 end,
["scripts.Rev"] = function(...) 
local ____exports = {}
local active = nil
function ____exports.RevCompatibility(self, ent, EntSprite, data, IRFconfig, spawnTracer, RemoveLaserIndicator, AfterDedLaserIndicator, TargetLaserIndicator, REVEL)
    if ent.Type == 479 and ent.Variant == 2678 and IRFconfig.Punker then
        if EntSprite:IsPlaying("Attack2 Left Start") and (EntSprite:GetFrame() > 8 and EntSprite:GetFrame() < 29) then
            spawnTracer(
                nil,
                ent,
                90,
                {2},
                35,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack2 Right Start") and (EntSprite:GetFrame() > 8 and EntSprite:GetFrame() < 29) then
            spawnTracer(
                nil,
                ent,
                90,
                {4},
                35,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack2 Right Start") or EntSprite:IsPlaying("Attack2 Left Start") and EntSprite:GetFrame() > 29 then
            data.Danger = 0
            RemoveLaserIndicator(nil, ent)
            return
        end
    elseif ent.Type == 505 and (ent.Variant ~= 2680 and ent.Variant ~= 2678) and EntSprite:IsPlaying("WrappedIdle") == false then
        active = ent
    elseif ent.Type == 505 and ent.Variant == 2680 and IRFconfig.Cat then
        if EntSprite:IsPlaying("BrimstoneStart") and (EntSprite:GetFrame() < 32 and EntSprite:GetFrame() > 9) then
            data.Rotate = true
            local angle = (ent.Position - active.Position):GetAngleDegrees()
            TargetLaserIndicator(
                nil,
                ent,
                {angle},
                {180},
                40,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("BrimstoneStart") and EntSprite:GetFrame() > 32 then
            data.Danger = 0
            RemoveLaserIndicator(nil, ent)
            return
        end
    elseif ent.Type == 676 and ent.Variant == 845 and IRFconfig.Maxwell then
        if EntSprite:IsPlaying("Door Brimstone Start") and (EntSprite:GetFrame() < 57 and EntSprite:GetFrame() > 40) then
            spawnTracer(
                nil,
                ent,
                ent.SpriteRotation + 90,
                {1},
                0,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Door Brimstone Start") and EntSprite:GetFrame() > 57 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
end
return ____exports
 end,
["scripts.Vanilla"] = function(...) 
local ____exports = {}
local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.src.index")
local printConsole = ____isaacscript_2Dcommon.printConsole
local frailbaseset = 0
local frailbase = 0
function ____exports.VanillaElseIfHell(self, ent, EntSprite, data, IRFconfig, spawnTracer, RemoveLaserIndicator, AfterDedLaserIndicator, TargetLaserIndicator, time)
    if ent.Type == 241 and IRFconfig.RageCreep then
        if EntSprite:IsPlaying("Attack") and EntSprite:GetFrame() < 20 then
            if ent.Variant == 1 then
                if ent.SpriteRotation == 0 or 180 then
                    spawnTracer(
                        nil,
                        ent,
                        ent.SpriteRotation + 90,
                        {0.65, 1.35},
                        10,
                        false,
                        2,
                        0,
                        0
                    )
                else
                    spawnTracer(
                        nil,
                        ent,
                        ent.SpriteRotation + 90,
                        {0.65, 1.35},
                        10,
                        false,
                        2,
                        0,
                        0
                    )
                end
                return
            else
                if ent.SpriteRotation == 0 or 180 then
                    spawnTracer(
                        nil,
                        ent,
                        ent.SpriteRotation + 90,
                        {1},
                        10,
                        false,
                        2,
                        0,
                        0
                    )
                else
                    spawnTracer(
                        nil,
                        ent,
                        ent.SpriteRotation + 90,
                        {1},
                        10,
                        false,
                        2,
                        0,
                        0
                    )
                end
                return
            end
        end
        if EntSprite:IsPlaying("Attack") and EntSprite:GetFrame() > 20 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 271 and IRFconfig.Uriel then
        if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Charging") then
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                50,
                false,
                2,
                2,
                2
            )
            return
        end
        if BetterMonsters == nil or ent.Variant == 0 then
            if ent:ToNPC().State == 10 and EntSprite:IsPlaying("Charging") then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {0.5, 1.5},
                    50,
                    true,
                    2,
                    2,
                    2
                )
                return
            end
        else
            if ent:ToNPC().State == 10 and EntSprite:IsPlaying("Charging") or ent:ToNPC().State == 12 and EntSprite:IsPlaying("LaserShot") and EntSprite:GetFrame() <= 5 and ent.Variant == 1 then
                data.Rotate = true
                local angle = (ent.Position - Vector(
                    ent:ToNPC():GetPlayerTarget().Position.X,
                    ent:ToNPC():GetPlayerTarget().Position.Y + 30
                )):GetAngleDegrees()
                TargetLaserIndicator(
                    nil,
                    ent,
                    {angle, angle},
                    {215, 145},
                    40,
                    false,
                    1,
                    1,
                    1
                )
            end
        end
        if EntSprite:IsPlaying("LaserShot") and EntSprite:GetFrame() >= 5 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 272 and IRFconfig.Gabriel then
        if BetterMonsters == nil then
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Charging") then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1, 2, 3, 4},
                    50,
                    true,
                    2,
                    2,
                    2
                )
                return
            elseif ent:ToNPC().State == 10 and EntSprite:IsPlaying("Charging2") then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {0.5, 1.5, 2.5, 3.5},
                    50,
                    true,
                    2,
                    2,
                    2
                )
                return
            end
            if EntSprite:IsPlaying("LaserShot") and EntSprite:GetFrame() > 4 then
                if data.IndicatorBrim then
                    data.Danger = 0
                    RemoveLaserIndicator(nil, ent)
                    return
                end
            end
        else
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Charging") then
                if ent.Variant == 0 then
                    spawnTracer(
                        nil,
                        ent,
                        90,
                        {1, 2, 3, 4},
                        50,
                        true,
                        2,
                        2,
                        2
                    )
                end
                return
            elseif ent:ToNPC().State == 10 and EntSprite:IsPlaying("Charging2") then
                if ent.Variant == 0 then
                    spawnTracer(
                        nil,
                        ent,
                        90,
                        {0.5, 1.5, 2.5, 3.5},
                        50,
                        true,
                        2,
                        2,
                        2
                    )
                else
                    spawnTracer(
                        nil,
                        ent,
                        90,
                        {0.5, 1.5, 2.5, 3.5},
                        50,
                        true,
                        2,
                        2,
                        2
                    )
                end
                return
            end
            if EntSprite:IsPlaying("LaserShot") and EntSprite:GetFrame() > 4 then
                if data.IndicatorBrim then
                    data.Danger = 0
                    RemoveLaserIndicator(nil, ent)
                    return
                end
            end
        end
    elseif ent.Type == 43 and ent.Variant == 0 and IRFconfig.Monstro then
        if ent:ToNPC().State == 8 and EntSprite:IsPlaying("Taunt") and EntSprite:GetFrame() < 20 then
            if EntSprite.FlipX == true then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {4},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            else
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if EntSprite:IsPlaying("Taunt") and EntSprite:GetFrame() > 20 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 268 and IRFconfig.Adversary then
        if ent:ToNPC().State == 8 and EntSprite:IsPlaying("Attack2Right") and EntSprite:GetFrame() < 25 and EntSprite:GetFrame() > 10 then
            spawnTracer(
                nil,
                ent,
                90,
                {4},
                50,
                false,
                2,
                0,
                2
            )
            return
        end
        if ent:ToNPC().State == 8 and EntSprite:IsPlaying("Attack2Left") and EntSprite:GetFrame() < 25 and EntSprite:GetFrame() > 10 then
            spawnTracer(
                nil,
                ent,
                90,
                {2},
                50,
                false,
                2,
                0,
                2
            )
            return
        end
        if ent:ToNPC().State == 8 and EntSprite:IsPlaying("Attack2Up") and EntSprite:GetFrame() < 25 and EntSprite:GetFrame() > 10 then
            spawnTracer(
                nil,
                ent,
                90,
                {3},
                50,
                false,
                2,
                0,
                2
            )
            return
        end
        if ent:ToNPC().State == 8 and EntSprite:IsPlaying("Attack2Down") and EntSprite:GetFrame() < 25 and EntSprite:GetFrame() > 10 then
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                50,
                false,
                2,
                0,
                2
            )
            return
        end
        if (EntSprite:IsPlaying("Attack2Right") or EntSprite:IsPlaying("Attack2Left") or EntSprite:IsPlaying("Attack2Up") or EntSprite:IsPlaying("Attack2Down")) and EntSprite:GetFrame() > 25 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 267 and IRFconfig.DarkOne then
        if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() < 25 then
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                50,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() > 25 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 61 and ent.Variant == 2 and IRFconfig.SoulSucker then
        if ent:HasMortalDamage() then
            AfterDedLaserIndicator(
                nil,
                ent,
                90,
                {1, 2, 3, 4},
                10,
                false,
                2,
                0,
                0
            )
            return
        end
    elseif ent.Type == 39 and IRFconfig.Vis then
        if ent.Variant == 0 then
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Down") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Horiz") and EntSprite.FlipX == false and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {4},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Horiz") and EntSprite.FlipX == true and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Up") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {3},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if ent.Variant == 1 then
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack02Horiz") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2, 4},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if ent:ToNPC().State == 9 and (EntSprite:IsPlaying("Attack02Up") or EntSprite:IsPlaying("Attack02Down")) and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {3, 1},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if ent.Variant == 3 then
            if ent:ToNPC().State == 9 and (EntSprite:IsPlaying("Attack04Up") or EntSprite:IsPlaying("Attack04Down") or EntSprite:IsPlaying("Attack04Horiz")) and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1, 2, 3, 4},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if (EntSprite:IsPlaying("Attack01Up") or EntSprite:IsPlaying("Attack01Horiz") or EntSprite:IsPlaying("Attack01Down") or EntSprite:IsPlaying("Attack02Down") or EntSprite:IsPlaying("Attack02Up") or EntSprite:IsPlaying("Attack02Horiz") or EntSprite:IsPlaying("Attack04Down") or EntSprite:IsPlaying("Attack04Up") or EntSprite:IsPlaying("Attack04Horiz")) and EntSprite:GetFrame() > 30 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 836 and IRFconfig.Vis then
        if ent.Variant == 0 then
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Down") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    20,
                    false,
                    2,
                    0,
                    2
                )
                return
            end
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Horiz") and EntSprite.FlipX == false and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {4},
                    20,
                    false,
                    2,
                    0,
                    2
                )
                return
            end
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Horiz") and EntSprite.FlipX == true and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2},
                    20,
                    false,
                    2,
                    0,
                    2
                )
                return
            end
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Up") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {3},
                    20,
                    false,
                    2,
                    0,
                    2
                )
                return
            end
        end
        if (EntSprite:IsPlaying("Attack01Up") or EntSprite:IsPlaying("Attack01Horiz") or EntSprite:IsPlaying("Attack01Down")) and EntSprite:GetFrame() > 30 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 285 and IRFconfig.RedGhost then
        if ent:ToNPC().State == 13 then
            return
        end
        if ent.Variant == 0 then
            if EntSprite:IsPlaying("AppearLeft") and EntSprite:GetFrame() > 5 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2},
                    30,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("AppearRight") and EntSprite:GetFrame() > 5 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {4},
                    30,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("AppearUp") and EntSprite:GetFrame() > 5 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {3},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("AppearDown") and EntSprite:GetFrame() > 5 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if (EntSprite:IsPlaying("ShootLeft") or EntSprite:IsPlaying("ShootRight") or EntSprite:IsPlaying("ShootUp") or EntSprite:IsPlaying("ShootDown")) and EntSprite:GetFrame() > 20 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 891 and IRFconfig.Goat then
        if ent.SubType == 41 then
            return
        end
        if ent.Variant == 1 then
            if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() < 35 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1, 2, 3, 4},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() > 35 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 203 and IRFconfig.BrimstoneHead then
        if ent.Variant == 0 then
            if EntSprite:IsPlaying("ShootLeft") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2},
                    10,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("ShootRight") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {4},
                    10,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("ShootUp") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {3},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("ShootDown") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if (EntSprite:IsPlaying("ShootLeft") or EntSprite:IsPlaying("ShootRight") or EntSprite:IsPlaying("ShootUp") or EntSprite:IsPlaying("ShootDown")) and EntSprite:GetFrame() > 30 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 81 and IRFconfig.Krampus then
        if ent.Variant == 0 then
            if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() < 35 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1, 2, 3, 4},
                    40,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if ent.Variant == 1 then
            if EntSprite:IsPlaying("Attack2Alt") and EntSprite:GetFrame() < 31 and EntSprite:GetFrame() > 5 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1, 2, 3, 4},
                    40,
                    false,
                    2,
                    0,
                    0
                )
            end
            if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() < 35 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {
                        1,
                        2,
                        3,
                        4,
                        1.5,
                        2.5,
                        3.5,
                        4.5
                    },
                    40,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if EntSprite:IsPlaying("Attack2") and EntSprite:GetFrame() > 35 or EntSprite:IsPlaying("Attack2Alt") and EntSprite:GetFrame() > 31 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 79 and ent.Variant == 12 and IRFconfig.BlightedOvum and BetterMonsters == nil then
        if EntSprite:IsPlaying("Attack01") and EntSprite.FlipX == false and EntSprite:GetFrame() < 30 then
            spawnTracer(
                nil,
                ent,
                90,
                {4},
                40,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack01") and EntSprite.FlipX == true and EntSprite:GetFrame() < 30 then
            spawnTracer(
                nil,
                ent,
                90,
                {2},
                40,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack01") and EntSprite:GetFrame() > 35 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 403 and ent.Variant == 0 and IRFconfig.Forsaken and BetterMonsters == nil then
        data.Rotate = true
        if EntSprite:IsPlaying("BlastStart") and EntSprite:GetFrame() <= 22 then
            local angle = (ent.Position - ent:ToNPC():GetPlayerTarget().Position):GetAngleDegrees()
            TargetLaserIndicator(
                nil,
                ent,
                {angle, angle, angle},
                {0, 120, 240},
                30,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("BlastStart") and EntSprite:GetFrame() >= 23 or EntSprite:IsPlaying("Blasting") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 60 and IRFconfig.BloodEye then
        if ent.Variant == 1 then
            if ent:ToNPC().State == 8 and EntSprite:IsOverlayPlaying("ShootOverlay") then
                local angle = (ent.Position - ent:ToNPC():GetPlayerTarget().Position):GetAngleDegrees()
                TargetLaserIndicator(
                    nil,
                    ent,
                    {angle},
                    {180},
                    15,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if ent:ToNPC().State == 4 then
                if data.IndicatorBrim then
                    data.Danger = 0
                    RemoveLaserIndicator(nil, ent)
                    return
                end
            end
        elseif ent.Variant == 0 then
            if EntSprite:IsPlaying("Shoot") and EntSprite:GetFrame() <= 10 then
                local angle = (ent.Position - ent:ToNPC():GetPlayerTarget().Position):GetAngleDegrees()
                TargetLaserIndicator(
                    nil,
                    ent,
                    {angle},
                    {180},
                    5,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("Shoot") and EntSprite:GetFrame() >= 11 then
                if data.IndicatorBrim then
                    data.Danger = 0
                    RemoveLaserIndicator(nil, ent)
                    return
                end
            end
        end
    elseif ent.Type == 900 and IRFconfig.ReapCreep then
        if EntSprite:IsPlaying("Attack3Charge") and EntSprite:GetFrame() < 23 then
            data.Ambiguous = true
            data.Mega = false
            spawnTracer(
                nil,
                ent,
                90,
                {1.65, 1.5, 4.5, 4.35},
                40,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack3BeamStart") and EntSprite:GetFrame() < 23 then
            local ____ = data.Ambiguous == false
            data.Mega = true
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                40,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Attack3BeamStart") and EntSprite:GetFrame() > 23 then
            if data.IndicatorBrim then
                data.Ambiguous = false
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 68 and IRFconfig.Bloat then
        if ent.Variant == 1 then
            if EntSprite:IsPlaying("AttackAlt01") and EntSprite:GetFrame() < 10 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    50,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("AttackAlt02") and EntSprite:GetFrame() < 10 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2, 4},
                    70,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if (EntSprite:IsPlaying("AttackAlt01") or EntSprite:IsPlaying("AttackAlt02")) and EntSprite:GetFrame() > 10 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 410 and IRFconfig.Sister then
        if ent.Variant == 0 then
            data.Mega = true
            if EntSprite:IsPlaying("LaserStartDown") and EntSprite:GetFrame() > 26 and (ent:ToNPC().State == 10 or ent:ToNPC().State == 9 or ent:ToNPC().State == 11) then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    30,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("LaserStartSide") and EntSprite:GetFrame() > 26 and EntSprite.FlipX == true and (ent:ToNPC().State == 10 or ent:ToNPC().State == 9 or ent:ToNPC().State == 11) then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2},
                    30,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("LaserStartSide") and EntSprite:GetFrame() > 26 and EntSprite.FlipX == false and (ent:ToNPC().State == 10 or ent:ToNPC().State == 9 or ent:ToNPC().State == 11) then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {4},
                    30,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("LaserStartUp") and EntSprite:GetFrame() > 26 and (ent:ToNPC().State == 10 or ent:ToNPC().State == 9 or ent:ToNPC().State == 11) then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {3},
                    30,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if EntSprite:IsPlaying("LaserLoopDown") or EntSprite:IsPlaying("LaserLoopUp") or EntSprite:IsPlaying("LaserLoopSide") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 903 and IRFconfig.Visage then
        if ent.Variant == 1 then
            if EntSprite:IsPlaying("AttackDown") and EntSprite:GetFrame() < 13 and ent:ToNPC().State == 108 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    30,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("AttackLeft") and EntSprite:GetFrame() < 13 and ent:ToNPC().State == 108 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2},
                    30,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("AttackRight") and EntSprite:GetFrame() < 13 and ent:ToNPC().State == 108 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {4},
                    30,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("AttackDown") and EntSprite:GetFrame() < 13 and ent:ToNPC().State == 108 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {3},
                    30,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if (EntSprite:IsPlaying("AttackDown") or EntSprite:IsPlaying("AttackLeft") or EntSprite:IsPlaying("AttackRight") or EntSprite:IsPlaying("AttackDown")) and EntSprite:GetFrame() > 13 and ent:ToNPC().State == 108 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 4 and ent.Variant == 15 and IRFconfig.BrimBomb then
        if EntSprite:IsPlaying("Pulse") then
            spawnTracer(
                nil,
                ent,
                90,
                {1, 2, 3, 4},
                0,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Explode") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 912 and IRFconfig.Mother then
        data.Mega = true
        if EntSprite:IsPlaying("Transition") and EntSprite:GetFrame() > 80 and EntSprite:GetFrame() < 102 then
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                50,
                false,
                0,
                2,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Transition") and EntSprite:GetFrame() > 102 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 84 and IRFconfig.Satan then
        if BetterMonsters ~= nil then
            if EntSprite:IsPlaying("Attack02") and EntSprite:GetFrame() < 20 and ent:ToNPC().State == 9 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    50,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("Attack03") and EntSprite:GetFrame() >= 5 and EntSprite:GetFrame() <= 20 and ent:ToNPC().State == 13 then
                local angle = (Vector(ent.Position.X + 100, ent.Position.Y) - Vector(
                    ent:ToNPC():GetPlayerTarget().Position.X,
                    ent:ToNPC():GetPlayerTarget().Position.Y + 30
                )):GetAngleDegrees()
                local angle2 = (Vector(ent.Position.X - 100, ent.Position.Y) - Vector(
                    ent:ToNPC():GetPlayerTarget().Position.X,
                    ent:ToNPC():GetPlayerTarget().Position.Y + 30
                )):GetAngleDegrees()
                TargetLaserIndicator(
                    nil,
                    ent,
                    {angle2, angle},
                    {180, 180},
                    40,
                    false,
                    2,
                    0,
                    0,
                    {100, -100}
                )
                return
            end
            if EntSprite:IsPlaying("Attack02") and EntSprite:GetFrame() > 20 or EntSprite:IsPlaying("Attack03") and EntSprite:GetFrame() > 15 then
                if data.IndicatorBrim then
                    data.Danger = 0
                    RemoveLaserIndicator(nil, ent)
                    return
                end
            end
        else
            if EntSprite:IsPlaying("Attack02") and EntSprite:GetFrame() < 20 and ent:ToNPC().State == 9 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    50,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("Attack03") and EntSprite:GetFrame() < 15 and ent:ToNPC().State == 10 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1.3, 4.7},
                    40,
                    false,
                    2,
                    0,
                    0,
                    {110, -110}
                )
                return
            end
            if EntSprite:IsPlaying("Attack02") and EntSprite:GetFrame() > 20 or EntSprite:IsPlaying("Attack03") and EntSprite:GetFrame() > 15 then
                if data.IndicatorBrim then
                    data.Danger = 0
                    RemoveLaserIndicator(nil, ent)
                    return
                end
            end
        end
    elseif ent.Type == 273 and IRFconfig.TheLamb then
        if EntSprite:IsPlaying("HeadCharge") and ent:ToNPC().State == 11 then
            spawnTracer(
                nil,
                ent,
                90,
                {1, 2, 3, 4},
                50,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("HeadShoot2Start") and EntSprite:GetFrame() > 10 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 950 and IRFconfig.Dogma then
        if EntSprite:IsPlaying("BrimstoneStartRight") and ent:ToNPC().State == 8 and EntSprite.FlipX == false then
            spawnTracer(
                nil,
                ent,
                90,
                {4},
                45,
                false,
                2,
                2,
                2
            )
            return
        end
        if EntSprite:IsPlaying("BrimstoneStartRight") and ent:ToNPC().State == 8 and EntSprite.FlipX == true then
            spawnTracer(
                nil,
                ent,
                90,
                {2},
                45,
                false,
                2,
                2,
                2
            )
            return
        end
        if EntSprite:IsPlaying("BrimstoneStartDown") and ent:ToNPC().State == 8 then
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                45,
                false,
                2,
                2,
                2
            )
            return
        end
        if EntSprite:IsPlaying("BrimstoneStartUp") and ent:ToNPC().State == 8 then
            spawnTracer(
                nil,
                ent,
                90,
                {3},
                45,
                false,
                2,
                2,
                2
            )
            return
        end
        if EntSprite:IsPlaying("BrimstoneLoopRight") or EntSprite:IsPlaying("BrimstoneLoopUp") or EntSprite:IsPlaying("BrimstoneLoopDown") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 49 and IRFconfig.Gluttony then
        if ent.Variant == 0 then
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Down") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Horiz") and EntSprite.FlipX == false and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {4},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Horiz") and EntSprite.FlipX == true and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack01Up") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {3},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if (EntSprite:IsPlaying("Attack01Up") or EntSprite:IsPlaying("Attack01Horiz") or EntSprite:IsPlaying("Attack01Down")) and EntSprite:GetFrame() > 30 then
                if data.IndicatorBrim then
                    data.Danger = 0
                    RemoveLaserIndicator(nil, ent)
                    return
                end
            end
        end
        if ent.Variant == 1 then
            if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Attack02Horiz") and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {2, 4},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if ent:ToNPC().State == 9 and (EntSprite:IsPlaying("Attack02Up") or EntSprite:IsPlaying("Attack02Down")) and EntSprite:GetFrame() < 30 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {3, 1},
                    20,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if (EntSprite:IsPlaying("Attack02Up") or EntSprite:IsPlaying("Attack02Horiz") or EntSprite:IsPlaying("Attack02Down")) and EntSprite:GetFrame() > 30 then
                if data.IndicatorBrim then
                    data.Danger = 0
                    RemoveLaserIndicator(nil, ent)
                    return
                end
            end
        end
    elseif ent.Type == 294 and IRFconfig.UltraGreed then
        if ent:ToNPC().State == 9 and EntSprite:IsPlaying("Open") then
            spawnTracer(
                nil,
                ent,
                ent.SpriteRotation + 90,
                {1},
                0,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Opened") and EntSprite:GetFrame() > 15 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 260 and IRFconfig.Haunt then
        if ent.SubType == 0 then
            if EntSprite:IsPlaying("LaserNoSkin") and ent:ToNPC().State == 9 and EntSprite:GetFrame() < 20 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1},
                    50,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if ent.SubType == 2 then
            if EntSprite:IsPlaying("LaserNoSkin") and ent:ToNPC().State == 9 and EntSprite:GetFrame() < 20 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {0.5, 1.5},
                    50,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
        end
        if EntSprite:IsPlaying("LaserNoSkin") and EntSprite:GetFrame() > 20 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 45 and IRFconfig.Mom then
        if EntSprite:IsPlaying("EyeLaser") and EntSprite:GetFrame() < 45 and EntSprite:GetFrame() > 20 then
            spawnTracer(
                nil,
                ent,
                ent.SpriteRotation + 90,
                {1},
                0,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("EyeLaser") and EntSprite:GetFrame() > 45 then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 274 and IRFconfig.MegaSatan then
        data.Mega = true
        if EntSprite:IsPlaying("Charging") and ent:ToNPC().State == 8 then
            spawnTracer(
                nil,
                ent,
                90,
                {1},
                50,
                false,
                2,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("Shoot2Loop") or EntSprite:IsPlaying("Shoot1") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    elseif ent.Type == 951 and IRFconfig.TheBeast then
        data.Mega = true
        if EntSprite:IsPlaying("SuckEnd") and EntSprite:GetFrame() > 18 then
            spawnTracer(
                nil,
                ent,
                90,
                {2},
                0,
                false,
                3,
                0,
                0
            )
            return
        end
        if EntSprite:IsPlaying("BlastLoop") or EntSprite:IsFinished("SuckEnd") then
            if data.IndicatorBrim then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if ent.Type == 52 and IRFconfig.Pride then
        if BetterMonsters ~= nil then
            if EntSprite:IsPlaying("Attack01") and EntSprite:GetFrame() < 18 and ent.Variant == 0 and ent.SubType == 1 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1, 2, 3, 4},
                    30,
                    false,
                    3,
                    3,
                    0
                )
                return
            elseif EntSprite:IsPlaying("Attack01") and EntSprite:GetFrame() < 18 and ent.Variant == 0 and ent.SubType == 0 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1.5, 2.5, 3.5, 4.5},
                    35,
                    false,
                    2,
                    2,
                    2
                )
                return
            elseif EntSprite:IsPlaying("Attack01") and ent.Variant == 1 and ent:ToNPC().I2 == 0 and EntSprite:GetFrame() < 18 then
                printConsole(
                    nil,
                    tostring(EntSprite:GetFrame())
                )
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1.5, 2.5, 3.5, 4.5},
                    35,
                    false,
                    3,
                    0,
                    0
                )
            elseif EntSprite:IsPlaying("Attack01") and ent.Variant == 1 and EntSprite:GetFrame() > 25 and ent:ToNPC().I2 == 0 then
                printConsole(
                    nil,
                    tostring(EntSprite:GetFrame())
                )
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1, 2, 3, 4},
                    30,
                    false,
                    3,
                    0,
                    0
                )
            end
            if EntSprite:IsPlaying("Attack01") and EntSprite:GetFrame() > 18 and ent.Variant == 0 then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            elseif EntSprite:IsPlaying("Attack01") and EntSprite:GetFrame() > 18 and EntSprite:GetFrame() < 25 and ent.Variant == 1 and ent:ToNPC().I2 == 0 then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            elseif EntSprite:IsPlaying("Attack01") and EntSprite:GetFrame() > 18 and ent.Variant == 1 and ent:ToNPC().I2 == 1 then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        else
            if EntSprite:IsPlaying("Attack01") and EntSprite:GetFrame() < 18 then
                spawnTracer(
                    nil,
                    ent,
                    90,
                    {1.5, 2.5, 3.5, 4.5},
                    40,
                    false,
                    3,
                    0,
                    0
                )
                return
            end
            if EntSprite:IsPlaying("Attack01") and EntSprite:GetFrame() > 18 then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
    end
    if ent.Type == 62 and ent.Variant == 2 and IRFconfig.Frail then
        if ent:ToNPC().State == 8 and EntSprite:IsPlaying("Attack3Charge") and EntSprite:GetFrame() < 20 then
            local angle = (ent.Position - ent:ToNPC():GetPlayerTarget().Position):GetAngleDegrees()
            TargetLaserIndicator(
                nil,
                ent,
                {angle},
                {180},
                70,
                false,
                2,
                0,
                0
            )
            return
        end
        if ent:ToNPC().State == 10 then
            if ent:ToNPC().I2 < 7200000 and ent:ToNPC().I2 > 7000000 then
                local angle = (ent.Position - ent:ToNPC():GetPlayerTarget().Position):GetAngleDegrees()
                TargetLaserIndicator(
                    nil,
                    ent,
                    {angle},
                    {180},
                    70,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if ent:ToNPC().I2 < 3900000 and ent:ToNPC().I2 > 3800000 then
                local angle = (ent.Position - ent:ToNPC():GetPlayerTarget().Position):GetAngleDegrees()
                TargetLaserIndicator(
                    nil,
                    ent,
                    {angle},
                    {180},
                    70,
                    false,
                    2,
                    0,
                    0
                )
                return
            end
            if ent:ToNPC().I2 < 6200000 and ent:ToNPC().I2 > 6100000 or ent:ToNPC().I2 < 3100000 and ent:ToNPC().I2 > 3000000 then
                data.Danger = 0
                RemoveLaserIndicator(nil, ent)
                return
            end
        end
        if ent:ToNPC().State == 8 and EntSprite:IsPlaying("Attack3Charge") and EntSprite:GetFrame() > 20 then
            data.Danger = 0
            RemoveLaserIndicator(nil, ent)
            return
        end
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.index"] = function(...) 
local ____exports = {}
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.classes.ModFeature")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.classes.ModUpgradedBase")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.core.constants")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.core.constantsFirstLast")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.core.upgradeMod")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.AmbushType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.CornerType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.HealthType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.LadderSubTypeCustom")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.PocketItemType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.RockAltType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.SaveDataKey")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.SerializationBrand")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.SerializationType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.SlotDestructionType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.enums.StatType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.ambush")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.array")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.arrayLua")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.benchmark")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.bitSet128")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.bitwise")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.bombs")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.bosses")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.cards")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.challenges")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.characters")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.charge")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.chargeBar")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.collectibleTag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.color")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.curses")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.debugFunctions")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.decorators")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.deepCopy")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.deepCopyTests")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.dimensions")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.direction")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.doors")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.easing")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.effects")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.emptyRoom")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.entities")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.entityTypes")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.enums")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.familiars")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.flag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.globals")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.gridIndex")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.hex")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.initArray")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.input")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.jsonHelpers")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.jsonRoom")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.kColor")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.language")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.level")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.levelGrid")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.log")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.logEntities")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.map")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.math")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.merge")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.mergeTests")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.minimap")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.nextStage")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.npcs")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.pickups")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.pickupsSpecific")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.pickupVariants")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.pills")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.playerCenter")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.playerHealth")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.players")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.playerStats")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.pocketItems")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.positionVelocity")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.pressurePlate")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.projectiles")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.random")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.revive")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.rng")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.rockAlt")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.roomGrid")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.roomShape")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.roomShapeWalls")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.roomTransition")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.run")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.seeds")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.serialization")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.set")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.sound")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.spawnCollectible")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.sprites")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.stage")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.stats")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.string")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.table")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.tears")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.transformations")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.trinketGive")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.trinkets")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.types")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.ui")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.utils")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.vector")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.functions.weighted")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.maps.cardNameToTypeMap")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.maps.characterNameToTypeMap")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.maps.pillNameToEffectMap")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.maps.roomNameToTypeMap")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.maps.transformationNameToPlayerFormMap")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.objects.colors")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.objects.kColors")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaacscript-common.dist.src.types.PickingUpItem")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.DefaultMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local Map = ____lualib.Map
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__TypeOf = ____lualib.__TS__TypeOf
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isFunction = ____types.isFunction
local isPrimitive = ____types.isPrimitive
--- `DefaultMap` is a data structure that makes working with default values easier. It extends a
-- `Map` and adds additional methods.
-- 
-- It is a common pattern to look up a value in a `Map`, and then, if the value does not exist, set
-- a default value for the key, and then return the default value. `DefaultMap` abstracts this
-- operation away by providing the `getAndSetDefault` method.
-- 
-- Using a `DefaultMap` is nice because it makes code more declarative, since you specify what the
-- default value is alongside the types of the keys/values.
-- 
-- When instantiating a new `DefaultMap`, you must specify default value as the first argument. (The
-- default value is the initial value that will be assigned to every new entry in the
-- `getAndSetDefault` method.) For example:
-- 
-- ```ts
-- // Initializes a new empty DefaultMap with a default value of "foo".
-- const defaultMapWithString = new DefaultMap<string, string>("foo");
-- 
-- const value = defaultMapWithString.getAndSetDefault("bar");
-- // value is now "foo" and an entry for "bar" is now set.
-- ```
-- 
-- Sometimes, instead of having a static initial value for every entry in the map, you will want a
-- dynamic initial value that is contingent upon the key or some other variable. In these cases, you
-- can instead specify that the `DefaultMap` should run a function that will return the initial
-- value. (This is referred to as a "factory function".) For example:
-- 
-- ```ts
-- // Initializes a new empty DefaultMap with a default value based on "someGlobalVariable".
-- const factoryFunction = () => someGlobalVariable ? 0 : 1;
-- const defaultMapWithFactoryFunction = new DefaultMap<string, string>(factoryFunction);
-- ```
-- 
-- Note that in TypeScript and Lua, booleans, numbers, and strings are "passed by value". This means
-- that when the `DefaultMap` creates a new entry, if the default value is one of these 3 types, the
-- values will be copied. On the other hand, arrays and maps and other complex data structures are
-- "passed by reference". This means that when the `DefaultMap` creates a new entry, if the default
-- value is an array, then it would not be copied. Instead, the same shared array would be assigned
-- to every entry. Thus, to solve this problem, any variable that is passed by reference must be
-- created using a factory function to ensure that each copy is unique. For example:
-- 
-- ```ts
-- // Initializes a new empty DefaultMap with a default value of a new empty array.
-- const factoryFunction = () => [];
-- const defaultMapWithArray = new DefaultMap<string, string[]>(factoryFunction);
-- ```
-- 
-- In the previous two examples, the factory functions did not have any arguments. But you can also
-- specify a factory function that takes one or more arguments:
-- 
-- ```ts
-- const factoryFunction = (arg: boolean) => arg ? 0 : 1;
-- const defaultMapWithArg = new DefaultMap<string, string, [arg: boolean]>(factoryFunction);
-- ```
-- 
-- Similar to a normal `Map`, you can also include an initializer list in the constructor as the
-- second argument:
-- 
-- ```ts
-- // Initializes a DefaultMap with a default value of "foo" and some initial values.
-- const defaultMapWithInitialValues = new DefaultMap<string, string>("foo", [
--   ["a1", "a2"],
--   ["b1", "b2"],
-- ], );
-- ```
-- 
-- Finally, note that `DefaultMap` has the following additional utility methods:
-- 
-- - `getAndSetDefault` - The method that is called inside the overridden `get` method. In most
--   cases, you can use the overridden `get` method instead of calling this function directly.
--   However, if a factory function was provided during instantiation, and the factory function has
--   one or more arguments, then you must call this method instead (and provide the corresponding
--   arguments).
-- - `getWithoutDefault` - Calls the original `Map.get` function (without setting the default
--   value).
-- - `getDefaultValue` - Returns the default value to be used for a new key. (If a factory function
--   was provided during instantiation, this will execute the factory function.)
-- - `getConstructorArg` - Helper method for cloning the map. Returns either the default value or
--   the reference to the factory function.
____exports.DefaultMap = __TS__Class()
local DefaultMap = ____exports.DefaultMap
DefaultMap.name = "DefaultMap"
__TS__ClassExtends(DefaultMap, Map)
function DefaultMap.prototype.____constructor(self, defaultValueOrFactoryFunction, initializerArray)
    local argIsPrimitive = isPrimitive(nil, defaultValueOrFactoryFunction)
    local argIsFunction = isFunction(nil, defaultValueOrFactoryFunction)
    if not argIsPrimitive and not argIsFunction then
        error(("Failed to instantiate a DefaultMap since the provided default value was of type \"" .. __TS__TypeOf(defaultValueOrFactoryFunction)) .. "\". This error usually means that you are trying to use an array (or some other non-primitive data structure that is passed by reference) as the default value. Instead, return the data structure in a factory function, like \"() => []\". See the DefaultMap documentation for more details.")
    end
    Map.prototype.____constructor(self, initializerArray)
    if argIsFunction then
        self.defaultValue = nil
        self.defaultValueFactory = defaultValueOrFactoryFunction
    else
        self.defaultValue = defaultValueOrFactoryFunction
        self.defaultValueFactory = nil
    end
end
function DefaultMap.prototype.getAndSetDefault(self, key, ...)
    local value = Map.prototype.get(self, key)
    if value ~= nil then
        return value
    end
    local defaultValue = self:getDefaultValue(...)
    self:set(key, defaultValue)
    return defaultValue
end
function DefaultMap.prototype.getDefaultValue(self, ...)
    if self.defaultValue ~= nil then
        return self.defaultValue
    end
    if self.defaultValueFactory ~= nil then
        return self:defaultValueFactory(...)
    end
    error("A DefaultMap was incorrectly instantiated.")
end
function DefaultMap.prototype.getConstructorArg(self)
    if self.defaultValue ~= nil then
        return self.defaultValue
    end
    if self.defaultValueFactory ~= nil then
        return self.defaultValueFactory
    end
    error("A DefaultMap was incorrectly instantiated.")
end
local function test(self)
    local myDefaultMapBoolean = __TS__New(____exports.DefaultMap, false)
    local myDefaultMapBooleanFactory = __TS__New(
        ____exports.DefaultMap,
        function() return false end
    )
    local myDefaultMapBooleanWithoutParams = __TS__New(____exports.DefaultMap, false)
    local myDefaultMapNumber = __TS__New(____exports.DefaultMap, 123)
    local myDefaultMapNumberFactory = __TS__New(
        ____exports.DefaultMap,
        function() return 123 end
    )
    local myDefaultMapNumberWithoutParams = __TS__New(____exports.DefaultMap, 123)
    local myDefaultMapString = __TS__New(____exports.DefaultMap, "foo")
    local myDefaultMapStringFactory = __TS__New(
        ____exports.DefaultMap,
        function() return "foo" end
    )
    local myDefaultMapStringWithoutParams = __TS__New(____exports.DefaultMap, "foo")
    local myDefaultMapArray = __TS__New(
        ____exports.DefaultMap,
        function() return {} end
    )
    local myDefaultMapArrayWithoutParams = __TS__New(
        ____exports.DefaultMap,
        function() return {} end
    )
    local myDefaultMapMap = __TS__New(
        ____exports.DefaultMap,
        function() return __TS__New(Map) end
    )
    local myDefaultMapMapWithoutParams = __TS__New(
        ____exports.DefaultMap,
        function() return __TS__New(Map) end
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.types"] = function(...) 
local ____exports = {}
--- Helper function to safely cast a `number` to a `CardType`. (This is better than using the `as`
-- TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
-- 
-- This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
function ____exports.asCardType(self, num)
    return num
end
--- Helper function to safely cast a `number` to a `CollectibleType`. (This is better than using the
-- `as` TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
-- 
-- This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
function ____exports.asCollectibleType(self, num)
    return num
end
--- Helper function to safely cast a `number` to a `LevelStage`. (This is better than using the `as`
-- TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
-- 
-- This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
function ____exports.asLevelStage(self, num)
    return num
end
--- Helper function to safely cast a `number` to a `NpcState`. (This is better than using the `as`
-- TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
-- 
-- This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
function ____exports.asNpcState(self, num)
    return num
end
--- Helper function to safely cast an enum to a `number`. (This is better than using the `as`
-- TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
-- 
-- This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
function ____exports.asNumber(self, num)
    return num
end
--- Helper function to safely cast a `number` to a `PillColor`. (This is better than using the `as`
-- TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
-- 
-- This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
function ____exports.asPillColor(self, num)
    return num
end
--- Helper function to safely cast a `number` to a `PillEffect`. (This is better than using the `as`
-- TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
-- 
-- This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
function ____exports.asPillEffect(self, num)
    return num
end
--- Helper function to safely cast a `number` to a `PlayerType`. (This is better than using the `as`
-- TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
-- 
-- This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
function ____exports.asPlayerType(self, num)
    return num
end
--- Helper function to safely cast an enum to a `string`. (This is better than using the `as`
-- TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
-- 
-- This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
function ____exports.asString(self, str)
    return str
end
--- Helper function to safely cast a `number` to a `TrinketType`. (This is better than using the `as`
-- TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
-- 
-- This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
function ____exports.asTrinketType(self, num)
    return num
end
function ____exports.isBoolean(self, variable)
    return type(variable) == "boolean"
end
function ____exports.isFunction(self, variable)
    return type(variable) == "function"
end
function ____exports.isNumber(self, variable)
    return type(variable) == "number"
end
--- Helper function to detect if a variable is a boolean, number, or string.
function ____exports.isPrimitive(self, variable)
    local variableType = type(variable)
    return variableType == "boolean" or variableType == "number" or variableType == "string"
end
function ____exports.isString(self, variable)
    return type(variable) == "string"
end
function ____exports.isTable(self, variable)
    return type(variable) == "table"
end
function ____exports.isUserdata(self, variable)
    return type(variable) == "userdata"
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.ModFeature"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local initDecoratedCallbacks, addCallback, removeCallback, initSaveDataManager, WRAPPED_CALLBACK_METHODS_KEY, WRAPPED_CUSTOM_CALLBACK_METHODS_KEY
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local isArray = ____array.isArray
local ____deepCopy = require("lua_modules.isaacscript-common.dist.src.functions.deepCopy")
local deepCopy = ____deepCopy.deepCopy
local ____tstlClass = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
local getTSTLClassConstructor = ____tstlClass.getTSTLClassConstructor
local getTSTLClassName = ____tstlClass.getTSTLClassName
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isFunction = ____types.isFunction
local isNumber = ____types.isNumber
local isTable = ____types.isTable
function initDecoratedCallbacks(self, modFeature, constructor, tstlClassName, vanilla, init)
    local modFeatureConstructor = constructor
    local argsKey = vanilla and ____exports.ADD_CALLBACK_ARGS_KEY or ____exports.ADD_CALLBACK_CUSTOM_ARGS_KEY
    local addCallbackArgs = modFeatureConstructor[argsKey]
    if addCallbackArgs == nil then
        return
    end
    if not isArray(nil, addCallbackArgs) then
        error(("Failed to initialize/uninitialize the decorated callbacks on a mod feature since the callback arguments on the key of \"" .. argsKey) .. "\" was not an array.")
    end
    for ____, args in ipairs(addCallbackArgs) do
        if not isArray(nil, args) then
            error("Failed to initialize/uninitialize the decorated callbacks on a mod feature since one of the callback arguments was not an array.")
        end
        local parameters = deepCopy(nil, args)
        local modCallback = table.remove(parameters, 1)
        if not isNumber(nil, modCallback) then
            error("Failed to get the callback number from the parameters for class: " .. tstlClassName)
        end
        local callback = table.remove(parameters, 1)
        if not isFunction(nil, callback) then
            error("Failed to get the callback function from the parameters for class: " .. tstlClassName)
        end
        local mod = modFeature.mod
        if init then
            addCallback(
                nil,
                modFeature,
                modFeatureConstructor,
                mod,
                modCallback,
                callback,
                parameters,
                vanilla
            )
        else
            removeCallback(
                nil,
                modFeatureConstructor,
                mod,
                modCallback,
                vanilla
            )
        end
    end
end
function addCallback(self, modFeature, modFeatureConstructor, mod, modCallback, callback, parameters, vanilla)
    local function wrappedCallback(____, ...)
        local castedCallback = callback
        return castedCallback(modFeature, ...)
    end
    if vanilla then
        local modCallbackVanilla = modCallback
        local wrappedMethodsMap = modFeatureConstructor[WRAPPED_CALLBACK_METHODS_KEY]
        if wrappedMethodsMap == nil then
            wrappedMethodsMap = __TS__New(Map)
            modFeatureConstructor[WRAPPED_CALLBACK_METHODS_KEY] = wrappedMethodsMap
        end
        wrappedMethodsMap:set(modCallbackVanilla, wrappedCallback)
    else
        local modCallbackCustom = modCallback
        local wrappedMethodsMap = modFeatureConstructor[WRAPPED_CUSTOM_CALLBACK_METHODS_KEY]
        if wrappedMethodsMap == nil then
            wrappedMethodsMap = __TS__New(Map)
            modFeatureConstructor[WRAPPED_CUSTOM_CALLBACK_METHODS_KEY] = wrappedMethodsMap
        end
        wrappedMethodsMap:set(modCallbackCustom, wrappedCallback)
    end
    if vanilla then
        mod:AddCallback(
            modCallback,
            wrappedCallback,
            table.unpack(parameters)
        )
    else
        mod:AddCallbackCustom(
            modCallback,
            wrappedCallback,
            table.unpack(parameters)
        )
    end
end
function removeCallback(self, modFeatureConstructor, mod, modCallback, vanilla)
    if vanilla then
        local modCallbackVanilla = modCallback
        local wrappedMethodsMap = modFeatureConstructor[WRAPPED_CALLBACK_METHODS_KEY]
        if wrappedMethodsMap == nil then
            return
        end
        local wrappedCallback = wrappedMethodsMap:get(modCallbackVanilla)
        mod:RemoveCallback(modCallback, wrappedCallback)
    else
        local modCallbackCustom = modCallback
        local wrappedMethodsMap = modFeatureConstructor[WRAPPED_CUSTOM_CALLBACK_METHODS_KEY]
        if wrappedMethodsMap == nil then
            return
        end
        local wrappedCallback = wrappedMethodsMap:get(modCallbackCustom)
        mod:RemoveCallbackCustom(modCallback, wrappedCallback)
    end
end
function initSaveDataManager(self, modFeature, tstlClassName, init)
    local ____modFeature_0 = modFeature
    local v = ____modFeature_0.v
    if v == nil then
        return
    end
    if not isTable(nil, v) then
        error("Failed to initialize a mod feature class due to having a \"v\" property that is not an object. (The \"v\" property is supposed to be an object that holds the variables for the class, managed by the save data manager.)")
    end
    local mod = modFeature.mod
    local saveDataManagerMethodName = init and "saveDataManager" or "saveDataManagerRemove"
    local saveDataManagerMethod = mod[saveDataManagerMethodName]
    if saveDataManagerMethod == nil then
        error("Failed to initialize a mod feature class due to having a \"v\" object and not having the save data manager initialized. You must pass \"ISCFeature.SAVE_DATA_MANAGER\" to the \"upgradeMod\" function.")
    end
    if type(saveDataManagerMethod) ~= "function" then
        error(("The \"" .. saveDataManagerMethodName) .. "\" property of the \"ModUpgraded\" object was not a function.")
    end
    if init then
        saveDataManagerMethod(nil, tstlClassName, v)
    else
        saveDataManagerMethod(nil, tstlClassName)
    end
end
____exports.ADD_CALLBACK_ARGS_KEY = "__addCallbackArgs"
____exports.ADD_CALLBACK_CUSTOM_ARGS_KEY = "__addCallbackCustomArgs"
WRAPPED_CALLBACK_METHODS_KEY = "__wrappedCallbackMethods"
WRAPPED_CUSTOM_CALLBACK_METHODS_KEY = "__wrappedCustomCallbacksMethods"
--- Helper class for mods that want to represent their individual features as classes. Extend your
-- mod features from this class in order to enable the `@Callback` and `@CustomCallback` decorators
-- that automatically subscribe to callbacks.
-- 
-- If your feature has variables that are managed by the save data manager, put them as a `v` class
-- member and they will automatically be registered with the save data manager when the class is
-- instantiated.
-- 
-- For example:
-- 
-- ```ts
-- export class MyFeature extends ModFeature {
--   v = {
--     run: {
--       foo: 123,
--     }
--   }
-- 
-- @Callback (ModCallback.POST_GAME_STARTED)
-- postGameStarted(isContinued: boolean): void {
-- Isaac.DebugString(`Callback fired: POST_GAME_STARTED`);
-- }
-- }
-- ```
-- 
-- When instantiating a feature class, you must pass your upgraded mod as the first argument to the
-- constructor.
-- 
-- In almost all cases, you will want the callback functions to be immediately subscribed after
-- instantiating the class. However, if this is not the case, you can pass `false` as the optional
-- second argument to the constructor.
____exports.ModFeature = __TS__Class()
local ModFeature = ____exports.ModFeature
ModFeature.name = "ModFeature"
function ModFeature.prototype.____constructor(self, mod, init)
    if init == nil then
        init = true
    end
    self.initialized = false
    self.mod = mod
    if init then
        self:init()
    end
end
function ModFeature.prototype.init(self, init)
    if init == nil then
        init = true
    end
    if self.initialized == init then
        return
    end
    self.initialized = init
    local constructor = getTSTLClassConstructor(nil, self)
    if constructor == nil then
        error("Failed to get the TSTL class constructor for a mod feature.")
    end
    local tstlClassName = getTSTLClassName(nil, self)
    if tstlClassName == nil then
        error("Failed to get the TSTL class name for a mod feature.")
    end
    initDecoratedCallbacks(
        nil,
        self,
        constructor,
        tstlClassName,
        true,
        init
    )
    initDecoratedCallbacks(
        nil,
        self,
        constructor,
        tstlClassName,
        false,
        init
    )
    initSaveDataManager(nil, self, tstlClassName, init)
end
function ModFeature.prototype.uninit(self)
    self:init(false)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.array"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery
local __TS__ArrayIndexOf = ____lualib.__TS__ArrayIndexOf
local __TS__ArraySplice = ____lualib.__TS__ArraySplice
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__ArraySort = ____lualib.__TS__ArraySort
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__ArraySlice = ____lualib.__TS__ArraySlice
local __TS__ArrayConcat = ____lualib.__TS__ArrayConcat
local __TS__ArrayUnshift = ____lualib.__TS__ArrayUnshift
local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys
local __TS__ArraySome = ____lualib.__TS__ArraySome
local __TS__ArrayReduce = ____lualib.__TS__ArrayReduce
local ____exports = {}
local ____random = require("lua_modules.isaacscript-common.dist.src.functions.random")
local getRandomInt = ____random.getRandomInt
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local isRNG = ____rng.isRNG
local newRNG = ____rng.newRNG
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isNumber = ____types.isNumber
local isTable = ____types.isTable
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local eRange = ____utils.eRange
--- Removes all of the specified element(s) from the array. If the specified element(s) are not found
-- in the array, this function will do nothing.
-- 
-- This function is variadic, meaning that you can specify N arguments to remove N elements.
-- 
-- If there is more than one matching element in the array, this function will remove every matching
-- element. If you want to only remove the first matching element, use the `arrayRemoveInPlace`
-- function instead.
-- 
-- @returns True if one or more elements were removed, false otherwise.
function ____exports.arrayRemoveAllInPlace(self, array, ...)
    local elementsToRemove = {...}
    local removedOneOrMoreElements = false
    for ____, element in ipairs(elementsToRemove) do
        local index
        repeat
            do
                index = __TS__ArrayIndexOf(array, element)
                if index > -1 then
                    removedOneOrMoreElements = true
                    __TS__ArraySplice(array, index, 1)
                end
            end
        until not (index > -1)
    end
    return removedOneOrMoreElements
end
--- Removes the specified element(s) from the array. If the specified element(s) are not found in the
-- array, this function will do nothing.
-- 
-- This function is variadic, meaning that you can specify N arguments to remove N elements.
-- 
-- If there is more than one matching element in the array, this function will only remove the first
-- matching element. If you want to remove all of the elements, use the `arrayRemoveAllInPlace`
-- function instead.
-- 
-- @returns True if one or more elements were removed, false otherwise.
function ____exports.arrayRemoveInPlace(self, array, ...)
    local elementsToRemove = {...}
    local removedOneOrMoreElements = false
    for ____, element in ipairs(elementsToRemove) do
        local index = __TS__ArrayIndexOf(array, element)
        if index > -1 then
            removedOneOrMoreElements = true
            __TS__ArraySplice(array, index, 1)
        end
    end
    return removedOneOrMoreElements
end
--- Helper function to perform a shallow copy.
-- 
-- @param oldArray The array to copy.
-- @param numElements Optional. If specified, will only copy the first N elements. By default, the
-- entire array will be copied.
function ____exports.copyArray(self, oldArray, numElements)
    if numElements == nil then
        numElements = #oldArray
    end
    local newArray = {}
    do
        local i = 0
        while i < numElements do
            local oldElement = oldArray[i + 1]
            if oldElement ~= nil then
                newArray[#newArray + 1] = oldElement
            end
            i = i + 1
        end
    end
    return newArray
end
--- Helper function to get a random index from the provided array.
-- 
-- @param array The array to get the index from.
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param exceptions Optional. An array of indexes that will be skipped over when getting the random
-- index. Default is an empty array.
function ____exports.getRandomArrayIndex(self, array, seedOrRNG, exceptions)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if exceptions == nil then
        exceptions = {}
    end
    if #array == 0 then
        error("Failed to get a random array index since the provided array is empty.")
    end
    return getRandomInt(
        nil,
        0,
        #array - 1,
        seedOrRNG,
        exceptions
    )
end
--- Shuffles the provided array in-place using the Fisher-Yates algorithm.
-- 
-- From: https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array
-- 
-- @param array The array to shuffle.
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
function ____exports.shuffleArrayInPlace(self, array, seedOrRNG)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    local currentIndex = #array
    local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG)
    while currentIndex > 0 do
        currentIndex = currentIndex - 1
        local randomIndex = ____exports.getRandomArrayIndex(nil, array, rng)
        ____exports.swapArrayElements(nil, array, currentIndex, randomIndex)
    end
end
--- Helper function to swap two different array elements. (The elements will be swapped in-place.)
function ____exports.swapArrayElements(self, array, i, j)
    local value1 = array[i + 1]
    local value2 = array[j + 1]
    array[i + 1] = value2
    array[j + 1] = value1
end
--- Helper function for determining if two arrays contain the exact same elements. Note that this
-- only performs a shallow comparison.
function ____exports.arrayEquals(self, array1, array2)
    if #array1 ~= #array2 then
        return false
    end
    return __TS__ArrayEvery(
        array1,
        function(____, array1Element, i)
            local array2Element = array2[i + 1]
            return array1Element == array2Element
        end
    )
end
--- Shallow copies and removes the specified element(s) from the array. Returns the copied array. If
-- the specified element(s) are not found in the array, it will simply return a shallow copy of the
-- array.
-- 
-- This function is variadic, meaning that you can specify N arguments to remove N elements.
-- 
-- If there is more than one matching element in the array, this function will only remove the first
-- matching element. If you want to remove all of the elements, use the `arrayRemoveAll` function
-- instead.
function ____exports.arrayRemove(self, originalArray, ...)
    local array = ____exports.copyArray(nil, originalArray)
    ____exports.arrayRemoveInPlace(nil, array, ...)
    return array
end
--- Shallow copies and removes the specified element(s) from the array. Returns the copied array. If
-- the specified element(s) are not found in the array, it will simply return a shallow copy of the
-- array.
-- 
-- This function is variadic, meaning that you can specify N arguments to remove N elements.
-- 
-- If there is more than one matching element in the array, this function will remove every matching
-- element. If you want to only remove the first matching element, use the `arrayRemove` function
-- instead.
function ____exports.arrayRemoveAll(self, originalArray, ...)
    local array = ____exports.copyArray(nil, originalArray)
    ____exports.arrayRemoveAllInPlace(nil, array, ...)
    return array
end
--- Shallow copies and removes the elements at the specified indexes from the array. Returns the
-- copied array. If the specified indexes are not found in the array, it will simply return a
-- shallow copy of the array.
-- 
-- This function is variadic, meaning that you can specify N arguments to remove N elements.
function ____exports.arrayRemoveIndex(self, originalArray, ...)
    local indexesToRemove = {...}
    local indexesToRemoveSet = __TS__New(Set, indexesToRemove)
    local array = {}
    __TS__ArrayForEach(
        originalArray,
        function(____, element, i)
            if not indexesToRemoveSet:has(i) then
                array[#array + 1] = element
            end
        end
    )
    return array
end
--- Removes the elements at the specified indexes from the array. If the specified indexes are not
-- found in the array, this function will do nothing. Returns true if one or more elements were
-- removed.
-- 
-- This function is variadic, meaning that you can specify N arguments to remove N elements.
-- 
-- @returns Whether or not any array elements were removed.
function ____exports.arrayRemoveIndexInPlace(self, array, ...)
    local indexesToRemove = {...}
    local legalIndexes = __TS__ArrayFilter(
        indexesToRemove,
        function(____, i) return i >= 0 and i < #array end
    )
    __TS__ArraySort(legalIndexes)
    if #legalIndexes == 0 then
        return false
    end
    do
        local i = #array - 1
        while i >= 0 do
            __TS__ArraySplice(array, i, 1)
            i = i - 1
        end
    end
    return true
end
function ____exports.arrayToString(self, array)
    if #array == 0 then
        return "[]"
    end
    local strings = __TS__ArrayMap(
        array,
        function(____, element) return tostring(element) end
    )
    local commaSeparatedStrings = table.concat(strings, ", ")
    return ("[" .. commaSeparatedStrings) .. "]"
end
--- Helper function to combine two or more arrays. Returns a new array that is the composition of all
-- of the specified arrays.
-- 
-- This function is variadic, meaning that you can specify N arguments to combine N arrays. Note
-- that this will only perform a shallow copy of the array elements.
function ____exports.combineArrays(self, ...)
    local arrays = {...}
    local elements = {}
    for ____, array in ipairs(arrays) do
        for ____, element in ipairs(array) do
            elements[#elements + 1] = element
        end
    end
    return elements
end
--- Helper function to remove all of the elements in an array in-place.
function ____exports.emptyArray(self, array)
    __TS__ArraySplice(array, 0, #array)
end
--- Helper function to get all possible combinations of the given array. This includes the
-- combination of an empty array.
-- 
-- For example, if this function is provided an array containing 1, 2, and 3, then it will return an
-- array containing the following arrays:
-- 
-- - [] (if `includeEmptyArray` is set to true)
-- - [1]
-- - [2]
-- - [3]
-- - [1, 2]
-- - [1, 3]
-- - [2, 3]
-- - [1, 2, 3]
-- 
-- From: https://github.com/firstandthird/combinations/blob/master/index.js
-- 
-- @param array The array to get the combinations of.
-- @param includeEmptyArray Whether or not to include an empty array in the combinations.
-- @param min Optional. The minimum number of elements to include in each combination. Default is 1.
-- @param max Optional. The maximum number of elements to include in each combination. Default is
-- the length of the array.
function ____exports.getArrayCombinations(self, array, includeEmptyArray, min, max)
    if min == nil or min <= 0 then
        min = 1
    end
    if max == nil or max <= 0 then
        max = #array
    end
    local addCombinations
    addCombinations = function(____, n, src, got, all)
        if n == 0 then
            if #got > 0 then
                all[#all + 1] = got
            end
            return
        end
        do
            local j = 0
            while j < #src do
                local value = src[j + 1]
                addCombinations(
                    nil,
                    n - 1,
                    __TS__ArraySlice(src, j + 1),
                    __TS__ArrayConcat(got, {value}),
                    all
                )
                j = j + 1
            end
        end
    end
    local all = {}
    do
        local i = min
        while i < #array do
            addCombinations(
                nil,
                i,
                array,
                {},
                all
            )
            i = i + 1
        end
    end
    if #array == max then
        all[#all + 1] = array
    end
    if includeEmptyArray then
        __TS__ArrayUnshift(all, {})
    end
    return all
end
--- Helper function to get an array containing the indexes of an array.
-- 
-- For example, an array of `["Apple", "Banana"]` would return an array of `[0, 1]`.
function ____exports.getArrayIndexes(self, array)
    return eRange(nil, #array)
end
--- Helper function to return the last element of an array.
-- 
-- If the array is empty, this will return undefined.
function ____exports.getLastElement(self, array)
    return array[#array]
end
--- Helper function to get a random element from the provided array.
-- 
-- @param array The array to get an element from.
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param exceptions Optional. An array of elements to skip over if selected.
function ____exports.getRandomArrayElement(self, array, seedOrRNG, exceptions)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if exceptions == nil then
        exceptions = {}
    end
    if #array == 0 then
        error("Failed to get a random array element since the provided array is empty.")
    end
    local arrayWithoutExceptions = ____exports.arrayRemove(
        nil,
        array,
        table.unpack(exceptions)
    )
    local randomIndex = ____exports.getRandomArrayIndex(nil, arrayWithoutExceptions, seedOrRNG)
    local randomElement = arrayWithoutExceptions[randomIndex + 1]
    if randomElement == nil then
        error(("Failed to get a random array element since the random index of " .. tostring(randomIndex)) .. " was not valid.")
    end
    return randomElement
end
--- Helper function to get a random element from the provided array. Once the random element is
-- decided, it is then removed from the array (in-place).
-- 
-- @param array The array to get an element from.
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param exceptions Optional. An array of elements to skip over if selected.
function ____exports.getRandomArrayElementAndRemove(self, array, seedOrRNG, exceptions)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if exceptions == nil then
        exceptions = {}
    end
    local randomArrayElement = ____exports.getRandomArrayElement(nil, array, seedOrRNG, exceptions)
    ____exports.arrayRemoveInPlace(nil, array, randomArrayElement)
    return randomArrayElement
end
--- Since Lua uses tables for every non-primitive data structure, it is non-trivial to determine if a
-- particular table is being used as an array. `isArray` returns true if:
-- 
-- - the table contains all numerical indexes that are contiguous, starting at 1
-- - the table has no keys (i.e. an "empty" table)
function ____exports.isArray(self, object)
    if not isTable(nil, object) then
        return false
    end
    local metatable = getmetatable(object)
    if metatable ~= nil then
        return false
    end
    local keys = __TS__ObjectKeys(object)
    if #keys == 0 then
        return true
    end
    local hasAllNumberKeys = __TS__ArrayEvery(
        keys,
        function(____, key) return isNumber(nil, key) end
    )
    if not hasAllNumberKeys then
        return false
    end
    do
        local i = 1
        while i <= #keys do
            local element = object[i]
            if element == nil then
                return false
            end
            i = i + 1
        end
    end
    return true
end
--- Helper function to see if every element in the array is N + 1.
-- 
-- For example, `[2, 3, 4]` would return true, and `[2, 3, 5]` would return false.
function ____exports.isArrayContiguous(self, array)
    local lastValue
    for ____, element in ipairs(array) do
        if lastValue == nil then
            lastValue = element - 1
        end
        if element ~= lastValue - 1 then
            return false
        end
    end
    return true
end
--- Checks if an array is in the provided 2-dimensional array.
function ____exports.isArrayInArray(self, arrayToMatch, parentArray)
    return __TS__ArraySome(
        parentArray,
        function(____, element) return ____exports.arrayEquals(nil, element, arrayToMatch) end
    )
end
--- Shallow copies and shuffles the array using the Fisher-Yates algorithm. Returns the copied array.
-- 
-- From: https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array
-- 
-- @param originalArray The array to shuffle.
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
function ____exports.shuffleArray(self, originalArray, seedOrRNG)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    local array = ____exports.copyArray(nil, originalArray)
    ____exports.shuffleArrayInPlace(nil, array, seedOrRNG)
    return array
end
--- Helper function to sum every value in an array together.
function ____exports.sumArray(self, array)
    return __TS__ArrayReduce(
        array,
        function(____, accumulator, element) return accumulator + element end
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.random"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local isRNG = ____rng.isRNG
local newRNG = ____rng.newRNG
--- This returns a random float between 0 and 1. It is inclusive on the low end, but exclusive on the
-- high end. (This is because the `RNG.RandomFloat` method will never return a value of exactly 1.)
-- 
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
function ____exports.getRandom(self, seedOrRNG)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG)
    return rng:RandomFloat()
end
--- This returns a random float between min and max.
-- 
-- For example:
-- 
-- ```ts
-- const realNumberBetweenOneAndThree = getRandomFloat(1, 3);
-- ```
-- 
-- @param min The lower bound for the random number (inclusive).
-- @param max The upper bound for the random number (exclusive).
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
function ____exports.getRandomFloat(self, min, max, seedOrRNG)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if min > max then
        local oldMin = min
        local oldMax = max
        min = oldMax
        max = oldMin
    end
    return min + ____exports.getRandom(nil, seedOrRNG) * (max - min)
end
--- This returns a random integer between min and max. It is inclusive on both ends.
-- 
-- Note that this function will run the `Next` method on the `RNG` object before returning the
-- random number.
-- 
-- For example:
-- 
-- ```ts
-- const oneTwoOrThree = getRandomInt(1, 3);
-- ```
-- 
-- @param min The lower bound for the random number (inclusive).
-- @param max The upper bound for the random number (inclusive).
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param exceptions Optional. An array of elements that will be skipped over when getting the
-- random integer. For example, a min of 1, a max of 4, and an exceptions array of
-- `[2]` would cause the function to return either 1, 3, or 4. Default is an empty
-- array.
function ____exports.getRandomInt(self, min, max, seedOrRNG, exceptions)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if exceptions == nil then
        exceptions = {}
    end
    local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG)
    min = math.ceil(min)
    max = math.floor(max)
    if min > max then
        local oldMin = min
        local oldMax = max
        min = oldMax
        max = oldMin
    end
    local exceptionsSet = __TS__New(Set, exceptions)
    local randomInt
    repeat
        do
            randomInt = rng:RandomInt(max - min + 1) + min
        end
    until not exceptionsSet:has(randomInt)
    return randomInt
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.rng"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__TypeOf = ____lualib.__TS__TypeOf
local ____exports = {}
local RECOMMENDED_SHIFT_IDX, OBJECT_NAME
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.src.enums.SerializationBrand")
local SerializationBrand = ____SerializationBrand.SerializationBrand
local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass")
local isaacAPIClassEquals = ____isaacAPIClass.isaacAPIClassEquals
local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType
local ____table = require("lua_modules.isaacscript-common.dist.src.functions.table")
local getNumbersFromTable = ____table.getNumbersFromTable
local tableHasKeys = ____table.tableHasKeys
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isTable = ____types.isTable
--- Helper function to get a random `Seed` value to be used in spawning entities and so on. Use this
-- instead of calling the `Random` function directly since that can return a value of 0 and crash
-- the game.
function ____exports.getRandomSeed(self)
    local randomNumber = Random()
    local safeRandomNumber = randomNumber == 0 and 1 or randomNumber
    return safeRandomNumber
end
--- Helper function to check if something is an instantiated `RNG` object.
function ____exports.isRNG(self, object)
    return isIsaacAPIClassOfType(nil, object, OBJECT_NAME)
end
--- Helper function to initialize an RNG object using Blade's recommended shift index.
-- 
-- @param seed The seed to initialize it with. Default is `getRandomSeed()`.
function ____exports.newRNG(self, seed)
    if seed == nil then
        seed = ____exports.getRandomSeed(nil)
    end
    local rng = RNG()
    ____exports.setSeed(nil, rng, seed)
    return rng
end
--- Helper function to set a seed to an RNG object using Blade's recommended shift index.
function ____exports.setSeed(self, rng, seed)
    if seed == 0 then
        error("You cannot set an RNG object to a seed of 0, or the game will crash.")
    end
    rng:SetSeed(seed, RECOMMENDED_SHIFT_IDX)
end
RECOMMENDED_SHIFT_IDX = 35
OBJECT_NAME = "RNG"
local KEYS = {"seed"}
--- Helper function to copy an `RNG` Isaac API class.
function ____exports.copyRNG(self, rng)
    if not ____exports.isRNG(nil, rng) then
        error(((("Failed to copy a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
    end
    local seed = rng:GetSeed()
    return ____exports.newRNG(nil, seed)
end
--- Helper function to convert a `SerializedRNG` object to a normal `RNG` object. (This is used by
-- the save data manager when reading data from the "save#.dat" file.)
function ____exports.deserializeRNG(self, rng)
    if not isTable(nil, rng) then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object was not a Lua table.")
    end
    local seed = table.unpack(getNumbersFromTable(
        nil,
        rng,
        OBJECT_NAME,
        table.unpack(KEYS)
    ))
    if seed == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: seed")
    end
    return ____exports.newRNG(nil, seed)
end
--- Used to determine is the given table is a serialized `RNG` object created by the `deepCopy`
-- function.
function ____exports.isSerializedRNG(self, object)
    if not isTable(nil, object) then
        return false
    end
    return tableHasKeys(
        nil,
        object,
        table.unpack(KEYS)
    ) and object[SerializationBrand.RNG] ~= nil
end
function ____exports.rngEquals(self, rng1, rng2)
    return isaacAPIClassEquals(nil, rng1, rng2, KEYS)
end
--- Helper function to convert a `RNG` object to a `SerializedRNG` object. (This is used by the save
-- data manager when writing data from the "save#.dat" file.)
function ____exports.serializeRNG(self, rng)
    if not ____exports.isRNG(nil, rng) then
        error(((("Failed to serialize a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
    end
    local seed = rng:GetSeed()
    local rngTable = {}
    rngTable.seed = seed
    rngTable[SerializationBrand.RNG] = ""
    return rngTable
end
--- Helper function to iterate over the provided object and set the seed for all of the values that
-- are RNG objects equal to a particular seed.
function ____exports.setAllRNGToSeed(self, object, seed)
    if not isTable(nil, object) then
        error("Failed to iterate over the object containing RNG objects since the type of the provided object was: " .. __TS__TypeOf(object))
    end
    local setAtLeastOneSeed = false
    for _key, value in pairs(object) do
        if ____exports.isRNG(nil, value) then
            ____exports.setSeed(nil, value, seed)
            setAtLeastOneSeed = true
        end
    end
    if not setAtLeastOneSeed then
        error(("Failed to set all RNG objects to seed " .. tostring(seed)) .. " because the parent object did not contain any RNG objects.")
    end
end
--- Helper function to iterate over the provided object and set the seed for all of the values that
-- are RNG objects equal to the start seed for the current run.
function ____exports.setAllRNGToStartSeed(self, object)
    local seeds = game:GetSeeds()
    local startSeed = seeds:GetStartSeed()
    ____exports.setAllRNGToSeed(nil, object, startSeed)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.core.cachedClasses"] = function(...) 
local ____exports = {}
--- A cached version of the class returned from the `Game()` constructor.
-- 
-- Use this instead of invoking the constructor again for a miniscule performance increase.
-- 
-- Caching the results of this constructor is safe, but caching other classes (like `Level` or
-- `Room`) is not safe and can lead to the game crashing in certain situations.
____exports.game = Game()
--- A cached version of the class returned from the `Isaac.GetItemConfig()` constructor.
-- 
-- Use this instead of invoking the constructor again for a miniscule performance increase.
-- 
-- Caching the results of this constructor is safe, but caching other classes (like `Level` or
-- `Room`) is not safe and can lead to the game crashing in certain situations.
____exports.itemConfig = Isaac.GetItemConfig()
--- A cached version of the class returned from the `MusicManager()` constructor.
-- 
-- Use this instead of invoking the constructor again for a miniscule performance increase.
-- 
-- Caching the results of this constructor is safe, but caching other classes (like `Level` or
-- `Room`) is not safe and can lead to the game crashing in certain situations.
____exports.musicManager = MusicManager()
--- A cached version of the class returned from the `SFXManager()` constructor.
-- 
-- Use this instead of invoking the constructor again for a miniscule performance increase.
-- 
-- Caching the results of this constructor is safe, but caching other classes (like `Level` or
-- `Room`) is not safe and can lead to the game crashing in certain situations.
____exports.sfxManager = SFXManager()
--- An object containing all 7 vanilla fonts that are pre-loaded and ready to use.
-- 
-- For more information on the vanilla fonts and to see what they look like, see:
-- https://wofsauge.github.io/IsaacDocs/rep/tutorials/Tutorial-Rendertext.html
____exports.fonts = {
    droid = Font(),
    pfTempestaSevenCondensed = Font(),
    teamMeatFont10 = Font(),
    teamMeatFont12 = Font(),
    teamMeatFont16Bold = Font(),
    terminus = Font(),
    upheaval = Font()
}
____exports.fonts.droid:Load("font/droid.fnt")
____exports.fonts.pfTempestaSevenCondensed:Load("font/pftempestasevencondensed.fnt")
____exports.fonts.teamMeatFont10:Load("font/teammeatfont10.fnt")
____exports.fonts.teamMeatFont12:Load("font/teammeatfont12.fnt")
____exports.fonts.teamMeatFont16Bold:Load("font/teammeatfont16bold.fnt")
____exports.fonts.terminus:Load("font/terminus.fnt")
____exports.fonts.upheaval:Load("font/upheaval.fnt")
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.SerializationBrand"] = function(...) 
local ____exports = {}
--- During serialization, we write an arbitrary string key to the object with a value of an empty
-- string. This is used during deserialization to instantiate the correct type of object.
-- 
-- Note that we do not bother branding TSTL classes because we have no way to run the proper
-- constructor during deserialization.
____exports.SerializationBrand = {}
____exports.SerializationBrand.DEFAULT_MAP = "__TSTL_DEFAULT_MAP"
____exports.SerializationBrand.MAP = "__TSTL_MAP"
____exports.SerializationBrand.SET = "__TSTL_SET"
____exports.SerializationBrand.BIT_SET_128 = "__BIT_SET_128"
____exports.SerializationBrand.COLOR = "__COLOR"
____exports.SerializationBrand.K_COLOR = "__K_COLOR"
____exports.SerializationBrand.RNG = "__RNG"
____exports.SerializationBrand.VECTOR = "__VECTOR"
____exports.SerializationBrand.DEFAULT_MAP_VALUE = "__TSTL_DEFAULT_MAP_VALUE"
____exports.SerializationBrand.OBJECT_WITH_NUMBER_KEYS = "__TSTL_OBJECT_WITH_NUMBER_KEYS"
____exports.SerializationBrand.TSTL_CLASS = "__TSTL_CLASS"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery
local ____exports = {}
local ____string = require("lua_modules.isaacscript-common.dist.src.functions.string")
local trimPrefix = ____string.trimPrefix
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isString = ____types.isString
local isUserdata = ____types.isUserdata
--- Helper function to get the name of a class from the Isaac API. This is contained within the
-- "__type" metatable key.
-- 
-- For example, a `Vector` class is has a name of "Vector".
-- 
-- Returns undefined if the object is not of type `userdata` or if the "__type" metatable key does
-- not exist.
-- 
-- In some cases, Isaac classes can be a read-only. If this is the case, the "__type" field will be
-- prepended with "const ". This function will always strip this prefix, if it exists. For example,
-- the class name returned for "const Vector" will be "Vector".
function ____exports.getIsaacAPIClassName(self, object)
    if not isUserdata(nil, object) then
        return nil
    end
    local metatable = getmetatable(object)
    if metatable == nil then
        return nil
    end
    local classType = metatable.__type
    if not isString(nil, classType) then
        return nil
    end
    return trimPrefix(nil, classType, "const ")
end
--- Helper function to detect if a variable is of type `EntityBomb`.
function ____exports.isBomb(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "EntityBomb"
end
--- Helper function to detect if a variable is of type `GridEntityDoor`.
function ____exports.isDoor(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "GridEntityDoor"
end
--- Helper function to detect if a variable is of type `EntityEffect`.
function ____exports.isEffect(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "EntityEffect"
end
--- Helper function to detect if a variable is of type `Entity`. This will return false for child
-- classes such as `EntityPlayer` or `EntityTear`.
function ____exports.isEntity(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "Entity"
end
--- Helper function to detect if a variable is of type `EntityEffect`.
function ____exports.isFamiliar(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "EntityEffect"
end
--- Helper function to detect if a variable is of type `GridEntity`.
function ____exports.isGridEntity(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "GridEntity"
end
--- Helper function to check if something is an instantiated class from the Isaac API. (All classes
-- from the Isaac API have a type of "userdata" in Lua with a metatable key of "__type" equal to the
-- name of the class.)
function ____exports.isIsaacAPIClass(self, object)
    local isaacAPIClassType = ____exports.getIsaacAPIClassName(nil, object)
    return isaacAPIClassType ~= nil
end
function ____exports.isIsaacAPIClassOfType(self, object, classType)
    local isaacAPIClassType = ____exports.getIsaacAPIClassName(nil, object)
    return isaacAPIClassType == classType or isaacAPIClassType == "const " .. classType
end
--- Helper function to detect if a variable is of type `EntityKnife`.
function ____exports.isKnife(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "EntityKnife"
end
--- Helper function to detect if a variable is of type `EntityLaser`.
function ____exports.isLaser(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "EntityLaser"
end
--- Helper function to detect if a variable is of type `EntityNPC`.
function ____exports.isNPC(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "EntityNPC"
end
--- Helper function to detect if a variable is of type `EntityPickup`.
function ____exports.isPickup(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "EntityPickup"
end
--- Helper function to detect if a variable is of type `GridEntityPit`.
function ____exports.isPit(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "GridEntityPit"
end
--- Helper function to detect if a variable is of type `EntityPlayer`.
function ____exports.isPlayer(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "EntityPlayer"
end
--- Helper function to detect if a variable is of type `GridEntityPoop`.
function ____exports.isPoop(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "GridEntityPoop"
end
--- Helper function to detect if a variable is of type `GridEntityPressurePlate`.
function ____exports.isPressurePlate(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "GridEntityPressurePlate"
end
--- Helper function to detect if a variable is of type `EntityProjectile`.
function ____exports.isProjectile(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "EntityProjectile"
end
--- Helper function to detect if a variable is of type `GridEntityRock`.
function ____exports.isRock(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "GridEntityRock"
end
--- Helper function to detect if a variable is of type `GridEntitySpikes`.
function ____exports.isSpikes(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "GridEntitySpikes"
end
--- Helper function to detect if a variable is of type `GridEntityTNT`.
function ____exports.isTNT(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "GridEntityTNT"
end
--- Helper function to detect if a variable is of type `EntityTear`.
function ____exports.isTear(self, variable)
    return ____exports.getIsaacAPIClassName(nil, variable) == "EntityTear"
end
--- Helper function to check if an instantiated Isaac API class is equal to another one of the same
-- type. You must provide the list of keys to check for.
function ____exports.isaacAPIClassEquals(self, object1, object2, keys)
    local table1 = object1
    local table2 = object2
    return __TS__ArrayEvery(
        keys,
        function(____, key) return table1[key] == table2[key] end
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.string"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArraySort = ____lualib.__TS__ArraySort
local __TS__StringReplaceAll = ____lualib.__TS__StringReplaceAll
local __TS__StringStartsWith = ____lualib.__TS__StringStartsWith
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__StringSlice = ____lualib.__TS__StringSlice
local __TS__StringEndsWith = ____lualib.__TS__StringEndsWith
local ____exports = {}
function ____exports.capitalizeFirstLetter(self, ____string)
    local firstCharacter = string.sub(____string, 1, 1)
    local capitalizedFirstLetter = string.upper(firstCharacter)
    local restOfString = string.sub(____string, 2)
    return capitalizedFirstLetter .. restOfString
end
--- Helper function to get the closest value from an array of strings based on partial search text.
-- For the purposes of this function, both search text and the array are converted to lowercase
-- before attempting to find a match.
-- 
-- For example:
-- 
-- ```ts
-- const array = ["foo", "bar"];
-- const searchText = "f";
-- const match = getPartialMatch(array, searchText); // match is now equal to "foo"
-- 
-- @returns If a match was found, returns the array element. If a match was not
-- found, returns undefined.
-- ```
function ____exports.getPartialMatch(self, searchText, array)
    __TS__ArraySort(array)
    searchText = string.lower(searchText)
    searchText = __TS__StringReplaceAll(searchText, " ", "")
    local matchingElements = __TS__ArrayFilter(
        array,
        function(____, element) return __TS__StringStartsWith(
            string.lower(element),
            searchText
        ) end
    )
    __TS__ArraySort(matchingElements)
    return matchingElements[1]
end
function ____exports.removeAllCharacters(self, ____string, character)
    return __TS__StringReplaceAll(____string, character, "")
end
--- Helper function to remove all of the characters in a string before a given substring. Returns the
-- modified string.
function ____exports.removeCharactersBefore(self, ____string, substring)
    local index = (string.find(____string, substring, nil, true) or 0) - 1
    return __TS__StringSlice(____string, index)
end
--- Helper function to remove all characters from a string that are not letters or numbers.
function ____exports.removeNonAlphanumericCharacters(self, str)
    local returnValue, _ = string.gsub(str, "%W", "")
    return returnValue
end
--- Helper function to remove one or more substrings from a string, if they exist. Returns the
-- modified string.
-- 
-- This function is variadic, meaning that you can pass as many substrings as you want to remove.
function ____exports.removeSubstring(self, ____string, ...)
    local substrings = {...}
    for ____, substring in ipairs(substrings) do
        ____string = __TS__StringReplaceAll(____string, substring, "")
    end
    return ____string
end
--- Helper function to trim a prefix from a string, if it exists. Returns the trimmed string.
function ____exports.trimPrefix(self, ____string, prefix)
    if not __TS__StringStartsWith(____string, prefix) then
        return ____string
    end
    return __TS__StringSlice(____string, #prefix)
end
--- Helper function to trim a suffix from a string, if it exists. Returns the trimmed string.
function ____exports.trimSuffix(self, ____string, prefix)
    if not __TS__StringEndsWith(____string, prefix) then
        return ____string
    end
    local endCharacter = #____string - #prefix
    return __TS__StringSlice(____string, 0, endCharacter)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.table"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__TypeOf = ____lualib.__TS__TypeOf
local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys
local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery
local __TS__ArraySort = ____lualib.__TS__ArraySort
local ____exports = {}
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isBoolean = ____types.isBoolean
local isNumber = ____types.isNumber
local isString = ____types.isString
local isUserdata = ____types.isUserdata
--- In a `Map`, you can use the `clear` method to delete every element. However, in a `LuaMap`, the
-- `clear` method does not exist. Use this helper function as a drop-in replacement for this.
function ____exports.clearTable(self, luaMap)
    for key in pairs(luaMap) do
        luaMap[key] = nil
    end
end
--- Helper function to copy specific values from a userdata object (e.g. `Vector`) to a table.
function ____exports.copyUserdataValuesToTable(self, object, keys, luaMap)
    if not isUserdata(nil, object) then
        error("Failed to copy an object values to a table, since the object was of type: " .. type(object))
    end
    local userdata = object
    for ____, key in ipairs(keys) do
        local value = userdata[key]
        luaMap[key] = value
    end
end
--- Helper function to safely get boolean values from a Lua table. Will throw an error if the
-- specific value does not exist on the table.
-- 
-- This function is variadic, meaning that you can specify N arguments to get N values.
function ____exports.getBooleansFromTable(self, luaMap, objectName, ...)
    local keys = {...}
    local booleans = {}
    for ____, key in ipairs(keys) do
        local value = luaMap[key]
        if value == nil then
            error(((("Failed to find a value for \"" .. key) .. "\" in a table representing a \"") .. objectName) .. "\" object.")
        end
        if isBoolean(nil, value) then
            booleans[#booleans + 1] = value
        else
            error((((("Failed to get the boolean for the \"" .. key) .. "\" value of a table representing a \"") .. objectName) .. "\" object because the type was: ") .. __TS__TypeOf(value))
        end
    end
    return booleans
end
--- Helper function to safely get number values from specific keys on a Lua table. Will throw an
-- error if the specific value does not exist on the table or if it cannot be converted to a number.
-- 
-- This function is variadic, meaning that you can specify N arguments to get N values.
function ____exports.getNumbersFromTable(self, luaMap, objectName, ...)
    local keys = {...}
    local numbers = {}
    for ____, key in ipairs(keys) do
        local value = luaMap[key]
        if value == nil then
            error(((("Failed to find a value for \"" .. key) .. "\" in a table representing a \"") .. objectName) .. "\" object.")
        end
        if isNumber(nil, value) then
            numbers[#numbers + 1] = value
        elseif isString(nil, value) then
            local number = tonumber(value)
            if number == nil then
                error((((("Failed to convert the \"" .. key) .. "\" value of a table representing a \"") .. objectName) .. "\" object to a number: ") .. value)
            end
            numbers[#numbers + 1] = number
        else
            error((((("Failed to get the number for the \"" .. key) .. "\" value of a table representing a \"") .. objectName) .. "\" object because the type was: ") .. __TS__TypeOf(value))
        end
    end
    return numbers
end
--- Helper function to safely get string values from a Lua table. Will throw an error if the specific
-- value does not exist on the table.
-- 
-- This function is variadic, meaning that you can specify N arguments to get N values.
function ____exports.getStringsFromTable(self, luaMap, objectName, ...)
    local keys = {...}
    local strings = {}
    for ____, key in ipairs(keys) do
        local value = luaMap[key]
        if value == nil then
            error(((("Failed to find a value for \"" .. key) .. "\" in a table representing a \"") .. objectName) .. "\" object.")
        end
        if isString(nil, value) then
            strings[#strings + 1] = value
        else
            local ____string = tostring(value)
            strings[#strings + 1] = ____string
        end
    end
    return strings
end
--- Helper function to check if a Lua table has 0 keys.
function ____exports.isTableEmpty(self, luaMap)
    for _key, _value in pairs(luaMap) do
        return false
    end
    return true
end
--- Helper function to iterate over a table deterministically. This is useful because by default, the
-- `pairs` function will return the keys of a Lua table in a random order.
-- 
-- This function will sort the table entries based on the value of the key.
-- 
-- This function will only work on tables that have number keys or string keys. It will throw a
-- run-time error if it encounters a key of another type.
-- 
-- @param luaMap The table to iterate over.
-- @param func The function to run for each iteration.
-- @param inOrder Optional. Whether to iterate in order. True by default. You can dynamically set to
-- false in situations where iterating randomly would not matter and you need the
-- extra performance.
function ____exports.iterateTableInOrder(self, luaMap, func, inOrder)
    if inOrder == nil then
        inOrder = true
    end
    if not inOrder then
        for key, value in pairs(luaMap) do
            func(nil, key, value)
        end
        return
    end
    local keys = __TS__ObjectKeys(luaMap)
    local hasAllNumberKeys = __TS__ArrayEvery(
        keys,
        function(____, key) return isNumber(nil, key) end
    )
    local hasAllStringKeys = __TS__ArrayEvery(
        keys,
        function(____, key) return isString(nil, key) end
    )
    if not hasAllNumberKeys and not hasAllStringKeys then
        for key, value in pairs(luaMap) do
            func(nil, key, value)
        end
        return
    end
    __TS__ArraySort(keys)
    for ____, key in ipairs(keys) do
        local keyIndex = key
        local value = luaMap[keyIndex]
        if value ~= nil then
            func(nil, keyIndex, value)
        end
    end
end
--- Helper function to check if a Lua table has all of the provided keys.
-- 
-- This function is variadic, meaning that you can specify as many arguments as you want to check
-- for.
function ____exports.tableHasKeys(self, luaMap, ...)
    local keys = {...}
    return __TS__ArrayEvery(
        keys,
        function(____, key) return luaMap[key] ~= nil end
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.utils"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RenderMode = ____isaac_2Dtypescript_2Ddefinitions.RenderMode
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____consoleCommandsSet = require("lua_modules.isaacscript-common.dist.src.sets.consoleCommandsSet")
local CONSOLE_COMMANDS_SET = ____consoleCommandsSet.CONSOLE_COMMANDS_SET
--- Helper function to return an array of integers with the specified range, inclusive on the lower
-- end and exclusive on the high end. (The "e" stands for exclusive.)
-- 
-- - For example, `eRange(1, 3)` will return `[1, 2]`.
-- - For example, `eRange(2)` will return `[0, 1]`.
-- 
-- @param start The number to start at.
-- @param end Optional. The number to end at. If not specified, then the start will be 0 and the
-- first argument will be the end.
-- @param increment Optional. The increment to use. Default is 1.
function ____exports.eRange(self, start, ____end, increment)
    if increment == nil then
        increment = 1
    end
    if ____end == nil then
        ____end = start
        start = 0
    end
    local array = {}
    do
        local i = start
        while i < ____end do
            array[#array + 1] = i
            i = i + increment
        end
    end
    return array
end
--- Helper function to log what is happening in functions that recursively move through nested data
-- structures.
function ____exports.getTraversalDescription(self, key, traversalDescription)
    if traversalDescription ~= "" then
        traversalDescription = traversalDescription .. " --> "
    end
    traversalDescription = traversalDescription .. tostring(key)
    return traversalDescription
end
--- Helper function to return an array of integers with the specified range, inclusive on both ends.
-- (The "i" stands for inclusive.)
-- 
-- - For example, `iRange(1, 3)` will return `[1, 2, 3]`.
-- - For example, `iRange(2)` will return `[0, 1, 2]`.
-- 
-- @param start The number to start at.
-- @param end Optional. The number to end at. If not specified, then the start will be 0 and the
-- first argument will be the end.
-- @param increment Optional. The increment to use. Default is 1.
function ____exports.iRange(self, start, ____end, increment)
    if increment == nil then
        increment = 1
    end
    if ____end == nil then
        ____end = start
        start = 0
    end
    local array = {}
    do
        local i = start
        while i <= ____end do
            array[#array + 1] = i
            i = i + increment
        end
    end
    return array
end
--- Helper function to see if the current render callback is rendering a water reflection.
-- 
-- When the player is in a room with water, things will be rendered twice: once for the normal
-- rendering, and once for the reflecting rendering. Thus, any mod code in a render callback will
-- run twice per frame in these situations, which may be unexpected or cause bugs.
-- 
-- This function is typically used to early return from a render function if it returns true.
function ____exports.isReflectionRender(self)
    local room = game:GetRoom()
    local renderMode = room:GetRenderMode()
    return renderMode == RenderMode.WATER_REFLECT
end
--- Helper function to see if a particular command is a vanilla console command. This is useful
-- because the `EXECUTE_CMD` callback will not fire for any vanilla commands.
function ____exports.isVanillaConsoleCommand(self, commandName)
    return CONSOLE_COMMANDS_SET:has(commandName)
end
--- Helper function for creating objects that represent a mapping of an enum value to some other
-- value in a type-safe way.
-- 
-- This function will ensure that the provided object has a key for each value in the enum.
-- 
-- After the `satisfies` operator is released in TypeScript 4.9, this function should be deleted.
function ____exports.newObjectWithEnumKeys(self, theEnum, obj)
    return obj
end
--- Helper function to print something to the in-game console. Use this instead of invoking the
-- `Isaac.ConsoleOutput` method directly because it will automatically insert a newline at the end
-- of the message (which `Isaac.ConsoleOutput` does not do by default).
function ____exports.printConsole(self, msg)
    Isaac.ConsoleOutput(msg .. "\n")
end
--- Helper function to print whether something was enabled or disabled to the in-game console.
function ____exports.printEnabled(self, enabled, description)
    local enabledText = enabled and "Enabled" or "Disabled"
    ____exports.printConsole(nil, ((enabledText .. " ") .. description) .. ".")
end
--- Helper function to repeat code N times. This is faster to type and cleaner than using a for loop.
-- 
-- For example:
-- 
-- ```ts
-- const player = Isaac.GetPlayer();
-- repeat(10, () => {
--   player.AddCollectible(CollectibleType.STEVEN);
-- });
-- ```
-- 
-- The repeated function is passed the index of the iteration, if needed:
-- 
-- ```ts
-- repeat(3, (i) => {
--   print(i); // Prints "0", "1", "2"
-- });
-- ```
____exports["repeat"] = function(self, n, func)
    do
        local i = 0
        while i < n do
            func(nil, i)
            i = i + 1
        end
    end
end
--- Helper function to signify that the enclosing code block is not yet complete. Using this function
-- is similar to writing a "TODO" comment, but it has the benefit of preventing ESLint errors due to
-- unused variables or early returns.
-- 
-- When you see this function, it simply means that the programmer intends to add in more code to
-- this spot later.
-- 
-- This function is variadic, meaning that you can pass as many arguments as you want. (This is
-- useful as a means to prevent unused variables.)
-- 
-- This function does not actually do anything. (It is an "empty" function.)
function ____exports.todo(self, ...)
end
--- Helper function to sort a two-dimensional array by the first element.
-- 
-- For example:
-- 
-- ```ts
-- const myArray = [[1, 2], [2, 3], [3, 4]];
-- myArray.sort(twoDimensionalSort);
-- ```
-- 
-- From:
-- https://stackoverflow.com/questions/16096872/how-to-sort-2-dimensional-array-by-column-value
function ____exports.twoDimensionalSort(self, array1, array2)
    local firstElement1 = array1[1]
    local firstElement2 = array2[1]
    if firstElement1 == nil or firstElement1 == nil then
        error("Failed to two-dimensional sort since the first element of the first array was undefined.")
    end
    if firstElement2 == nil or firstElement2 == nil then
        error("Failed to two-dimensional sort since the first element of the second array was undefined.")
    end
    if firstElement1 == firstElement2 then
        return 0
    end
    return firstElement1 < firstElement2 and -1 or 1
end
--- Helper function to validate that an interface contains all of the keys of an enum. You must
-- specify both generic parameters in order for this to work properly (i.e. the interface and then
-- the enum).
-- 
-- For example:
-- 
-- ```ts
-- enum MyEnum {
--   Value1,
--   Value2,
--   Value3,
-- }
-- 
-- interface MyEnumToType {
--   [MyEnum.Value1]: boolean;
--   [MyEnum.Value2]: number;
--   [MyEnum.Value3]: string;
-- }
-- 
-- validateInterfaceMatchesEnum<MyEnumToType, MyEnum>();
-- ```
-- 
-- This function is only meant to be used with interfaces (i.e. types that will not exist at
-- run-time). If you are generating an object that will contain all of the keys of an enum, use the
-- `newObjectWithEnumKeys` helper function instead.
function ____exports.validateInterfaceMatchesEnum(self)
end
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.index"] = function(...) 
local ____exports = {}
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ActiveSlot")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.BackdropType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.BrokenWatchState")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ButtonAction")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.Challenge")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ChampionColor")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.CollectibleAnimation")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.CollectiblePedestalType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.CollectibleSpriteLayer")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.collections.entityState")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.collections.gridEntityState")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.collections.gridEntityVariants")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.collections.roomSubTypes")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.collections.subTypes")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.collections.variants")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.Controller")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ControllerIndex")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.CopyableIsaacAPIClassType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.CurseID")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.Difficulty")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.Dimension")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.Direction")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.DoorSlot")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.Ending")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.EntityCollisionClass")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.EntityGridCollisionClass")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.EntityType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.FadeoutTarget")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.ActionTrigger")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.CacheFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.DamageFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.DisplayFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.DoorSlotFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.EntityFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.EntityPartition")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.ItemConfigTag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.LevelCurse")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.ProjectileFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.RoomDescriptorFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.TargetFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.TearFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.flags.UseFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.GameStateFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.GridCollisionClass")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.GridEntityType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.GridEntityXMLType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.GridPath")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.GridRoom")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.InputHook")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ItemConfigCardType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ItemConfigChargeType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ItemConfigPillEffectClass")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ItemConfigPillEffectType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ItemPoolType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ItemType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.Keyboard")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.LanguageAbbreviation")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.LaserOffset")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.LevelStage")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.LevelStateFlag")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.LineCheckMode")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ModCallback")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.Mouse")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.Music")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.NpcState")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.NullItemID")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.PickupPrice")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.PillEffect")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.PlayerForm")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.PlayerItemAnimation")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.PlayerSpriteLayer")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.PocketItemSlot")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.PoopSpellType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.ProjectilesMode")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.RenderMode")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.RoomDescriptorDisplayType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.RoomDifficulty")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.RoomShape")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.RoomTransitionAnim")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.RoomType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.SeedEffect")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.SkinColor")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.SortingLayer")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.SoundEffect")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.StageID")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.StageTransition")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.StageType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.TrinketSlot")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
do
    local ____export = require("lua_modules.isaac-typescript-definitions.dist.src.enums.WeaponType")
    for ____exportKey, ____exportValue in pairs(____export) do
        if ____exportKey ~= "default" then
            ____exports[____exportKey] = ____exportValue
        end
    end
end
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ActiveSlot"] = function(...) 
local ____exports = {}
____exports.ActiveSlot = {}
____exports.ActiveSlot.PRIMARY = 0
____exports.ActiveSlot[____exports.ActiveSlot.PRIMARY] = "PRIMARY"
____exports.ActiveSlot.SECONDARY = 1
____exports.ActiveSlot[____exports.ActiveSlot.SECONDARY] = "SECONDARY"
____exports.ActiveSlot.POCKET = 2
____exports.ActiveSlot[____exports.ActiveSlot.POCKET] = "POCKET"
____exports.ActiveSlot.POCKET_SINGLE_USE = 3
____exports.ActiveSlot[____exports.ActiveSlot.POCKET_SINGLE_USE] = "POCKET_SINGLE_USE"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.BackdropType"] = function(...) 
local ____exports = {}
____exports.BackdropType = {}
____exports.BackdropType.BASEMENT = 1
____exports.BackdropType[____exports.BackdropType.BASEMENT] = "BASEMENT"
____exports.BackdropType.CELLAR = 2
____exports.BackdropType[____exports.BackdropType.CELLAR] = "CELLAR"
____exports.BackdropType.BURNT_BASEMENT = 3
____exports.BackdropType[____exports.BackdropType.BURNT_BASEMENT] = "BURNT_BASEMENT"
____exports.BackdropType.CAVES = 4
____exports.BackdropType[____exports.BackdropType.CAVES] = "CAVES"
____exports.BackdropType.CATACOMBS = 5
____exports.BackdropType[____exports.BackdropType.CATACOMBS] = "CATACOMBS"
____exports.BackdropType.FLOODED_CAVES = 6
____exports.BackdropType[____exports.BackdropType.FLOODED_CAVES] = "FLOODED_CAVES"
____exports.BackdropType.DEPTHS = 7
____exports.BackdropType[____exports.BackdropType.DEPTHS] = "DEPTHS"
____exports.BackdropType.NECROPOLIS = 8
____exports.BackdropType[____exports.BackdropType.NECROPOLIS] = "NECROPOLIS"
____exports.BackdropType.DANK_DEPTHS = 9
____exports.BackdropType[____exports.BackdropType.DANK_DEPTHS] = "DANK_DEPTHS"
____exports.BackdropType.WOMB = 10
____exports.BackdropType[____exports.BackdropType.WOMB] = "WOMB"
____exports.BackdropType.UTERO = 11
____exports.BackdropType[____exports.BackdropType.UTERO] = "UTERO"
____exports.BackdropType.SCARRED_WOMB = 12
____exports.BackdropType[____exports.BackdropType.SCARRED_WOMB] = "SCARRED_WOMB"
____exports.BackdropType.BLUE_WOMB = 13
____exports.BackdropType[____exports.BackdropType.BLUE_WOMB] = "BLUE_WOMB"
____exports.BackdropType.SHEOL = 14
____exports.BackdropType[____exports.BackdropType.SHEOL] = "SHEOL"
____exports.BackdropType.CATHEDRAL = 15
____exports.BackdropType[____exports.BackdropType.CATHEDRAL] = "CATHEDRAL"
____exports.BackdropType.DARK_ROOM = 16
____exports.BackdropType[____exports.BackdropType.DARK_ROOM] = "DARK_ROOM"
____exports.BackdropType.CHEST = 17
____exports.BackdropType[____exports.BackdropType.CHEST] = "CHEST"
____exports.BackdropType.MEGA_SATAN = 18
____exports.BackdropType[____exports.BackdropType.MEGA_SATAN] = "MEGA_SATAN"
____exports.BackdropType.LIBRARY = 19
____exports.BackdropType[____exports.BackdropType.LIBRARY] = "LIBRARY"
____exports.BackdropType.SHOP = 20
____exports.BackdropType[____exports.BackdropType.SHOP] = "SHOP"
____exports.BackdropType.CLEAN_BEDROOM = 21
____exports.BackdropType[____exports.BackdropType.CLEAN_BEDROOM] = "CLEAN_BEDROOM"
____exports.BackdropType.DIRTY_BEDROOM = 22
____exports.BackdropType[____exports.BackdropType.DIRTY_BEDROOM] = "DIRTY_BEDROOM"
____exports.BackdropType.SECRET = 23
____exports.BackdropType[____exports.BackdropType.SECRET] = "SECRET"
____exports.BackdropType.DICE = 24
____exports.BackdropType[____exports.BackdropType.DICE] = "DICE"
____exports.BackdropType.ARCADE = 25
____exports.BackdropType[____exports.BackdropType.ARCADE] = "ARCADE"
____exports.BackdropType.ERROR_ROOM = 26
____exports.BackdropType[____exports.BackdropType.ERROR_ROOM] = "ERROR_ROOM"
____exports.BackdropType.BLUE_WOMB_PASS = 27
____exports.BackdropType[____exports.BackdropType.BLUE_WOMB_PASS] = "BLUE_WOMB_PASS"
____exports.BackdropType.GREED_SHOP = 28
____exports.BackdropType[____exports.BackdropType.GREED_SHOP] = "GREED_SHOP"
____exports.BackdropType.DUNGEON = 29
____exports.BackdropType[____exports.BackdropType.DUNGEON] = "DUNGEON"
____exports.BackdropType.SACRIFICE = 30
____exports.BackdropType[____exports.BackdropType.SACRIFICE] = "SACRIFICE"
____exports.BackdropType.DOWNPOUR = 31
____exports.BackdropType[____exports.BackdropType.DOWNPOUR] = "DOWNPOUR"
____exports.BackdropType.MINES = 32
____exports.BackdropType[____exports.BackdropType.MINES] = "MINES"
____exports.BackdropType.MAUSOLEUM = 33
____exports.BackdropType[____exports.BackdropType.MAUSOLEUM] = "MAUSOLEUM"
____exports.BackdropType.CORPSE = 34
____exports.BackdropType[____exports.BackdropType.CORPSE] = "CORPSE"
____exports.BackdropType.PLANETARIUM = 35
____exports.BackdropType[____exports.BackdropType.PLANETARIUM] = "PLANETARIUM"
____exports.BackdropType.DOWNPOUR_ENTRANCE = 36
____exports.BackdropType[____exports.BackdropType.DOWNPOUR_ENTRANCE] = "DOWNPOUR_ENTRANCE"
____exports.BackdropType.MINES_ENTRANCE = 37
____exports.BackdropType[____exports.BackdropType.MINES_ENTRANCE] = "MINES_ENTRANCE"
____exports.BackdropType.MAUSOLEUM_ENTRANCE = 38
____exports.BackdropType[____exports.BackdropType.MAUSOLEUM_ENTRANCE] = "MAUSOLEUM_ENTRANCE"
____exports.BackdropType.CORPSE_ENTRANCE = 39
____exports.BackdropType[____exports.BackdropType.CORPSE_ENTRANCE] = "CORPSE_ENTRANCE"
____exports.BackdropType.MAUSOLEUM_2 = 40
____exports.BackdropType[____exports.BackdropType.MAUSOLEUM_2] = "MAUSOLEUM_2"
____exports.BackdropType.MAUSOLEUM_3 = 41
____exports.BackdropType[____exports.BackdropType.MAUSOLEUM_3] = "MAUSOLEUM_3"
____exports.BackdropType.MAUSOLEUM_4 = 42
____exports.BackdropType[____exports.BackdropType.MAUSOLEUM_4] = "MAUSOLEUM_4"
____exports.BackdropType.CORPSE_2 = 43
____exports.BackdropType[____exports.BackdropType.CORPSE_2] = "CORPSE_2"
____exports.BackdropType.CORPSE_3 = 44
____exports.BackdropType[____exports.BackdropType.CORPSE_3] = "CORPSE_3"
____exports.BackdropType.DROSS = 45
____exports.BackdropType[____exports.BackdropType.DROSS] = "DROSS"
____exports.BackdropType.ASHPIT = 46
____exports.BackdropType[____exports.BackdropType.ASHPIT] = "ASHPIT"
____exports.BackdropType.GEHENNA = 47
____exports.BackdropType[____exports.BackdropType.GEHENNA] = "GEHENNA"
____exports.BackdropType.MORTIS = 48
____exports.BackdropType[____exports.BackdropType.MORTIS] = "MORTIS"
____exports.BackdropType.ISAACS_BEDROOM = 49
____exports.BackdropType[____exports.BackdropType.ISAACS_BEDROOM] = "ISAACS_BEDROOM"
____exports.BackdropType.HALLWAY = 50
____exports.BackdropType[____exports.BackdropType.HALLWAY] = "HALLWAY"
____exports.BackdropType.MOMS_BEDROOM = 51
____exports.BackdropType[____exports.BackdropType.MOMS_BEDROOM] = "MOMS_BEDROOM"
____exports.BackdropType.CLOSET = 52
____exports.BackdropType[____exports.BackdropType.CLOSET] = "CLOSET"
____exports.BackdropType.CLOSET_B = 53
____exports.BackdropType[____exports.BackdropType.CLOSET_B] = "CLOSET_B"
____exports.BackdropType.DOGMA = 54
____exports.BackdropType[____exports.BackdropType.DOGMA] = "DOGMA"
____exports.BackdropType.DUNGEON_GIDEON = 55
____exports.BackdropType[____exports.BackdropType.DUNGEON_GIDEON] = "DUNGEON_GIDEON"
____exports.BackdropType.DUNGEON_ROTGUT = 56
____exports.BackdropType[____exports.BackdropType.DUNGEON_ROTGUT] = "DUNGEON_ROTGUT"
____exports.BackdropType.DUNGEON_BEAST = 57
____exports.BackdropType[____exports.BackdropType.DUNGEON_BEAST] = "DUNGEON_BEAST"
____exports.BackdropType.MINES_SHAFT = 58
____exports.BackdropType[____exports.BackdropType.MINES_SHAFT] = "MINES_SHAFT"
____exports.BackdropType.ASHPIT_SHAFT = 59
____exports.BackdropType[____exports.BackdropType.ASHPIT_SHAFT] = "ASHPIT_SHAFT"
____exports.BackdropType.DARK_CLOSET = 60
____exports.BackdropType[____exports.BackdropType.DARK_CLOSET] = "DARK_CLOSET"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.BrokenWatchState"] = function(...) 
local ____exports = {}
--- Used by the `Room.SetBrokenWatchState` method.
____exports.BrokenWatchState = {}
____exports.BrokenWatchState.NONE = 0
____exports.BrokenWatchState[____exports.BrokenWatchState.NONE] = "NONE"
____exports.BrokenWatchState.SLOW = 1
____exports.BrokenWatchState[____exports.BrokenWatchState.SLOW] = "SLOW"
____exports.BrokenWatchState.FAST = 2
____exports.BrokenWatchState[____exports.BrokenWatchState.FAST] = "FAST"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ButtonAction"] = function(...) 
local ____exports = {}
____exports.ButtonAction = {}
____exports.ButtonAction.LEFT = 0
____exports.ButtonAction[____exports.ButtonAction.LEFT] = "LEFT"
____exports.ButtonAction.RIGHT = 1
____exports.ButtonAction[____exports.ButtonAction.RIGHT] = "RIGHT"
____exports.ButtonAction.UP = 2
____exports.ButtonAction[____exports.ButtonAction.UP] = "UP"
____exports.ButtonAction.DOWN = 3
____exports.ButtonAction[____exports.ButtonAction.DOWN] = "DOWN"
____exports.ButtonAction.SHOOT_LEFT = 4
____exports.ButtonAction[____exports.ButtonAction.SHOOT_LEFT] = "SHOOT_LEFT"
____exports.ButtonAction.SHOOT_RIGHT = 5
____exports.ButtonAction[____exports.ButtonAction.SHOOT_RIGHT] = "SHOOT_RIGHT"
____exports.ButtonAction.SHOOT_UP = 6
____exports.ButtonAction[____exports.ButtonAction.SHOOT_UP] = "SHOOT_UP"
____exports.ButtonAction.SHOOT_DOWN = 7
____exports.ButtonAction[____exports.ButtonAction.SHOOT_DOWN] = "SHOOT_DOWN"
____exports.ButtonAction.BOMB = 8
____exports.ButtonAction[____exports.ButtonAction.BOMB] = "BOMB"
____exports.ButtonAction.ITEM = 9
____exports.ButtonAction[____exports.ButtonAction.ITEM] = "ITEM"
____exports.ButtonAction.PILL_CARD = 10
____exports.ButtonAction[____exports.ButtonAction.PILL_CARD] = "PILL_CARD"
____exports.ButtonAction.DROP = 11
____exports.ButtonAction[____exports.ButtonAction.DROP] = "DROP"
____exports.ButtonAction.PAUSE = 12
____exports.ButtonAction[____exports.ButtonAction.PAUSE] = "PAUSE"
____exports.ButtonAction.MAP = 13
____exports.ButtonAction[____exports.ButtonAction.MAP] = "MAP"
____exports.ButtonAction.MENU_CONFIRM = 14
____exports.ButtonAction[____exports.ButtonAction.MENU_CONFIRM] = "MENU_CONFIRM"
____exports.ButtonAction.MENU_BACK = 15
____exports.ButtonAction[____exports.ButtonAction.MENU_BACK] = "MENU_BACK"
____exports.ButtonAction.RESTART = 16
____exports.ButtonAction[____exports.ButtonAction.RESTART] = "RESTART"
____exports.ButtonAction.FULLSCREEN = 17
____exports.ButtonAction[____exports.ButtonAction.FULLSCREEN] = "FULLSCREEN"
____exports.ButtonAction.MUTE = 18
____exports.ButtonAction[____exports.ButtonAction.MUTE] = "MUTE"
____exports.ButtonAction.JOIN_MULTIPLAYER = 19
____exports.ButtonAction[____exports.ButtonAction.JOIN_MULTIPLAYER] = "JOIN_MULTIPLAYER"
____exports.ButtonAction.MENU_LEFT = 20
____exports.ButtonAction[____exports.ButtonAction.MENU_LEFT] = "MENU_LEFT"
____exports.ButtonAction.MENU_RIGHT = 21
____exports.ButtonAction[____exports.ButtonAction.MENU_RIGHT] = "MENU_RIGHT"
____exports.ButtonAction.MENU_UP = 22
____exports.ButtonAction[____exports.ButtonAction.MENU_UP] = "MENU_UP"
____exports.ButtonAction.MENU_DOWN = 23
____exports.ButtonAction[____exports.ButtonAction.MENU_DOWN] = "MENU_DOWN"
____exports.ButtonAction.MENU_LT = 24
____exports.ButtonAction[____exports.ButtonAction.MENU_LT] = "MENU_LT"
____exports.ButtonAction.MENU_RT = 25
____exports.ButtonAction[____exports.ButtonAction.MENU_RT] = "MENU_RT"
____exports.ButtonAction.MENU_TAB = 26
____exports.ButtonAction[____exports.ButtonAction.MENU_TAB] = "MENU_TAB"
____exports.ButtonAction.CONSOLE = 28
____exports.ButtonAction[____exports.ButtonAction.CONSOLE] = "CONSOLE"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.Challenge"] = function(...) 
local ____exports = {}
____exports.Challenge = {}
____exports.Challenge.NULL = 0
____exports.Challenge[____exports.Challenge.NULL] = "NULL"
____exports.Challenge.PITCH_BLACK = 1
____exports.Challenge[____exports.Challenge.PITCH_BLACK] = "PITCH_BLACK"
____exports.Challenge.HIGH_BROW = 2
____exports.Challenge[____exports.Challenge.HIGH_BROW] = "HIGH_BROW"
____exports.Challenge.HEAD_TRAUMA = 3
____exports.Challenge[____exports.Challenge.HEAD_TRAUMA] = "HEAD_TRAUMA"
____exports.Challenge.DARKNESS_FALLS = 4
____exports.Challenge[____exports.Challenge.DARKNESS_FALLS] = "DARKNESS_FALLS"
____exports.Challenge.THE_TANK = 5
____exports.Challenge[____exports.Challenge.THE_TANK] = "THE_TANK"
____exports.Challenge.SOLAR_SYSTEM = 6
____exports.Challenge[____exports.Challenge.SOLAR_SYSTEM] = "SOLAR_SYSTEM"
____exports.Challenge.SUICIDE_KING = 7
____exports.Challenge[____exports.Challenge.SUICIDE_KING] = "SUICIDE_KING"
____exports.Challenge.CAT_GOT_YOUR_TONGUE = 8
____exports.Challenge[____exports.Challenge.CAT_GOT_YOUR_TONGUE] = "CAT_GOT_YOUR_TONGUE"
____exports.Challenge.DEMO_MAN = 9
____exports.Challenge[____exports.Challenge.DEMO_MAN] = "DEMO_MAN"
____exports.Challenge.CURSED = 10
____exports.Challenge[____exports.Challenge.CURSED] = "CURSED"
____exports.Challenge.GLASS_CANNON = 11
____exports.Challenge[____exports.Challenge.GLASS_CANNON] = "GLASS_CANNON"
____exports.Challenge.WHEN_LIFE_GIVES_LEMONS = 12
____exports.Challenge[____exports.Challenge.WHEN_LIFE_GIVES_LEMONS] = "WHEN_LIFE_GIVES_LEMONS"
____exports.Challenge.BEANS = 13
____exports.Challenge[____exports.Challenge.BEANS] = "BEANS"
____exports.Challenge.ITS_IN_THE_CARDS = 14
____exports.Challenge[____exports.Challenge.ITS_IN_THE_CARDS] = "ITS_IN_THE_CARDS"
____exports.Challenge.SLOW_ROLL = 15
____exports.Challenge[____exports.Challenge.SLOW_ROLL] = "SLOW_ROLL"
____exports.Challenge.COMPUTER_SAVY = 16
____exports.Challenge[____exports.Challenge.COMPUTER_SAVY] = "COMPUTER_SAVY"
____exports.Challenge.WAKA_WAKA = 17
____exports.Challenge[____exports.Challenge.WAKA_WAKA] = "WAKA_WAKA"
____exports.Challenge.THE_HOST = 18
____exports.Challenge[____exports.Challenge.THE_HOST] = "THE_HOST"
____exports.Challenge.THE_FAMILY_MAN = 19
____exports.Challenge[____exports.Challenge.THE_FAMILY_MAN] = "THE_FAMILY_MAN"
____exports.Challenge.PURIST = 20
____exports.Challenge[____exports.Challenge.PURIST] = "PURIST"
____exports.Challenge.XXXXXXXXL = 21
____exports.Challenge[____exports.Challenge.XXXXXXXXL] = "XXXXXXXXL"
____exports.Challenge.SPEED = 22
____exports.Challenge[____exports.Challenge.SPEED] = "SPEED"
____exports.Challenge.BLUE_BOMBER = 23
____exports.Challenge[____exports.Challenge.BLUE_BOMBER] = "BLUE_BOMBER"
____exports.Challenge.PAY_TO_PLAY = 24
____exports.Challenge[____exports.Challenge.PAY_TO_PLAY] = "PAY_TO_PLAY"
____exports.Challenge.HAVE_A_HEART = 25
____exports.Challenge[____exports.Challenge.HAVE_A_HEART] = "HAVE_A_HEART"
____exports.Challenge.I_RULE = 26
____exports.Challenge[____exports.Challenge.I_RULE] = "I_RULE"
____exports.Challenge.BRAINS = 27
____exports.Challenge[____exports.Challenge.BRAINS] = "BRAINS"
____exports.Challenge.PRIDE_DAY = 28
____exports.Challenge[____exports.Challenge.PRIDE_DAY] = "PRIDE_DAY"
____exports.Challenge.ONANS_STREAK = 29
____exports.Challenge[____exports.Challenge.ONANS_STREAK] = "ONANS_STREAK"
____exports.Challenge.GUARDIAN = 30
____exports.Challenge[____exports.Challenge.GUARDIAN] = "GUARDIAN"
____exports.Challenge.BACKASSWARDS = 31
____exports.Challenge[____exports.Challenge.BACKASSWARDS] = "BACKASSWARDS"
____exports.Challenge.APRILS_FOOL = 32
____exports.Challenge[____exports.Challenge.APRILS_FOOL] = "APRILS_FOOL"
____exports.Challenge.POKEY_MANS = 33
____exports.Challenge[____exports.Challenge.POKEY_MANS] = "POKEY_MANS"
____exports.Challenge.ULTRA_HARD = 34
____exports.Challenge[____exports.Challenge.ULTRA_HARD] = "ULTRA_HARD"
____exports.Challenge.PONG = 35
____exports.Challenge[____exports.Challenge.PONG] = "PONG"
____exports.Challenge.SCAT_MAN = 36
____exports.Challenge[____exports.Challenge.SCAT_MAN] = "SCAT_MAN"
____exports.Challenge.BLOODY_MARY = 37
____exports.Challenge[____exports.Challenge.BLOODY_MARY] = "BLOODY_MARY"
____exports.Challenge.BAPTISM_BY_FIRE = 38
____exports.Challenge[____exports.Challenge.BAPTISM_BY_FIRE] = "BAPTISM_BY_FIRE"
____exports.Challenge.ISAACS_AWAKENING = 39
____exports.Challenge[____exports.Challenge.ISAACS_AWAKENING] = "ISAACS_AWAKENING"
____exports.Challenge.SEEING_DOUBLE = 40
____exports.Challenge[____exports.Challenge.SEEING_DOUBLE] = "SEEING_DOUBLE"
____exports.Challenge.PICA_RUN = 41
____exports.Challenge[____exports.Challenge.PICA_RUN] = "PICA_RUN"
____exports.Challenge.HOT_POTATO = 42
____exports.Challenge[____exports.Challenge.HOT_POTATO] = "HOT_POTATO"
____exports.Challenge.CANTRIPPED = 43
____exports.Challenge[____exports.Challenge.CANTRIPPED] = "CANTRIPPED"
____exports.Challenge.RED_REDEMPTION = 44
____exports.Challenge[____exports.Challenge.RED_REDEMPTION] = "RED_REDEMPTION"
____exports.Challenge.DELETE_THIS = 45
____exports.Challenge[____exports.Challenge.DELETE_THIS] = "DELETE_THIS"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ChampionColor"] = function(...) 
local ____exports = {}
____exports.ChampionColor = {}
____exports.ChampionColor.RED = 0
____exports.ChampionColor[____exports.ChampionColor.RED] = "RED"
____exports.ChampionColor.YELLOW = 1
____exports.ChampionColor[____exports.ChampionColor.YELLOW] = "YELLOW"
____exports.ChampionColor.GREEN = 2
____exports.ChampionColor[____exports.ChampionColor.GREEN] = "GREEN"
____exports.ChampionColor.ORANGE = 3
____exports.ChampionColor[____exports.ChampionColor.ORANGE] = "ORANGE"
____exports.ChampionColor.BLUE = 4
____exports.ChampionColor[____exports.ChampionColor.BLUE] = "BLUE"
____exports.ChampionColor.BLACK = 5
____exports.ChampionColor[____exports.ChampionColor.BLACK] = "BLACK"
____exports.ChampionColor.WHITE = 6
____exports.ChampionColor[____exports.ChampionColor.WHITE] = "WHITE"
____exports.ChampionColor.GREY = 7
____exports.ChampionColor[____exports.ChampionColor.GREY] = "GREY"
____exports.ChampionColor.TRANSPARENT = 8
____exports.ChampionColor[____exports.ChampionColor.TRANSPARENT] = "TRANSPARENT"
____exports.ChampionColor.FLICKER = 9
____exports.ChampionColor[____exports.ChampionColor.FLICKER] = "FLICKER"
____exports.ChampionColor.PINK = 10
____exports.ChampionColor[____exports.ChampionColor.PINK] = "PINK"
____exports.ChampionColor.PURPLE = 11
____exports.ChampionColor[____exports.ChampionColor.PURPLE] = "PURPLE"
____exports.ChampionColor.DARK_RED = 12
____exports.ChampionColor[____exports.ChampionColor.DARK_RED] = "DARK_RED"
____exports.ChampionColor.LIGHT_BLUE = 13
____exports.ChampionColor[____exports.ChampionColor.LIGHT_BLUE] = "LIGHT_BLUE"
____exports.ChampionColor.CAMO = 14
____exports.ChampionColor[____exports.ChampionColor.CAMO] = "CAMO"
____exports.ChampionColor.PULSE_GREEN = 15
____exports.ChampionColor[____exports.ChampionColor.PULSE_GREEN] = "PULSE_GREEN"
____exports.ChampionColor.PULSE_GREY = 16
____exports.ChampionColor[____exports.ChampionColor.PULSE_GREY] = "PULSE_GREY"
____exports.ChampionColor.FLY_PROTECTED = 17
____exports.ChampionColor[____exports.ChampionColor.FLY_PROTECTED] = "FLY_PROTECTED"
____exports.ChampionColor.TINY = 18
____exports.ChampionColor[____exports.ChampionColor.TINY] = "TINY"
____exports.ChampionColor.GIANT = 19
____exports.ChampionColor[____exports.ChampionColor.GIANT] = "GIANT"
____exports.ChampionColor.PULSE_RED = 20
____exports.ChampionColor[____exports.ChampionColor.PULSE_RED] = "PULSE_RED"
____exports.ChampionColor.SIZE_PULSE = 21
____exports.ChampionColor[____exports.ChampionColor.SIZE_PULSE] = "SIZE_PULSE"
____exports.ChampionColor.KING = 22
____exports.ChampionColor[____exports.ChampionColor.KING] = "KING"
____exports.ChampionColor.DEATH = 23
____exports.ChampionColor[____exports.ChampionColor.DEATH] = "DEATH"
____exports.ChampionColor.BROWN = 24
____exports.ChampionColor[____exports.ChampionColor.BROWN] = "BROWN"
____exports.ChampionColor.RAINBOW = 25
____exports.ChampionColor[____exports.ChampionColor.RAINBOW] = "RAINBOW"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.CollectibleAnimation"] = function(...) 
local ____exports = {}
____exports.CollectibleAnimation = {}
____exports.CollectibleAnimation.IDLE = "Idle"
____exports.CollectibleAnimation.EMPTY = "Empty"
____exports.CollectibleAnimation.SHOP_IDLE = "ShopIdle"
____exports.CollectibleAnimation.PLAYER_PICKUP = "PlayerPickup"
____exports.CollectibleAnimation.PLAYER_PICKUP_SPARKLE = "PlayerPickupSparkle"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.CollectiblePedestalType"] = function(...) 
local ____exports = {}
--- Corresponds to the overlay frame number in "005.100_collectible.anm2".
____exports.CollectiblePedestalType = {}
____exports.CollectiblePedestalType.NONE = -1
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.NONE] = "NONE"
____exports.CollectiblePedestalType.NORMAL = 0
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.NORMAL] = "NORMAL"
____exports.CollectiblePedestalType.FORTUNE_TELLING_MACHINE = 1
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.FORTUNE_TELLING_MACHINE] = "FORTUNE_TELLING_MACHINE"
____exports.CollectiblePedestalType.BLOOD_DONATION_MACHINE = 2
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.BLOOD_DONATION_MACHINE] = "BLOOD_DONATION_MACHINE"
____exports.CollectiblePedestalType.SLOT_MACHINE = 3
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.SLOT_MACHINE] = "SLOT_MACHINE"
____exports.CollectiblePedestalType.LOCKED_CHEST = 4
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.LOCKED_CHEST] = "LOCKED_CHEST"
____exports.CollectiblePedestalType.RED_CHEST = 5
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.RED_CHEST] = "RED_CHEST"
____exports.CollectiblePedestalType.BOMB_CHEST = 6
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.BOMB_CHEST] = "BOMB_CHEST"
____exports.CollectiblePedestalType.SPIKED_CHEST = 7
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.SPIKED_CHEST] = "SPIKED_CHEST"
____exports.CollectiblePedestalType.ETERNAL_CHEST = 8
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.ETERNAL_CHEST] = "ETERNAL_CHEST"
____exports.CollectiblePedestalType.MOMS_DRESSING_TABLE = 9
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.MOMS_DRESSING_TABLE] = "MOMS_DRESSING_TABLE"
____exports.CollectiblePedestalType.CHEST = 10
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.CHEST] = "CHEST"
____exports.CollectiblePedestalType.MOMS_CHEST = 11
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.MOMS_CHEST] = "MOMS_CHEST"
____exports.CollectiblePedestalType.OLD_CHEST = 12
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.OLD_CHEST] = "OLD_CHEST"
____exports.CollectiblePedestalType.WOODEN_CHEST = 13
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.WOODEN_CHEST] = "WOODEN_CHEST"
____exports.CollectiblePedestalType.MEGA_CHEST = 14
____exports.CollectiblePedestalType[____exports.CollectiblePedestalType.MEGA_CHEST] = "MEGA_CHEST"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.CollectibleSpriteLayer"] = function(...) 
local ____exports = {}
--- Corresponds to "resources/gfx/005.100_collectible.anm2".
____exports.CollectibleSpriteLayer = {}
____exports.CollectibleSpriteLayer.BODY = 0
____exports.CollectibleSpriteLayer[____exports.CollectibleSpriteLayer.BODY] = "BODY"
____exports.CollectibleSpriteLayer.HEAD = 1
____exports.CollectibleSpriteLayer[____exports.CollectibleSpriteLayer.HEAD] = "HEAD"
____exports.CollectibleSpriteLayer.SPARKLE = 2
____exports.CollectibleSpriteLayer[____exports.CollectibleSpriteLayer.SPARKLE] = "SPARKLE"
____exports.CollectibleSpriteLayer.SHADOW = 3
____exports.CollectibleSpriteLayer[____exports.CollectibleSpriteLayer.SHADOW] = "SHADOW"
____exports.CollectibleSpriteLayer.ITEM_SHADOW = 4
____exports.CollectibleSpriteLayer[____exports.CollectibleSpriteLayer.ITEM_SHADOW] = "ITEM_SHADOW"
____exports.CollectibleSpriteLayer.ALTAR = 5
____exports.CollectibleSpriteLayer[____exports.CollectibleSpriteLayer.ALTAR] = "ALTAR"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.collections.entityState"] = function(...) 
local ____exports = {}
--- EntityType.FAMILIAR (3), FamiliarVariant.LOST_SOUL (211).
____exports.LostSoulState = {}
____exports.LostSoulState.ALIVE = 1
____exports.LostSoulState[____exports.LostSoulState.ALIVE] = "ALIVE"
____exports.LostSoulState.DEAD = 4
____exports.LostSoulState[____exports.LostSoulState.DEAD] = "DEAD"
--- For `EntityType.DEATH` (66).
____exports.DeathState = {}
____exports.DeathState.APPEAR = 1
____exports.DeathState[____exports.DeathState.APPEAR] = "APPEAR"
____exports.DeathState.SCYTHE_APPEAR = 3
____exports.DeathState[____exports.DeathState.SCYTHE_APPEAR] = "SCYTHE_APPEAR"
____exports.DeathState.MAIN_IDLE = 4
____exports.DeathState[____exports.DeathState.MAIN_IDLE] = "MAIN_IDLE"
____exports.DeathState.JUMP_OFF_HORSE = 7
____exports.DeathState[____exports.DeathState.JUMP_OFF_HORSE] = "JUMP_OFF_HORSE"
____exports.DeathState.SLOW_ATTACK = 8
____exports.DeathState[____exports.DeathState.SLOW_ATTACK] = "SLOW_ATTACK"
____exports.DeathState.SUMMON_KNIGHTS = 13
____exports.DeathState[____exports.DeathState.SUMMON_KNIGHTS] = "SUMMON_KNIGHTS"
____exports.DeathState.SUMMON_SCYTHES = 14
____exports.DeathState[____exports.DeathState.SUMMON_SCYTHES] = "SUMMON_SCYTHES"
--- For `EntityType.DADDY_LONG_LEGS` (101).
____exports.DaddyLongLegsState = {}
____exports.DaddyLongLegsState.SLAM_WITH_PROJECTILE_BURST = 4
____exports.DaddyLongLegsState[____exports.DaddyLongLegsState.SLAM_WITH_PROJECTILE_BURST] = "SLAM_WITH_PROJECTILE_BURST"
____exports.DaddyLongLegsState.STOMP_ATTACK_LEG = 7
____exports.DaddyLongLegsState[____exports.DaddyLongLegsState.STOMP_ATTACK_LEG] = "STOMP_ATTACK_LEG"
____exports.DaddyLongLegsState.SPITTING_SPIDERS_ATTACK = 8
____exports.DaddyLongLegsState[____exports.DaddyLongLegsState.SPITTING_SPIDERS_ATTACK] = "SPITTING_SPIDERS_ATTACK"
____exports.DaddyLongLegsState.MULTI_STOMP_ATTACK_MAIN = 9
____exports.DaddyLongLegsState[____exports.DaddyLongLegsState.MULTI_STOMP_ATTACK_MAIN] = "MULTI_STOMP_ATTACK_MAIN"
--- For `EntityType.BIG_HORN` (411).
____exports.BigHornState = {}
____exports.BigHornState.IDLE = 3
____exports.BigHornState[____exports.BigHornState.IDLE] = "IDLE"
____exports.BigHornState.HEAD_GOING_UP_OR_GOING_DOWN_INTO_HOLE = 4
____exports.BigHornState[____exports.BigHornState.HEAD_GOING_UP_OR_GOING_DOWN_INTO_HOLE] = "HEAD_GOING_UP_OR_GOING_DOWN_INTO_HOLE"
____exports.BigHornState.HAND_GOING_DOWN_INTO_HOLE = 5
____exports.BigHornState[____exports.BigHornState.HAND_GOING_DOWN_INTO_HOLE] = "HAND_GOING_DOWN_INTO_HOLE"
____exports.BigHornState.HAND_SLAM_ATTACK = 8
____exports.BigHornState[____exports.BigHornState.HAND_SLAM_ATTACK] = "HAND_SLAM_ATTACK"
____exports.BigHornState.HAND_THROW_TROLL_BOMB_ATTACK = 9
____exports.BigHornState[____exports.BigHornState.HAND_THROW_TROLL_BOMB_ATTACK] = "HAND_THROW_TROLL_BOMB_ATTACK"
____exports.BigHornState.HAND_THROW_TRIPLE_TROLL_BOMB_ATTACK = 10
____exports.BigHornState[____exports.BigHornState.HAND_THROW_TRIPLE_TROLL_BOMB_ATTACK] = "HAND_THROW_TRIPLE_TROLL_BOMB_ATTACK"
____exports.BigHornState.HEAD_BALL_ATTACK = 13
____exports.BigHornState[____exports.BigHornState.HEAD_BALL_ATTACK] = "HEAD_BALL_ATTACK"
--- For `EntityType.REAP_CREEP` (900).
____exports.ReapCreepState = {}
____exports.ReapCreepState.CRAWLING_FROM_SIDE_TO_SIDE = 3
____exports.ReapCreepState[____exports.ReapCreepState.CRAWLING_FROM_SIDE_TO_SIDE] = "CRAWLING_FROM_SIDE_TO_SIDE"
____exports.ReapCreepState.JUMPING_TO_TOP_WALL = 6
____exports.ReapCreepState[____exports.ReapCreepState.JUMPING_TO_TOP_WALL] = "JUMPING_TO_TOP_WALL"
____exports.ReapCreepState.WALL_SLAM_ATTACK = 7
____exports.ReapCreepState[____exports.ReapCreepState.WALL_SLAM_ATTACK] = "WALL_SLAM_ATTACK"
____exports.ReapCreepState.PROJECTILE_SPIT_LINE_ATTACK = 8
____exports.ReapCreepState[____exports.ReapCreepState.PROJECTILE_SPIT_LINE_ATTACK] = "PROJECTILE_SPIT_LINE_ATTACK"
____exports.ReapCreepState.PROJECTILE_SPIT_BURST_ATTACK = 9
____exports.ReapCreepState[____exports.ReapCreepState.PROJECTILE_SPIT_BURST_ATTACK] = "PROJECTILE_SPIT_BURST_ATTACK"
____exports.ReapCreepState.BRIMSTONE_ATTACK = 10
____exports.ReapCreepState[____exports.ReapCreepState.BRIMSTONE_ATTACK] = "BRIMSTONE_ATTACK"
____exports.ReapCreepState.SPAWNING_WALL_SPIDERS = 13
____exports.ReapCreepState[____exports.ReapCreepState.SPAWNING_WALL_SPIDERS] = "SPAWNING_WALL_SPIDERS"
____exports.ReapCreepState.SPAWNING_SPIDERS = 14
____exports.ReapCreepState[____exports.ReapCreepState.SPAWNING_SPIDERS] = "SPAWNING_SPIDERS"
____exports.ReapCreepState.TRANSFORMING_TO_NEXT_PHASE = 16
____exports.ReapCreepState[____exports.ReapCreepState.TRANSFORMING_TO_NEXT_PHASE] = "TRANSFORMING_TO_NEXT_PHASE"
--- For `EntityType.COLOSTOMIA` (917).
____exports.ColostomiaState = {}
____exports.ColostomiaState.IDLE_PHASE_1 = 3
____exports.ColostomiaState[____exports.ColostomiaState.IDLE_PHASE_1] = "IDLE_PHASE_1"
____exports.ColostomiaState.IDLE_PHASE_2 = 4
____exports.ColostomiaState[____exports.ColostomiaState.IDLE_PHASE_2] = "IDLE_PHASE_2"
____exports.ColostomiaState.JUMP_ATTACK_WITH_PROJECTILE_SPLASH = 6
____exports.ColostomiaState[____exports.ColostomiaState.JUMP_ATTACK_WITH_PROJECTILE_SPLASH] = "JUMP_ATTACK_WITH_PROJECTILE_SPLASH"
____exports.ColostomiaState.CHARGE_SLIDE = 8
____exports.ColostomiaState[____exports.ColostomiaState.CHARGE_SLIDE] = "CHARGE_SLIDE"
____exports.ColostomiaState.SPIT_POOP_BOMB = 9
____exports.ColostomiaState[____exports.ColostomiaState.SPIT_POOP_BOMB] = "SPIT_POOP_BOMB"
____exports.ColostomiaState.SPIT_TWO_POOP_BOMBS = 10
____exports.ColostomiaState[____exports.ColostomiaState.SPIT_TWO_POOP_BOMBS] = "SPIT_TWO_POOP_BOMBS"
____exports.ColostomiaState.FART_ATTACK = 11
____exports.ColostomiaState[____exports.ColostomiaState.FART_ATTACK] = "FART_ATTACK"
____exports.ColostomiaState.TRANSITION_TO_PHASE_2 = 16
____exports.ColostomiaState[____exports.ColostomiaState.TRANSITION_TO_PHASE_2] = "TRANSITION_TO_PHASE_2"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.collections.gridEntityState"] = function(...) 
local ____exports = {}
--- Used by the following grid entity types:
-- - GridEntityType.ROCK (2)
-- - GridEntityType.ROCK_TINTED (4)
-- - GridEntityType.ROCK_BOMB (5)
-- - GridEntityType.ROCK_ALT (6)
-- - GridEntityType.STATUE (21) (only for Angel Statues)
-- - GridEntityType.ROCK_SS (22)
-- - GridEntityType.ROCK_SPIKED (25)
-- - GridEntityType.ROCK_ALT2 (26)
-- - GridEntityType.ROCK_GOLD (27)
____exports.RockState = {}
____exports.RockState.UNBROKEN = 1
____exports.RockState[____exports.RockState.UNBROKEN] = "UNBROKEN"
____exports.RockState.BROKEN = 2
____exports.RockState[____exports.RockState.BROKEN] = "BROKEN"
____exports.RockState.EXPLODING = 3
____exports.RockState[____exports.RockState.EXPLODING] = "EXPLODING"
____exports.RockState.HALF_BROKEN = 4
____exports.RockState[____exports.RockState.HALF_BROKEN] = "HALF_BROKEN"
--- For `GridEntityType.PIT` (7).
____exports.PitState = {}
____exports.PitState.NORMAL = 0
____exports.PitState[____exports.PitState.NORMAL] = "NORMAL"
____exports.PitState.FILLED = 1
____exports.PitState[____exports.PitState.FILLED] = "FILLED"
--- For `GridEntityType.SPIKES_ON_OFF` (9).
____exports.SpikesOnOffState = {}
____exports.SpikesOnOffState.ON = 0
____exports.SpikesOnOffState[____exports.SpikesOnOffState.ON] = "ON"
____exports.SpikesOnOffState.OFF = 1
____exports.SpikesOnOffState[____exports.SpikesOnOffState.OFF] = "OFF"
--- For `GridEntityType.SPIDERWEB` (10).
____exports.SpiderWebState = {}
____exports.SpiderWebState.UNBROKEN = 0
____exports.SpiderWebState[____exports.SpiderWebState.UNBROKEN] = "UNBROKEN"
____exports.SpiderWebState.BROKEN = 1
____exports.SpiderWebState[____exports.SpiderWebState.BROKEN] = "BROKEN"
--- For `GridEntityType.LOCK` (11).
____exports.LockState = {}
____exports.LockState.LOCKED = 0
____exports.LockState[____exports.LockState.LOCKED] = "LOCKED"
____exports.LockState.UNLOCKED = 1
____exports.LockState[____exports.LockState.UNLOCKED] = "UNLOCKED"
--- For `GridEntityType.TNT` (12).
-- 
-- The health of a TNT barrel is represented by its state. It starts at 0 and climbs upwards in
-- increments of 1. Once the state reaches 4, the barrel explodes, and remains at state 4.
-- 
-- Breaking a TNT barrel usually takes 4 tears. However, it is possible to take less than that if
-- the players damage is high enough. (High damage causes the tear to do two or more increments at
-- once.)
____exports.TNTState = {}
____exports.TNTState.UNDAMAGED = 0
____exports.TNTState[____exports.TNTState.UNDAMAGED] = "UNDAMAGED"
____exports.TNTState.ONE_QUARTER_DAMAGED = 1
____exports.TNTState[____exports.TNTState.ONE_QUARTER_DAMAGED] = "ONE_QUARTER_DAMAGED"
____exports.TNTState.TWO_QUARTERS_DAMAGED = 2
____exports.TNTState[____exports.TNTState.TWO_QUARTERS_DAMAGED] = "TWO_QUARTERS_DAMAGED"
____exports.TNTState.THREE_QUARTERS_DAMAGED = 3
____exports.TNTState[____exports.TNTState.THREE_QUARTERS_DAMAGED] = "THREE_QUARTERS_DAMAGED"
____exports.TNTState.EXPLODED = 4
____exports.TNTState[____exports.TNTState.EXPLODED] = "EXPLODED"
--- For `GridEntityType.POOP` (14).
-- 
-- The health of a poop is represented by its state. It starts at 0 and climbs upwards in increments
-- of 250. Once the state reaches 1000, the poop is completely broken.
-- 
-- Breaking a poop usually takes 4 tears. However, it is possible to take less than that if the
-- players damage is high enough. (High damage causes the tear to do two or more increments at
-- once.)
-- 
-- Giga Poops increment by 20 instead of 250. Thus, they take around 50 tears to destroy.
____exports.PoopState = {}
____exports.PoopState.UNDAMAGED = 0
____exports.PoopState[____exports.PoopState.UNDAMAGED] = "UNDAMAGED"
____exports.PoopState.ONE_QUARTER_DAMAGED = 250
____exports.PoopState[____exports.PoopState.ONE_QUARTER_DAMAGED] = "ONE_QUARTER_DAMAGED"
____exports.PoopState.TWO_QUARTERS_DAMAGED = 500
____exports.PoopState[____exports.PoopState.TWO_QUARTERS_DAMAGED] = "TWO_QUARTERS_DAMAGED"
____exports.PoopState.THREE_QUARTERS_DAMAGED = 750
____exports.PoopState[____exports.PoopState.THREE_QUARTERS_DAMAGED] = "THREE_QUARTERS_DAMAGED"
____exports.PoopState.COMPLETELY_DESTROYED = 1000
____exports.PoopState[____exports.PoopState.COMPLETELY_DESTROYED] = "COMPLETELY_DESTROYED"
--- For `GridEntityType.DOOR` (16).
____exports.DoorState = {}
____exports.DoorState.INIT = 0
____exports.DoorState[____exports.DoorState.INIT] = "INIT"
____exports.DoorState.CLOSED = 1
____exports.DoorState[____exports.DoorState.CLOSED] = "CLOSED"
____exports.DoorState.OPEN = 2
____exports.DoorState[____exports.DoorState.OPEN] = "OPEN"
____exports.DoorState.ONE_CHAIN = 3
____exports.DoorState[____exports.DoorState.ONE_CHAIN] = "ONE_CHAIN"
____exports.DoorState.HALF_CRACKED = 4
____exports.DoorState[____exports.DoorState.HALF_CRACKED] = "HALF_CRACKED"
--- For `GridEntityType.TRAPDOOR` (17).
____exports.TrapdoorState = {}
____exports.TrapdoorState.CLOSED = 0
____exports.TrapdoorState[____exports.TrapdoorState.CLOSED] = "CLOSED"
____exports.TrapdoorState.OPEN = 1
____exports.TrapdoorState[____exports.TrapdoorState.OPEN] = "OPEN"
--- For `GridEntityType.CRAWL_SPACE` (18).
____exports.CrawlSpaceState = {}
____exports.CrawlSpaceState.CLOSED = 0
____exports.CrawlSpaceState[____exports.CrawlSpaceState.CLOSED] = "CLOSED"
____exports.CrawlSpaceState.OPEN = 1
____exports.CrawlSpaceState[____exports.CrawlSpaceState.OPEN] = "OPEN"
--- For `GridEntityType.PRESSURE_PLATE` (20).
____exports.PressurePlateState = {}
____exports.PressurePlateState.UNPRESSED = 0
____exports.PressurePlateState[____exports.PressurePlateState.UNPRESSED] = "UNPRESSED"
____exports.PressurePlateState.STATE_1_UNKNOWN = 1
____exports.PressurePlateState[____exports.PressurePlateState.STATE_1_UNKNOWN] = "STATE_1_UNKNOWN"
____exports.PressurePlateState.STATE_2_UNKNOWN = 2
____exports.PressurePlateState[____exports.PressurePlateState.STATE_2_UNKNOWN] = "STATE_2_UNKNOWN"
____exports.PressurePlateState.PRESSURE_PLATE_PRESSED = 3
____exports.PressurePlateState[____exports.PressurePlateState.PRESSURE_PLATE_PRESSED] = "PRESSURE_PLATE_PRESSED"
____exports.PressurePlateState.REWARD_PLATE_PRESSED = 4
____exports.PressurePlateState[____exports.PressurePlateState.REWARD_PLATE_PRESSED] = "REWARD_PLATE_PRESSED"
--- For `GridEntityType.TELEPORTER` (23).
____exports.TeleporterState = {}
____exports.TeleporterState.NORMAL = 0
____exports.TeleporterState[____exports.TeleporterState.NORMAL] = "NORMAL"
____exports.TeleporterState.ACTIVATED = 1
____exports.TeleporterState[____exports.TeleporterState.ACTIVATED] = "ACTIVATED"
____exports.TeleporterState.DISABLED = 2
____exports.TeleporterState[____exports.TeleporterState.DISABLED] = "DISABLED"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.collections.gridEntityVariants"] = function(...) 
local ____exports = {}
--- For `GridEntityType.ROCK` (2).
-- 
-- Note that this does not always apply to `GridEntityRock`, since that class can be equal to other
-- grid entity types.
____exports.RockVariant = {}
____exports.RockVariant.NORMAL = 0
____exports.RockVariant[____exports.RockVariant.NORMAL] = "NORMAL"
____exports.RockVariant.EVENT = 1
____exports.RockVariant[____exports.RockVariant.EVENT] = "EVENT"
--- For GridEntityType.ROCK_ALT (6), RockAltType.URN
-- 
-- Note that you are unable to spawn specific urn variants. The game will pick a random variant
-- regardless of which one you select.
____exports.UrnVariant = {}
____exports.UrnVariant.NORMAL = 0
____exports.UrnVariant[____exports.UrnVariant.NORMAL] = "NORMAL"
____exports.UrnVariant.CHIPPED_TOP_LEFT = 1
____exports.UrnVariant[____exports.UrnVariant.CHIPPED_TOP_LEFT] = "CHIPPED_TOP_LEFT"
____exports.UrnVariant.NARROW = 2
____exports.UrnVariant[____exports.UrnVariant.NARROW] = "NARROW"
--- For GridEntityType.ROCK_ALT (6), RockAltType.MUSHROOM
-- 
-- Note that you are unable to spawn specific mushroom variants. The game will pick a random variant
-- regardless of which one you select.
____exports.MushroomVariant = {}
____exports.MushroomVariant.NORMAL = 0
____exports.MushroomVariant[____exports.MushroomVariant.NORMAL] = "NORMAL"
____exports.MushroomVariant.CHIPPED_TOP_RIGHT = 1
____exports.MushroomVariant[____exports.MushroomVariant.CHIPPED_TOP_RIGHT] = "CHIPPED_TOP_RIGHT"
____exports.MushroomVariant.NARROW = 2
____exports.MushroomVariant[____exports.MushroomVariant.NARROW] = "NARROW"
--- For GridEntityType.ROCK_ALT (6), RockAltType.SKULL
-- 
-- Note that you are unable to spawn specific skull variants. The game will pick a random variant
-- regardless of which one you select.
____exports.SkullVariant = {}
____exports.SkullVariant.NORMAL = 0
____exports.SkullVariant[____exports.SkullVariant.NORMAL] = "NORMAL"
____exports.SkullVariant.FACING_RIGHT = 1
____exports.SkullVariant[____exports.SkullVariant.FACING_RIGHT] = "FACING_RIGHT"
____exports.SkullVariant.FACING_LEFT = 2
____exports.SkullVariant[____exports.SkullVariant.FACING_LEFT] = "FACING_LEFT"
--- For GridEntityType.ROCK_ALT (6), RockAltType.POLYP
-- 
-- Note that you are unable to spawn specific polyp variants. The game will pick a random variant
-- regardless of which one you select.
____exports.PolypVariant = {}
____exports.PolypVariant.NORMAL = 0
____exports.PolypVariant[____exports.PolypVariant.NORMAL] = "NORMAL"
____exports.PolypVariant.MANY_FINGERS = 1
____exports.PolypVariant[____exports.PolypVariant.MANY_FINGERS] = "MANY_FINGERS"
____exports.PolypVariant.FLIPPED_AND_SHIFTED_UPWARDS = 2
____exports.PolypVariant[____exports.PolypVariant.FLIPPED_AND_SHIFTED_UPWARDS] = "FLIPPED_AND_SHIFTED_UPWARDS"
--- For GridEntityType.ROCK_ALT (6), RockAltType.BUCKET
-- 
-- Note that you are unable to spawn specific bucket variants. The game will pick a random variant
-- regardless of which one you select.
____exports.BucketVariant = {}
____exports.BucketVariant.EMPTY = 0
____exports.BucketVariant[____exports.BucketVariant.EMPTY] = "EMPTY"
____exports.BucketVariant.FULL = 1
____exports.BucketVariant[____exports.BucketVariant.FULL] = "FULL"
____exports.BucketVariant.EMPTY_AND_SHIFTED_UPWARDS = 2
____exports.BucketVariant[____exports.BucketVariant.EMPTY_AND_SHIFTED_UPWARDS] = "EMPTY_AND_SHIFTED_UPWARDS"
--- For `GridEntityType.PIT` (7).
____exports.PitVariant = {}
____exports.PitVariant.NORMAL = 0
____exports.PitVariant[____exports.PitVariant.NORMAL] = "NORMAL"
____exports.PitVariant.FISSURE_SPAWNER = 16
____exports.PitVariant[____exports.PitVariant.FISSURE_SPAWNER] = "FISSURE_SPAWNER"
--- For `GridEntityType.FIREPLACE`. (13).
-- 
-- This only partially corresponds to the `FireplaceVariant` for non-grid entities. (Spawning a grid
-- entity fireplace with a variant higher than 1 will result in a normal fireplace.)
____exports.FireplaceGridEntityVariant = {}
____exports.FireplaceGridEntityVariant.NORMAL = 0
____exports.FireplaceGridEntityVariant[____exports.FireplaceGridEntityVariant.NORMAL] = "NORMAL"
____exports.FireplaceGridEntityVariant.RED = 1
____exports.FireplaceGridEntityVariant[____exports.FireplaceGridEntityVariant.RED] = "RED"
--- For `GridEntityType.POOP`. (14).
____exports.PoopGridEntityVariant = {}
____exports.PoopGridEntityVariant.NORMAL = 0
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.NORMAL] = "NORMAL"
____exports.PoopGridEntityVariant.RED = 1
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.RED] = "RED"
____exports.PoopGridEntityVariant.CORN = 2
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.CORN] = "CORN"
____exports.PoopGridEntityVariant.GOLDEN = 3
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.GOLDEN] = "GOLDEN"
____exports.PoopGridEntityVariant.RAINBOW = 4
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.RAINBOW] = "RAINBOW"
____exports.PoopGridEntityVariant.BLACK = 5
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.BLACK] = "BLACK"
____exports.PoopGridEntityVariant.WHITE = 6
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.WHITE] = "WHITE"
____exports.PoopGridEntityVariant.GIGA_TOP_LEFT = 7
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.GIGA_TOP_LEFT] = "GIGA_TOP_LEFT"
____exports.PoopGridEntityVariant.GIGA_TOP_RIGHT = 8
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.GIGA_TOP_RIGHT] = "GIGA_TOP_RIGHT"
____exports.PoopGridEntityVariant.GIGA_BOTTOM_LEFT = 9
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.GIGA_BOTTOM_LEFT] = "GIGA_BOTTOM_LEFT"
____exports.PoopGridEntityVariant.GIGA_BOTTOM_RIGHT = 10
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.GIGA_BOTTOM_RIGHT] = "GIGA_BOTTOM_RIGHT"
____exports.PoopGridEntityVariant.CHARMING = 11
____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.CHARMING] = "CHARMING"
--- For `GridEntityType.DOOR`. (16).
____exports.DoorVariant = {}
____exports.DoorVariant.UNSPECIFIED = 0
____exports.DoorVariant[____exports.DoorVariant.UNSPECIFIED] = "UNSPECIFIED"
____exports.DoorVariant.LOCKED = 1
____exports.DoorVariant[____exports.DoorVariant.LOCKED] = "LOCKED"
____exports.DoorVariant.LOCKED_DOUBLE = 2
____exports.DoorVariant[____exports.DoorVariant.LOCKED_DOUBLE] = "LOCKED_DOUBLE"
____exports.DoorVariant.LOCKED_CRACKED = 3
____exports.DoorVariant[____exports.DoorVariant.LOCKED_CRACKED] = "LOCKED_CRACKED"
____exports.DoorVariant.LOCKED_BARRED = 4
____exports.DoorVariant[____exports.DoorVariant.LOCKED_BARRED] = "LOCKED_BARRED"
____exports.DoorVariant.LOCKED_KEY_FAMILIAR = 5
____exports.DoorVariant[____exports.DoorVariant.LOCKED_KEY_FAMILIAR] = "LOCKED_KEY_FAMILIAR"
____exports.DoorVariant.LOCKED_GREED = 6
____exports.DoorVariant[____exports.DoorVariant.LOCKED_GREED] = "LOCKED_GREED"
____exports.DoorVariant.HIDDEN = 7
____exports.DoorVariant[____exports.DoorVariant.HIDDEN] = "HIDDEN"
____exports.DoorVariant.UNLOCKED = 8
____exports.DoorVariant[____exports.DoorVariant.UNLOCKED] = "UNLOCKED"
--- For `GridEntityType.TRAPDOOR` (17).
____exports.TrapdoorVariant = {}
____exports.TrapdoorVariant.NORMAL = 0
____exports.TrapdoorVariant[____exports.TrapdoorVariant.NORMAL] = "NORMAL"
____exports.TrapdoorVariant.VOID_PORTAL = 1
____exports.TrapdoorVariant[____exports.TrapdoorVariant.VOID_PORTAL] = "VOID_PORTAL"
--- For `GridEntityType.CRAWL_SPACE`. (18).
____exports.CrawlSpaceVariant = {}
____exports.CrawlSpaceVariant.NORMAL = 0
____exports.CrawlSpaceVariant[____exports.CrawlSpaceVariant.NORMAL] = "NORMAL"
____exports.CrawlSpaceVariant.GREAT_GIDEON = 1
____exports.CrawlSpaceVariant[____exports.CrawlSpaceVariant.GREAT_GIDEON] = "GREAT_GIDEON"
____exports.CrawlSpaceVariant.SECRET_SHOP = 2
____exports.CrawlSpaceVariant[____exports.CrawlSpaceVariant.SECRET_SHOP] = "SECRET_SHOP"
____exports.CrawlSpaceVariant.PASSAGE_TO_BEGINNING_OF_FLOOR = 3
____exports.CrawlSpaceVariant[____exports.CrawlSpaceVariant.PASSAGE_TO_BEGINNING_OF_FLOOR] = "PASSAGE_TO_BEGINNING_OF_FLOOR"
____exports.CrawlSpaceVariant.NULL = 4
____exports.CrawlSpaceVariant[____exports.CrawlSpaceVariant.NULL] = "NULL"
--- For `GridEntityType.PRESSURE_PLATE` (20).
____exports.PressurePlateVariant = {}
____exports.PressurePlateVariant.PRESSURE_PLATE = 0
____exports.PressurePlateVariant[____exports.PressurePlateVariant.PRESSURE_PLATE] = "PRESSURE_PLATE"
____exports.PressurePlateVariant.REWARD_PLATE = 1
____exports.PressurePlateVariant[____exports.PressurePlateVariant.REWARD_PLATE] = "REWARD_PLATE"
____exports.PressurePlateVariant.GREED_PLATE = 2
____exports.PressurePlateVariant[____exports.PressurePlateVariant.GREED_PLATE] = "GREED_PLATE"
____exports.PressurePlateVariant.RAIL_PLATE = 3
____exports.PressurePlateVariant[____exports.PressurePlateVariant.RAIL_PLATE] = "RAIL_PLATE"
____exports.PressurePlateVariant.KILL_ALL_ENEMIES_PLATE = 9
____exports.PressurePlateVariant[____exports.PressurePlateVariant.KILL_ALL_ENEMIES_PLATE] = "KILL_ALL_ENEMIES_PLATE"
____exports.PressurePlateVariant.SPAWN_ROCKS_PLATE = 10
____exports.PressurePlateVariant[____exports.PressurePlateVariant.SPAWN_ROCKS_PLATE] = "SPAWN_ROCKS_PLATE"
--- For `GridEntityType.STATUE` (21).
____exports.StatueVariant = {}
____exports.StatueVariant.DEVIL = 0
____exports.StatueVariant[____exports.StatueVariant.DEVIL] = "DEVIL"
____exports.StatueVariant.ANGEL = 1
____exports.StatueVariant[____exports.StatueVariant.ANGEL] = "ANGEL"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.collections.roomSubTypes"] = function(...) 
local ____exports = {}
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.SHOP` (2).
-- 
-- This matches the sub-type in the "00.special rooms.stb" file.
____exports.ShopSubType = {}
____exports.ShopSubType.LEVEL_1 = 0
____exports.ShopSubType[____exports.ShopSubType.LEVEL_1] = "LEVEL_1"
____exports.ShopSubType.LEVEL_2 = 1
____exports.ShopSubType[____exports.ShopSubType.LEVEL_2] = "LEVEL_2"
____exports.ShopSubType.LEVEL_3 = 2
____exports.ShopSubType[____exports.ShopSubType.LEVEL_3] = "LEVEL_3"
____exports.ShopSubType.LEVEL_4 = 3
____exports.ShopSubType[____exports.ShopSubType.LEVEL_4] = "LEVEL_4"
____exports.ShopSubType.LEVEL_5 = 4
____exports.ShopSubType[____exports.ShopSubType.LEVEL_5] = "LEVEL_5"
____exports.ShopSubType.RARE_GOOD = 10
____exports.ShopSubType[____exports.ShopSubType.RARE_GOOD] = "RARE_GOOD"
____exports.ShopSubType.RARE_BAD = 11
____exports.ShopSubType[____exports.ShopSubType.RARE_BAD] = "RARE_BAD"
____exports.ShopSubType.TAINTED_KEEPER_LEVEL_1 = 100
____exports.ShopSubType[____exports.ShopSubType.TAINTED_KEEPER_LEVEL_1] = "TAINTED_KEEPER_LEVEL_1"
____exports.ShopSubType.TAINTED_KEEPER_LEVEL_2 = 101
____exports.ShopSubType[____exports.ShopSubType.TAINTED_KEEPER_LEVEL_2] = "TAINTED_KEEPER_LEVEL_2"
____exports.ShopSubType.TAINTED_KEEPER_LEVEL_3 = 102
____exports.ShopSubType[____exports.ShopSubType.TAINTED_KEEPER_LEVEL_3] = "TAINTED_KEEPER_LEVEL_3"
____exports.ShopSubType.TAINTED_KEEPER_LEVEL_4 = 103
____exports.ShopSubType[____exports.ShopSubType.TAINTED_KEEPER_LEVEL_4] = "TAINTED_KEEPER_LEVEL_4"
____exports.ShopSubType.TAINTED_KEEPER_LEVEL_5 = 104
____exports.ShopSubType[____exports.ShopSubType.TAINTED_KEEPER_LEVEL_5] = "TAINTED_KEEPER_LEVEL_5"
____exports.ShopSubType.TAINTED_KEEPER_RARE_GOOD = 110
____exports.ShopSubType[____exports.ShopSubType.TAINTED_KEEPER_RARE_GOOD] = "TAINTED_KEEPER_RARE_GOOD"
____exports.ShopSubType.TAINTED_KEEPER_RARE_BAD = 111
____exports.ShopSubType[____exports.ShopSubType.TAINTED_KEEPER_RARE_BAD] = "TAINTED_KEEPER_RARE_BAD"
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.TREASURE` (4).
-- 
-- This matches the sub-type in the "00.special rooms.stb" file and elsewhere.
____exports.TreasureRoomSubType = {}
____exports.TreasureRoomSubType.NORMAL = 0
____exports.TreasureRoomSubType[____exports.TreasureRoomSubType.NORMAL] = "NORMAL"
____exports.TreasureRoomSubType.MORE_OPTIONS = 1
____exports.TreasureRoomSubType[____exports.TreasureRoomSubType.MORE_OPTIONS] = "MORE_OPTIONS"
____exports.TreasureRoomSubType.PAY_TO_WIN = 2
____exports.TreasureRoomSubType[____exports.TreasureRoomSubType.PAY_TO_WIN] = "PAY_TO_WIN"
____exports.TreasureRoomSubType.MORE_OPTIONS_AND_PAY_TO_WIN = 3
____exports.TreasureRoomSubType[____exports.TreasureRoomSubType.MORE_OPTIONS_AND_PAY_TO_WIN] = "MORE_OPTIONS_AND_PAY_TO_WIN"
____exports.TreasureRoomSubType.KNIFE_PIECE = 34
____exports.TreasureRoomSubType[____exports.TreasureRoomSubType.KNIFE_PIECE] = "KNIFE_PIECE"
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.BOSS` (5).
-- 
-- This matches the "bossID" attribute in the "entities2.xml" file. It also matches the sub-type in
-- the "00.special rooms.stb" file.
-- 
-- The enum is named `BossID` instead of `BossRoomSubType` in order to match the `Entity.GetBossID`,
-- `Room.GetBossID` and `Room.GetSecondBossID` methods.
____exports.BossID = {}
____exports.BossID.MONSTRO = 1
____exports.BossID[____exports.BossID.MONSTRO] = "MONSTRO"
____exports.BossID.LARRY_JR = 2
____exports.BossID[____exports.BossID.LARRY_JR] = "LARRY_JR"
____exports.BossID.CHUB = 3
____exports.BossID[____exports.BossID.CHUB] = "CHUB"
____exports.BossID.GURDY = 4
____exports.BossID[____exports.BossID.GURDY] = "GURDY"
____exports.BossID.MONSTRO_II = 5
____exports.BossID[____exports.BossID.MONSTRO_II] = "MONSTRO_II"
____exports.BossID.MOM = 6
____exports.BossID[____exports.BossID.MOM] = "MOM"
____exports.BossID.SCOLEX = 7
____exports.BossID[____exports.BossID.SCOLEX] = "SCOLEX"
____exports.BossID.MOMS_HEART = 8
____exports.BossID[____exports.BossID.MOMS_HEART] = "MOMS_HEART"
____exports.BossID.FAMINE = 9
____exports.BossID[____exports.BossID.FAMINE] = "FAMINE"
____exports.BossID.PESTILENCE = 10
____exports.BossID[____exports.BossID.PESTILENCE] = "PESTILENCE"
____exports.BossID.WAR = 11
____exports.BossID[____exports.BossID.WAR] = "WAR"
____exports.BossID.DEATH = 12
____exports.BossID[____exports.BossID.DEATH] = "DEATH"
____exports.BossID.DUKE_OF_FLIES = 13
____exports.BossID[____exports.BossID.DUKE_OF_FLIES] = "DUKE_OF_FLIES"
____exports.BossID.PEEP = 14
____exports.BossID[____exports.BossID.PEEP] = "PEEP"
____exports.BossID.LOKI = 15
____exports.BossID[____exports.BossID.LOKI] = "LOKI"
____exports.BossID.BLASTOCYST = 16
____exports.BossID[____exports.BossID.BLASTOCYST] = "BLASTOCYST"
____exports.BossID.GEMINI = 17
____exports.BossID[____exports.BossID.GEMINI] = "GEMINI"
____exports.BossID.FISTULA = 18
____exports.BossID[____exports.BossID.FISTULA] = "FISTULA"
____exports.BossID.GISH = 19
____exports.BossID[____exports.BossID.GISH] = "GISH"
____exports.BossID.STEVEN = 20
____exports.BossID[____exports.BossID.STEVEN] = "STEVEN"
____exports.BossID.CHAD = 21
____exports.BossID[____exports.BossID.CHAD] = "CHAD"
____exports.BossID.HEADLESS_HORSEMAN = 22
____exports.BossID[____exports.BossID.HEADLESS_HORSEMAN] = "HEADLESS_HORSEMAN"
____exports.BossID.THE_FALLEN = 23
____exports.BossID[____exports.BossID.THE_FALLEN] = "THE_FALLEN"
____exports.BossID.SATAN = 24
____exports.BossID[____exports.BossID.SATAN] = "SATAN"
____exports.BossID.IT_LIVES = 25
____exports.BossID[____exports.BossID.IT_LIVES] = "IT_LIVES"
____exports.BossID.THE_HOLLOW = 26
____exports.BossID[____exports.BossID.THE_HOLLOW] = "THE_HOLLOW"
____exports.BossID.THE_CARRION_QUEEN = 27
____exports.BossID[____exports.BossID.THE_CARRION_QUEEN] = "THE_CARRION_QUEEN"
____exports.BossID.GURDY_JR = 28
____exports.BossID[____exports.BossID.GURDY_JR] = "GURDY_JR"
____exports.BossID.THE_HUSK = 29
____exports.BossID[____exports.BossID.THE_HUSK] = "THE_HUSK"
____exports.BossID.THE_BLOAT = 30
____exports.BossID[____exports.BossID.THE_BLOAT] = "THE_BLOAT"
____exports.BossID.LOKII = 31
____exports.BossID[____exports.BossID.LOKII] = "LOKII"
____exports.BossID.THE_BLIGHTED_OVUM = 32
____exports.BossID[____exports.BossID.THE_BLIGHTED_OVUM] = "THE_BLIGHTED_OVUM"
____exports.BossID.TERATOMA = 33
____exports.BossID[____exports.BossID.TERATOMA] = "TERATOMA"
____exports.BossID.THE_WIDOW = 34
____exports.BossID[____exports.BossID.THE_WIDOW] = "THE_WIDOW"
____exports.BossID.MASK_OF_INFAMY = 35
____exports.BossID[____exports.BossID.MASK_OF_INFAMY] = "MASK_OF_INFAMY"
____exports.BossID.THE_WRETCHED = 36
____exports.BossID[____exports.BossID.THE_WRETCHED] = "THE_WRETCHED"
____exports.BossID.PIN = 37
____exports.BossID[____exports.BossID.PIN] = "PIN"
____exports.BossID.CONQUEST = 38
____exports.BossID[____exports.BossID.CONQUEST] = "CONQUEST"
____exports.BossID.ISAAC = 39
____exports.BossID[____exports.BossID.ISAAC] = "ISAAC"
____exports.BossID.BLUE_BABY = 40
____exports.BossID[____exports.BossID.BLUE_BABY] = "BLUE_BABY"
____exports.BossID.DADDY_LONG_LEGS = 41
____exports.BossID[____exports.BossID.DADDY_LONG_LEGS] = "DADDY_LONG_LEGS"
____exports.BossID.TRIACHNID = 42
____exports.BossID[____exports.BossID.TRIACHNID] = "TRIACHNID"
____exports.BossID.THE_HAUNT = 43
____exports.BossID[____exports.BossID.THE_HAUNT] = "THE_HAUNT"
____exports.BossID.DINGLE = 44
____exports.BossID[____exports.BossID.DINGLE] = "DINGLE"
____exports.BossID.MEGA_MAW = 45
____exports.BossID[____exports.BossID.MEGA_MAW] = "MEGA_MAW"
____exports.BossID.THE_GATE = 46
____exports.BossID[____exports.BossID.THE_GATE] = "THE_GATE"
____exports.BossID.MEGA_FATTY = 47
____exports.BossID[____exports.BossID.MEGA_FATTY] = "MEGA_FATTY"
____exports.BossID.THE_CAGE = 48
____exports.BossID[____exports.BossID.THE_CAGE] = "THE_CAGE"
____exports.BossID.MAMA_GURDY = 49
____exports.BossID[____exports.BossID.MAMA_GURDY] = "MAMA_GURDY"
____exports.BossID.DARK_ONE = 50
____exports.BossID[____exports.BossID.DARK_ONE] = "DARK_ONE"
____exports.BossID.THE_ADVERSARY = 51
____exports.BossID[____exports.BossID.THE_ADVERSARY] = "THE_ADVERSARY"
____exports.BossID.POLYCEPHALUS = 52
____exports.BossID[____exports.BossID.POLYCEPHALUS] = "POLYCEPHALUS"
____exports.BossID.MR_FRED = 53
____exports.BossID[____exports.BossID.MR_FRED] = "MR_FRED"
____exports.BossID.THE_LAMB = 54
____exports.BossID[____exports.BossID.THE_LAMB] = "THE_LAMB"
____exports.BossID.MEGA_SATAN = 55
____exports.BossID[____exports.BossID.MEGA_SATAN] = "MEGA_SATAN"
____exports.BossID.GURGLINGS = 56
____exports.BossID[____exports.BossID.GURGLINGS] = "GURGLINGS"
____exports.BossID.THE_STAIN = 57
____exports.BossID[____exports.BossID.THE_STAIN] = "THE_STAIN"
____exports.BossID.BROWNIE = 58
____exports.BossID[____exports.BossID.BROWNIE] = "BROWNIE"
____exports.BossID.THE_FORSAKEN = 59
____exports.BossID[____exports.BossID.THE_FORSAKEN] = "THE_FORSAKEN"
____exports.BossID.LITTLE_HORN = 60
____exports.BossID[____exports.BossID.LITTLE_HORN] = "LITTLE_HORN"
____exports.BossID.RAG_MAN = 61
____exports.BossID[____exports.BossID.RAG_MAN] = "RAG_MAN"
____exports.BossID.ULTRA_GREED = 62
____exports.BossID[____exports.BossID.ULTRA_GREED] = "ULTRA_GREED"
____exports.BossID.HUSH = 63
____exports.BossID[____exports.BossID.HUSH] = "HUSH"
____exports.BossID.DANGLE = 64
____exports.BossID[____exports.BossID.DANGLE] = "DANGLE"
____exports.BossID.TURDLING = 65
____exports.BossID[____exports.BossID.TURDLING] = "TURDLING"
____exports.BossID.THE_FRAIL = 66
____exports.BossID[____exports.BossID.THE_FRAIL] = "THE_FRAIL"
____exports.BossID.RAG_MEGA = 67
____exports.BossID[____exports.BossID.RAG_MEGA] = "RAG_MEGA"
____exports.BossID.SISTERS_VIS = 68
____exports.BossID[____exports.BossID.SISTERS_VIS] = "SISTERS_VIS"
____exports.BossID.BIG_HORN = 69
____exports.BossID[____exports.BossID.BIG_HORN] = "BIG_HORN"
____exports.BossID.DELIRIUM = 70
____exports.BossID[____exports.BossID.DELIRIUM] = "DELIRIUM"
____exports.BossID.THE_MATRIARCH = 72
____exports.BossID[____exports.BossID.THE_MATRIARCH] = "THE_MATRIARCH"
____exports.BossID.THE_PILE = 73
____exports.BossID[____exports.BossID.THE_PILE] = "THE_PILE"
____exports.BossID.REAP_CREEP = 74
____exports.BossID[____exports.BossID.REAP_CREEP] = "REAP_CREEP"
____exports.BossID.LIL_BLUB = 75
____exports.BossID[____exports.BossID.LIL_BLUB] = "LIL_BLUB"
____exports.BossID.WORMWOOD = 76
____exports.BossID[____exports.BossID.WORMWOOD] = "WORMWOOD"
____exports.BossID.RAINMAKER = 77
____exports.BossID[____exports.BossID.RAINMAKER] = "RAINMAKER"
____exports.BossID.THE_VISAGE = 78
____exports.BossID[____exports.BossID.THE_VISAGE] = "THE_VISAGE"
____exports.BossID.THE_SIREN = 79
____exports.BossID[____exports.BossID.THE_SIREN] = "THE_SIREN"
____exports.BossID.TUFF_TWINS = 80
____exports.BossID[____exports.BossID.TUFF_TWINS] = "TUFF_TWINS"
____exports.BossID.THE_HERETIC = 81
____exports.BossID[____exports.BossID.THE_HERETIC] = "THE_HERETIC"
____exports.BossID.HORNFEL = 82
____exports.BossID[____exports.BossID.HORNFEL] = "HORNFEL"
____exports.BossID.GREAT_GIDEON = 83
____exports.BossID[____exports.BossID.GREAT_GIDEON] = "GREAT_GIDEON"
____exports.BossID.BABY_PLUM = 84
____exports.BossID[____exports.BossID.BABY_PLUM] = "BABY_PLUM"
____exports.BossID.THE_SCOURGE = 85
____exports.BossID[____exports.BossID.THE_SCOURGE] = "THE_SCOURGE"
____exports.BossID.CHIMERA = 86
____exports.BossID[____exports.BossID.CHIMERA] = "CHIMERA"
____exports.BossID.ROTGUT = 87
____exports.BossID[____exports.BossID.ROTGUT] = "ROTGUT"
____exports.BossID.MOTHER = 88
____exports.BossID[____exports.BossID.MOTHER] = "MOTHER"
____exports.BossID.MAUSOLEUM_MOM = 89
____exports.BossID[____exports.BossID.MAUSOLEUM_MOM] = "MAUSOLEUM_MOM"
____exports.BossID.MAUSOLEUM_MOMS_HEART = 90
____exports.BossID[____exports.BossID.MAUSOLEUM_MOMS_HEART] = "MAUSOLEUM_MOMS_HEART"
____exports.BossID.MIN_MIN = 91
____exports.BossID[____exports.BossID.MIN_MIN] = "MIN_MIN"
____exports.BossID.CLOG = 92
____exports.BossID[____exports.BossID.CLOG] = "CLOG"
____exports.BossID.SINGE = 93
____exports.BossID[____exports.BossID.SINGE] = "SINGE"
____exports.BossID.BUMBINO = 94
____exports.BossID[____exports.BossID.BUMBINO] = "BUMBINO"
____exports.BossID.COLOSTOMIA = 95
____exports.BossID[____exports.BossID.COLOSTOMIA] = "COLOSTOMIA"
____exports.BossID.THE_SHELL = 96
____exports.BossID[____exports.BossID.THE_SHELL] = "THE_SHELL"
____exports.BossID.TURDLET = 97
____exports.BossID[____exports.BossID.TURDLET] = "TURDLET"
____exports.BossID.RAGLICH = 98
____exports.BossID[____exports.BossID.RAGLICH] = "RAGLICH"
____exports.BossID.DOGMA = 99
____exports.BossID[____exports.BossID.DOGMA] = "DOGMA"
____exports.BossID.BEAST = 100
____exports.BossID[____exports.BossID.BEAST] = "BEAST"
____exports.BossID.HORNY_BOYS = 101
____exports.BossID[____exports.BossID.HORNY_BOYS] = "HORNY_BOYS"
____exports.BossID.CLUTCH = 102
____exports.BossID[____exports.BossID.CLUTCH] = "CLUTCH"
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.MINI_BOSS` (6).
-- 
-- This matches the sub-type in the "00.special rooms.stb" file.
-- 
-- The enum is named `MinibossID` instead of` MinibossRoomSubType` in order to match the `BossID`
-- enum.
____exports.MinibossID = {}
____exports.MinibossID.SLOTH = 0
____exports.MinibossID[____exports.MinibossID.SLOTH] = "SLOTH"
____exports.MinibossID.LUST = 1
____exports.MinibossID[____exports.MinibossID.LUST] = "LUST"
____exports.MinibossID.WRATH = 2
____exports.MinibossID[____exports.MinibossID.WRATH] = "WRATH"
____exports.MinibossID.GLUTTONY = 3
____exports.MinibossID[____exports.MinibossID.GLUTTONY] = "GLUTTONY"
____exports.MinibossID.GREED = 4
____exports.MinibossID[____exports.MinibossID.GREED] = "GREED"
____exports.MinibossID.ENVY = 5
____exports.MinibossID[____exports.MinibossID.ENVY] = "ENVY"
____exports.MinibossID.PRIDE = 6
____exports.MinibossID[____exports.MinibossID.PRIDE] = "PRIDE"
____exports.MinibossID.SUPER_SLOTH = 7
____exports.MinibossID[____exports.MinibossID.SUPER_SLOTH] = "SUPER_SLOTH"
____exports.MinibossID.SUPER_LUST = 8
____exports.MinibossID[____exports.MinibossID.SUPER_LUST] = "SUPER_LUST"
____exports.MinibossID.SUPER_WRATH = 9
____exports.MinibossID[____exports.MinibossID.SUPER_WRATH] = "SUPER_WRATH"
____exports.MinibossID.SUPER_GLUTTONY = 10
____exports.MinibossID[____exports.MinibossID.SUPER_GLUTTONY] = "SUPER_GLUTTONY"
____exports.MinibossID.SUPER_GREED = 11
____exports.MinibossID[____exports.MinibossID.SUPER_GREED] = "SUPER_GREED"
____exports.MinibossID.SUPER_ENVY = 12
____exports.MinibossID[____exports.MinibossID.SUPER_ENVY] = "SUPER_ENVY"
____exports.MinibossID.SUPER_PRIDE = 13
____exports.MinibossID[____exports.MinibossID.SUPER_PRIDE] = "SUPER_PRIDE"
____exports.MinibossID.ULTRA_PRIDE = 14
____exports.MinibossID[____exports.MinibossID.ULTRA_PRIDE] = "ULTRA_PRIDE"
____exports.MinibossID.KRAMPUS = 15
____exports.MinibossID[____exports.MinibossID.KRAMPUS] = "KRAMPUS"
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.CURSE` (10).
-- 
-- This matches the sub-type in the "00.special rooms.stb" file.
____exports.CurseRoomSubType = {}
____exports.CurseRoomSubType.NORMAL = 0
____exports.CurseRoomSubType[____exports.CurseRoomSubType.NORMAL] = "NORMAL"
____exports.CurseRoomSubType.VOODOO_HEAD = 1
____exports.CurseRoomSubType[____exports.CurseRoomSubType.VOODOO_HEAD] = "VOODOO_HEAD"
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.CHALLENGE` (11).
-- 
-- This matches the sub-type in the "00.special rooms.stb" file and elsewhere.
____exports.ChallengeRoomSubType = {}
____exports.ChallengeRoomSubType.NORMAL = 0
____exports.ChallengeRoomSubType[____exports.ChallengeRoomSubType.NORMAL] = "NORMAL"
____exports.ChallengeRoomSubType.BOSS = 1
____exports.ChallengeRoomSubType[____exports.ChallengeRoomSubType.BOSS] = "BOSS"
____exports.ChallengeRoomSubType.NORMAL_WAVE = 10
____exports.ChallengeRoomSubType[____exports.ChallengeRoomSubType.NORMAL_WAVE] = "NORMAL_WAVE"
____exports.ChallengeRoomSubType.BOSS_WAVE = 11
____exports.ChallengeRoomSubType[____exports.ChallengeRoomSubType.BOSS_WAVE] = "BOSS_WAVE"
____exports.ChallengeRoomSubType.GREAT_GIDEON_WAVE = 12
____exports.ChallengeRoomSubType[____exports.ChallengeRoomSubType.GREAT_GIDEON_WAVE] = "GREAT_GIDEON_WAVE"
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.LIBRARY` (12).
-- 
-- This matches the sub-type in the "00.special rooms.stb" file.
____exports.LibrarySubType = {}
____exports.LibrarySubType.LEVEL_1 = 0
____exports.LibrarySubType[____exports.LibrarySubType.LEVEL_1] = "LEVEL_1"
____exports.LibrarySubType.LEVEL_2 = 1
____exports.LibrarySubType[____exports.LibrarySubType.LEVEL_2] = "LEVEL_2"
____exports.LibrarySubType.LEVEL_3 = 2
____exports.LibrarySubType[____exports.LibrarySubType.LEVEL_3] = "LEVEL_3"
____exports.LibrarySubType.LEVEL_4 = 3
____exports.LibrarySubType[____exports.LibrarySubType.LEVEL_4] = "LEVEL_4"
____exports.LibrarySubType.LEVEL_5 = 4
____exports.LibrarySubType[____exports.LibrarySubType.LEVEL_5] = "LEVEL_5"
____exports.LibrarySubType.EXTRA_GOOD = 10
____exports.LibrarySubType[____exports.LibrarySubType.EXTRA_GOOD] = "EXTRA_GOOD"
____exports.LibrarySubType.EXTRA_BAD = 11
____exports.LibrarySubType[____exports.LibrarySubType.EXTRA_BAD] = "EXTRA_BAD"
____exports.LibrarySubType.TAINTED_KEEPER_LEVEL_1 = 100
____exports.LibrarySubType[____exports.LibrarySubType.TAINTED_KEEPER_LEVEL_1] = "TAINTED_KEEPER_LEVEL_1"
____exports.LibrarySubType.TAINTED_KEEPER_LEVEL_2 = 101
____exports.LibrarySubType[____exports.LibrarySubType.TAINTED_KEEPER_LEVEL_2] = "TAINTED_KEEPER_LEVEL_2"
____exports.LibrarySubType.TAINTED_KEEPER_LEVEL_3 = 102
____exports.LibrarySubType[____exports.LibrarySubType.TAINTED_KEEPER_LEVEL_3] = "TAINTED_KEEPER_LEVEL_3"
____exports.LibrarySubType.TAINTED_KEEPER_LEVEL_4 = 103
____exports.LibrarySubType[____exports.LibrarySubType.TAINTED_KEEPER_LEVEL_4] = "TAINTED_KEEPER_LEVEL_4"
____exports.LibrarySubType.TAINTED_KEEPER_LEVEL_5 = 104
____exports.LibrarySubType[____exports.LibrarySubType.TAINTED_KEEPER_LEVEL_5] = "TAINTED_KEEPER_LEVEL_5"
____exports.LibrarySubType.TAINTED_KEEPER_EXTRA_GOOD = 110
____exports.LibrarySubType[____exports.LibrarySubType.TAINTED_KEEPER_EXTRA_GOOD] = "TAINTED_KEEPER_EXTRA_GOOD"
____exports.LibrarySubType.TAINTED_KEEPER_EXTRA_BAD = 111
____exports.LibrarySubType[____exports.LibrarySubType.TAINTED_KEEPER_EXTRA_BAD] = "TAINTED_KEEPER_EXTRA_BAD"
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.DEVIL` (14).
-- 
-- This matches the sub-type in the "00.special rooms.stb" file.
____exports.DevilRoomSubType = {}
____exports.DevilRoomSubType.NORMAL = 0
____exports.DevilRoomSubType[____exports.DevilRoomSubType.NORMAL] = "NORMAL"
____exports.DevilRoomSubType.NUMBER_SIX_TRINKET = 1
____exports.DevilRoomSubType[____exports.DevilRoomSubType.NUMBER_SIX_TRINKET] = "NUMBER_SIX_TRINKET"
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.ANGEL` (15).
-- 
-- This matches the sub-type in the "00.special rooms.stb" file.
____exports.AngelRoomSubType = {}
____exports.AngelRoomSubType.NORMAL = 0
____exports.AngelRoomSubType[____exports.AngelRoomSubType.NORMAL] = "NORMAL"
____exports.AngelRoomSubType.SHOP = 1
____exports.AngelRoomSubType[____exports.AngelRoomSubType.SHOP] = "SHOP"
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.DUNGEON` (16).
-- 
-- This matches the sub-type in the "00.special rooms.stb" file and elsewhere.
____exports.DungeonSubType = {}
____exports.DungeonSubType.NORMAL = 0
____exports.DungeonSubType[____exports.DungeonSubType.NORMAL] = "NORMAL"
____exports.DungeonSubType.GIDEONS_GRAVE = 1
____exports.DungeonSubType[____exports.DungeonSubType.GIDEONS_GRAVE] = "GIDEONS_GRAVE"
____exports.DungeonSubType.ROTGUT_MAGGOT = 2
____exports.DungeonSubType[____exports.DungeonSubType.ROTGUT_MAGGOT] = "ROTGUT_MAGGOT"
____exports.DungeonSubType.ROTGUT_HEART = 3
____exports.DungeonSubType[____exports.DungeonSubType.ROTGUT_HEART] = "ROTGUT_HEART"
____exports.DungeonSubType.BEAST_ROOM = 4
____exports.DungeonSubType[____exports.DungeonSubType.BEAST_ROOM] = "BEAST_ROOM"
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.CLEAN_BEDROOM` (18).
-- 
-- This matches the sub-type in the "00.special rooms.stb" file.
____exports.IsaacsRoomSubType = {}
____exports.IsaacsRoomSubType.NORMAL = 0
____exports.IsaacsRoomSubType[____exports.IsaacsRoomSubType.NORMAL] = "NORMAL"
____exports.IsaacsRoomSubType.GENESIS = 99
____exports.IsaacsRoomSubType[____exports.IsaacsRoomSubType.GENESIS] = "GENESIS"
--- For `StageID.SPECIAL_ROOMS` (0), `RoomType.SECRET_EXIT` (27).
-- 
-- This matches the sub-type in the "00.special rooms.stb" file.
____exports.SecretExitSubType = {}
____exports.SecretExitSubType.DOWNPOUR = 1
____exports.SecretExitSubType[____exports.SecretExitSubType.DOWNPOUR] = "DOWNPOUR"
____exports.SecretExitSubType.MINES = 2
____exports.SecretExitSubType[____exports.SecretExitSubType.MINES] = "MINES"
____exports.SecretExitSubType.MAUSOLEUM = 3
____exports.SecretExitSubType[____exports.SecretExitSubType.MAUSOLEUM] = "MAUSOLEUM"
--- For `StageID.DOWNPOUR` (27) and `StageID.DROSS` (28), `RoomType.DEFAULT` (1).
-- 
-- This matches the sub-type in the "27.downpour.stb" and "28.dross.stb" files.
____exports.DownpourRoomSubType = {}
____exports.DownpourRoomSubType.NORMAL = 0
____exports.DownpourRoomSubType[____exports.DownpourRoomSubType.NORMAL] = "NORMAL"
____exports.DownpourRoomSubType.WHITE_FIRE = 1
____exports.DownpourRoomSubType[____exports.DownpourRoomSubType.WHITE_FIRE] = "WHITE_FIRE"
____exports.DownpourRoomSubType.MIRROR = 34
____exports.DownpourRoomSubType[____exports.DownpourRoomSubType.MIRROR] = "MIRROR"
--- For `StageID.MINES` (29) and `StageID.ASHPIT` (30), `RoomType.DEFAULT` (1).
-- 
-- This matches the sub-type in the "29.mines.stb" and "30.ashpit.stb" files.
____exports.MinesRoomSubType = {}
____exports.MinesRoomSubType.NORMAL = 0
____exports.MinesRoomSubType[____exports.MinesRoomSubType.NORMAL] = "NORMAL"
____exports.MinesRoomSubType.BUTTON_ROOM = 1
____exports.MinesRoomSubType[____exports.MinesRoomSubType.BUTTON_ROOM] = "BUTTON_ROOM"
____exports.MinesRoomSubType.MINESHAFT_ENTRANCE = 10
____exports.MinesRoomSubType[____exports.MinesRoomSubType.MINESHAFT_ENTRANCE] = "MINESHAFT_ENTRANCE"
____exports.MinesRoomSubType.MINESHAFT_LOBBY = 11
____exports.MinesRoomSubType[____exports.MinesRoomSubType.MINESHAFT_LOBBY] = "MINESHAFT_LOBBY"
____exports.MinesRoomSubType.MINESHAFT_KNIFE_PIECE = 20
____exports.MinesRoomSubType[____exports.MinesRoomSubType.MINESHAFT_KNIFE_PIECE] = "MINESHAFT_KNIFE_PIECE"
____exports.MinesRoomSubType.MINESHAFT_ROOM_PRE_CHASE = 30
____exports.MinesRoomSubType[____exports.MinesRoomSubType.MINESHAFT_ROOM_PRE_CHASE] = "MINESHAFT_ROOM_PRE_CHASE"
____exports.MinesRoomSubType.MINESHAFT_ROOM_POST_CHASE = 31
____exports.MinesRoomSubType[____exports.MinesRoomSubType.MINESHAFT_ROOM_POST_CHASE] = "MINESHAFT_ROOM_POST_CHASE"
--- For `StageID.HOME` (35), `RoomType.DEFAULT` (1).
-- 
-- This matches the sub-type in the "35.home.stb" file.
____exports.HomeRoomSubType = {}
____exports.HomeRoomSubType.ISAACS_BEDROOM = 0
____exports.HomeRoomSubType[____exports.HomeRoomSubType.ISAACS_BEDROOM] = "ISAACS_BEDROOM"
____exports.HomeRoomSubType.HALLWAY = 1
____exports.HomeRoomSubType[____exports.HomeRoomSubType.HALLWAY] = "HALLWAY"
____exports.HomeRoomSubType.MOMS_BEDROOM = 2
____exports.HomeRoomSubType[____exports.HomeRoomSubType.MOMS_BEDROOM] = "MOMS_BEDROOM"
____exports.HomeRoomSubType.LIVING_ROOM = 3
____exports.HomeRoomSubType[____exports.HomeRoomSubType.LIVING_ROOM] = "LIVING_ROOM"
____exports.HomeRoomSubType.CLOSET_RIGHT = 10
____exports.HomeRoomSubType[____exports.HomeRoomSubType.CLOSET_RIGHT] = "CLOSET_RIGHT"
____exports.HomeRoomSubType.CLOSET_LEFT = 11
____exports.HomeRoomSubType[____exports.HomeRoomSubType.CLOSET_LEFT] = "CLOSET_LEFT"
____exports.HomeRoomSubType.DEATH_CERTIFICATE_ENTRANCE = 33
____exports.HomeRoomSubType[____exports.HomeRoomSubType.DEATH_CERTIFICATE_ENTRANCE] = "DEATH_CERTIFICATE_ENTRANCE"
____exports.HomeRoomSubType.DEATH_CERTIFICATE_ITEMS = 34
____exports.HomeRoomSubType[____exports.HomeRoomSubType.DEATH_CERTIFICATE_ITEMS] = "DEATH_CERTIFICATE_ITEMS"
--- For `StageID.BACKWARDS` (36), `RoomType.DEFAULT` (1).
-- 
-- This matches the sub-type in the "36.backwards.stb" file.
____exports.BackwardsRoomSubType = {}
____exports.BackwardsRoomSubType.EXIT = 0
____exports.BackwardsRoomSubType[____exports.BackwardsRoomSubType.EXIT] = "EXIT"
____exports.BackwardsRoomSubType.BASEMENT = 1
____exports.BackwardsRoomSubType[____exports.BackwardsRoomSubType.BASEMENT] = "BASEMENT"
____exports.BackwardsRoomSubType.CAVES = 4
____exports.BackwardsRoomSubType[____exports.BackwardsRoomSubType.CAVES] = "CAVES"
____exports.BackwardsRoomSubType.DEPTHS = 7
____exports.BackwardsRoomSubType[____exports.BackwardsRoomSubType.DEPTHS] = "DEPTHS"
____exports.BackwardsRoomSubType.DOWNPOUR = 27
____exports.BackwardsRoomSubType[____exports.BackwardsRoomSubType.DOWNPOUR] = "DOWNPOUR"
____exports.BackwardsRoomSubType.MINES = 29
____exports.BackwardsRoomSubType[____exports.BackwardsRoomSubType.MINES] = "MINES"
____exports.BackwardsRoomSubType.MAUSOLEUM = 31
____exports.BackwardsRoomSubType[____exports.BackwardsRoomSubType.MAUSOLEUM] = "MAUSOLEUM"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.collections.subTypes"] = function(...) 
local ____exports = {}
--- For `EntityType.PLAYER` (1), `PlayerVariant.PLAYER` (0).
-- 
-- This is the sub-type of a player.
-- 
-- Conventionally, variables that have this type are represented as "character" instead of
-- "playerType", since the former is more descriptive of what this value actually represents.
____exports.PlayerType = {}
____exports.PlayerType.POSSESSOR = -1
____exports.PlayerType[____exports.PlayerType.POSSESSOR] = "POSSESSOR"
____exports.PlayerType.ISAAC = 0
____exports.PlayerType[____exports.PlayerType.ISAAC] = "ISAAC"
____exports.PlayerType.MAGDALENE = 1
____exports.PlayerType[____exports.PlayerType.MAGDALENE] = "MAGDALENE"
____exports.PlayerType.CAIN = 2
____exports.PlayerType[____exports.PlayerType.CAIN] = "CAIN"
____exports.PlayerType.JUDAS = 3
____exports.PlayerType[____exports.PlayerType.JUDAS] = "JUDAS"
____exports.PlayerType.BLUE_BABY = 4
____exports.PlayerType[____exports.PlayerType.BLUE_BABY] = "BLUE_BABY"
____exports.PlayerType.EVE = 5
____exports.PlayerType[____exports.PlayerType.EVE] = "EVE"
____exports.PlayerType.SAMSON = 6
____exports.PlayerType[____exports.PlayerType.SAMSON] = "SAMSON"
____exports.PlayerType.AZAZEL = 7
____exports.PlayerType[____exports.PlayerType.AZAZEL] = "AZAZEL"
____exports.PlayerType.LAZARUS = 8
____exports.PlayerType[____exports.PlayerType.LAZARUS] = "LAZARUS"
____exports.PlayerType.EDEN = 9
____exports.PlayerType[____exports.PlayerType.EDEN] = "EDEN"
____exports.PlayerType.LOST = 10
____exports.PlayerType[____exports.PlayerType.LOST] = "LOST"
____exports.PlayerType.LAZARUS_2 = 11
____exports.PlayerType[____exports.PlayerType.LAZARUS_2] = "LAZARUS_2"
____exports.PlayerType.DARK_JUDAS = 12
____exports.PlayerType[____exports.PlayerType.DARK_JUDAS] = "DARK_JUDAS"
____exports.PlayerType.LILITH = 13
____exports.PlayerType[____exports.PlayerType.LILITH] = "LILITH"
____exports.PlayerType.KEEPER = 14
____exports.PlayerType[____exports.PlayerType.KEEPER] = "KEEPER"
____exports.PlayerType.APOLLYON = 15
____exports.PlayerType[____exports.PlayerType.APOLLYON] = "APOLLYON"
____exports.PlayerType.FORGOTTEN = 16
____exports.PlayerType[____exports.PlayerType.FORGOTTEN] = "FORGOTTEN"
____exports.PlayerType.SOUL = 17
____exports.PlayerType[____exports.PlayerType.SOUL] = "SOUL"
____exports.PlayerType.BETHANY = 18
____exports.PlayerType[____exports.PlayerType.BETHANY] = "BETHANY"
____exports.PlayerType.JACOB = 19
____exports.PlayerType[____exports.PlayerType.JACOB] = "JACOB"
____exports.PlayerType.ESAU = 20
____exports.PlayerType[____exports.PlayerType.ESAU] = "ESAU"
____exports.PlayerType.ISAAC_B = 21
____exports.PlayerType[____exports.PlayerType.ISAAC_B] = "ISAAC_B"
____exports.PlayerType.MAGDALENE_B = 22
____exports.PlayerType[____exports.PlayerType.MAGDALENE_B] = "MAGDALENE_B"
____exports.PlayerType.CAIN_B = 23
____exports.PlayerType[____exports.PlayerType.CAIN_B] = "CAIN_B"
____exports.PlayerType.JUDAS_B = 24
____exports.PlayerType[____exports.PlayerType.JUDAS_B] = "JUDAS_B"
____exports.PlayerType.BLUE_BABY_B = 25
____exports.PlayerType[____exports.PlayerType.BLUE_BABY_B] = "BLUE_BABY_B"
____exports.PlayerType.EVE_B = 26
____exports.PlayerType[____exports.PlayerType.EVE_B] = "EVE_B"
____exports.PlayerType.SAMSON_B = 27
____exports.PlayerType[____exports.PlayerType.SAMSON_B] = "SAMSON_B"
____exports.PlayerType.AZAZEL_B = 28
____exports.PlayerType[____exports.PlayerType.AZAZEL_B] = "AZAZEL_B"
____exports.PlayerType.LAZARUS_B = 29
____exports.PlayerType[____exports.PlayerType.LAZARUS_B] = "LAZARUS_B"
____exports.PlayerType.EDEN_B = 30
____exports.PlayerType[____exports.PlayerType.EDEN_B] = "EDEN_B"
____exports.PlayerType.LOST_B = 31
____exports.PlayerType[____exports.PlayerType.LOST_B] = "LOST_B"
____exports.PlayerType.LILITH_B = 32
____exports.PlayerType[____exports.PlayerType.LILITH_B] = "LILITH_B"
____exports.PlayerType.KEEPER_B = 33
____exports.PlayerType[____exports.PlayerType.KEEPER_B] = "KEEPER_B"
____exports.PlayerType.APOLLYON_B = 34
____exports.PlayerType[____exports.PlayerType.APOLLYON_B] = "APOLLYON_B"
____exports.PlayerType.FORGOTTEN_B = 35
____exports.PlayerType[____exports.PlayerType.FORGOTTEN_B] = "FORGOTTEN_B"
____exports.PlayerType.BETHANY_B = 36
____exports.PlayerType[____exports.PlayerType.BETHANY_B] = "BETHANY_B"
____exports.PlayerType.JACOB_B = 37
____exports.PlayerType[____exports.PlayerType.JACOB_B] = "JACOB_B"
____exports.PlayerType.LAZARUS_2_B = 38
____exports.PlayerType[____exports.PlayerType.LAZARUS_2_B] = "LAZARUS_2_B"
____exports.PlayerType.JACOB_2_B = 39
____exports.PlayerType[____exports.PlayerType.JACOB_2_B] = "JACOB_2_B"
____exports.PlayerType.SOUL_B = 40
____exports.PlayerType[____exports.PlayerType.SOUL_B] = "SOUL_B"
--- For `EntityType.PLAYER` (1), `PlayerVariant.COOP_BABY` (1).
____exports.BabySubType = {}
____exports.BabySubType.UNASSIGNED = -1
____exports.BabySubType[____exports.BabySubType.UNASSIGNED] = "UNASSIGNED"
____exports.BabySubType.SPIDER = 0
____exports.BabySubType[____exports.BabySubType.SPIDER] = "SPIDER"
____exports.BabySubType.LOVE = 1
____exports.BabySubType[____exports.BabySubType.LOVE] = "LOVE"
____exports.BabySubType.BLOAT = 2
____exports.BabySubType[____exports.BabySubType.BLOAT] = "BLOAT"
____exports.BabySubType.WATER = 3
____exports.BabySubType[____exports.BabySubType.WATER] = "WATER"
____exports.BabySubType.PSY = 4
____exports.BabySubType[____exports.BabySubType.PSY] = "PSY"
____exports.BabySubType.CURSED = 5
____exports.BabySubType[____exports.BabySubType.CURSED] = "CURSED"
____exports.BabySubType.TROLL = 6
____exports.BabySubType[____exports.BabySubType.TROLL] = "TROLL"
____exports.BabySubType.YBAB = 7
____exports.BabySubType[____exports.BabySubType.YBAB] = "YBAB"
____exports.BabySubType.COCKEYED = 8
____exports.BabySubType[____exports.BabySubType.COCKEYED] = "COCKEYED"
____exports.BabySubType.HOST = 9
____exports.BabySubType[____exports.BabySubType.HOST] = "HOST"
____exports.BabySubType.LOST = 10
____exports.BabySubType[____exports.BabySubType.LOST] = "LOST"
____exports.BabySubType.CUTE = 11
____exports.BabySubType[____exports.BabySubType.CUTE] = "CUTE"
____exports.BabySubType.CROW = 12
____exports.BabySubType[____exports.BabySubType.CROW] = "CROW"
____exports.BabySubType.SHADOW = 13
____exports.BabySubType[____exports.BabySubType.SHADOW] = "SHADOW"
____exports.BabySubType.GLASS = 14
____exports.BabySubType[____exports.BabySubType.GLASS] = "GLASS"
____exports.BabySubType.GOLD = 15
____exports.BabySubType[____exports.BabySubType.GOLD] = "GOLD"
____exports.BabySubType.CY = 16
____exports.BabySubType[____exports.BabySubType.CY] = "CY"
____exports.BabySubType.BEAN = 17
____exports.BabySubType[____exports.BabySubType.BEAN] = "BEAN"
____exports.BabySubType.MAG = 18
____exports.BabySubType[____exports.BabySubType.MAG] = "MAG"
____exports.BabySubType.WRATH = 19
____exports.BabySubType[____exports.BabySubType.WRATH] = "WRATH"
____exports.BabySubType.WRAPPED = 20
____exports.BabySubType[____exports.BabySubType.WRAPPED] = "WRAPPED"
____exports.BabySubType.BEGOTTEN = 21
____exports.BabySubType[____exports.BabySubType.BEGOTTEN] = "BEGOTTEN"
____exports.BabySubType.DEAD = 22
____exports.BabySubType[____exports.BabySubType.DEAD] = "DEAD"
____exports.BabySubType.FIGHTING = 23
____exports.BabySubType[____exports.BabySubType.FIGHTING] = "FIGHTING"
____exports.BabySubType.ZERO = 24
____exports.BabySubType[____exports.BabySubType.ZERO] = "ZERO"
____exports.BabySubType.GLITCH = 25
____exports.BabySubType[____exports.BabySubType.GLITCH] = "GLITCH"
____exports.BabySubType.MAGNET = 26
____exports.BabySubType[____exports.BabySubType.MAGNET] = "MAGNET"
____exports.BabySubType.BLACK = 27
____exports.BabySubType[____exports.BabySubType.BLACK] = "BLACK"
____exports.BabySubType.RED = 28
____exports.BabySubType[____exports.BabySubType.RED] = "RED"
____exports.BabySubType.WHITE = 29
____exports.BabySubType[____exports.BabySubType.WHITE] = "WHITE"
____exports.BabySubType.BLUE = 30
____exports.BabySubType[____exports.BabySubType.BLUE] = "BLUE"
____exports.BabySubType.RAGE = 31
____exports.BabySubType[____exports.BabySubType.RAGE] = "RAGE"
____exports.BabySubType.CRY = 32
____exports.BabySubType[____exports.BabySubType.CRY] = "CRY"
____exports.BabySubType.YELLOW = 33
____exports.BabySubType[____exports.BabySubType.YELLOW] = "YELLOW"
____exports.BabySubType.LONG = 34
____exports.BabySubType[____exports.BabySubType.LONG] = "LONG"
____exports.BabySubType.GREEN = 35
____exports.BabySubType[____exports.BabySubType.GREEN] = "GREEN"
____exports.BabySubType.LIL = 36
____exports.BabySubType[____exports.BabySubType.LIL] = "LIL"
____exports.BabySubType.BIG = 37
____exports.BabySubType[____exports.BabySubType.BIG] = "BIG"
____exports.BabySubType.BROWN = 38
____exports.BabySubType[____exports.BabySubType.BROWN] = "BROWN"
____exports.BabySubType.NOOSE = 39
____exports.BabySubType[____exports.BabySubType.NOOSE] = "NOOSE"
____exports.BabySubType.HIVE = 40
____exports.BabySubType[____exports.BabySubType.HIVE] = "HIVE"
____exports.BabySubType.BUDDY = 41
____exports.BabySubType[____exports.BabySubType.BUDDY] = "BUDDY"
____exports.BabySubType.COLORFUL = 42
____exports.BabySubType[____exports.BabySubType.COLORFUL] = "COLORFUL"
____exports.BabySubType.WHORE = 43
____exports.BabySubType[____exports.BabySubType.WHORE] = "WHORE"
____exports.BabySubType.CRACKED = 44
____exports.BabySubType[____exports.BabySubType.CRACKED] = "CRACKED"
____exports.BabySubType.DRIPPING = 45
____exports.BabySubType[____exports.BabySubType.DRIPPING] = "DRIPPING"
____exports.BabySubType.BLINDING = 46
____exports.BabySubType[____exports.BabySubType.BLINDING] = "BLINDING"
____exports.BabySubType.SUCKY = 47
____exports.BabySubType[____exports.BabySubType.SUCKY] = "SUCKY"
____exports.BabySubType.DARK = 48
____exports.BabySubType[____exports.BabySubType.DARK] = "DARK"
____exports.BabySubType.PICKY = 49
____exports.BabySubType[____exports.BabySubType.PICKY] = "PICKY"
____exports.BabySubType.REVENGE = 50
____exports.BabySubType[____exports.BabySubType.REVENGE] = "REVENGE"
____exports.BabySubType.BELIAL = 51
____exports.BabySubType[____exports.BabySubType.BELIAL] = "BELIAL"
____exports.BabySubType.SALE = 52
____exports.BabySubType[____exports.BabySubType.SALE] = "SALE"
____exports.BabySubType.GOAT = 53
____exports.BabySubType[____exports.BabySubType.GOAT] = "GOAT"
____exports.BabySubType.SUPER_GREED = 54
____exports.BabySubType[____exports.BabySubType.SUPER_GREED] = "SUPER_GREED"
____exports.BabySubType.MORT = 55
____exports.BabySubType[____exports.BabySubType.MORT] = "MORT"
____exports.BabySubType.APOLLYON = 56
____exports.BabySubType[____exports.BabySubType.APOLLYON] = "APOLLYON"
____exports.BabySubType.BONE = 57
____exports.BabySubType[____exports.BabySubType.BONE] = "BONE"
____exports.BabySubType.BOUND = 58
____exports.BabySubType[____exports.BabySubType.BOUND] = "BOUND"
____exports.BabySubType.FOUND_SOUL = 59
____exports.BabySubType[____exports.BabySubType.FOUND_SOUL] = "FOUND_SOUL"
____exports.BabySubType.LOST_WHITE = 60
____exports.BabySubType[____exports.BabySubType.LOST_WHITE] = "LOST_WHITE"
____exports.BabySubType.LOST_BLACK = 61
____exports.BabySubType[____exports.BabySubType.LOST_BLACK] = "LOST_BLACK"
____exports.BabySubType.LOST_BLUE = 62
____exports.BabySubType[____exports.BabySubType.LOST_BLUE] = "LOST_BLUE"
____exports.BabySubType.LOST_GREY = 63
____exports.BabySubType[____exports.BabySubType.LOST_GREY] = "LOST_GREY"
____exports.BabySubType.WISP = 64
____exports.BabySubType[____exports.BabySubType.WISP] = "WISP"
____exports.BabySubType.DOUBLE = 65
____exports.BabySubType[____exports.BabySubType.DOUBLE] = "DOUBLE"
____exports.BabySubType.GLOWING = 66
____exports.BabySubType[____exports.BabySubType.GLOWING] = "GLOWING"
____exports.BabySubType.ILLUSION = 67
____exports.BabySubType[____exports.BabySubType.ILLUSION] = "ILLUSION"
____exports.BabySubType.HOPE = 68
____exports.BabySubType[____exports.BabySubType.HOPE] = "HOPE"
____exports.BabySubType.SOLOMON_A = 69
____exports.BabySubType[____exports.BabySubType.SOLOMON_A] = "SOLOMON_A"
____exports.BabySubType.SOLOMON_B = 70
____exports.BabySubType[____exports.BabySubType.SOLOMON_B] = "SOLOMON_B"
____exports.BabySubType.BASIC = 71
____exports.BabySubType[____exports.BabySubType.BASIC] = "BASIC"
--- For `EntityType.FAMILIAR` (3), `FamiliarVariant.BLUE_FLY` (43).
____exports.BlueFlySubType = {}
____exports.BlueFlySubType.BLUE_FLY = 0
____exports.BlueFlySubType[____exports.BlueFlySubType.BLUE_FLY] = "BLUE_FLY"
____exports.BlueFlySubType.WRATH = 1
____exports.BlueFlySubType[____exports.BlueFlySubType.WRATH] = "WRATH"
____exports.BlueFlySubType.PESTILENCE = 2
____exports.BlueFlySubType[____exports.BlueFlySubType.PESTILENCE] = "PESTILENCE"
____exports.BlueFlySubType.FAMINE = 3
____exports.BlueFlySubType[____exports.BlueFlySubType.FAMINE] = "FAMINE"
____exports.BlueFlySubType.DEATH = 4
____exports.BlueFlySubType[____exports.BlueFlySubType.DEATH] = "DEATH"
____exports.BlueFlySubType.CONQUEST = 5
____exports.BlueFlySubType[____exports.BlueFlySubType.CONQUEST] = "CONQUEST"
--- For `EntityType.FAMILIAR` (3), `FamiliarVariant.DIP` (201).
____exports.DipFamiliarSubType = {}
____exports.DipFamiliarSubType.NORMAL = 0
____exports.DipFamiliarSubType[____exports.DipFamiliarSubType.NORMAL] = "NORMAL"
____exports.DipFamiliarSubType.RED = 1
____exports.DipFamiliarSubType[____exports.DipFamiliarSubType.RED] = "RED"
____exports.DipFamiliarSubType.CORNY = 2
____exports.DipFamiliarSubType[____exports.DipFamiliarSubType.CORNY] = "CORNY"
____exports.DipFamiliarSubType.GOLD = 3
____exports.DipFamiliarSubType[____exports.DipFamiliarSubType.GOLD] = "GOLD"
____exports.DipFamiliarSubType.RAINBOW = 4
____exports.DipFamiliarSubType[____exports.DipFamiliarSubType.RAINBOW] = "RAINBOW"
____exports.DipFamiliarSubType.BLACK = 5
____exports.DipFamiliarSubType[____exports.DipFamiliarSubType.BLACK] = "BLACK"
____exports.DipFamiliarSubType.WHITE = 6
____exports.DipFamiliarSubType[____exports.DipFamiliarSubType.WHITE] = "WHITE"
____exports.DipFamiliarSubType.STONE = 12
____exports.DipFamiliarSubType[____exports.DipFamiliarSubType.STONE] = "STONE"
____exports.DipFamiliarSubType.FLAMING = 13
____exports.DipFamiliarSubType[____exports.DipFamiliarSubType.FLAMING] = "FLAMING"
____exports.DipFamiliarSubType.STINKY = 14
____exports.DipFamiliarSubType[____exports.DipFamiliarSubType.STINKY] = "STINKY"
____exports.DipFamiliarSubType.BROWNIE = 20
____exports.DipFamiliarSubType[____exports.DipFamiliarSubType.BROWNIE] = "BROWNIE"
--- For `EntityType.FAMILIAR` (3), `FamiliarVariant.BLOOD_BABY` (238).
____exports.BloodClotSubType = {}
____exports.BloodClotSubType.RED = 0
____exports.BloodClotSubType[____exports.BloodClotSubType.RED] = "RED"
____exports.BloodClotSubType.SOUL = 1
____exports.BloodClotSubType[____exports.BloodClotSubType.SOUL] = "SOUL"
____exports.BloodClotSubType.BLACK = 2
____exports.BloodClotSubType[____exports.BloodClotSubType.BLACK] = "BLACK"
____exports.BloodClotSubType.ETERNAL = 3
____exports.BloodClotSubType[____exports.BloodClotSubType.ETERNAL] = "ETERNAL"
____exports.BloodClotSubType.GOLD = 4
____exports.BloodClotSubType[____exports.BloodClotSubType.GOLD] = "GOLD"
____exports.BloodClotSubType.BONE = 5
____exports.BloodClotSubType[____exports.BloodClotSubType.BONE] = "BONE"
____exports.BloodClotSubType.ROTTEN = 6
____exports.BloodClotSubType[____exports.BloodClotSubType.ROTTEN] = "ROTTEN"
____exports.BloodClotSubType.RED_NO_SUMPTORIUM = 7
____exports.BloodClotSubType[____exports.BloodClotSubType.RED_NO_SUMPTORIUM] = "RED_NO_SUMPTORIUM"
--- For `EntityType.PICKUP` (5), `PickupVariant.NULL` (0).
____exports.PickupNullSubType = {}
____exports.PickupNullSubType.ALL = 0
____exports.PickupNullSubType[____exports.PickupNullSubType.ALL] = "ALL"
____exports.PickupNullSubType.EXCLUDE_COLLECTIBLES_CHESTS = 1
____exports.PickupNullSubType[____exports.PickupNullSubType.EXCLUDE_COLLECTIBLES_CHESTS] = "EXCLUDE_COLLECTIBLES_CHESTS"
____exports.PickupNullSubType.EXCLUDE_COLLECTIBLES = 2
____exports.PickupNullSubType[____exports.PickupNullSubType.EXCLUDE_COLLECTIBLES] = "EXCLUDE_COLLECTIBLES"
____exports.PickupNullSubType.EXCLUDE_COLLECTIBLES_CHESTS_COINS = 3
____exports.PickupNullSubType[____exports.PickupNullSubType.EXCLUDE_COLLECTIBLES_CHESTS_COINS] = "EXCLUDE_COLLECTIBLES_CHESTS_COINS"
____exports.PickupNullSubType.EXCLUDE_COLLECTIBLES_TRINKETS_CHESTS = 4
____exports.PickupNullSubType[____exports.PickupNullSubType.EXCLUDE_COLLECTIBLES_TRINKETS_CHESTS] = "EXCLUDE_COLLECTIBLES_TRINKETS_CHESTS"
--- For `EntityType.PICKUP` (5), `PickupVariant.HEART` (10).
____exports.HeartSubType = {}
____exports.HeartSubType.NULL = 0
____exports.HeartSubType[____exports.HeartSubType.NULL] = "NULL"
____exports.HeartSubType.FULL = 1
____exports.HeartSubType[____exports.HeartSubType.FULL] = "FULL"
____exports.HeartSubType.HALF = 2
____exports.HeartSubType[____exports.HeartSubType.HALF] = "HALF"
____exports.HeartSubType.SOUL = 3
____exports.HeartSubType[____exports.HeartSubType.SOUL] = "SOUL"
____exports.HeartSubType.ETERNAL = 4
____exports.HeartSubType[____exports.HeartSubType.ETERNAL] = "ETERNAL"
____exports.HeartSubType.DOUBLE_PACK = 5
____exports.HeartSubType[____exports.HeartSubType.DOUBLE_PACK] = "DOUBLE_PACK"
____exports.HeartSubType.BLACK = 6
____exports.HeartSubType[____exports.HeartSubType.BLACK] = "BLACK"
____exports.HeartSubType.GOLDEN = 7
____exports.HeartSubType[____exports.HeartSubType.GOLDEN] = "GOLDEN"
____exports.HeartSubType.HALF_SOUL = 8
____exports.HeartSubType[____exports.HeartSubType.HALF_SOUL] = "HALF_SOUL"
____exports.HeartSubType.SCARED = 9
____exports.HeartSubType[____exports.HeartSubType.SCARED] = "SCARED"
____exports.HeartSubType.BLENDED = 10
____exports.HeartSubType[____exports.HeartSubType.BLENDED] = "BLENDED"
____exports.HeartSubType.BONE = 11
____exports.HeartSubType[____exports.HeartSubType.BONE] = "BONE"
____exports.HeartSubType.ROTTEN = 12
____exports.HeartSubType[____exports.HeartSubType.ROTTEN] = "ROTTEN"
--- For `EntityType.PICKUP` (5), `PickupVariant.COIN` (20).
____exports.CoinSubType = {}
____exports.CoinSubType.NULL = 0
____exports.CoinSubType[____exports.CoinSubType.NULL] = "NULL"
____exports.CoinSubType.PENNY = 1
____exports.CoinSubType[____exports.CoinSubType.PENNY] = "PENNY"
____exports.CoinSubType.NICKEL = 2
____exports.CoinSubType[____exports.CoinSubType.NICKEL] = "NICKEL"
____exports.CoinSubType.DIME = 3
____exports.CoinSubType[____exports.CoinSubType.DIME] = "DIME"
____exports.CoinSubType.DOUBLE_PACK = 4
____exports.CoinSubType[____exports.CoinSubType.DOUBLE_PACK] = "DOUBLE_PACK"
____exports.CoinSubType.LUCKY_PENNY = 5
____exports.CoinSubType[____exports.CoinSubType.LUCKY_PENNY] = "LUCKY_PENNY"
____exports.CoinSubType.STICKY_NICKEL = 6
____exports.CoinSubType[____exports.CoinSubType.STICKY_NICKEL] = "STICKY_NICKEL"
____exports.CoinSubType.GOLDEN = 7
____exports.CoinSubType[____exports.CoinSubType.GOLDEN] = "GOLDEN"
--- For `EntityType.PICKUP` (5), `PickupVariant.KEY` (30).
____exports.KeySubType = {}
____exports.KeySubType.NULL = 0
____exports.KeySubType[____exports.KeySubType.NULL] = "NULL"
____exports.KeySubType.NORMAL = 1
____exports.KeySubType[____exports.KeySubType.NORMAL] = "NORMAL"
____exports.KeySubType.GOLDEN = 2
____exports.KeySubType[____exports.KeySubType.GOLDEN] = "GOLDEN"
____exports.KeySubType.DOUBLE_PACK = 3
____exports.KeySubType[____exports.KeySubType.DOUBLE_PACK] = "DOUBLE_PACK"
____exports.KeySubType.CHARGED = 4
____exports.KeySubType[____exports.KeySubType.CHARGED] = "CHARGED"
--- For `EntityType.PICKUP` (5), `PickupVariant.BOMB` (40).
____exports.BombSubType = {}
____exports.BombSubType.NULL = 0
____exports.BombSubType[____exports.BombSubType.NULL] = "NULL"
____exports.BombSubType.NORMAL = 1
____exports.BombSubType[____exports.BombSubType.NORMAL] = "NORMAL"
____exports.BombSubType.DOUBLE_PACK = 2
____exports.BombSubType[____exports.BombSubType.DOUBLE_PACK] = "DOUBLE_PACK"
____exports.BombSubType.TROLL = 3
____exports.BombSubType[____exports.BombSubType.TROLL] = "TROLL"
____exports.BombSubType.GOLDEN = 4
____exports.BombSubType[____exports.BombSubType.GOLDEN] = "GOLDEN"
____exports.BombSubType.MEGA_TROLL = 5
____exports.BombSubType[____exports.BombSubType.MEGA_TROLL] = "MEGA_TROLL"
____exports.BombSubType.GOLDEN_TROLL = 6
____exports.BombSubType[____exports.BombSubType.GOLDEN_TROLL] = "GOLDEN_TROLL"
____exports.BombSubType.GIGA = 7
____exports.BombSubType[____exports.BombSubType.GIGA] = "GIGA"
--- For `EntityType.PICKUP` (5), `PickupVariant.POOP` (42).
____exports.PoopPickupSubType = {}
____exports.PoopPickupSubType.SMALL = 0
____exports.PoopPickupSubType[____exports.PoopPickupSubType.SMALL] = "SMALL"
____exports.PoopPickupSubType.BIG = 1
____exports.PoopPickupSubType[____exports.PoopPickupSubType.BIG] = "BIG"
--- For `EntityType.PICKUP` (5), `PickupVariant.CHEST` (50).
____exports.ChestSubType = {}
____exports.ChestSubType.OPENED = 0
____exports.ChestSubType[____exports.ChestSubType.OPENED] = "OPENED"
____exports.ChestSubType.CLOSED = 1
____exports.ChestSubType[____exports.ChestSubType.CLOSED] = "CLOSED"
--- For `EntityType.PICKUP` (5), `PickupVariant.SACK` (69).
____exports.SackSubType = {}
____exports.SackSubType.NULL = 0
____exports.SackSubType[____exports.SackSubType.NULL] = "NULL"
____exports.SackSubType.NORMAL = 1
____exports.SackSubType[____exports.SackSubType.NORMAL] = "NORMAL"
____exports.SackSubType.BLACK = 2
____exports.SackSubType[____exports.SackSubType.BLACK] = "BLACK"
--- For `EntityType.PICKUP` (5), `PickupVariant.PILL` (70).
-- 
-- This is the sub-type of a pill.
____exports.PillColor = {}
____exports.PillColor.NULL = 0
____exports.PillColor[____exports.PillColor.NULL] = "NULL"
____exports.PillColor.BLUE_BLUE = 1
____exports.PillColor[____exports.PillColor.BLUE_BLUE] = "BLUE_BLUE"
____exports.PillColor.WHITE_BLUE = 2
____exports.PillColor[____exports.PillColor.WHITE_BLUE] = "WHITE_BLUE"
____exports.PillColor.ORANGE_ORANGE = 3
____exports.PillColor[____exports.PillColor.ORANGE_ORANGE] = "ORANGE_ORANGE"
____exports.PillColor.WHITE_WHITE = 4
____exports.PillColor[____exports.PillColor.WHITE_WHITE] = "WHITE_WHITE"
____exports.PillColor.RED_DOTS_RED = 5
____exports.PillColor[____exports.PillColor.RED_DOTS_RED] = "RED_DOTS_RED"
____exports.PillColor.PINK_RED = 6
____exports.PillColor[____exports.PillColor.PINK_RED] = "PINK_RED"
____exports.PillColor.BLUE_CADET_BLUE = 7
____exports.PillColor[____exports.PillColor.BLUE_CADET_BLUE] = "BLUE_CADET_BLUE"
____exports.PillColor.YELLOW_ORANGE = 8
____exports.PillColor[____exports.PillColor.YELLOW_ORANGE] = "YELLOW_ORANGE"
____exports.PillColor.ORANGE_DOTS_WHITE = 9
____exports.PillColor[____exports.PillColor.ORANGE_DOTS_WHITE] = "ORANGE_DOTS_WHITE"
____exports.PillColor.WHITE_AZURE = 10
____exports.PillColor[____exports.PillColor.WHITE_AZURE] = "WHITE_AZURE"
____exports.PillColor.BLACK_YELLOW = 11
____exports.PillColor[____exports.PillColor.BLACK_YELLOW] = "BLACK_YELLOW"
____exports.PillColor.WHITE_BLACK = 12
____exports.PillColor[____exports.PillColor.WHITE_BLACK] = "WHITE_BLACK"
____exports.PillColor.WHITE_YELLOW = 13
____exports.PillColor[____exports.PillColor.WHITE_YELLOW] = "WHITE_YELLOW"
____exports.PillColor.GOLD = 14
____exports.PillColor[____exports.PillColor.GOLD] = "GOLD"
____exports.PillColor.HORSE_BLUE_BLUE = 2049
____exports.PillColor[____exports.PillColor.HORSE_BLUE_BLUE] = "HORSE_BLUE_BLUE"
____exports.PillColor.HORSE_WHITE_BLUE = 2050
____exports.PillColor[____exports.PillColor.HORSE_WHITE_BLUE] = "HORSE_WHITE_BLUE"
____exports.PillColor.HORSE_ORANGE_ORANGE = 2051
____exports.PillColor[____exports.PillColor.HORSE_ORANGE_ORANGE] = "HORSE_ORANGE_ORANGE"
____exports.PillColor.HORSE_WHITE_WHITE = 2052
____exports.PillColor[____exports.PillColor.HORSE_WHITE_WHITE] = "HORSE_WHITE_WHITE"
____exports.PillColor.HORSE_RED_DOTS_RED = 2053
____exports.PillColor[____exports.PillColor.HORSE_RED_DOTS_RED] = "HORSE_RED_DOTS_RED"
____exports.PillColor.HORSE_PINK_RED = 2054
____exports.PillColor[____exports.PillColor.HORSE_PINK_RED] = "HORSE_PINK_RED"
____exports.PillColor.HORSE_BLUE_CADET_BLUE = 2055
____exports.PillColor[____exports.PillColor.HORSE_BLUE_CADET_BLUE] = "HORSE_BLUE_CADET_BLUE"
____exports.PillColor.HORSE_YELLOW_ORANGE = 2056
____exports.PillColor[____exports.PillColor.HORSE_YELLOW_ORANGE] = "HORSE_YELLOW_ORANGE"
____exports.PillColor.HORSE_ORANGE_DOTS_WHITE = 2057
____exports.PillColor[____exports.PillColor.HORSE_ORANGE_DOTS_WHITE] = "HORSE_ORANGE_DOTS_WHITE"
____exports.PillColor.HORSE_WHITE_AZURE = 2058
____exports.PillColor[____exports.PillColor.HORSE_WHITE_AZURE] = "HORSE_WHITE_AZURE"
____exports.PillColor.HORSE_BLACK_YELLOW = 2059
____exports.PillColor[____exports.PillColor.HORSE_BLACK_YELLOW] = "HORSE_BLACK_YELLOW"
____exports.PillColor.HORSE_WHITE_BLACK = 2060
____exports.PillColor[____exports.PillColor.HORSE_WHITE_BLACK] = "HORSE_WHITE_BLACK"
____exports.PillColor.HORSE_WHITE_YELLOW = 2061
____exports.PillColor[____exports.PillColor.HORSE_WHITE_YELLOW] = "HORSE_WHITE_YELLOW"
____exports.PillColor.HORSE_GOLD = 2062
____exports.PillColor[____exports.PillColor.HORSE_GOLD] = "HORSE_GOLD"
--- For `EntityType.PICKUP` (5), `PickupVariant.LIL_BATTERY` (90).
____exports.BatterySubType = {}
____exports.BatterySubType.NULL = 0
____exports.BatterySubType[____exports.BatterySubType.NULL] = "NULL"
____exports.BatterySubType.NORMAL = 1
____exports.BatterySubType[____exports.BatterySubType.NORMAL] = "NORMAL"
____exports.BatterySubType.MICRO = 2
____exports.BatterySubType[____exports.BatterySubType.MICRO] = "MICRO"
____exports.BatterySubType.MEGA = 3
____exports.BatterySubType[____exports.BatterySubType.MEGA] = "MEGA"
____exports.BatterySubType.GOLDEN = 4
____exports.BatterySubType[____exports.BatterySubType.GOLDEN] = "GOLDEN"
--- For `EntityType.PICKUP` (5), `PickupVariant.COLLECTIBLE` (100).
-- 
-- This is the sub-type of a collectible.
____exports.CollectibleType = {}
____exports.CollectibleType.NULL = 0
____exports.CollectibleType[____exports.CollectibleType.NULL] = "NULL"
____exports.CollectibleType.SAD_ONION = 1
____exports.CollectibleType[____exports.CollectibleType.SAD_ONION] = "SAD_ONION"
____exports.CollectibleType.INNER_EYE = 2
____exports.CollectibleType[____exports.CollectibleType.INNER_EYE] = "INNER_EYE"
____exports.CollectibleType.SPOON_BENDER = 3
____exports.CollectibleType[____exports.CollectibleType.SPOON_BENDER] = "SPOON_BENDER"
____exports.CollectibleType.CRICKETS_HEAD = 4
____exports.CollectibleType[____exports.CollectibleType.CRICKETS_HEAD] = "CRICKETS_HEAD"
____exports.CollectibleType.MY_REFLECTION = 5
____exports.CollectibleType[____exports.CollectibleType.MY_REFLECTION] = "MY_REFLECTION"
____exports.CollectibleType.NUMBER_ONE = 6
____exports.CollectibleType[____exports.CollectibleType.NUMBER_ONE] = "NUMBER_ONE"
____exports.CollectibleType.BLOOD_OF_THE_MARTYR = 7
____exports.CollectibleType[____exports.CollectibleType.BLOOD_OF_THE_MARTYR] = "BLOOD_OF_THE_MARTYR"
____exports.CollectibleType.BROTHER_BOBBY = 8
____exports.CollectibleType[____exports.CollectibleType.BROTHER_BOBBY] = "BROTHER_BOBBY"
____exports.CollectibleType.SKATOLE = 9
____exports.CollectibleType[____exports.CollectibleType.SKATOLE] = "SKATOLE"
____exports.CollectibleType.HALO_OF_FLIES = 10
____exports.CollectibleType[____exports.CollectibleType.HALO_OF_FLIES] = "HALO_OF_FLIES"
____exports.CollectibleType.ONE_UP = 11
____exports.CollectibleType[____exports.CollectibleType.ONE_UP] = "ONE_UP"
____exports.CollectibleType.MAGIC_MUSHROOM = 12
____exports.CollectibleType[____exports.CollectibleType.MAGIC_MUSHROOM] = "MAGIC_MUSHROOM"
____exports.CollectibleType.VIRUS = 13
____exports.CollectibleType[____exports.CollectibleType.VIRUS] = "VIRUS"
____exports.CollectibleType.ROID_RAGE = 14
____exports.CollectibleType[____exports.CollectibleType.ROID_RAGE] = "ROID_RAGE"
____exports.CollectibleType.HEART = 15
____exports.CollectibleType[____exports.CollectibleType.HEART] = "HEART"
____exports.CollectibleType.RAW_LIVER = 16
____exports.CollectibleType[____exports.CollectibleType.RAW_LIVER] = "RAW_LIVER"
____exports.CollectibleType.SKELETON_KEY = 17
____exports.CollectibleType[____exports.CollectibleType.SKELETON_KEY] = "SKELETON_KEY"
____exports.CollectibleType.DOLLAR = 18
____exports.CollectibleType[____exports.CollectibleType.DOLLAR] = "DOLLAR"
____exports.CollectibleType.BOOM = 19
____exports.CollectibleType[____exports.CollectibleType.BOOM] = "BOOM"
____exports.CollectibleType.TRANSCENDENCE = 20
____exports.CollectibleType[____exports.CollectibleType.TRANSCENDENCE] = "TRANSCENDENCE"
____exports.CollectibleType.COMPASS = 21
____exports.CollectibleType[____exports.CollectibleType.COMPASS] = "COMPASS"
____exports.CollectibleType.LUNCH = 22
____exports.CollectibleType[____exports.CollectibleType.LUNCH] = "LUNCH"
____exports.CollectibleType.DINNER = 23
____exports.CollectibleType[____exports.CollectibleType.DINNER] = "DINNER"
____exports.CollectibleType.DESSERT = 24
____exports.CollectibleType[____exports.CollectibleType.DESSERT] = "DESSERT"
____exports.CollectibleType.BREAKFAST = 25
____exports.CollectibleType[____exports.CollectibleType.BREAKFAST] = "BREAKFAST"
____exports.CollectibleType.ROTTEN_MEAT = 26
____exports.CollectibleType[____exports.CollectibleType.ROTTEN_MEAT] = "ROTTEN_MEAT"
____exports.CollectibleType.WOODEN_SPOON = 27
____exports.CollectibleType[____exports.CollectibleType.WOODEN_SPOON] = "WOODEN_SPOON"
____exports.CollectibleType.BELT = 28
____exports.CollectibleType[____exports.CollectibleType.BELT] = "BELT"
____exports.CollectibleType.MOMS_UNDERWEAR = 29
____exports.CollectibleType[____exports.CollectibleType.MOMS_UNDERWEAR] = "MOMS_UNDERWEAR"
____exports.CollectibleType.MOMS_HEELS = 30
____exports.CollectibleType[____exports.CollectibleType.MOMS_HEELS] = "MOMS_HEELS"
____exports.CollectibleType.MOMS_LIPSTICK = 31
____exports.CollectibleType[____exports.CollectibleType.MOMS_LIPSTICK] = "MOMS_LIPSTICK"
____exports.CollectibleType.WIRE_COAT_HANGER = 32
____exports.CollectibleType[____exports.CollectibleType.WIRE_COAT_HANGER] = "WIRE_COAT_HANGER"
____exports.CollectibleType.BIBLE = 33
____exports.CollectibleType[____exports.CollectibleType.BIBLE] = "BIBLE"
____exports.CollectibleType.BOOK_OF_BELIAL = 34
____exports.CollectibleType[____exports.CollectibleType.BOOK_OF_BELIAL] = "BOOK_OF_BELIAL"
____exports.CollectibleType.NECRONOMICON = 35
____exports.CollectibleType[____exports.CollectibleType.NECRONOMICON] = "NECRONOMICON"
____exports.CollectibleType.POOP = 36
____exports.CollectibleType[____exports.CollectibleType.POOP] = "POOP"
____exports.CollectibleType.MR_BOOM = 37
____exports.CollectibleType[____exports.CollectibleType.MR_BOOM] = "MR_BOOM"
____exports.CollectibleType.TAMMYS_HEAD = 38
____exports.CollectibleType[____exports.CollectibleType.TAMMYS_HEAD] = "TAMMYS_HEAD"
____exports.CollectibleType.MOMS_BRA = 39
____exports.CollectibleType[____exports.CollectibleType.MOMS_BRA] = "MOMS_BRA"
____exports.CollectibleType.KAMIKAZE = 40
____exports.CollectibleType[____exports.CollectibleType.KAMIKAZE] = "KAMIKAZE"
____exports.CollectibleType.MOMS_PAD = 41
____exports.CollectibleType[____exports.CollectibleType.MOMS_PAD] = "MOMS_PAD"
____exports.CollectibleType.BOBS_ROTTEN_HEAD = 42
____exports.CollectibleType[____exports.CollectibleType.BOBS_ROTTEN_HEAD] = "BOBS_ROTTEN_HEAD"
____exports.CollectibleType.TELEPORT = 44
____exports.CollectibleType[____exports.CollectibleType.TELEPORT] = "TELEPORT"
____exports.CollectibleType.YUM_HEART = 45
____exports.CollectibleType[____exports.CollectibleType.YUM_HEART] = "YUM_HEART"
____exports.CollectibleType.LUCKY_FOOT = 46
____exports.CollectibleType[____exports.CollectibleType.LUCKY_FOOT] = "LUCKY_FOOT"
____exports.CollectibleType.DOCTORS_REMOTE = 47
____exports.CollectibleType[____exports.CollectibleType.DOCTORS_REMOTE] = "DOCTORS_REMOTE"
____exports.CollectibleType.CUPIDS_ARROW = 48
____exports.CollectibleType[____exports.CollectibleType.CUPIDS_ARROW] = "CUPIDS_ARROW"
____exports.CollectibleType.SHOOP_DA_WHOOP = 49
____exports.CollectibleType[____exports.CollectibleType.SHOOP_DA_WHOOP] = "SHOOP_DA_WHOOP"
____exports.CollectibleType.STEVEN = 50
____exports.CollectibleType[____exports.CollectibleType.STEVEN] = "STEVEN"
____exports.CollectibleType.PENTAGRAM = 51
____exports.CollectibleType[____exports.CollectibleType.PENTAGRAM] = "PENTAGRAM"
____exports.CollectibleType.DR_FETUS = 52
____exports.CollectibleType[____exports.CollectibleType.DR_FETUS] = "DR_FETUS"
____exports.CollectibleType.MAGNETO = 53
____exports.CollectibleType[____exports.CollectibleType.MAGNETO] = "MAGNETO"
____exports.CollectibleType.TREASURE_MAP = 54
____exports.CollectibleType[____exports.CollectibleType.TREASURE_MAP] = "TREASURE_MAP"
____exports.CollectibleType.MOMS_EYE = 55
____exports.CollectibleType[____exports.CollectibleType.MOMS_EYE] = "MOMS_EYE"
____exports.CollectibleType.LEMON_MISHAP = 56
____exports.CollectibleType[____exports.CollectibleType.LEMON_MISHAP] = "LEMON_MISHAP"
____exports.CollectibleType.DISTANT_ADMIRATION = 57
____exports.CollectibleType[____exports.CollectibleType.DISTANT_ADMIRATION] = "DISTANT_ADMIRATION"
____exports.CollectibleType.BOOK_OF_SHADOWS = 58
____exports.CollectibleType[____exports.CollectibleType.BOOK_OF_SHADOWS] = "BOOK_OF_SHADOWS"
____exports.CollectibleType.BOOK_OF_BELIAL_BIRTHRIGHT = 59
____exports.CollectibleType[____exports.CollectibleType.BOOK_OF_BELIAL_BIRTHRIGHT] = "BOOK_OF_BELIAL_BIRTHRIGHT"
____exports.CollectibleType.LADDER = 60
____exports.CollectibleType[____exports.CollectibleType.LADDER] = "LADDER"
____exports.CollectibleType.CHARM_VAMPIRE = 62
____exports.CollectibleType[____exports.CollectibleType.CHARM_VAMPIRE] = "CHARM_VAMPIRE"
____exports.CollectibleType.BATTERY = 63
____exports.CollectibleType[____exports.CollectibleType.BATTERY] = "BATTERY"
____exports.CollectibleType.STEAM_SALE = 64
____exports.CollectibleType[____exports.CollectibleType.STEAM_SALE] = "STEAM_SALE"
____exports.CollectibleType.ANARCHIST_COOKBOOK = 65
____exports.CollectibleType[____exports.CollectibleType.ANARCHIST_COOKBOOK] = "ANARCHIST_COOKBOOK"
____exports.CollectibleType.HOURGLASS = 66
____exports.CollectibleType[____exports.CollectibleType.HOURGLASS] = "HOURGLASS"
____exports.CollectibleType.SISTER_MAGGY = 67
____exports.CollectibleType[____exports.CollectibleType.SISTER_MAGGY] = "SISTER_MAGGY"
____exports.CollectibleType.TECHNOLOGY = 68
____exports.CollectibleType[____exports.CollectibleType.TECHNOLOGY] = "TECHNOLOGY"
____exports.CollectibleType.CHOCOLATE_MILK = 69
____exports.CollectibleType[____exports.CollectibleType.CHOCOLATE_MILK] = "CHOCOLATE_MILK"
____exports.CollectibleType.GROWTH_HORMONES = 70
____exports.CollectibleType[____exports.CollectibleType.GROWTH_HORMONES] = "GROWTH_HORMONES"
____exports.CollectibleType.MINI_MUSH = 71
____exports.CollectibleType[____exports.CollectibleType.MINI_MUSH] = "MINI_MUSH"
____exports.CollectibleType.ROSARY = 72
____exports.CollectibleType[____exports.CollectibleType.ROSARY] = "ROSARY"
____exports.CollectibleType.CUBE_OF_MEAT = 73
____exports.CollectibleType[____exports.CollectibleType.CUBE_OF_MEAT] = "CUBE_OF_MEAT"
____exports.CollectibleType.QUARTER = 74
____exports.CollectibleType[____exports.CollectibleType.QUARTER] = "QUARTER"
____exports.CollectibleType.PHD = 75
____exports.CollectibleType[____exports.CollectibleType.PHD] = "PHD"
____exports.CollectibleType.XRAY_VISION = 76
____exports.CollectibleType[____exports.CollectibleType.XRAY_VISION] = "XRAY_VISION"
____exports.CollectibleType.MY_LITTLE_UNICORN = 77
____exports.CollectibleType[____exports.CollectibleType.MY_LITTLE_UNICORN] = "MY_LITTLE_UNICORN"
____exports.CollectibleType.BOOK_OF_REVELATIONS = 78
____exports.CollectibleType[____exports.CollectibleType.BOOK_OF_REVELATIONS] = "BOOK_OF_REVELATIONS"
____exports.CollectibleType.MARK = 79
____exports.CollectibleType[____exports.CollectibleType.MARK] = "MARK"
____exports.CollectibleType.PACT = 80
____exports.CollectibleType[____exports.CollectibleType.PACT] = "PACT"
____exports.CollectibleType.DEAD_CAT = 81
____exports.CollectibleType[____exports.CollectibleType.DEAD_CAT] = "DEAD_CAT"
____exports.CollectibleType.LORD_OF_THE_PIT = 82
____exports.CollectibleType[____exports.CollectibleType.LORD_OF_THE_PIT] = "LORD_OF_THE_PIT"
____exports.CollectibleType.NAIL = 83
____exports.CollectibleType[____exports.CollectibleType.NAIL] = "NAIL"
____exports.CollectibleType.WE_NEED_TO_GO_DEEPER = 84
____exports.CollectibleType[____exports.CollectibleType.WE_NEED_TO_GO_DEEPER] = "WE_NEED_TO_GO_DEEPER"
____exports.CollectibleType.DECK_OF_CARDS = 85
____exports.CollectibleType[____exports.CollectibleType.DECK_OF_CARDS] = "DECK_OF_CARDS"
____exports.CollectibleType.MONSTROS_TOOTH = 86
____exports.CollectibleType[____exports.CollectibleType.MONSTROS_TOOTH] = "MONSTROS_TOOTH"
____exports.CollectibleType.LOKIS_HORNS = 87
____exports.CollectibleType[____exports.CollectibleType.LOKIS_HORNS] = "LOKIS_HORNS"
____exports.CollectibleType.LITTLE_CHUBBY = 88
____exports.CollectibleType[____exports.CollectibleType.LITTLE_CHUBBY] = "LITTLE_CHUBBY"
____exports.CollectibleType.SPIDER_BITE = 89
____exports.CollectibleType[____exports.CollectibleType.SPIDER_BITE] = "SPIDER_BITE"
____exports.CollectibleType.SMALL_ROCK = 90
____exports.CollectibleType[____exports.CollectibleType.SMALL_ROCK] = "SMALL_ROCK"
____exports.CollectibleType.SPELUNKER_HAT = 91
____exports.CollectibleType[____exports.CollectibleType.SPELUNKER_HAT] = "SPELUNKER_HAT"
____exports.CollectibleType.SUPER_BANDAGE = 92
____exports.CollectibleType[____exports.CollectibleType.SUPER_BANDAGE] = "SUPER_BANDAGE"
____exports.CollectibleType.GAMEKID = 93
____exports.CollectibleType[____exports.CollectibleType.GAMEKID] = "GAMEKID"
____exports.CollectibleType.SACK_OF_PENNIES = 94
____exports.CollectibleType[____exports.CollectibleType.SACK_OF_PENNIES] = "SACK_OF_PENNIES"
____exports.CollectibleType.ROBO_BABY = 95
____exports.CollectibleType[____exports.CollectibleType.ROBO_BABY] = "ROBO_BABY"
____exports.CollectibleType.LITTLE_CHAD = 96
____exports.CollectibleType[____exports.CollectibleType.LITTLE_CHAD] = "LITTLE_CHAD"
____exports.CollectibleType.BOOK_OF_SIN = 97
____exports.CollectibleType[____exports.CollectibleType.BOOK_OF_SIN] = "BOOK_OF_SIN"
____exports.CollectibleType.RELIC = 98
____exports.CollectibleType[____exports.CollectibleType.RELIC] = "RELIC"
____exports.CollectibleType.LITTLE_GISH = 99
____exports.CollectibleType[____exports.CollectibleType.LITTLE_GISH] = "LITTLE_GISH"
____exports.CollectibleType.LITTLE_STEVEN = 100
____exports.CollectibleType[____exports.CollectibleType.LITTLE_STEVEN] = "LITTLE_STEVEN"
____exports.CollectibleType.HALO = 101
____exports.CollectibleType[____exports.CollectibleType.HALO] = "HALO"
____exports.CollectibleType.MOMS_BOTTLE_OF_PILLS = 102
____exports.CollectibleType[____exports.CollectibleType.MOMS_BOTTLE_OF_PILLS] = "MOMS_BOTTLE_OF_PILLS"
____exports.CollectibleType.COMMON_COLD = 103
____exports.CollectibleType[____exports.CollectibleType.COMMON_COLD] = "COMMON_COLD"
____exports.CollectibleType.PARASITE = 104
____exports.CollectibleType[____exports.CollectibleType.PARASITE] = "PARASITE"
____exports.CollectibleType.D6 = 105
____exports.CollectibleType[____exports.CollectibleType.D6] = "D6"
____exports.CollectibleType.MR_MEGA = 106
____exports.CollectibleType[____exports.CollectibleType.MR_MEGA] = "MR_MEGA"
____exports.CollectibleType.PINKING_SHEARS = 107
____exports.CollectibleType[____exports.CollectibleType.PINKING_SHEARS] = "PINKING_SHEARS"
____exports.CollectibleType.WAFER = 108
____exports.CollectibleType[____exports.CollectibleType.WAFER] = "WAFER"
____exports.CollectibleType.MONEY_EQUALS_POWER = 109
____exports.CollectibleType[____exports.CollectibleType.MONEY_EQUALS_POWER] = "MONEY_EQUALS_POWER"
____exports.CollectibleType.MOMS_CONTACTS = 110
____exports.CollectibleType[____exports.CollectibleType.MOMS_CONTACTS] = "MOMS_CONTACTS"
____exports.CollectibleType.BEAN = 111
____exports.CollectibleType[____exports.CollectibleType.BEAN] = "BEAN"
____exports.CollectibleType.GUARDIAN_ANGEL = 112
____exports.CollectibleType[____exports.CollectibleType.GUARDIAN_ANGEL] = "GUARDIAN_ANGEL"
____exports.CollectibleType.DEMON_BABY = 113
____exports.CollectibleType[____exports.CollectibleType.DEMON_BABY] = "DEMON_BABY"
____exports.CollectibleType.MOMS_KNIFE = 114
____exports.CollectibleType[____exports.CollectibleType.MOMS_KNIFE] = "MOMS_KNIFE"
____exports.CollectibleType.OUIJA_BOARD = 115
____exports.CollectibleType[____exports.CollectibleType.OUIJA_BOARD] = "OUIJA_BOARD"
____exports.CollectibleType.NINE_VOLT = 116
____exports.CollectibleType[____exports.CollectibleType.NINE_VOLT] = "NINE_VOLT"
____exports.CollectibleType.DEAD_BIRD = 117
____exports.CollectibleType[____exports.CollectibleType.DEAD_BIRD] = "DEAD_BIRD"
____exports.CollectibleType.BRIMSTONE = 118
____exports.CollectibleType[____exports.CollectibleType.BRIMSTONE] = "BRIMSTONE"
____exports.CollectibleType.BLOOD_BAG = 119
____exports.CollectibleType[____exports.CollectibleType.BLOOD_BAG] = "BLOOD_BAG"
____exports.CollectibleType.ODD_MUSHROOM_THIN = 120
____exports.CollectibleType[____exports.CollectibleType.ODD_MUSHROOM_THIN] = "ODD_MUSHROOM_THIN"
____exports.CollectibleType.ODD_MUSHROOM_LARGE = 121
____exports.CollectibleType[____exports.CollectibleType.ODD_MUSHROOM_LARGE] = "ODD_MUSHROOM_LARGE"
____exports.CollectibleType.WHORE_OF_BABYLON = 122
____exports.CollectibleType[____exports.CollectibleType.WHORE_OF_BABYLON] = "WHORE_OF_BABYLON"
____exports.CollectibleType.MONSTER_MANUAL = 123
____exports.CollectibleType[____exports.CollectibleType.MONSTER_MANUAL] = "MONSTER_MANUAL"
____exports.CollectibleType.DEAD_SEA_SCROLLS = 124
____exports.CollectibleType[____exports.CollectibleType.DEAD_SEA_SCROLLS] = "DEAD_SEA_SCROLLS"
____exports.CollectibleType.BOBBY_BOMB = 125
____exports.CollectibleType[____exports.CollectibleType.BOBBY_BOMB] = "BOBBY_BOMB"
____exports.CollectibleType.RAZOR_BLADE = 126
____exports.CollectibleType[____exports.CollectibleType.RAZOR_BLADE] = "RAZOR_BLADE"
____exports.CollectibleType.FORGET_ME_NOW = 127
____exports.CollectibleType[____exports.CollectibleType.FORGET_ME_NOW] = "FORGET_ME_NOW"
____exports.CollectibleType.FOREVER_ALONE = 128
____exports.CollectibleType[____exports.CollectibleType.FOREVER_ALONE] = "FOREVER_ALONE"
____exports.CollectibleType.BUCKET_OF_LARD = 129
____exports.CollectibleType[____exports.CollectibleType.BUCKET_OF_LARD] = "BUCKET_OF_LARD"
____exports.CollectibleType.PONY = 130
____exports.CollectibleType[____exports.CollectibleType.PONY] = "PONY"
____exports.CollectibleType.BOMB_BAG = 131
____exports.CollectibleType[____exports.CollectibleType.BOMB_BAG] = "BOMB_BAG"
____exports.CollectibleType.LUMP_OF_COAL = 132
____exports.CollectibleType[____exports.CollectibleType.LUMP_OF_COAL] = "LUMP_OF_COAL"
____exports.CollectibleType.GUPPYS_PAW = 133
____exports.CollectibleType[____exports.CollectibleType.GUPPYS_PAW] = "GUPPYS_PAW"
____exports.CollectibleType.GUPPYS_TAIL = 134
____exports.CollectibleType[____exports.CollectibleType.GUPPYS_TAIL] = "GUPPYS_TAIL"
____exports.CollectibleType.IV_BAG = 135
____exports.CollectibleType[____exports.CollectibleType.IV_BAG] = "IV_BAG"
____exports.CollectibleType.BEST_FRIEND = 136
____exports.CollectibleType[____exports.CollectibleType.BEST_FRIEND] = "BEST_FRIEND"
____exports.CollectibleType.REMOTE_DETONATOR = 137
____exports.CollectibleType[____exports.CollectibleType.REMOTE_DETONATOR] = "REMOTE_DETONATOR"
____exports.CollectibleType.STIGMATA = 138
____exports.CollectibleType[____exports.CollectibleType.STIGMATA] = "STIGMATA"
____exports.CollectibleType.MOMS_PURSE = 139
____exports.CollectibleType[____exports.CollectibleType.MOMS_PURSE] = "MOMS_PURSE"
____exports.CollectibleType.BOBS_CURSE = 140
____exports.CollectibleType[____exports.CollectibleType.BOBS_CURSE] = "BOBS_CURSE"
____exports.CollectibleType.PAGEANT_BOY = 141
____exports.CollectibleType[____exports.CollectibleType.PAGEANT_BOY] = "PAGEANT_BOY"
____exports.CollectibleType.SCAPULAR = 142
____exports.CollectibleType[____exports.CollectibleType.SCAPULAR] = "SCAPULAR"
____exports.CollectibleType.SPEED_BALL = 143
____exports.CollectibleType[____exports.CollectibleType.SPEED_BALL] = "SPEED_BALL"
____exports.CollectibleType.BUM_FRIEND = 144
____exports.CollectibleType[____exports.CollectibleType.BUM_FRIEND] = "BUM_FRIEND"
____exports.CollectibleType.GUPPYS_HEAD = 145
____exports.CollectibleType[____exports.CollectibleType.GUPPYS_HEAD] = "GUPPYS_HEAD"
____exports.CollectibleType.PRAYER_CARD = 146
____exports.CollectibleType[____exports.CollectibleType.PRAYER_CARD] = "PRAYER_CARD"
____exports.CollectibleType.NOTCHED_AXE = 147
____exports.CollectibleType[____exports.CollectibleType.NOTCHED_AXE] = "NOTCHED_AXE"
____exports.CollectibleType.INFESTATION = 148
____exports.CollectibleType[____exports.CollectibleType.INFESTATION] = "INFESTATION"
____exports.CollectibleType.IPECAC = 149
____exports.CollectibleType[____exports.CollectibleType.IPECAC] = "IPECAC"
____exports.CollectibleType.TOUGH_LOVE = 150
____exports.CollectibleType[____exports.CollectibleType.TOUGH_LOVE] = "TOUGH_LOVE"
____exports.CollectibleType.MULLIGAN = 151
____exports.CollectibleType[____exports.CollectibleType.MULLIGAN] = "MULLIGAN"
____exports.CollectibleType.TECHNOLOGY_2 = 152
____exports.CollectibleType[____exports.CollectibleType.TECHNOLOGY_2] = "TECHNOLOGY_2"
____exports.CollectibleType.MUTANT_SPIDER = 153
____exports.CollectibleType[____exports.CollectibleType.MUTANT_SPIDER] = "MUTANT_SPIDER"
____exports.CollectibleType.CHEMICAL_PEEL = 154
____exports.CollectibleType[____exports.CollectibleType.CHEMICAL_PEEL] = "CHEMICAL_PEEL"
____exports.CollectibleType.PEEPER = 155
____exports.CollectibleType[____exports.CollectibleType.PEEPER] = "PEEPER"
____exports.CollectibleType.HABIT = 156
____exports.CollectibleType[____exports.CollectibleType.HABIT] = "HABIT"
____exports.CollectibleType.BLOODY_LUST = 157
____exports.CollectibleType[____exports.CollectibleType.BLOODY_LUST] = "BLOODY_LUST"
____exports.CollectibleType.CRYSTAL_BALL = 158
____exports.CollectibleType[____exports.CollectibleType.CRYSTAL_BALL] = "CRYSTAL_BALL"
____exports.CollectibleType.SPIRIT_OF_THE_NIGHT = 159
____exports.CollectibleType[____exports.CollectibleType.SPIRIT_OF_THE_NIGHT] = "SPIRIT_OF_THE_NIGHT"
____exports.CollectibleType.CRACK_THE_SKY = 160
____exports.CollectibleType[____exports.CollectibleType.CRACK_THE_SKY] = "CRACK_THE_SKY"
____exports.CollectibleType.ANKH = 161
____exports.CollectibleType[____exports.CollectibleType.ANKH] = "ANKH"
____exports.CollectibleType.CELTIC_CROSS = 162
____exports.CollectibleType[____exports.CollectibleType.CELTIC_CROSS] = "CELTIC_CROSS"
____exports.CollectibleType.GHOST_BABY = 163
____exports.CollectibleType[____exports.CollectibleType.GHOST_BABY] = "GHOST_BABY"
____exports.CollectibleType.CANDLE = 164
____exports.CollectibleType[____exports.CollectibleType.CANDLE] = "CANDLE"
____exports.CollectibleType.CAT_O_NINE_TAILS = 165
____exports.CollectibleType[____exports.CollectibleType.CAT_O_NINE_TAILS] = "CAT_O_NINE_TAILS"
____exports.CollectibleType.D20 = 166
____exports.CollectibleType[____exports.CollectibleType.D20] = "D20"
____exports.CollectibleType.HARLEQUIN_BABY = 167
____exports.CollectibleType[____exports.CollectibleType.HARLEQUIN_BABY] = "HARLEQUIN_BABY"
____exports.CollectibleType.EPIC_FETUS = 168
____exports.CollectibleType[____exports.CollectibleType.EPIC_FETUS] = "EPIC_FETUS"
____exports.CollectibleType.POLYPHEMUS = 169
____exports.CollectibleType[____exports.CollectibleType.POLYPHEMUS] = "POLYPHEMUS"
____exports.CollectibleType.DADDY_LONGLEGS = 170
____exports.CollectibleType[____exports.CollectibleType.DADDY_LONGLEGS] = "DADDY_LONGLEGS"
____exports.CollectibleType.SPIDER_BUTT = 171
____exports.CollectibleType[____exports.CollectibleType.SPIDER_BUTT] = "SPIDER_BUTT"
____exports.CollectibleType.SACRIFICIAL_DAGGER = 172
____exports.CollectibleType[____exports.CollectibleType.SACRIFICIAL_DAGGER] = "SACRIFICIAL_DAGGER"
____exports.CollectibleType.MITRE = 173
____exports.CollectibleType[____exports.CollectibleType.MITRE] = "MITRE"
____exports.CollectibleType.RAINBOW_BABY = 174
____exports.CollectibleType[____exports.CollectibleType.RAINBOW_BABY] = "RAINBOW_BABY"
____exports.CollectibleType.DADS_KEY = 175
____exports.CollectibleType[____exports.CollectibleType.DADS_KEY] = "DADS_KEY"
____exports.CollectibleType.STEM_CELLS = 176
____exports.CollectibleType[____exports.CollectibleType.STEM_CELLS] = "STEM_CELLS"
____exports.CollectibleType.PORTABLE_SLOT = 177
____exports.CollectibleType[____exports.CollectibleType.PORTABLE_SLOT] = "PORTABLE_SLOT"
____exports.CollectibleType.HOLY_WATER = 178
____exports.CollectibleType[____exports.CollectibleType.HOLY_WATER] = "HOLY_WATER"
____exports.CollectibleType.FATE = 179
____exports.CollectibleType[____exports.CollectibleType.FATE] = "FATE"
____exports.CollectibleType.BLACK_BEAN = 180
____exports.CollectibleType[____exports.CollectibleType.BLACK_BEAN] = "BLACK_BEAN"
____exports.CollectibleType.WHITE_PONY = 181
____exports.CollectibleType[____exports.CollectibleType.WHITE_PONY] = "WHITE_PONY"
____exports.CollectibleType.SACRED_HEART = 182
____exports.CollectibleType[____exports.CollectibleType.SACRED_HEART] = "SACRED_HEART"
____exports.CollectibleType.TOOTH_PICKS = 183
____exports.CollectibleType[____exports.CollectibleType.TOOTH_PICKS] = "TOOTH_PICKS"
____exports.CollectibleType.HOLY_GRAIL = 184
____exports.CollectibleType[____exports.CollectibleType.HOLY_GRAIL] = "HOLY_GRAIL"
____exports.CollectibleType.DEAD_DOVE = 185
____exports.CollectibleType[____exports.CollectibleType.DEAD_DOVE] = "DEAD_DOVE"
____exports.CollectibleType.BLOOD_RIGHTS = 186
____exports.CollectibleType[____exports.CollectibleType.BLOOD_RIGHTS] = "BLOOD_RIGHTS"
____exports.CollectibleType.GUPPYS_HAIRBALL = 187
____exports.CollectibleType[____exports.CollectibleType.GUPPYS_HAIRBALL] = "GUPPYS_HAIRBALL"
____exports.CollectibleType.ABEL = 188
____exports.CollectibleType[____exports.CollectibleType.ABEL] = "ABEL"
____exports.CollectibleType.SMB_SUPER_FAN = 189
____exports.CollectibleType[____exports.CollectibleType.SMB_SUPER_FAN] = "SMB_SUPER_FAN"
____exports.CollectibleType.PYRO = 190
____exports.CollectibleType[____exports.CollectibleType.PYRO] = "PYRO"
____exports.CollectibleType.THREE_DOLLAR_BILL = 191
____exports.CollectibleType[____exports.CollectibleType.THREE_DOLLAR_BILL] = "THREE_DOLLAR_BILL"
____exports.CollectibleType.TELEPATHY_BOOK = 192
____exports.CollectibleType[____exports.CollectibleType.TELEPATHY_BOOK] = "TELEPATHY_BOOK"
____exports.CollectibleType.MEAT = 193
____exports.CollectibleType[____exports.CollectibleType.MEAT] = "MEAT"
____exports.CollectibleType.MAGIC_8_BALL = 194
____exports.CollectibleType[____exports.CollectibleType.MAGIC_8_BALL] = "MAGIC_8_BALL"
____exports.CollectibleType.MOMS_COIN_PURSE = 195
____exports.CollectibleType[____exports.CollectibleType.MOMS_COIN_PURSE] = "MOMS_COIN_PURSE"
____exports.CollectibleType.SQUEEZY = 196
____exports.CollectibleType[____exports.CollectibleType.SQUEEZY] = "SQUEEZY"
____exports.CollectibleType.JESUS_JUICE = 197
____exports.CollectibleType[____exports.CollectibleType.JESUS_JUICE] = "JESUS_JUICE"
____exports.CollectibleType.BOX = 198
____exports.CollectibleType[____exports.CollectibleType.BOX] = "BOX"
____exports.CollectibleType.MOMS_KEY = 199
____exports.CollectibleType[____exports.CollectibleType.MOMS_KEY] = "MOMS_KEY"
____exports.CollectibleType.MOMS_EYESHADOW = 200
____exports.CollectibleType[____exports.CollectibleType.MOMS_EYESHADOW] = "MOMS_EYESHADOW"
____exports.CollectibleType.IRON_BAR = 201
____exports.CollectibleType[____exports.CollectibleType.IRON_BAR] = "IRON_BAR"
____exports.CollectibleType.MIDAS_TOUCH = 202
____exports.CollectibleType[____exports.CollectibleType.MIDAS_TOUCH] = "MIDAS_TOUCH"
____exports.CollectibleType.HUMBLING_BUNDLE = 203
____exports.CollectibleType[____exports.CollectibleType.HUMBLING_BUNDLE] = "HUMBLING_BUNDLE"
____exports.CollectibleType.FANNY_PACK = 204
____exports.CollectibleType[____exports.CollectibleType.FANNY_PACK] = "FANNY_PACK"
____exports.CollectibleType.SHARP_PLUG = 205
____exports.CollectibleType[____exports.CollectibleType.SHARP_PLUG] = "SHARP_PLUG"
____exports.CollectibleType.GUILLOTINE = 206
____exports.CollectibleType[____exports.CollectibleType.GUILLOTINE] = "GUILLOTINE"
____exports.CollectibleType.BALL_OF_BANDAGES = 207
____exports.CollectibleType[____exports.CollectibleType.BALL_OF_BANDAGES] = "BALL_OF_BANDAGES"
____exports.CollectibleType.CHAMPION_BELT = 208
____exports.CollectibleType[____exports.CollectibleType.CHAMPION_BELT] = "CHAMPION_BELT"
____exports.CollectibleType.BUTT_BOMBS = 209
____exports.CollectibleType[____exports.CollectibleType.BUTT_BOMBS] = "BUTT_BOMBS"
____exports.CollectibleType.GNAWED_LEAF = 210
____exports.CollectibleType[____exports.CollectibleType.GNAWED_LEAF] = "GNAWED_LEAF"
____exports.CollectibleType.SPIDERBABY = 211
____exports.CollectibleType[____exports.CollectibleType.SPIDERBABY] = "SPIDERBABY"
____exports.CollectibleType.GUPPYS_COLLAR = 212
____exports.CollectibleType[____exports.CollectibleType.GUPPYS_COLLAR] = "GUPPYS_COLLAR"
____exports.CollectibleType.LOST_CONTACT = 213
____exports.CollectibleType[____exports.CollectibleType.LOST_CONTACT] = "LOST_CONTACT"
____exports.CollectibleType.ANEMIC = 214
____exports.CollectibleType[____exports.CollectibleType.ANEMIC] = "ANEMIC"
____exports.CollectibleType.GOAT_HEAD = 215
____exports.CollectibleType[____exports.CollectibleType.GOAT_HEAD] = "GOAT_HEAD"
____exports.CollectibleType.CEREMONIAL_ROBES = 216
____exports.CollectibleType[____exports.CollectibleType.CEREMONIAL_ROBES] = "CEREMONIAL_ROBES"
____exports.CollectibleType.MOMS_WIG = 217
____exports.CollectibleType[____exports.CollectibleType.MOMS_WIG] = "MOMS_WIG"
____exports.CollectibleType.PLACENTA = 218
____exports.CollectibleType[____exports.CollectibleType.PLACENTA] = "PLACENTA"
____exports.CollectibleType.OLD_BANDAGE = 219
____exports.CollectibleType[____exports.CollectibleType.OLD_BANDAGE] = "OLD_BANDAGE"
____exports.CollectibleType.SAD_BOMBS = 220
____exports.CollectibleType[____exports.CollectibleType.SAD_BOMBS] = "SAD_BOMBS"
____exports.CollectibleType.RUBBER_CEMENT = 221
____exports.CollectibleType[____exports.CollectibleType.RUBBER_CEMENT] = "RUBBER_CEMENT"
____exports.CollectibleType.ANTI_GRAVITY = 222
____exports.CollectibleType[____exports.CollectibleType.ANTI_GRAVITY] = "ANTI_GRAVITY"
____exports.CollectibleType.PYROMANIAC = 223
____exports.CollectibleType[____exports.CollectibleType.PYROMANIAC] = "PYROMANIAC"
____exports.CollectibleType.CRICKETS_BODY = 224
____exports.CollectibleType[____exports.CollectibleType.CRICKETS_BODY] = "CRICKETS_BODY"
____exports.CollectibleType.GIMPY = 225
____exports.CollectibleType[____exports.CollectibleType.GIMPY] = "GIMPY"
____exports.CollectibleType.BLACK_LOTUS = 226
____exports.CollectibleType[____exports.CollectibleType.BLACK_LOTUS] = "BLACK_LOTUS"
____exports.CollectibleType.PIGGY_BANK = 227
____exports.CollectibleType[____exports.CollectibleType.PIGGY_BANK] = "PIGGY_BANK"
____exports.CollectibleType.MOMS_PERFUME = 228
____exports.CollectibleType[____exports.CollectibleType.MOMS_PERFUME] = "MOMS_PERFUME"
____exports.CollectibleType.MONSTROS_LUNG = 229
____exports.CollectibleType[____exports.CollectibleType.MONSTROS_LUNG] = "MONSTROS_LUNG"
____exports.CollectibleType.ABADDON = 230
____exports.CollectibleType[____exports.CollectibleType.ABADDON] = "ABADDON"
____exports.CollectibleType.BALL_OF_TAR = 231
____exports.CollectibleType[____exports.CollectibleType.BALL_OF_TAR] = "BALL_OF_TAR"
____exports.CollectibleType.STOP_WATCH = 232
____exports.CollectibleType[____exports.CollectibleType.STOP_WATCH] = "STOP_WATCH"
____exports.CollectibleType.TINY_PLANET = 233
____exports.CollectibleType[____exports.CollectibleType.TINY_PLANET] = "TINY_PLANET"
____exports.CollectibleType.INFESTATION_2 = 234
____exports.CollectibleType[____exports.CollectibleType.INFESTATION_2] = "INFESTATION_2"
____exports.CollectibleType.E_COLI = 236
____exports.CollectibleType[____exports.CollectibleType.E_COLI] = "E_COLI"
____exports.CollectibleType.DEATHS_TOUCH = 237
____exports.CollectibleType[____exports.CollectibleType.DEATHS_TOUCH] = "DEATHS_TOUCH"
____exports.CollectibleType.KEY_PIECE_1 = 238
____exports.CollectibleType[____exports.CollectibleType.KEY_PIECE_1] = "KEY_PIECE_1"
____exports.CollectibleType.KEY_PIECE_2 = 239
____exports.CollectibleType[____exports.CollectibleType.KEY_PIECE_2] = "KEY_PIECE_2"
____exports.CollectibleType.EXPERIMENTAL_TREATMENT = 240
____exports.CollectibleType[____exports.CollectibleType.EXPERIMENTAL_TREATMENT] = "EXPERIMENTAL_TREATMENT"
____exports.CollectibleType.CONTRACT_FROM_BELOW = 241
____exports.CollectibleType[____exports.CollectibleType.CONTRACT_FROM_BELOW] = "CONTRACT_FROM_BELOW"
____exports.CollectibleType.INFAMY = 242
____exports.CollectibleType[____exports.CollectibleType.INFAMY] = "INFAMY"
____exports.CollectibleType.TRINITY_SHIELD = 243
____exports.CollectibleType[____exports.CollectibleType.TRINITY_SHIELD] = "TRINITY_SHIELD"
____exports.CollectibleType.TECH_5 = 244
____exports.CollectibleType[____exports.CollectibleType.TECH_5] = "TECH_5"
____exports.CollectibleType.TWENTY_TWENTY = 245
____exports.CollectibleType[____exports.CollectibleType.TWENTY_TWENTY] = "TWENTY_TWENTY"
____exports.CollectibleType.BLUE_MAP = 246
____exports.CollectibleType[____exports.CollectibleType.BLUE_MAP] = "BLUE_MAP"
____exports.CollectibleType.BFFS = 247
____exports.CollectibleType[____exports.CollectibleType.BFFS] = "BFFS"
____exports.CollectibleType.HIVE_MIND = 248
____exports.CollectibleType[____exports.CollectibleType.HIVE_MIND] = "HIVE_MIND"
____exports.CollectibleType.THERES_OPTIONS = 249
____exports.CollectibleType[____exports.CollectibleType.THERES_OPTIONS] = "THERES_OPTIONS"
____exports.CollectibleType.BOGO_BOMBS = 250
____exports.CollectibleType[____exports.CollectibleType.BOGO_BOMBS] = "BOGO_BOMBS"
____exports.CollectibleType.STARTER_DECK = 251
____exports.CollectibleType[____exports.CollectibleType.STARTER_DECK] = "STARTER_DECK"
____exports.CollectibleType.LITTLE_BAGGY = 252
____exports.CollectibleType[____exports.CollectibleType.LITTLE_BAGGY] = "LITTLE_BAGGY"
____exports.CollectibleType.MAGIC_SCAB = 253
____exports.CollectibleType[____exports.CollectibleType.MAGIC_SCAB] = "MAGIC_SCAB"
____exports.CollectibleType.BLOOD_CLOT = 254
____exports.CollectibleType[____exports.CollectibleType.BLOOD_CLOT] = "BLOOD_CLOT"
____exports.CollectibleType.SCREW = 255
____exports.CollectibleType[____exports.CollectibleType.SCREW] = "SCREW"
____exports.CollectibleType.HOT_BOMBS = 256
____exports.CollectibleType[____exports.CollectibleType.HOT_BOMBS] = "HOT_BOMBS"
____exports.CollectibleType.FIRE_MIND = 257
____exports.CollectibleType[____exports.CollectibleType.FIRE_MIND] = "FIRE_MIND"
____exports.CollectibleType.MISSING_NO = 258
____exports.CollectibleType[____exports.CollectibleType.MISSING_NO] = "MISSING_NO"
____exports.CollectibleType.DARK_MATTER = 259
____exports.CollectibleType[____exports.CollectibleType.DARK_MATTER] = "DARK_MATTER"
____exports.CollectibleType.BLACK_CANDLE = 260
____exports.CollectibleType[____exports.CollectibleType.BLACK_CANDLE] = "BLACK_CANDLE"
____exports.CollectibleType.PROPTOSIS = 261
____exports.CollectibleType[____exports.CollectibleType.PROPTOSIS] = "PROPTOSIS"
____exports.CollectibleType.MISSING_PAGE_2 = 262
____exports.CollectibleType[____exports.CollectibleType.MISSING_PAGE_2] = "MISSING_PAGE_2"
____exports.CollectibleType.CLEAR_RUNE = 263
____exports.CollectibleType[____exports.CollectibleType.CLEAR_RUNE] = "CLEAR_RUNE"
____exports.CollectibleType.SMART_FLY = 264
____exports.CollectibleType[____exports.CollectibleType.SMART_FLY] = "SMART_FLY"
____exports.CollectibleType.DRY_BABY = 265
____exports.CollectibleType[____exports.CollectibleType.DRY_BABY] = "DRY_BABY"
____exports.CollectibleType.JUICY_SACK = 266
____exports.CollectibleType[____exports.CollectibleType.JUICY_SACK] = "JUICY_SACK"
____exports.CollectibleType.ROBO_BABY_2 = 267
____exports.CollectibleType[____exports.CollectibleType.ROBO_BABY_2] = "ROBO_BABY_2"
____exports.CollectibleType.ROTTEN_BABY = 268
____exports.CollectibleType[____exports.CollectibleType.ROTTEN_BABY] = "ROTTEN_BABY"
____exports.CollectibleType.HEADLESS_BABY = 269
____exports.CollectibleType[____exports.CollectibleType.HEADLESS_BABY] = "HEADLESS_BABY"
____exports.CollectibleType.LEECH = 270
____exports.CollectibleType[____exports.CollectibleType.LEECH] = "LEECH"
____exports.CollectibleType.MYSTERY_SACK = 271
____exports.CollectibleType[____exports.CollectibleType.MYSTERY_SACK] = "MYSTERY_SACK"
____exports.CollectibleType.BBF = 272
____exports.CollectibleType[____exports.CollectibleType.BBF] = "BBF"
____exports.CollectibleType.BOBS_BRAIN = 273
____exports.CollectibleType[____exports.CollectibleType.BOBS_BRAIN] = "BOBS_BRAIN"
____exports.CollectibleType.BEST_BUD = 274
____exports.CollectibleType[____exports.CollectibleType.BEST_BUD] = "BEST_BUD"
____exports.CollectibleType.LIL_BRIMSTONE = 275
____exports.CollectibleType[____exports.CollectibleType.LIL_BRIMSTONE] = "LIL_BRIMSTONE"
____exports.CollectibleType.ISAACS_HEART = 276
____exports.CollectibleType[____exports.CollectibleType.ISAACS_HEART] = "ISAACS_HEART"
____exports.CollectibleType.LIL_HAUNT = 277
____exports.CollectibleType[____exports.CollectibleType.LIL_HAUNT] = "LIL_HAUNT"
____exports.CollectibleType.DARK_BUM = 278
____exports.CollectibleType[____exports.CollectibleType.DARK_BUM] = "DARK_BUM"
____exports.CollectibleType.BIG_FAN = 279
____exports.CollectibleType[____exports.CollectibleType.BIG_FAN] = "BIG_FAN"
____exports.CollectibleType.SISSY_LONGLEGS = 280
____exports.CollectibleType[____exports.CollectibleType.SISSY_LONGLEGS] = "SISSY_LONGLEGS"
____exports.CollectibleType.PUNCHING_BAG = 281
____exports.CollectibleType[____exports.CollectibleType.PUNCHING_BAG] = "PUNCHING_BAG"
____exports.CollectibleType.HOW_TO_JUMP = 282
____exports.CollectibleType[____exports.CollectibleType.HOW_TO_JUMP] = "HOW_TO_JUMP"
____exports.CollectibleType.D100 = 283
____exports.CollectibleType[____exports.CollectibleType.D100] = "D100"
____exports.CollectibleType.D4 = 284
____exports.CollectibleType[____exports.CollectibleType.D4] = "D4"
____exports.CollectibleType.D10 = 285
____exports.CollectibleType[____exports.CollectibleType.D10] = "D10"
____exports.CollectibleType.BLANK_CARD = 286
____exports.CollectibleType[____exports.CollectibleType.BLANK_CARD] = "BLANK_CARD"
____exports.CollectibleType.BOOK_OF_SECRETS = 287
____exports.CollectibleType[____exports.CollectibleType.BOOK_OF_SECRETS] = "BOOK_OF_SECRETS"
____exports.CollectibleType.BOX_OF_SPIDERS = 288
____exports.CollectibleType[____exports.CollectibleType.BOX_OF_SPIDERS] = "BOX_OF_SPIDERS"
____exports.CollectibleType.RED_CANDLE = 289
____exports.CollectibleType[____exports.CollectibleType.RED_CANDLE] = "RED_CANDLE"
____exports.CollectibleType.JAR = 290
____exports.CollectibleType[____exports.CollectibleType.JAR] = "JAR"
____exports.CollectibleType.FLUSH = 291
____exports.CollectibleType[____exports.CollectibleType.FLUSH] = "FLUSH"
____exports.CollectibleType.SATANIC_BIBLE = 292
____exports.CollectibleType[____exports.CollectibleType.SATANIC_BIBLE] = "SATANIC_BIBLE"
____exports.CollectibleType.HEAD_OF_KRAMPUS = 293
____exports.CollectibleType[____exports.CollectibleType.HEAD_OF_KRAMPUS] = "HEAD_OF_KRAMPUS"
____exports.CollectibleType.BUTTER_BEAN = 294
____exports.CollectibleType[____exports.CollectibleType.BUTTER_BEAN] = "BUTTER_BEAN"
____exports.CollectibleType.MAGIC_FINGERS = 295
____exports.CollectibleType[____exports.CollectibleType.MAGIC_FINGERS] = "MAGIC_FINGERS"
____exports.CollectibleType.CONVERTER = 296
____exports.CollectibleType[____exports.CollectibleType.CONVERTER] = "CONVERTER"
____exports.CollectibleType.BLUE_BOX = 297
____exports.CollectibleType[____exports.CollectibleType.BLUE_BOX] = "BLUE_BOX"
____exports.CollectibleType.UNICORN_STUMP = 298
____exports.CollectibleType[____exports.CollectibleType.UNICORN_STUMP] = "UNICORN_STUMP"
____exports.CollectibleType.TAURUS = 299
____exports.CollectibleType[____exports.CollectibleType.TAURUS] = "TAURUS"
____exports.CollectibleType.ARIES = 300
____exports.CollectibleType[____exports.CollectibleType.ARIES] = "ARIES"
____exports.CollectibleType.CANCER = 301
____exports.CollectibleType[____exports.CollectibleType.CANCER] = "CANCER"
____exports.CollectibleType.LEO = 302
____exports.CollectibleType[____exports.CollectibleType.LEO] = "LEO"
____exports.CollectibleType.VIRGO = 303
____exports.CollectibleType[____exports.CollectibleType.VIRGO] = "VIRGO"
____exports.CollectibleType.LIBRA = 304
____exports.CollectibleType[____exports.CollectibleType.LIBRA] = "LIBRA"
____exports.CollectibleType.SCORPIO = 305
____exports.CollectibleType[____exports.CollectibleType.SCORPIO] = "SCORPIO"
____exports.CollectibleType.SAGITTARIUS = 306
____exports.CollectibleType[____exports.CollectibleType.SAGITTARIUS] = "SAGITTARIUS"
____exports.CollectibleType.CAPRICORN = 307
____exports.CollectibleType[____exports.CollectibleType.CAPRICORN] = "CAPRICORN"
____exports.CollectibleType.AQUARIUS = 308
____exports.CollectibleType[____exports.CollectibleType.AQUARIUS] = "AQUARIUS"
____exports.CollectibleType.PISCES = 309
____exports.CollectibleType[____exports.CollectibleType.PISCES] = "PISCES"
____exports.CollectibleType.EVES_MASCARA = 310
____exports.CollectibleType[____exports.CollectibleType.EVES_MASCARA] = "EVES_MASCARA"
____exports.CollectibleType.JUDAS_SHADOW = 311
____exports.CollectibleType[____exports.CollectibleType.JUDAS_SHADOW] = "JUDAS_SHADOW"
____exports.CollectibleType.MAGGYS_BOW = 312
____exports.CollectibleType[____exports.CollectibleType.MAGGYS_BOW] = "MAGGYS_BOW"
____exports.CollectibleType.HOLY_MANTLE = 313
____exports.CollectibleType[____exports.CollectibleType.HOLY_MANTLE] = "HOLY_MANTLE"
____exports.CollectibleType.THUNDER_THIGHS = 314
____exports.CollectibleType[____exports.CollectibleType.THUNDER_THIGHS] = "THUNDER_THIGHS"
____exports.CollectibleType.STRANGE_ATTRACTOR = 315
____exports.CollectibleType[____exports.CollectibleType.STRANGE_ATTRACTOR] = "STRANGE_ATTRACTOR"
____exports.CollectibleType.CURSED_EYE = 316
____exports.CollectibleType[____exports.CollectibleType.CURSED_EYE] = "CURSED_EYE"
____exports.CollectibleType.MYSTERIOUS_LIQUID = 317
____exports.CollectibleType[____exports.CollectibleType.MYSTERIOUS_LIQUID] = "MYSTERIOUS_LIQUID"
____exports.CollectibleType.GEMINI = 318
____exports.CollectibleType[____exports.CollectibleType.GEMINI] = "GEMINI"
____exports.CollectibleType.CAINS_OTHER_EYE = 319
____exports.CollectibleType[____exports.CollectibleType.CAINS_OTHER_EYE] = "CAINS_OTHER_EYE"
____exports.CollectibleType.BLUE_BABYS_ONLY_FRIEND = 320
____exports.CollectibleType[____exports.CollectibleType.BLUE_BABYS_ONLY_FRIEND] = "BLUE_BABYS_ONLY_FRIEND"
____exports.CollectibleType.SAMSONS_CHAINS = 321
____exports.CollectibleType[____exports.CollectibleType.SAMSONS_CHAINS] = "SAMSONS_CHAINS"
____exports.CollectibleType.MONGO_BABY = 322
____exports.CollectibleType[____exports.CollectibleType.MONGO_BABY] = "MONGO_BABY"
____exports.CollectibleType.ISAACS_TEARS = 323
____exports.CollectibleType[____exports.CollectibleType.ISAACS_TEARS] = "ISAACS_TEARS"
____exports.CollectibleType.UNDEFINED = 324
____exports.CollectibleType[____exports.CollectibleType.UNDEFINED] = "UNDEFINED"
____exports.CollectibleType.SCISSORS = 325
____exports.CollectibleType[____exports.CollectibleType.SCISSORS] = "SCISSORS"
____exports.CollectibleType.BREATH_OF_LIFE = 326
____exports.CollectibleType[____exports.CollectibleType.BREATH_OF_LIFE] = "BREATH_OF_LIFE"
____exports.CollectibleType.POLAROID = 327
____exports.CollectibleType[____exports.CollectibleType.POLAROID] = "POLAROID"
____exports.CollectibleType.NEGATIVE = 328
____exports.CollectibleType[____exports.CollectibleType.NEGATIVE] = "NEGATIVE"
____exports.CollectibleType.LUDOVICO_TECHNIQUE = 329
____exports.CollectibleType[____exports.CollectibleType.LUDOVICO_TECHNIQUE] = "LUDOVICO_TECHNIQUE"
____exports.CollectibleType.SOY_MILK = 330
____exports.CollectibleType[____exports.CollectibleType.SOY_MILK] = "SOY_MILK"
____exports.CollectibleType.GODHEAD = 331
____exports.CollectibleType[____exports.CollectibleType.GODHEAD] = "GODHEAD"
____exports.CollectibleType.LAZARUS_RAGS = 332
____exports.CollectibleType[____exports.CollectibleType.LAZARUS_RAGS] = "LAZARUS_RAGS"
____exports.CollectibleType.MIND = 333
____exports.CollectibleType[____exports.CollectibleType.MIND] = "MIND"
____exports.CollectibleType.BODY = 334
____exports.CollectibleType[____exports.CollectibleType.BODY] = "BODY"
____exports.CollectibleType.SOUL = 335
____exports.CollectibleType[____exports.CollectibleType.SOUL] = "SOUL"
____exports.CollectibleType.DEAD_ONION = 336
____exports.CollectibleType[____exports.CollectibleType.DEAD_ONION] = "DEAD_ONION"
____exports.CollectibleType.BROKEN_WATCH = 337
____exports.CollectibleType[____exports.CollectibleType.BROKEN_WATCH] = "BROKEN_WATCH"
____exports.CollectibleType.BOOMERANG = 338
____exports.CollectibleType[____exports.CollectibleType.BOOMERANG] = "BOOMERANG"
____exports.CollectibleType.SAFETY_PIN = 339
____exports.CollectibleType[____exports.CollectibleType.SAFETY_PIN] = "SAFETY_PIN"
____exports.CollectibleType.CAFFEINE_PILL = 340
____exports.CollectibleType[____exports.CollectibleType.CAFFEINE_PILL] = "CAFFEINE_PILL"
____exports.CollectibleType.TORN_PHOTO = 341
____exports.CollectibleType[____exports.CollectibleType.TORN_PHOTO] = "TORN_PHOTO"
____exports.CollectibleType.BLUE_CAP = 342
____exports.CollectibleType[____exports.CollectibleType.BLUE_CAP] = "BLUE_CAP"
____exports.CollectibleType.LATCH_KEY = 343
____exports.CollectibleType[____exports.CollectibleType.LATCH_KEY] = "LATCH_KEY"
____exports.CollectibleType.MATCH_BOOK = 344
____exports.CollectibleType[____exports.CollectibleType.MATCH_BOOK] = "MATCH_BOOK"
____exports.CollectibleType.SYNTHOIL = 345
____exports.CollectibleType[____exports.CollectibleType.SYNTHOIL] = "SYNTHOIL"
____exports.CollectibleType.SNACK = 346
____exports.CollectibleType[____exports.CollectibleType.SNACK] = "SNACK"
____exports.CollectibleType.DIPLOPIA = 347
____exports.CollectibleType[____exports.CollectibleType.DIPLOPIA] = "DIPLOPIA"
____exports.CollectibleType.PLACEBO = 348
____exports.CollectibleType[____exports.CollectibleType.PLACEBO] = "PLACEBO"
____exports.CollectibleType.WOODEN_NICKEL = 349
____exports.CollectibleType[____exports.CollectibleType.WOODEN_NICKEL] = "WOODEN_NICKEL"
____exports.CollectibleType.TOXIC_SHOCK = 350
____exports.CollectibleType[____exports.CollectibleType.TOXIC_SHOCK] = "TOXIC_SHOCK"
____exports.CollectibleType.MEGA_BEAN = 351
____exports.CollectibleType[____exports.CollectibleType.MEGA_BEAN] = "MEGA_BEAN"
____exports.CollectibleType.GLASS_CANNON = 352
____exports.CollectibleType[____exports.CollectibleType.GLASS_CANNON] = "GLASS_CANNON"
____exports.CollectibleType.BOMBER_BOY = 353
____exports.CollectibleType[____exports.CollectibleType.BOMBER_BOY] = "BOMBER_BOY"
____exports.CollectibleType.CRACK_JACKS = 354
____exports.CollectibleType[____exports.CollectibleType.CRACK_JACKS] = "CRACK_JACKS"
____exports.CollectibleType.MOMS_PEARLS = 355
____exports.CollectibleType[____exports.CollectibleType.MOMS_PEARLS] = "MOMS_PEARLS"
____exports.CollectibleType.CAR_BATTERY = 356
____exports.CollectibleType[____exports.CollectibleType.CAR_BATTERY] = "CAR_BATTERY"
____exports.CollectibleType.BOX_OF_FRIENDS = 357
____exports.CollectibleType[____exports.CollectibleType.BOX_OF_FRIENDS] = "BOX_OF_FRIENDS"
____exports.CollectibleType.WIZ = 358
____exports.CollectibleType[____exports.CollectibleType.WIZ] = "WIZ"
____exports.CollectibleType.EIGHT_INCH_NAILS = 359
____exports.CollectibleType[____exports.CollectibleType.EIGHT_INCH_NAILS] = "EIGHT_INCH_NAILS"
____exports.CollectibleType.INCUBUS = 360
____exports.CollectibleType[____exports.CollectibleType.INCUBUS] = "INCUBUS"
____exports.CollectibleType.FATES_REWARD = 361
____exports.CollectibleType[____exports.CollectibleType.FATES_REWARD] = "FATES_REWARD"
____exports.CollectibleType.LIL_CHEST = 362
____exports.CollectibleType[____exports.CollectibleType.LIL_CHEST] = "LIL_CHEST"
____exports.CollectibleType.SWORN_PROTECTOR = 363
____exports.CollectibleType[____exports.CollectibleType.SWORN_PROTECTOR] = "SWORN_PROTECTOR"
____exports.CollectibleType.FRIEND_ZONE = 364
____exports.CollectibleType[____exports.CollectibleType.FRIEND_ZONE] = "FRIEND_ZONE"
____exports.CollectibleType.LOST_FLY = 365
____exports.CollectibleType[____exports.CollectibleType.LOST_FLY] = "LOST_FLY"
____exports.CollectibleType.SCATTER_BOMBS = 366
____exports.CollectibleType[____exports.CollectibleType.SCATTER_BOMBS] = "SCATTER_BOMBS"
____exports.CollectibleType.STICKY_BOMBS = 367
____exports.CollectibleType[____exports.CollectibleType.STICKY_BOMBS] = "STICKY_BOMBS"
____exports.CollectibleType.EPIPHORA = 368
____exports.CollectibleType[____exports.CollectibleType.EPIPHORA] = "EPIPHORA"
____exports.CollectibleType.CONTINUUM = 369
____exports.CollectibleType[____exports.CollectibleType.CONTINUUM] = "CONTINUUM"
____exports.CollectibleType.MR_DOLLY = 370
____exports.CollectibleType[____exports.CollectibleType.MR_DOLLY] = "MR_DOLLY"
____exports.CollectibleType.CURSE_OF_THE_TOWER = 371
____exports.CollectibleType[____exports.CollectibleType.CURSE_OF_THE_TOWER] = "CURSE_OF_THE_TOWER"
____exports.CollectibleType.CHARGED_BABY = 372
____exports.CollectibleType[____exports.CollectibleType.CHARGED_BABY] = "CHARGED_BABY"
____exports.CollectibleType.DEAD_EYE = 373
____exports.CollectibleType[____exports.CollectibleType.DEAD_EYE] = "DEAD_EYE"
____exports.CollectibleType.HOLY_LIGHT = 374
____exports.CollectibleType[____exports.CollectibleType.HOLY_LIGHT] = "HOLY_LIGHT"
____exports.CollectibleType.HOST_HAT = 375
____exports.CollectibleType[____exports.CollectibleType.HOST_HAT] = "HOST_HAT"
____exports.CollectibleType.RESTOCK = 376
____exports.CollectibleType[____exports.CollectibleType.RESTOCK] = "RESTOCK"
____exports.CollectibleType.BURSTING_SACK = 377
____exports.CollectibleType[____exports.CollectibleType.BURSTING_SACK] = "BURSTING_SACK"
____exports.CollectibleType.NUMBER_TWO = 378
____exports.CollectibleType[____exports.CollectibleType.NUMBER_TWO] = "NUMBER_TWO"
____exports.CollectibleType.PUPULA_DUPLEX = 379
____exports.CollectibleType[____exports.CollectibleType.PUPULA_DUPLEX] = "PUPULA_DUPLEX"
____exports.CollectibleType.PAY_TO_PLAY = 380
____exports.CollectibleType[____exports.CollectibleType.PAY_TO_PLAY] = "PAY_TO_PLAY"
____exports.CollectibleType.EDENS_BLESSING = 381
____exports.CollectibleType[____exports.CollectibleType.EDENS_BLESSING] = "EDENS_BLESSING"
____exports.CollectibleType.FRIEND_BALL = 382
____exports.CollectibleType[____exports.CollectibleType.FRIEND_BALL] = "FRIEND_BALL"
____exports.CollectibleType.TEAR_DETONATOR = 383
____exports.CollectibleType[____exports.CollectibleType.TEAR_DETONATOR] = "TEAR_DETONATOR"
____exports.CollectibleType.LIL_GURDY = 384
____exports.CollectibleType[____exports.CollectibleType.LIL_GURDY] = "LIL_GURDY"
____exports.CollectibleType.BUMBO = 385
____exports.CollectibleType[____exports.CollectibleType.BUMBO] = "BUMBO"
____exports.CollectibleType.D12 = 386
____exports.CollectibleType[____exports.CollectibleType.D12] = "D12"
____exports.CollectibleType.CENSER = 387
____exports.CollectibleType[____exports.CollectibleType.CENSER] = "CENSER"
____exports.CollectibleType.KEY_BUM = 388
____exports.CollectibleType[____exports.CollectibleType.KEY_BUM] = "KEY_BUM"
____exports.CollectibleType.RUNE_BAG = 389
____exports.CollectibleType[____exports.CollectibleType.RUNE_BAG] = "RUNE_BAG"
____exports.CollectibleType.SERAPHIM = 390
____exports.CollectibleType[____exports.CollectibleType.SERAPHIM] = "SERAPHIM"
____exports.CollectibleType.BETRAYAL = 391
____exports.CollectibleType[____exports.CollectibleType.BETRAYAL] = "BETRAYAL"
____exports.CollectibleType.ZODIAC = 392
____exports.CollectibleType[____exports.CollectibleType.ZODIAC] = "ZODIAC"
____exports.CollectibleType.SERPENTS_KISS = 393
____exports.CollectibleType[____exports.CollectibleType.SERPENTS_KISS] = "SERPENTS_KISS"
____exports.CollectibleType.MARKED = 394
____exports.CollectibleType[____exports.CollectibleType.MARKED] = "MARKED"
____exports.CollectibleType.TECH_X = 395
____exports.CollectibleType[____exports.CollectibleType.TECH_X] = "TECH_X"
____exports.CollectibleType.VENTRICLE_RAZOR = 396
____exports.CollectibleType[____exports.CollectibleType.VENTRICLE_RAZOR] = "VENTRICLE_RAZOR"
____exports.CollectibleType.TRACTOR_BEAM = 397
____exports.CollectibleType[____exports.CollectibleType.TRACTOR_BEAM] = "TRACTOR_BEAM"
____exports.CollectibleType.GODS_FLESH = 398
____exports.CollectibleType[____exports.CollectibleType.GODS_FLESH] = "GODS_FLESH"
____exports.CollectibleType.MAW_OF_THE_VOID = 399
____exports.CollectibleType[____exports.CollectibleType.MAW_OF_THE_VOID] = "MAW_OF_THE_VOID"
____exports.CollectibleType.SPEAR_OF_DESTINY = 400
____exports.CollectibleType[____exports.CollectibleType.SPEAR_OF_DESTINY] = "SPEAR_OF_DESTINY"
____exports.CollectibleType.EXPLOSIVO = 401
____exports.CollectibleType[____exports.CollectibleType.EXPLOSIVO] = "EXPLOSIVO"
____exports.CollectibleType.CHAOS = 402
____exports.CollectibleType[____exports.CollectibleType.CHAOS] = "CHAOS"
____exports.CollectibleType.SPIDER_MOD = 403
____exports.CollectibleType[____exports.CollectibleType.SPIDER_MOD] = "SPIDER_MOD"
____exports.CollectibleType.FARTING_BABY = 404
____exports.CollectibleType[____exports.CollectibleType.FARTING_BABY] = "FARTING_BABY"
____exports.CollectibleType.GB_BUG = 405
____exports.CollectibleType[____exports.CollectibleType.GB_BUG] = "GB_BUG"
____exports.CollectibleType.D8 = 406
____exports.CollectibleType[____exports.CollectibleType.D8] = "D8"
____exports.CollectibleType.PURITY = 407
____exports.CollectibleType[____exports.CollectibleType.PURITY] = "PURITY"
____exports.CollectibleType.ATHAME = 408
____exports.CollectibleType[____exports.CollectibleType.ATHAME] = "ATHAME"
____exports.CollectibleType.EMPTY_VESSEL = 409
____exports.CollectibleType[____exports.CollectibleType.EMPTY_VESSEL] = "EMPTY_VESSEL"
____exports.CollectibleType.EVIL_EYE = 410
____exports.CollectibleType[____exports.CollectibleType.EVIL_EYE] = "EVIL_EYE"
____exports.CollectibleType.LUSTY_BLOOD = 411
____exports.CollectibleType[____exports.CollectibleType.LUSTY_BLOOD] = "LUSTY_BLOOD"
____exports.CollectibleType.CAMBION_CONCEPTION = 412
____exports.CollectibleType[____exports.CollectibleType.CAMBION_CONCEPTION] = "CAMBION_CONCEPTION"
____exports.CollectibleType.IMMACULATE_CONCEPTION = 413
____exports.CollectibleType[____exports.CollectibleType.IMMACULATE_CONCEPTION] = "IMMACULATE_CONCEPTION"
____exports.CollectibleType.MORE_OPTIONS = 414
____exports.CollectibleType[____exports.CollectibleType.MORE_OPTIONS] = "MORE_OPTIONS"
____exports.CollectibleType.CROWN_OF_LIGHT = 415
____exports.CollectibleType[____exports.CollectibleType.CROWN_OF_LIGHT] = "CROWN_OF_LIGHT"
____exports.CollectibleType.DEEP_POCKETS = 416
____exports.CollectibleType[____exports.CollectibleType.DEEP_POCKETS] = "DEEP_POCKETS"
____exports.CollectibleType.SUCCUBUS = 417
____exports.CollectibleType[____exports.CollectibleType.SUCCUBUS] = "SUCCUBUS"
____exports.CollectibleType.FRUIT_CAKE = 418
____exports.CollectibleType[____exports.CollectibleType.FRUIT_CAKE] = "FRUIT_CAKE"
____exports.CollectibleType.TELEPORT_2 = 419
____exports.CollectibleType[____exports.CollectibleType.TELEPORT_2] = "TELEPORT_2"
____exports.CollectibleType.BLACK_POWDER = 420
____exports.CollectibleType[____exports.CollectibleType.BLACK_POWDER] = "BLACK_POWDER"
____exports.CollectibleType.KIDNEY_BEAN = 421
____exports.CollectibleType[____exports.CollectibleType.KIDNEY_BEAN] = "KIDNEY_BEAN"
____exports.CollectibleType.GLOWING_HOUR_GLASS = 422
____exports.CollectibleType[____exports.CollectibleType.GLOWING_HOUR_GLASS] = "GLOWING_HOUR_GLASS"
____exports.CollectibleType.CIRCLE_OF_PROTECTION = 423
____exports.CollectibleType[____exports.CollectibleType.CIRCLE_OF_PROTECTION] = "CIRCLE_OF_PROTECTION"
____exports.CollectibleType.SACK_HEAD = 424
____exports.CollectibleType[____exports.CollectibleType.SACK_HEAD] = "SACK_HEAD"
____exports.CollectibleType.NIGHT_LIGHT = 425
____exports.CollectibleType[____exports.CollectibleType.NIGHT_LIGHT] = "NIGHT_LIGHT"
____exports.CollectibleType.OBSESSED_FAN = 426
____exports.CollectibleType[____exports.CollectibleType.OBSESSED_FAN] = "OBSESSED_FAN"
____exports.CollectibleType.MINE_CRAFTER = 427
____exports.CollectibleType[____exports.CollectibleType.MINE_CRAFTER] = "MINE_CRAFTER"
____exports.CollectibleType.PJS = 428
____exports.CollectibleType[____exports.CollectibleType.PJS] = "PJS"
____exports.CollectibleType.HEAD_OF_THE_KEEPER = 429
____exports.CollectibleType[____exports.CollectibleType.HEAD_OF_THE_KEEPER] = "HEAD_OF_THE_KEEPER"
____exports.CollectibleType.PAPA_FLY = 430
____exports.CollectibleType[____exports.CollectibleType.PAPA_FLY] = "PAPA_FLY"
____exports.CollectibleType.MULTIDIMENSIONAL_BABY = 431
____exports.CollectibleType[____exports.CollectibleType.MULTIDIMENSIONAL_BABY] = "MULTIDIMENSIONAL_BABY"
____exports.CollectibleType.GLITTER_BOMBS = 432
____exports.CollectibleType[____exports.CollectibleType.GLITTER_BOMBS] = "GLITTER_BOMBS"
____exports.CollectibleType.MY_SHADOW = 433
____exports.CollectibleType[____exports.CollectibleType.MY_SHADOW] = "MY_SHADOW"
____exports.CollectibleType.JAR_OF_FLIES = 434
____exports.CollectibleType[____exports.CollectibleType.JAR_OF_FLIES] = "JAR_OF_FLIES"
____exports.CollectibleType.LIL_LOKI = 435
____exports.CollectibleType[____exports.CollectibleType.LIL_LOKI] = "LIL_LOKI"
____exports.CollectibleType.MILK = 436
____exports.CollectibleType[____exports.CollectibleType.MILK] = "MILK"
____exports.CollectibleType.D7 = 437
____exports.CollectibleType[____exports.CollectibleType.D7] = "D7"
____exports.CollectibleType.BINKY = 438
____exports.CollectibleType[____exports.CollectibleType.BINKY] = "BINKY"
____exports.CollectibleType.MOMS_BOX = 439
____exports.CollectibleType[____exports.CollectibleType.MOMS_BOX] = "MOMS_BOX"
____exports.CollectibleType.KIDNEY_STONE = 440
____exports.CollectibleType[____exports.CollectibleType.KIDNEY_STONE] = "KIDNEY_STONE"
____exports.CollectibleType.MEGA_BLAST = 441
____exports.CollectibleType[____exports.CollectibleType.MEGA_BLAST] = "MEGA_BLAST"
____exports.CollectibleType.DARK_PRINCES_CROWN = 442
____exports.CollectibleType[____exports.CollectibleType.DARK_PRINCES_CROWN] = "DARK_PRINCES_CROWN"
____exports.CollectibleType.APPLE = 443
____exports.CollectibleType[____exports.CollectibleType.APPLE] = "APPLE"
____exports.CollectibleType.LEAD_PENCIL = 444
____exports.CollectibleType[____exports.CollectibleType.LEAD_PENCIL] = "LEAD_PENCIL"
____exports.CollectibleType.DOG_TOOTH = 445
____exports.CollectibleType[____exports.CollectibleType.DOG_TOOTH] = "DOG_TOOTH"
____exports.CollectibleType.DEAD_TOOTH = 446
____exports.CollectibleType[____exports.CollectibleType.DEAD_TOOTH] = "DEAD_TOOTH"
____exports.CollectibleType.LINGER_BEAN = 447
____exports.CollectibleType[____exports.CollectibleType.LINGER_BEAN] = "LINGER_BEAN"
____exports.CollectibleType.SHARD_OF_GLASS = 448
____exports.CollectibleType[____exports.CollectibleType.SHARD_OF_GLASS] = "SHARD_OF_GLASS"
____exports.CollectibleType.METAL_PLATE = 449
____exports.CollectibleType[____exports.CollectibleType.METAL_PLATE] = "METAL_PLATE"
____exports.CollectibleType.EYE_OF_GREED = 450
____exports.CollectibleType[____exports.CollectibleType.EYE_OF_GREED] = "EYE_OF_GREED"
____exports.CollectibleType.TAROT_CLOTH = 451
____exports.CollectibleType[____exports.CollectibleType.TAROT_CLOTH] = "TAROT_CLOTH"
____exports.CollectibleType.VARICOSE_VEINS = 452
____exports.CollectibleType[____exports.CollectibleType.VARICOSE_VEINS] = "VARICOSE_VEINS"
____exports.CollectibleType.COMPOUND_FRACTURE = 453
____exports.CollectibleType[____exports.CollectibleType.COMPOUND_FRACTURE] = "COMPOUND_FRACTURE"
____exports.CollectibleType.POLYDACTYLY = 454
____exports.CollectibleType[____exports.CollectibleType.POLYDACTYLY] = "POLYDACTYLY"
____exports.CollectibleType.DADS_LOST_COIN = 455
____exports.CollectibleType[____exports.CollectibleType.DADS_LOST_COIN] = "DADS_LOST_COIN"
____exports.CollectibleType.MIDNIGHT_SNACK = 456
____exports.CollectibleType[____exports.CollectibleType.MIDNIGHT_SNACK] = "MIDNIGHT_SNACK"
____exports.CollectibleType.CONE_HEAD = 457
____exports.CollectibleType[____exports.CollectibleType.CONE_HEAD] = "CONE_HEAD"
____exports.CollectibleType.BELLY_BUTTON = 458
____exports.CollectibleType[____exports.CollectibleType.BELLY_BUTTON] = "BELLY_BUTTON"
____exports.CollectibleType.SINUS_INFECTION = 459
____exports.CollectibleType[____exports.CollectibleType.SINUS_INFECTION] = "SINUS_INFECTION"
____exports.CollectibleType.GLAUCOMA = 460
____exports.CollectibleType[____exports.CollectibleType.GLAUCOMA] = "GLAUCOMA"
____exports.CollectibleType.PARASITOID = 461
____exports.CollectibleType[____exports.CollectibleType.PARASITOID] = "PARASITOID"
____exports.CollectibleType.EYE_OF_BELIAL = 462
____exports.CollectibleType[____exports.CollectibleType.EYE_OF_BELIAL] = "EYE_OF_BELIAL"
____exports.CollectibleType.SULFURIC_ACID = 463
____exports.CollectibleType[____exports.CollectibleType.SULFURIC_ACID] = "SULFURIC_ACID"
____exports.CollectibleType.GLYPH_OF_BALANCE = 464
____exports.CollectibleType[____exports.CollectibleType.GLYPH_OF_BALANCE] = "GLYPH_OF_BALANCE"
____exports.CollectibleType.ANALOG_STICK = 465
____exports.CollectibleType[____exports.CollectibleType.ANALOG_STICK] = "ANALOG_STICK"
____exports.CollectibleType.CONTAGION = 466
____exports.CollectibleType[____exports.CollectibleType.CONTAGION] = "CONTAGION"
____exports.CollectibleType.FINGER = 467
____exports.CollectibleType[____exports.CollectibleType.FINGER] = "FINGER"
____exports.CollectibleType.SHADE = 468
____exports.CollectibleType[____exports.CollectibleType.SHADE] = "SHADE"
____exports.CollectibleType.DEPRESSION = 469
____exports.CollectibleType[____exports.CollectibleType.DEPRESSION] = "DEPRESSION"
____exports.CollectibleType.HUSHY = 470
____exports.CollectibleType[____exports.CollectibleType.HUSHY] = "HUSHY"
____exports.CollectibleType.LIL_MONSTRO = 471
____exports.CollectibleType[____exports.CollectibleType.LIL_MONSTRO] = "LIL_MONSTRO"
____exports.CollectibleType.KING_BABY = 472
____exports.CollectibleType[____exports.CollectibleType.KING_BABY] = "KING_BABY"
____exports.CollectibleType.BIG_CHUBBY = 473
____exports.CollectibleType[____exports.CollectibleType.BIG_CHUBBY] = "BIG_CHUBBY"
____exports.CollectibleType.BROKEN_GLASS_CANNON = 474
____exports.CollectibleType[____exports.CollectibleType.BROKEN_GLASS_CANNON] = "BROKEN_GLASS_CANNON"
____exports.CollectibleType.PLAN_C = 475
____exports.CollectibleType[____exports.CollectibleType.PLAN_C] = "PLAN_C"
____exports.CollectibleType.D1 = 476
____exports.CollectibleType[____exports.CollectibleType.D1] = "D1"
____exports.CollectibleType.VOID = 477
____exports.CollectibleType[____exports.CollectibleType.VOID] = "VOID"
____exports.CollectibleType.PAUSE = 478
____exports.CollectibleType[____exports.CollectibleType.PAUSE] = "PAUSE"
____exports.CollectibleType.SMELTER = 479
____exports.CollectibleType[____exports.CollectibleType.SMELTER] = "SMELTER"
____exports.CollectibleType.COMPOST = 480
____exports.CollectibleType[____exports.CollectibleType.COMPOST] = "COMPOST"
____exports.CollectibleType.DATAMINER = 481
____exports.CollectibleType[____exports.CollectibleType.DATAMINER] = "DATAMINER"
____exports.CollectibleType.CLICKER = 482
____exports.CollectibleType[____exports.CollectibleType.CLICKER] = "CLICKER"
____exports.CollectibleType.MAMA_MEGA = 483
____exports.CollectibleType[____exports.CollectibleType.MAMA_MEGA] = "MAMA_MEGA"
____exports.CollectibleType.WAIT_WHAT = 484
____exports.CollectibleType[____exports.CollectibleType.WAIT_WHAT] = "WAIT_WHAT"
____exports.CollectibleType.CROOKED_PENNY = 485
____exports.CollectibleType[____exports.CollectibleType.CROOKED_PENNY] = "CROOKED_PENNY"
____exports.CollectibleType.DULL_RAZOR = 486
____exports.CollectibleType[____exports.CollectibleType.DULL_RAZOR] = "DULL_RAZOR"
____exports.CollectibleType.POTATO_PEELER = 487
____exports.CollectibleType[____exports.CollectibleType.POTATO_PEELER] = "POTATO_PEELER"
____exports.CollectibleType.METRONOME = 488
____exports.CollectibleType[____exports.CollectibleType.METRONOME] = "METRONOME"
____exports.CollectibleType.D_INFINITY = 489
____exports.CollectibleType[____exports.CollectibleType.D_INFINITY] = "D_INFINITY"
____exports.CollectibleType.EDENS_SOUL = 490
____exports.CollectibleType[____exports.CollectibleType.EDENS_SOUL] = "EDENS_SOUL"
____exports.CollectibleType.ACID_BABY = 491
____exports.CollectibleType[____exports.CollectibleType.ACID_BABY] = "ACID_BABY"
____exports.CollectibleType.YO_LISTEN = 492
____exports.CollectibleType[____exports.CollectibleType.YO_LISTEN] = "YO_LISTEN"
____exports.CollectibleType.ADRENALINE = 493
____exports.CollectibleType[____exports.CollectibleType.ADRENALINE] = "ADRENALINE"
____exports.CollectibleType.JACOBS_LADDER = 494
____exports.CollectibleType[____exports.CollectibleType.JACOBS_LADDER] = "JACOBS_LADDER"
____exports.CollectibleType.GHOST_PEPPER = 495
____exports.CollectibleType[____exports.CollectibleType.GHOST_PEPPER] = "GHOST_PEPPER"
____exports.CollectibleType.EUTHANASIA = 496
____exports.CollectibleType[____exports.CollectibleType.EUTHANASIA] = "EUTHANASIA"
____exports.CollectibleType.CAMO_UNDIES = 497
____exports.CollectibleType[____exports.CollectibleType.CAMO_UNDIES] = "CAMO_UNDIES"
____exports.CollectibleType.DUALITY = 498
____exports.CollectibleType[____exports.CollectibleType.DUALITY] = "DUALITY"
____exports.CollectibleType.EUCHARIST = 499
____exports.CollectibleType[____exports.CollectibleType.EUCHARIST] = "EUCHARIST"
____exports.CollectibleType.SACK_OF_SACKS = 500
____exports.CollectibleType[____exports.CollectibleType.SACK_OF_SACKS] = "SACK_OF_SACKS"
____exports.CollectibleType.GREEDS_GULLET = 501
____exports.CollectibleType[____exports.CollectibleType.GREEDS_GULLET] = "GREEDS_GULLET"
____exports.CollectibleType.LARGE_ZIT = 502
____exports.CollectibleType[____exports.CollectibleType.LARGE_ZIT] = "LARGE_ZIT"
____exports.CollectibleType.LITTLE_HORN = 503
____exports.CollectibleType[____exports.CollectibleType.LITTLE_HORN] = "LITTLE_HORN"
____exports.CollectibleType.BROWN_NUGGET = 504
____exports.CollectibleType[____exports.CollectibleType.BROWN_NUGGET] = "BROWN_NUGGET"
____exports.CollectibleType.POKE_GO = 505
____exports.CollectibleType[____exports.CollectibleType.POKE_GO] = "POKE_GO"
____exports.CollectibleType.BACKSTABBER = 506
____exports.CollectibleType[____exports.CollectibleType.BACKSTABBER] = "BACKSTABBER"
____exports.CollectibleType.SHARP_STRAW = 507
____exports.CollectibleType[____exports.CollectibleType.SHARP_STRAW] = "SHARP_STRAW"
____exports.CollectibleType.MOMS_RAZOR = 508
____exports.CollectibleType[____exports.CollectibleType.MOMS_RAZOR] = "MOMS_RAZOR"
____exports.CollectibleType.BLOODSHOT_EYE = 509
____exports.CollectibleType[____exports.CollectibleType.BLOODSHOT_EYE] = "BLOODSHOT_EYE"
____exports.CollectibleType.DELIRIOUS = 510
____exports.CollectibleType[____exports.CollectibleType.DELIRIOUS] = "DELIRIOUS"
____exports.CollectibleType.ANGRY_FLY = 511
____exports.CollectibleType[____exports.CollectibleType.ANGRY_FLY] = "ANGRY_FLY"
____exports.CollectibleType.BLACK_HOLE = 512
____exports.CollectibleType[____exports.CollectibleType.BLACK_HOLE] = "BLACK_HOLE"
____exports.CollectibleType.BOZO = 513
____exports.CollectibleType[____exports.CollectibleType.BOZO] = "BOZO"
____exports.CollectibleType.BROKEN_MODEM = 514
____exports.CollectibleType[____exports.CollectibleType.BROKEN_MODEM] = "BROKEN_MODEM"
____exports.CollectibleType.MYSTERY_GIFT = 515
____exports.CollectibleType[____exports.CollectibleType.MYSTERY_GIFT] = "MYSTERY_GIFT"
____exports.CollectibleType.SPRINKLER = 516
____exports.CollectibleType[____exports.CollectibleType.SPRINKLER] = "SPRINKLER"
____exports.CollectibleType.FAST_BOMBS = 517
____exports.CollectibleType[____exports.CollectibleType.FAST_BOMBS] = "FAST_BOMBS"
____exports.CollectibleType.BUDDY_IN_A_BOX = 518
____exports.CollectibleType[____exports.CollectibleType.BUDDY_IN_A_BOX] = "BUDDY_IN_A_BOX"
____exports.CollectibleType.LIL_DELIRIUM = 519
____exports.CollectibleType[____exports.CollectibleType.LIL_DELIRIUM] = "LIL_DELIRIUM"
____exports.CollectibleType.JUMPER_CABLES = 520
____exports.CollectibleType[____exports.CollectibleType.JUMPER_CABLES] = "JUMPER_CABLES"
____exports.CollectibleType.COUPON = 521
____exports.CollectibleType[____exports.CollectibleType.COUPON] = "COUPON"
____exports.CollectibleType.TELEKINESIS = 522
____exports.CollectibleType[____exports.CollectibleType.TELEKINESIS] = "TELEKINESIS"
____exports.CollectibleType.MOVING_BOX = 523
____exports.CollectibleType[____exports.CollectibleType.MOVING_BOX] = "MOVING_BOX"
____exports.CollectibleType.TECHNOLOGY_ZERO = 524
____exports.CollectibleType[____exports.CollectibleType.TECHNOLOGY_ZERO] = "TECHNOLOGY_ZERO"
____exports.CollectibleType.LEPROSY = 525
____exports.CollectibleType[____exports.CollectibleType.LEPROSY] = "LEPROSY"
____exports.CollectibleType.SEVEN_SEALS = 526
____exports.CollectibleType[____exports.CollectibleType.SEVEN_SEALS] = "SEVEN_SEALS"
____exports.CollectibleType.MR_ME = 527
____exports.CollectibleType[____exports.CollectibleType.MR_ME] = "MR_ME"
____exports.CollectibleType.ANGELIC_PRISM = 528
____exports.CollectibleType[____exports.CollectibleType.ANGELIC_PRISM] = "ANGELIC_PRISM"
____exports.CollectibleType.POP = 529
____exports.CollectibleType[____exports.CollectibleType.POP] = "POP"
____exports.CollectibleType.DEATHS_LIST = 530
____exports.CollectibleType[____exports.CollectibleType.DEATHS_LIST] = "DEATHS_LIST"
____exports.CollectibleType.HAEMOLACRIA = 531
____exports.CollectibleType[____exports.CollectibleType.HAEMOLACRIA] = "HAEMOLACRIA"
____exports.CollectibleType.LACHRYPHAGY = 532
____exports.CollectibleType[____exports.CollectibleType.LACHRYPHAGY] = "LACHRYPHAGY"
____exports.CollectibleType.TRISAGION = 533
____exports.CollectibleType[____exports.CollectibleType.TRISAGION] = "TRISAGION"
____exports.CollectibleType.SCHOOLBAG = 534
____exports.CollectibleType[____exports.CollectibleType.SCHOOLBAG] = "SCHOOLBAG"
____exports.CollectibleType.BLANKET = 535
____exports.CollectibleType[____exports.CollectibleType.BLANKET] = "BLANKET"
____exports.CollectibleType.SACRIFICIAL_ALTAR = 536
____exports.CollectibleType[____exports.CollectibleType.SACRIFICIAL_ALTAR] = "SACRIFICIAL_ALTAR"
____exports.CollectibleType.LIL_SPEWER = 537
____exports.CollectibleType[____exports.CollectibleType.LIL_SPEWER] = "LIL_SPEWER"
____exports.CollectibleType.MARBLES = 538
____exports.CollectibleType[____exports.CollectibleType.MARBLES] = "MARBLES"
____exports.CollectibleType.MYSTERY_EGG = 539
____exports.CollectibleType[____exports.CollectibleType.MYSTERY_EGG] = "MYSTERY_EGG"
____exports.CollectibleType.FLAT_STONE = 540
____exports.CollectibleType[____exports.CollectibleType.FLAT_STONE] = "FLAT_STONE"
____exports.CollectibleType.MARROW = 541
____exports.CollectibleType[____exports.CollectibleType.MARROW] = "MARROW"
____exports.CollectibleType.SLIPPED_RIB = 542
____exports.CollectibleType[____exports.CollectibleType.SLIPPED_RIB] = "SLIPPED_RIB"
____exports.CollectibleType.HALLOWED_GROUND = 543
____exports.CollectibleType[____exports.CollectibleType.HALLOWED_GROUND] = "HALLOWED_GROUND"
____exports.CollectibleType.POINTY_RIB = 544
____exports.CollectibleType[____exports.CollectibleType.POINTY_RIB] = "POINTY_RIB"
____exports.CollectibleType.BOOK_OF_THE_DEAD = 545
____exports.CollectibleType[____exports.CollectibleType.BOOK_OF_THE_DEAD] = "BOOK_OF_THE_DEAD"
____exports.CollectibleType.DADS_RING = 546
____exports.CollectibleType[____exports.CollectibleType.DADS_RING] = "DADS_RING"
____exports.CollectibleType.DIVORCE_PAPERS = 547
____exports.CollectibleType[____exports.CollectibleType.DIVORCE_PAPERS] = "DIVORCE_PAPERS"
____exports.CollectibleType.JAW_BONE = 548
____exports.CollectibleType[____exports.CollectibleType.JAW_BONE] = "JAW_BONE"
____exports.CollectibleType.BRITTLE_BONES = 549
____exports.CollectibleType[____exports.CollectibleType.BRITTLE_BONES] = "BRITTLE_BONES"
____exports.CollectibleType.BROKEN_SHOVEL_1 = 550
____exports.CollectibleType[____exports.CollectibleType.BROKEN_SHOVEL_1] = "BROKEN_SHOVEL_1"
____exports.CollectibleType.BROKEN_SHOVEL_2 = 551
____exports.CollectibleType[____exports.CollectibleType.BROKEN_SHOVEL_2] = "BROKEN_SHOVEL_2"
____exports.CollectibleType.MOMS_SHOVEL = 552
____exports.CollectibleType[____exports.CollectibleType.MOMS_SHOVEL] = "MOMS_SHOVEL"
____exports.CollectibleType.MUCORMYCOSIS = 553
____exports.CollectibleType[____exports.CollectibleType.MUCORMYCOSIS] = "MUCORMYCOSIS"
____exports.CollectibleType.TWO_SPOOKY = 554
____exports.CollectibleType[____exports.CollectibleType.TWO_SPOOKY] = "TWO_SPOOKY"
____exports.CollectibleType.GOLDEN_RAZOR = 555
____exports.CollectibleType[____exports.CollectibleType.GOLDEN_RAZOR] = "GOLDEN_RAZOR"
____exports.CollectibleType.SULFUR = 556
____exports.CollectibleType[____exports.CollectibleType.SULFUR] = "SULFUR"
____exports.CollectibleType.FORTUNE_COOKIE = 557
____exports.CollectibleType[____exports.CollectibleType.FORTUNE_COOKIE] = "FORTUNE_COOKIE"
____exports.CollectibleType.EYE_SORE = 558
____exports.CollectibleType[____exports.CollectibleType.EYE_SORE] = "EYE_SORE"
____exports.CollectibleType.ONE_HUNDRED_TWENTY_VOLT = 559
____exports.CollectibleType[____exports.CollectibleType.ONE_HUNDRED_TWENTY_VOLT] = "ONE_HUNDRED_TWENTY_VOLT"
____exports.CollectibleType.IT_HURTS = 560
____exports.CollectibleType[____exports.CollectibleType.IT_HURTS] = "IT_HURTS"
____exports.CollectibleType.ALMOND_MILK = 561
____exports.CollectibleType[____exports.CollectibleType.ALMOND_MILK] = "ALMOND_MILK"
____exports.CollectibleType.ROCK_BOTTOM = 562
____exports.CollectibleType[____exports.CollectibleType.ROCK_BOTTOM] = "ROCK_BOTTOM"
____exports.CollectibleType.NANCY_BOMBS = 563
____exports.CollectibleType[____exports.CollectibleType.NANCY_BOMBS] = "NANCY_BOMBS"
____exports.CollectibleType.BAR_OF_SOAP = 564
____exports.CollectibleType[____exports.CollectibleType.BAR_OF_SOAP] = "BAR_OF_SOAP"
____exports.CollectibleType.BLOOD_PUPPY = 565
____exports.CollectibleType[____exports.CollectibleType.BLOOD_PUPPY] = "BLOOD_PUPPY"
____exports.CollectibleType.DREAM_CATCHER = 566
____exports.CollectibleType[____exports.CollectibleType.DREAM_CATCHER] = "DREAM_CATCHER"
____exports.CollectibleType.PASCHAL_CANDLE = 567
____exports.CollectibleType[____exports.CollectibleType.PASCHAL_CANDLE] = "PASCHAL_CANDLE"
____exports.CollectibleType.DIVINE_INTERVENTION = 568
____exports.CollectibleType[____exports.CollectibleType.DIVINE_INTERVENTION] = "DIVINE_INTERVENTION"
____exports.CollectibleType.BLOOD_OATH = 569
____exports.CollectibleType[____exports.CollectibleType.BLOOD_OATH] = "BLOOD_OATH"
____exports.CollectibleType.PLAYDOUGH_COOKIE = 570
____exports.CollectibleType[____exports.CollectibleType.PLAYDOUGH_COOKIE] = "PLAYDOUGH_COOKIE"
____exports.CollectibleType.SOCKS = 571
____exports.CollectibleType[____exports.CollectibleType.SOCKS] = "SOCKS"
____exports.CollectibleType.EYE_OF_THE_OCCULT = 572
____exports.CollectibleType[____exports.CollectibleType.EYE_OF_THE_OCCULT] = "EYE_OF_THE_OCCULT"
____exports.CollectibleType.IMMACULATE_HEART = 573
____exports.CollectibleType[____exports.CollectibleType.IMMACULATE_HEART] = "IMMACULATE_HEART"
____exports.CollectibleType.MONSTRANCE = 574
____exports.CollectibleType[____exports.CollectibleType.MONSTRANCE] = "MONSTRANCE"
____exports.CollectibleType.INTRUDER = 575
____exports.CollectibleType[____exports.CollectibleType.INTRUDER] = "INTRUDER"
____exports.CollectibleType.DIRTY_MIND = 576
____exports.CollectibleType[____exports.CollectibleType.DIRTY_MIND] = "DIRTY_MIND"
____exports.CollectibleType.DAMOCLES = 577
____exports.CollectibleType[____exports.CollectibleType.DAMOCLES] = "DAMOCLES"
____exports.CollectibleType.FREE_LEMONADE = 578
____exports.CollectibleType[____exports.CollectibleType.FREE_LEMONADE] = "FREE_LEMONADE"
____exports.CollectibleType.SPIRIT_SWORD = 579
____exports.CollectibleType[____exports.CollectibleType.SPIRIT_SWORD] = "SPIRIT_SWORD"
____exports.CollectibleType.RED_KEY = 580
____exports.CollectibleType[____exports.CollectibleType.RED_KEY] = "RED_KEY"
____exports.CollectibleType.PSY_FLY = 581
____exports.CollectibleType[____exports.CollectibleType.PSY_FLY] = "PSY_FLY"
____exports.CollectibleType.WAVY_CAP = 582
____exports.CollectibleType[____exports.CollectibleType.WAVY_CAP] = "WAVY_CAP"
____exports.CollectibleType.ROCKET_IN_A_JAR = 583
____exports.CollectibleType[____exports.CollectibleType.ROCKET_IN_A_JAR] = "ROCKET_IN_A_JAR"
____exports.CollectibleType.BOOK_OF_VIRTUES = 584
____exports.CollectibleType[____exports.CollectibleType.BOOK_OF_VIRTUES] = "BOOK_OF_VIRTUES"
____exports.CollectibleType.ALABASTER_BOX = 585
____exports.CollectibleType[____exports.CollectibleType.ALABASTER_BOX] = "ALABASTER_BOX"
____exports.CollectibleType.STAIRWAY = 586
____exports.CollectibleType[____exports.CollectibleType.STAIRWAY] = "STAIRWAY"
____exports.CollectibleType.SOL = 588
____exports.CollectibleType[____exports.CollectibleType.SOL] = "SOL"
____exports.CollectibleType.LUNA = 589
____exports.CollectibleType[____exports.CollectibleType.LUNA] = "LUNA"
____exports.CollectibleType.MERCURIUS = 590
____exports.CollectibleType[____exports.CollectibleType.MERCURIUS] = "MERCURIUS"
____exports.CollectibleType.VENUS = 591
____exports.CollectibleType[____exports.CollectibleType.VENUS] = "VENUS"
____exports.CollectibleType.TERRA = 592
____exports.CollectibleType[____exports.CollectibleType.TERRA] = "TERRA"
____exports.CollectibleType.MARS = 593
____exports.CollectibleType[____exports.CollectibleType.MARS] = "MARS"
____exports.CollectibleType.JUPITER = 594
____exports.CollectibleType[____exports.CollectibleType.JUPITER] = "JUPITER"
____exports.CollectibleType.SATURNUS = 595
____exports.CollectibleType[____exports.CollectibleType.SATURNUS] = "SATURNUS"
____exports.CollectibleType.URANUS = 596
____exports.CollectibleType[____exports.CollectibleType.URANUS] = "URANUS"
____exports.CollectibleType.NEPTUNUS = 597
____exports.CollectibleType[____exports.CollectibleType.NEPTUNUS] = "NEPTUNUS"
____exports.CollectibleType.PLUTO = 598
____exports.CollectibleType[____exports.CollectibleType.PLUTO] = "PLUTO"
____exports.CollectibleType.VOODOO_HEAD = 599
____exports.CollectibleType[____exports.CollectibleType.VOODOO_HEAD] = "VOODOO_HEAD"
____exports.CollectibleType.EYE_DROPS = 600
____exports.CollectibleType[____exports.CollectibleType.EYE_DROPS] = "EYE_DROPS"
____exports.CollectibleType.ACT_OF_CONTRITION = 601
____exports.CollectibleType[____exports.CollectibleType.ACT_OF_CONTRITION] = "ACT_OF_CONTRITION"
____exports.CollectibleType.MEMBER_CARD = 602
____exports.CollectibleType[____exports.CollectibleType.MEMBER_CARD] = "MEMBER_CARD"
____exports.CollectibleType.BATTERY_PACK = 603
____exports.CollectibleType[____exports.CollectibleType.BATTERY_PACK] = "BATTERY_PACK"
____exports.CollectibleType.MOMS_BRACELET = 604
____exports.CollectibleType[____exports.CollectibleType.MOMS_BRACELET] = "MOMS_BRACELET"
____exports.CollectibleType.SCOOPER = 605
____exports.CollectibleType[____exports.CollectibleType.SCOOPER] = "SCOOPER"
____exports.CollectibleType.OCULAR_RIFT = 606
____exports.CollectibleType[____exports.CollectibleType.OCULAR_RIFT] = "OCULAR_RIFT"
____exports.CollectibleType.BOILED_BABY = 607
____exports.CollectibleType[____exports.CollectibleType.BOILED_BABY] = "BOILED_BABY"
____exports.CollectibleType.FREEZER_BABY = 608
____exports.CollectibleType[____exports.CollectibleType.FREEZER_BABY] = "FREEZER_BABY"
____exports.CollectibleType.ETERNAL_D6 = 609
____exports.CollectibleType[____exports.CollectibleType.ETERNAL_D6] = "ETERNAL_D6"
____exports.CollectibleType.BIRD_CAGE = 610
____exports.CollectibleType[____exports.CollectibleType.BIRD_CAGE] = "BIRD_CAGE"
____exports.CollectibleType.LARYNX = 611
____exports.CollectibleType[____exports.CollectibleType.LARYNX] = "LARYNX"
____exports.CollectibleType.LOST_SOUL = 612
____exports.CollectibleType[____exports.CollectibleType.LOST_SOUL] = "LOST_SOUL"
____exports.CollectibleType.BLOOD_BOMBS = 614
____exports.CollectibleType[____exports.CollectibleType.BLOOD_BOMBS] = "BLOOD_BOMBS"
____exports.CollectibleType.LIL_DUMPY = 615
____exports.CollectibleType[____exports.CollectibleType.LIL_DUMPY] = "LIL_DUMPY"
____exports.CollectibleType.BIRDS_EYE = 616
____exports.CollectibleType[____exports.CollectibleType.BIRDS_EYE] = "BIRDS_EYE"
____exports.CollectibleType.LODESTONE = 617
____exports.CollectibleType[____exports.CollectibleType.LODESTONE] = "LODESTONE"
____exports.CollectibleType.ROTTEN_TOMATO = 618
____exports.CollectibleType[____exports.CollectibleType.ROTTEN_TOMATO] = "ROTTEN_TOMATO"
____exports.CollectibleType.BIRTHRIGHT = 619
____exports.CollectibleType[____exports.CollectibleType.BIRTHRIGHT] = "BIRTHRIGHT"
____exports.CollectibleType.RED_STEW = 621
____exports.CollectibleType[____exports.CollectibleType.RED_STEW] = "RED_STEW"
____exports.CollectibleType.GENESIS = 622
____exports.CollectibleType[____exports.CollectibleType.GENESIS] = "GENESIS"
____exports.CollectibleType.SHARP_KEY = 623
____exports.CollectibleType[____exports.CollectibleType.SHARP_KEY] = "SHARP_KEY"
____exports.CollectibleType.BOOSTER_PACK = 624
____exports.CollectibleType[____exports.CollectibleType.BOOSTER_PACK] = "BOOSTER_PACK"
____exports.CollectibleType.MEGA_MUSH = 625
____exports.CollectibleType[____exports.CollectibleType.MEGA_MUSH] = "MEGA_MUSH"
____exports.CollectibleType.KNIFE_PIECE_1 = 626
____exports.CollectibleType[____exports.CollectibleType.KNIFE_PIECE_1] = "KNIFE_PIECE_1"
____exports.CollectibleType.KNIFE_PIECE_2 = 627
____exports.CollectibleType[____exports.CollectibleType.KNIFE_PIECE_2] = "KNIFE_PIECE_2"
____exports.CollectibleType.DEATH_CERTIFICATE = 628
____exports.CollectibleType[____exports.CollectibleType.DEATH_CERTIFICATE] = "DEATH_CERTIFICATE"
____exports.CollectibleType.BOT_FLY = 629
____exports.CollectibleType[____exports.CollectibleType.BOT_FLY] = "BOT_FLY"
____exports.CollectibleType.MEAT_CLEAVER = 631
____exports.CollectibleType[____exports.CollectibleType.MEAT_CLEAVER] = "MEAT_CLEAVER"
____exports.CollectibleType.EVIL_CHARM = 632
____exports.CollectibleType[____exports.CollectibleType.EVIL_CHARM] = "EVIL_CHARM"
____exports.CollectibleType.DOGMA = 633
____exports.CollectibleType[____exports.CollectibleType.DOGMA] = "DOGMA"
____exports.CollectibleType.PURGATORY = 634
____exports.CollectibleType[____exports.CollectibleType.PURGATORY] = "PURGATORY"
____exports.CollectibleType.STITCHES = 635
____exports.CollectibleType[____exports.CollectibleType.STITCHES] = "STITCHES"
____exports.CollectibleType.R_KEY = 636
____exports.CollectibleType[____exports.CollectibleType.R_KEY] = "R_KEY"
____exports.CollectibleType.KNOCKOUT_DROPS = 637
____exports.CollectibleType[____exports.CollectibleType.KNOCKOUT_DROPS] = "KNOCKOUT_DROPS"
____exports.CollectibleType.ERASER = 638
____exports.CollectibleType[____exports.CollectibleType.ERASER] = "ERASER"
____exports.CollectibleType.YUCK_HEART = 639
____exports.CollectibleType[____exports.CollectibleType.YUCK_HEART] = "YUCK_HEART"
____exports.CollectibleType.URN_OF_SOULS = 640
____exports.CollectibleType[____exports.CollectibleType.URN_OF_SOULS] = "URN_OF_SOULS"
____exports.CollectibleType.AKELDAMA = 641
____exports.CollectibleType[____exports.CollectibleType.AKELDAMA] = "AKELDAMA"
____exports.CollectibleType.MAGIC_SKIN = 642
____exports.CollectibleType[____exports.CollectibleType.MAGIC_SKIN] = "MAGIC_SKIN"
____exports.CollectibleType.REVELATION = 643
____exports.CollectibleType[____exports.CollectibleType.REVELATION] = "REVELATION"
____exports.CollectibleType.CONSOLATION_PRIZE = 644
____exports.CollectibleType[____exports.CollectibleType.CONSOLATION_PRIZE] = "CONSOLATION_PRIZE"
____exports.CollectibleType.TINYTOMA = 645
____exports.CollectibleType[____exports.CollectibleType.TINYTOMA] = "TINYTOMA"
____exports.CollectibleType.BRIMSTONE_BOMBS = 646
____exports.CollectibleType[____exports.CollectibleType.BRIMSTONE_BOMBS] = "BRIMSTONE_BOMBS"
____exports.CollectibleType.FOUR_FIVE_VOLT = 647
____exports.CollectibleType[____exports.CollectibleType.FOUR_FIVE_VOLT] = "FOUR_FIVE_VOLT"
____exports.CollectibleType.FRUITY_PLUM = 649
____exports.CollectibleType[____exports.CollectibleType.FRUITY_PLUM] = "FRUITY_PLUM"
____exports.CollectibleType.PLUM_FLUTE = 650
____exports.CollectibleType[____exports.CollectibleType.PLUM_FLUTE] = "PLUM_FLUTE"
____exports.CollectibleType.STAR_OF_BETHLEHEM = 651
____exports.CollectibleType[____exports.CollectibleType.STAR_OF_BETHLEHEM] = "STAR_OF_BETHLEHEM"
____exports.CollectibleType.CUBE_BABY = 652
____exports.CollectibleType[____exports.CollectibleType.CUBE_BABY] = "CUBE_BABY"
____exports.CollectibleType.VADE_RETRO = 653
____exports.CollectibleType[____exports.CollectibleType.VADE_RETRO] = "VADE_RETRO"
____exports.CollectibleType.FALSE_PHD = 654
____exports.CollectibleType[____exports.CollectibleType.FALSE_PHD] = "FALSE_PHD"
____exports.CollectibleType.SPIN_TO_WIN = 655
____exports.CollectibleType[____exports.CollectibleType.SPIN_TO_WIN] = "SPIN_TO_WIN"
____exports.CollectibleType.DAMOCLES_PASSIVE = 656
____exports.CollectibleType[____exports.CollectibleType.DAMOCLES_PASSIVE] = "DAMOCLES_PASSIVE"
____exports.CollectibleType.VASCULITIS = 657
____exports.CollectibleType[____exports.CollectibleType.VASCULITIS] = "VASCULITIS"
____exports.CollectibleType.GIANT_CELL = 658
____exports.CollectibleType[____exports.CollectibleType.GIANT_CELL] = "GIANT_CELL"
____exports.CollectibleType.TROPICAMIDE = 659
____exports.CollectibleType[____exports.CollectibleType.TROPICAMIDE] = "TROPICAMIDE"
____exports.CollectibleType.CARD_READING = 660
____exports.CollectibleType[____exports.CollectibleType.CARD_READING] = "CARD_READING"
____exports.CollectibleType.QUINTS = 661
____exports.CollectibleType[____exports.CollectibleType.QUINTS] = "QUINTS"
____exports.CollectibleType.TOOTH_AND_NAIL = 663
____exports.CollectibleType[____exports.CollectibleType.TOOTH_AND_NAIL] = "TOOTH_AND_NAIL"
____exports.CollectibleType.BINGE_EATER = 664
____exports.CollectibleType[____exports.CollectibleType.BINGE_EATER] = "BINGE_EATER"
____exports.CollectibleType.GUPPYS_EYE = 665
____exports.CollectibleType[____exports.CollectibleType.GUPPYS_EYE] = "GUPPYS_EYE"
____exports.CollectibleType.STRAWMAN = 667
____exports.CollectibleType[____exports.CollectibleType.STRAWMAN] = "STRAWMAN"
____exports.CollectibleType.DADS_NOTE = 668
____exports.CollectibleType[____exports.CollectibleType.DADS_NOTE] = "DADS_NOTE"
____exports.CollectibleType.SAUSAGE = 669
____exports.CollectibleType[____exports.CollectibleType.SAUSAGE] = "SAUSAGE"
____exports.CollectibleType.OPTIONS = 670
____exports.CollectibleType[____exports.CollectibleType.OPTIONS] = "OPTIONS"
____exports.CollectibleType.CANDY_HEART = 671
____exports.CollectibleType[____exports.CollectibleType.CANDY_HEART] = "CANDY_HEART"
____exports.CollectibleType.POUND_OF_FLESH = 672
____exports.CollectibleType[____exports.CollectibleType.POUND_OF_FLESH] = "POUND_OF_FLESH"
____exports.CollectibleType.REDEMPTION = 673
____exports.CollectibleType[____exports.CollectibleType.REDEMPTION] = "REDEMPTION"
____exports.CollectibleType.SPIRIT_SHACKLES = 674
____exports.CollectibleType[____exports.CollectibleType.SPIRIT_SHACKLES] = "SPIRIT_SHACKLES"
____exports.CollectibleType.CRACKED_ORB = 675
____exports.CollectibleType[____exports.CollectibleType.CRACKED_ORB] = "CRACKED_ORB"
____exports.CollectibleType.EMPTY_HEART = 676
____exports.CollectibleType[____exports.CollectibleType.EMPTY_HEART] = "EMPTY_HEART"
____exports.CollectibleType.ASTRAL_PROJECTION = 677
____exports.CollectibleType[____exports.CollectibleType.ASTRAL_PROJECTION] = "ASTRAL_PROJECTION"
____exports.CollectibleType.C_SECTION = 678
____exports.CollectibleType[____exports.CollectibleType.C_SECTION] = "C_SECTION"
____exports.CollectibleType.LIL_ABADDON = 679
____exports.CollectibleType[____exports.CollectibleType.LIL_ABADDON] = "LIL_ABADDON"
____exports.CollectibleType.MONTEZUMAS_REVENGE = 680
____exports.CollectibleType[____exports.CollectibleType.MONTEZUMAS_REVENGE] = "MONTEZUMAS_REVENGE"
____exports.CollectibleType.LIL_PORTAL = 681
____exports.CollectibleType[____exports.CollectibleType.LIL_PORTAL] = "LIL_PORTAL"
____exports.CollectibleType.WORM_FRIEND = 682
____exports.CollectibleType[____exports.CollectibleType.WORM_FRIEND] = "WORM_FRIEND"
____exports.CollectibleType.BONE_SPURS = 683
____exports.CollectibleType[____exports.CollectibleType.BONE_SPURS] = "BONE_SPURS"
____exports.CollectibleType.HUNGRY_SOUL = 684
____exports.CollectibleType[____exports.CollectibleType.HUNGRY_SOUL] = "HUNGRY_SOUL"
____exports.CollectibleType.JAR_OF_WISPS = 685
____exports.CollectibleType[____exports.CollectibleType.JAR_OF_WISPS] = "JAR_OF_WISPS"
____exports.CollectibleType.SOUL_LOCKET = 686
____exports.CollectibleType[____exports.CollectibleType.SOUL_LOCKET] = "SOUL_LOCKET"
____exports.CollectibleType.FRIEND_FINDER = 687
____exports.CollectibleType[____exports.CollectibleType.FRIEND_FINDER] = "FRIEND_FINDER"
____exports.CollectibleType.INNER_CHILD = 688
____exports.CollectibleType[____exports.CollectibleType.INNER_CHILD] = "INNER_CHILD"
____exports.CollectibleType.GLITCHED_CROWN = 689
____exports.CollectibleType[____exports.CollectibleType.GLITCHED_CROWN] = "GLITCHED_CROWN"
____exports.CollectibleType.JELLY_BELLY = 690
____exports.CollectibleType[____exports.CollectibleType.JELLY_BELLY] = "JELLY_BELLY"
____exports.CollectibleType.SACRED_ORB = 691
____exports.CollectibleType[____exports.CollectibleType.SACRED_ORB] = "SACRED_ORB"
____exports.CollectibleType.SANGUINE_BOND = 692
____exports.CollectibleType[____exports.CollectibleType.SANGUINE_BOND] = "SANGUINE_BOND"
____exports.CollectibleType.SWARM = 693
____exports.CollectibleType[____exports.CollectibleType.SWARM] = "SWARM"
____exports.CollectibleType.HEARTBREAK = 694
____exports.CollectibleType[____exports.CollectibleType.HEARTBREAK] = "HEARTBREAK"
____exports.CollectibleType.BLOODY_GUST = 695
____exports.CollectibleType[____exports.CollectibleType.BLOODY_GUST] = "BLOODY_GUST"
____exports.CollectibleType.SALVATION = 696
____exports.CollectibleType[____exports.CollectibleType.SALVATION] = "SALVATION"
____exports.CollectibleType.VANISHING_TWIN = 697
____exports.CollectibleType[____exports.CollectibleType.VANISHING_TWIN] = "VANISHING_TWIN"
____exports.CollectibleType.TWISTED_PAIR = 698
____exports.CollectibleType[____exports.CollectibleType.TWISTED_PAIR] = "TWISTED_PAIR"
____exports.CollectibleType.AZAZELS_RAGE = 699
____exports.CollectibleType[____exports.CollectibleType.AZAZELS_RAGE] = "AZAZELS_RAGE"
____exports.CollectibleType.ECHO_CHAMBER = 700
____exports.CollectibleType[____exports.CollectibleType.ECHO_CHAMBER] = "ECHO_CHAMBER"
____exports.CollectibleType.ISAACS_TOMB = 701
____exports.CollectibleType[____exports.CollectibleType.ISAACS_TOMB] = "ISAACS_TOMB"
____exports.CollectibleType.VENGEFUL_SPIRIT = 702
____exports.CollectibleType[____exports.CollectibleType.VENGEFUL_SPIRIT] = "VENGEFUL_SPIRIT"
____exports.CollectibleType.ESAU_JR = 703
____exports.CollectibleType[____exports.CollectibleType.ESAU_JR] = "ESAU_JR"
____exports.CollectibleType.BERSERK = 704
____exports.CollectibleType[____exports.CollectibleType.BERSERK] = "BERSERK"
____exports.CollectibleType.DARK_ARTS = 705
____exports.CollectibleType[____exports.CollectibleType.DARK_ARTS] = "DARK_ARTS"
____exports.CollectibleType.ABYSS = 706
____exports.CollectibleType[____exports.CollectibleType.ABYSS] = "ABYSS"
____exports.CollectibleType.SUPPER = 707
____exports.CollectibleType[____exports.CollectibleType.SUPPER] = "SUPPER"
____exports.CollectibleType.STAPLER = 708
____exports.CollectibleType[____exports.CollectibleType.STAPLER] = "STAPLER"
____exports.CollectibleType.SUPLEX = 709
____exports.CollectibleType[____exports.CollectibleType.SUPLEX] = "SUPLEX"
____exports.CollectibleType.BAG_OF_CRAFTING = 710
____exports.CollectibleType[____exports.CollectibleType.BAG_OF_CRAFTING] = "BAG_OF_CRAFTING"
____exports.CollectibleType.FLIP = 711
____exports.CollectibleType[____exports.CollectibleType.FLIP] = "FLIP"
____exports.CollectibleType.LEMEGETON = 712
____exports.CollectibleType[____exports.CollectibleType.LEMEGETON] = "LEMEGETON"
____exports.CollectibleType.SUMPTORIUM = 713
____exports.CollectibleType[____exports.CollectibleType.SUMPTORIUM] = "SUMPTORIUM"
____exports.CollectibleType.RECALL = 714
____exports.CollectibleType[____exports.CollectibleType.RECALL] = "RECALL"
____exports.CollectibleType.HOLD = 715
____exports.CollectibleType[____exports.CollectibleType.HOLD] = "HOLD"
____exports.CollectibleType.KEEPERS_SACK = 716
____exports.CollectibleType[____exports.CollectibleType.KEEPERS_SACK] = "KEEPERS_SACK"
____exports.CollectibleType.KEEPERS_KIN = 717
____exports.CollectibleType[____exports.CollectibleType.KEEPERS_KIN] = "KEEPERS_KIN"
____exports.CollectibleType.KEEPERS_BOX = 719
____exports.CollectibleType[____exports.CollectibleType.KEEPERS_BOX] = "KEEPERS_BOX"
____exports.CollectibleType.EVERYTHING_JAR = 720
____exports.CollectibleType[____exports.CollectibleType.EVERYTHING_JAR] = "EVERYTHING_JAR"
____exports.CollectibleType.TMTRAINER = 721
____exports.CollectibleType[____exports.CollectibleType.TMTRAINER] = "TMTRAINER"
____exports.CollectibleType.ANIMA_SOLA = 722
____exports.CollectibleType[____exports.CollectibleType.ANIMA_SOLA] = "ANIMA_SOLA"
____exports.CollectibleType.SPINDOWN_DICE = 723
____exports.CollectibleType[____exports.CollectibleType.SPINDOWN_DICE] = "SPINDOWN_DICE"
____exports.CollectibleType.HYPERCOAGULATION = 724
____exports.CollectibleType[____exports.CollectibleType.HYPERCOAGULATION] = "HYPERCOAGULATION"
____exports.CollectibleType.IBS = 725
____exports.CollectibleType[____exports.CollectibleType.IBS] = "IBS"
____exports.CollectibleType.HEMOPTYSIS = 726
____exports.CollectibleType[____exports.CollectibleType.HEMOPTYSIS] = "HEMOPTYSIS"
____exports.CollectibleType.GHOST_BOMBS = 727
____exports.CollectibleType[____exports.CollectibleType.GHOST_BOMBS] = "GHOST_BOMBS"
____exports.CollectibleType.GELLO = 728
____exports.CollectibleType[____exports.CollectibleType.GELLO] = "GELLO"
____exports.CollectibleType.DECAP_ATTACK = 729
____exports.CollectibleType[____exports.CollectibleType.DECAP_ATTACK] = "DECAP_ATTACK"
____exports.CollectibleType.GLASS_EYE = 730
____exports.CollectibleType[____exports.CollectibleType.GLASS_EYE] = "GLASS_EYE"
____exports.CollectibleType.STYE = 731
____exports.CollectibleType[____exports.CollectibleType.STYE] = "STYE"
____exports.CollectibleType.MOMS_RING = 732
____exports.CollectibleType[____exports.CollectibleType.MOMS_RING] = "MOMS_RING"
--- For `EntityType.PICKUP` (5), `PickupVariant.TAROT_CARD` (300).
-- 
-- This is the sub-type of a card.
-- 
-- This enum was renamed from "Card" to be consistent with the `CollectibleType` and `TrinketType`
-- enums.
____exports.CardType = {}
____exports.CardType.NULL = 0
____exports.CardType[____exports.CardType.NULL] = "NULL"
____exports.CardType.FOOL = 1
____exports.CardType[____exports.CardType.FOOL] = "FOOL"
____exports.CardType.MAGICIAN = 2
____exports.CardType[____exports.CardType.MAGICIAN] = "MAGICIAN"
____exports.CardType.HIGH_PRIESTESS = 3
____exports.CardType[____exports.CardType.HIGH_PRIESTESS] = "HIGH_PRIESTESS"
____exports.CardType.EMPRESS = 4
____exports.CardType[____exports.CardType.EMPRESS] = "EMPRESS"
____exports.CardType.EMPEROR = 5
____exports.CardType[____exports.CardType.EMPEROR] = "EMPEROR"
____exports.CardType.HIEROPHANT = 6
____exports.CardType[____exports.CardType.HIEROPHANT] = "HIEROPHANT"
____exports.CardType.LOVERS = 7
____exports.CardType[____exports.CardType.LOVERS] = "LOVERS"
____exports.CardType.CHARIOT = 8
____exports.CardType[____exports.CardType.CHARIOT] = "CHARIOT"
____exports.CardType.JUSTICE = 9
____exports.CardType[____exports.CardType.JUSTICE] = "JUSTICE"
____exports.CardType.HERMIT = 10
____exports.CardType[____exports.CardType.HERMIT] = "HERMIT"
____exports.CardType.WHEEL_OF_FORTUNE = 11
____exports.CardType[____exports.CardType.WHEEL_OF_FORTUNE] = "WHEEL_OF_FORTUNE"
____exports.CardType.STRENGTH = 12
____exports.CardType[____exports.CardType.STRENGTH] = "STRENGTH"
____exports.CardType.HANGED_MAN = 13
____exports.CardType[____exports.CardType.HANGED_MAN] = "HANGED_MAN"
____exports.CardType.DEATH = 14
____exports.CardType[____exports.CardType.DEATH] = "DEATH"
____exports.CardType.TEMPERANCE = 15
____exports.CardType[____exports.CardType.TEMPERANCE] = "TEMPERANCE"
____exports.CardType.DEVIL = 16
____exports.CardType[____exports.CardType.DEVIL] = "DEVIL"
____exports.CardType.TOWER = 17
____exports.CardType[____exports.CardType.TOWER] = "TOWER"
____exports.CardType.STARS = 18
____exports.CardType[____exports.CardType.STARS] = "STARS"
____exports.CardType.MOON = 19
____exports.CardType[____exports.CardType.MOON] = "MOON"
____exports.CardType.SUN = 20
____exports.CardType[____exports.CardType.SUN] = "SUN"
____exports.CardType.JUDGEMENT = 21
____exports.CardType[____exports.CardType.JUDGEMENT] = "JUDGEMENT"
____exports.CardType.WORLD = 22
____exports.CardType[____exports.CardType.WORLD] = "WORLD"
____exports.CardType.CLUBS_2 = 23
____exports.CardType[____exports.CardType.CLUBS_2] = "CLUBS_2"
____exports.CardType.DIAMONDS_2 = 24
____exports.CardType[____exports.CardType.DIAMONDS_2] = "DIAMONDS_2"
____exports.CardType.SPADES_2 = 25
____exports.CardType[____exports.CardType.SPADES_2] = "SPADES_2"
____exports.CardType.HEARTS_2 = 26
____exports.CardType[____exports.CardType.HEARTS_2] = "HEARTS_2"
____exports.CardType.ACE_OF_CLUBS = 27
____exports.CardType[____exports.CardType.ACE_OF_CLUBS] = "ACE_OF_CLUBS"
____exports.CardType.ACE_OF_DIAMONDS = 28
____exports.CardType[____exports.CardType.ACE_OF_DIAMONDS] = "ACE_OF_DIAMONDS"
____exports.CardType.ACE_OF_SPADES = 29
____exports.CardType[____exports.CardType.ACE_OF_SPADES] = "ACE_OF_SPADES"
____exports.CardType.ACE_OF_HEARTS = 30
____exports.CardType[____exports.CardType.ACE_OF_HEARTS] = "ACE_OF_HEARTS"
____exports.CardType.JOKER = 31
____exports.CardType[____exports.CardType.JOKER] = "JOKER"
____exports.CardType.RUNE_HAGALAZ = 32
____exports.CardType[____exports.CardType.RUNE_HAGALAZ] = "RUNE_HAGALAZ"
____exports.CardType.RUNE_JERA = 33
____exports.CardType[____exports.CardType.RUNE_JERA] = "RUNE_JERA"
____exports.CardType.RUNE_EHWAZ = 34
____exports.CardType[____exports.CardType.RUNE_EHWAZ] = "RUNE_EHWAZ"
____exports.CardType.RUNE_DAGAZ = 35
____exports.CardType[____exports.CardType.RUNE_DAGAZ] = "RUNE_DAGAZ"
____exports.CardType.RUNE_ANSUZ = 36
____exports.CardType[____exports.CardType.RUNE_ANSUZ] = "RUNE_ANSUZ"
____exports.CardType.RUNE_PERTHRO = 37
____exports.CardType[____exports.CardType.RUNE_PERTHRO] = "RUNE_PERTHRO"
____exports.CardType.RUNE_BERKANO = 38
____exports.CardType[____exports.CardType.RUNE_BERKANO] = "RUNE_BERKANO"
____exports.CardType.RUNE_ALGIZ = 39
____exports.CardType[____exports.CardType.RUNE_ALGIZ] = "RUNE_ALGIZ"
____exports.CardType.RUNE_BLANK = 40
____exports.CardType[____exports.CardType.RUNE_BLANK] = "RUNE_BLANK"
____exports.CardType.RUNE_BLACK = 41
____exports.CardType[____exports.CardType.RUNE_BLACK] = "RUNE_BLACK"
____exports.CardType.CHAOS = 42
____exports.CardType[____exports.CardType.CHAOS] = "CHAOS"
____exports.CardType.CREDIT = 43
____exports.CardType[____exports.CardType.CREDIT] = "CREDIT"
____exports.CardType.RULES = 44
____exports.CardType[____exports.CardType.RULES] = "RULES"
____exports.CardType.AGAINST_HUMANITY = 45
____exports.CardType[____exports.CardType.AGAINST_HUMANITY] = "AGAINST_HUMANITY"
____exports.CardType.SUICIDE_KING = 46
____exports.CardType[____exports.CardType.SUICIDE_KING] = "SUICIDE_KING"
____exports.CardType.GET_OUT_OF_JAIL_FREE = 47
____exports.CardType[____exports.CardType.GET_OUT_OF_JAIL_FREE] = "GET_OUT_OF_JAIL_FREE"
____exports.CardType.QUESTION_MARK = 48
____exports.CardType[____exports.CardType.QUESTION_MARK] = "QUESTION_MARK"
____exports.CardType.DICE_SHARD = 49
____exports.CardType[____exports.CardType.DICE_SHARD] = "DICE_SHARD"
____exports.CardType.EMERGENCY_CONTACT = 50
____exports.CardType[____exports.CardType.EMERGENCY_CONTACT] = "EMERGENCY_CONTACT"
____exports.CardType.HOLY = 51
____exports.CardType[____exports.CardType.HOLY] = "HOLY"
____exports.CardType.HUGE_GROWTH = 52
____exports.CardType[____exports.CardType.HUGE_GROWTH] = "HUGE_GROWTH"
____exports.CardType.ANCIENT_RECALL = 53
____exports.CardType[____exports.CardType.ANCIENT_RECALL] = "ANCIENT_RECALL"
____exports.CardType.ERA_WALK = 54
____exports.CardType[____exports.CardType.ERA_WALK] = "ERA_WALK"
____exports.CardType.RUNE_SHARD = 55
____exports.CardType[____exports.CardType.RUNE_SHARD] = "RUNE_SHARD"
____exports.CardType.REVERSE_FOOL = 56
____exports.CardType[____exports.CardType.REVERSE_FOOL] = "REVERSE_FOOL"
____exports.CardType.REVERSE_MAGICIAN = 57
____exports.CardType[____exports.CardType.REVERSE_MAGICIAN] = "REVERSE_MAGICIAN"
____exports.CardType.REVERSE_HIGH_PRIESTESS = 58
____exports.CardType[____exports.CardType.REVERSE_HIGH_PRIESTESS] = "REVERSE_HIGH_PRIESTESS"
____exports.CardType.REVERSE_EMPRESS = 59
____exports.CardType[____exports.CardType.REVERSE_EMPRESS] = "REVERSE_EMPRESS"
____exports.CardType.REVERSE_EMPEROR = 60
____exports.CardType[____exports.CardType.REVERSE_EMPEROR] = "REVERSE_EMPEROR"
____exports.CardType.REVERSE_HIEROPHANT = 61
____exports.CardType[____exports.CardType.REVERSE_HIEROPHANT] = "REVERSE_HIEROPHANT"
____exports.CardType.REVERSE_LOVERS = 62
____exports.CardType[____exports.CardType.REVERSE_LOVERS] = "REVERSE_LOVERS"
____exports.CardType.REVERSE_CHARIOT = 63
____exports.CardType[____exports.CardType.REVERSE_CHARIOT] = "REVERSE_CHARIOT"
____exports.CardType.REVERSE_JUSTICE = 64
____exports.CardType[____exports.CardType.REVERSE_JUSTICE] = "REVERSE_JUSTICE"
____exports.CardType.REVERSE_HERMIT = 65
____exports.CardType[____exports.CardType.REVERSE_HERMIT] = "REVERSE_HERMIT"
____exports.CardType.REVERSE_WHEEL_OF_FORTUNE = 66
____exports.CardType[____exports.CardType.REVERSE_WHEEL_OF_FORTUNE] = "REVERSE_WHEEL_OF_FORTUNE"
____exports.CardType.REVERSE_STRENGTH = 67
____exports.CardType[____exports.CardType.REVERSE_STRENGTH] = "REVERSE_STRENGTH"
____exports.CardType.REVERSE_HANGED_MAN = 68
____exports.CardType[____exports.CardType.REVERSE_HANGED_MAN] = "REVERSE_HANGED_MAN"
____exports.CardType.REVERSE_DEATH = 69
____exports.CardType[____exports.CardType.REVERSE_DEATH] = "REVERSE_DEATH"
____exports.CardType.REVERSE_TEMPERANCE = 70
____exports.CardType[____exports.CardType.REVERSE_TEMPERANCE] = "REVERSE_TEMPERANCE"
____exports.CardType.REVERSE_DEVIL = 71
____exports.CardType[____exports.CardType.REVERSE_DEVIL] = "REVERSE_DEVIL"
____exports.CardType.REVERSE_TOWER = 72
____exports.CardType[____exports.CardType.REVERSE_TOWER] = "REVERSE_TOWER"
____exports.CardType.REVERSE_STARS = 73
____exports.CardType[____exports.CardType.REVERSE_STARS] = "REVERSE_STARS"
____exports.CardType.REVERSE_MOON = 74
____exports.CardType[____exports.CardType.REVERSE_MOON] = "REVERSE_MOON"
____exports.CardType.REVERSE_SUN = 75
____exports.CardType[____exports.CardType.REVERSE_SUN] = "REVERSE_SUN"
____exports.CardType.REVERSE_JUDGEMENT = 76
____exports.CardType[____exports.CardType.REVERSE_JUDGEMENT] = "REVERSE_JUDGEMENT"
____exports.CardType.REVERSE_WORLD = 77
____exports.CardType[____exports.CardType.REVERSE_WORLD] = "REVERSE_WORLD"
____exports.CardType.CRACKED_KEY = 78
____exports.CardType[____exports.CardType.CRACKED_KEY] = "CRACKED_KEY"
____exports.CardType.QUEEN_OF_HEARTS = 79
____exports.CardType[____exports.CardType.QUEEN_OF_HEARTS] = "QUEEN_OF_HEARTS"
____exports.CardType.WILD = 80
____exports.CardType[____exports.CardType.WILD] = "WILD"
____exports.CardType.SOUL_ISAAC = 81
____exports.CardType[____exports.CardType.SOUL_ISAAC] = "SOUL_ISAAC"
____exports.CardType.SOUL_MAGDALENE = 82
____exports.CardType[____exports.CardType.SOUL_MAGDALENE] = "SOUL_MAGDALENE"
____exports.CardType.SOUL_CAIN = 83
____exports.CardType[____exports.CardType.SOUL_CAIN] = "SOUL_CAIN"
____exports.CardType.SOUL_JUDAS = 84
____exports.CardType[____exports.CardType.SOUL_JUDAS] = "SOUL_JUDAS"
____exports.CardType.SOUL_BLUE_BABY = 85
____exports.CardType[____exports.CardType.SOUL_BLUE_BABY] = "SOUL_BLUE_BABY"
____exports.CardType.SOUL_EVE = 86
____exports.CardType[____exports.CardType.SOUL_EVE] = "SOUL_EVE"
____exports.CardType.SOUL_SAMSON = 87
____exports.CardType[____exports.CardType.SOUL_SAMSON] = "SOUL_SAMSON"
____exports.CardType.SOUL_AZAZEL = 88
____exports.CardType[____exports.CardType.SOUL_AZAZEL] = "SOUL_AZAZEL"
____exports.CardType.SOUL_LAZARUS = 89
____exports.CardType[____exports.CardType.SOUL_LAZARUS] = "SOUL_LAZARUS"
____exports.CardType.SOUL_EDEN = 90
____exports.CardType[____exports.CardType.SOUL_EDEN] = "SOUL_EDEN"
____exports.CardType.SOUL_LOST = 91
____exports.CardType[____exports.CardType.SOUL_LOST] = "SOUL_LOST"
____exports.CardType.SOUL_LILITH = 92
____exports.CardType[____exports.CardType.SOUL_LILITH] = "SOUL_LILITH"
____exports.CardType.SOUL_KEEPER = 93
____exports.CardType[____exports.CardType.SOUL_KEEPER] = "SOUL_KEEPER"
____exports.CardType.SOUL_APOLLYON = 94
____exports.CardType[____exports.CardType.SOUL_APOLLYON] = "SOUL_APOLLYON"
____exports.CardType.SOUL_FORGOTTEN = 95
____exports.CardType[____exports.CardType.SOUL_FORGOTTEN] = "SOUL_FORGOTTEN"
____exports.CardType.SOUL_BETHANY = 96
____exports.CardType[____exports.CardType.SOUL_BETHANY] = "SOUL_BETHANY"
____exports.CardType.SOUL_JACOB = 97
____exports.CardType[____exports.CardType.SOUL_JACOB] = "SOUL_JACOB"
--- For `EntityType.PICKUP` (5), `PickupVariant.TRINKET` (350).
-- 
-- This is the sub-type of a trinket.
____exports.TrinketType = {}
____exports.TrinketType.NULL = 0
____exports.TrinketType[____exports.TrinketType.NULL] = "NULL"
____exports.TrinketType.SWALLOWED_PENNY = 1
____exports.TrinketType[____exports.TrinketType.SWALLOWED_PENNY] = "SWALLOWED_PENNY"
____exports.TrinketType.PETRIFIED_POOP = 2
____exports.TrinketType[____exports.TrinketType.PETRIFIED_POOP] = "PETRIFIED_POOP"
____exports.TrinketType.AAA_BATTERY = 3
____exports.TrinketType[____exports.TrinketType.AAA_BATTERY] = "AAA_BATTERY"
____exports.TrinketType.BROKEN_REMOTE = 4
____exports.TrinketType[____exports.TrinketType.BROKEN_REMOTE] = "BROKEN_REMOTE"
____exports.TrinketType.PURPLE_HEART = 5
____exports.TrinketType[____exports.TrinketType.PURPLE_HEART] = "PURPLE_HEART"
____exports.TrinketType.BROKEN_MAGNET = 6
____exports.TrinketType[____exports.TrinketType.BROKEN_MAGNET] = "BROKEN_MAGNET"
____exports.TrinketType.ROSARY_BEAD = 7
____exports.TrinketType[____exports.TrinketType.ROSARY_BEAD] = "ROSARY_BEAD"
____exports.TrinketType.CARTRIDGE = 8
____exports.TrinketType[____exports.TrinketType.CARTRIDGE] = "CARTRIDGE"
____exports.TrinketType.PULSE_WORM = 9
____exports.TrinketType[____exports.TrinketType.PULSE_WORM] = "PULSE_WORM"
____exports.TrinketType.WIGGLE_WORM = 10
____exports.TrinketType[____exports.TrinketType.WIGGLE_WORM] = "WIGGLE_WORM"
____exports.TrinketType.RING_WORM = 11
____exports.TrinketType[____exports.TrinketType.RING_WORM] = "RING_WORM"
____exports.TrinketType.FLAT_WORM = 12
____exports.TrinketType[____exports.TrinketType.FLAT_WORM] = "FLAT_WORM"
____exports.TrinketType.STORE_CREDIT = 13
____exports.TrinketType[____exports.TrinketType.STORE_CREDIT] = "STORE_CREDIT"
____exports.TrinketType.CALLUS = 14
____exports.TrinketType[____exports.TrinketType.CALLUS] = "CALLUS"
____exports.TrinketType.LUCKY_ROCK = 15
____exports.TrinketType[____exports.TrinketType.LUCKY_ROCK] = "LUCKY_ROCK"
____exports.TrinketType.MOMS_TOENAIL = 16
____exports.TrinketType[____exports.TrinketType.MOMS_TOENAIL] = "MOMS_TOENAIL"
____exports.TrinketType.BLACK_LIPSTICK = 17
____exports.TrinketType[____exports.TrinketType.BLACK_LIPSTICK] = "BLACK_LIPSTICK"
____exports.TrinketType.BIBLE_TRACT = 18
____exports.TrinketType[____exports.TrinketType.BIBLE_TRACT] = "BIBLE_TRACT"
____exports.TrinketType.PAPER_CLIP = 19
____exports.TrinketType[____exports.TrinketType.PAPER_CLIP] = "PAPER_CLIP"
____exports.TrinketType.MONKEY_PAW = 20
____exports.TrinketType[____exports.TrinketType.MONKEY_PAW] = "MONKEY_PAW"
____exports.TrinketType.MYSTERIOUS_PAPER = 21
____exports.TrinketType[____exports.TrinketType.MYSTERIOUS_PAPER] = "MYSTERIOUS_PAPER"
____exports.TrinketType.DAEMONS_TAIL = 22
____exports.TrinketType[____exports.TrinketType.DAEMONS_TAIL] = "DAEMONS_TAIL"
____exports.TrinketType.MISSING_POSTER = 23
____exports.TrinketType[____exports.TrinketType.MISSING_POSTER] = "MISSING_POSTER"
____exports.TrinketType.BUTT_PENNY = 24
____exports.TrinketType[____exports.TrinketType.BUTT_PENNY] = "BUTT_PENNY"
____exports.TrinketType.MYSTERIOUS_CANDY = 25
____exports.TrinketType[____exports.TrinketType.MYSTERIOUS_CANDY] = "MYSTERIOUS_CANDY"
____exports.TrinketType.HOOK_WORM = 26
____exports.TrinketType[____exports.TrinketType.HOOK_WORM] = "HOOK_WORM"
____exports.TrinketType.WHIP_WORM = 27
____exports.TrinketType[____exports.TrinketType.WHIP_WORM] = "WHIP_WORM"
____exports.TrinketType.BROKEN_ANKH = 28
____exports.TrinketType[____exports.TrinketType.BROKEN_ANKH] = "BROKEN_ANKH"
____exports.TrinketType.FISH_HEAD = 29
____exports.TrinketType[____exports.TrinketType.FISH_HEAD] = "FISH_HEAD"
____exports.TrinketType.PINKY_EYE = 30
____exports.TrinketType[____exports.TrinketType.PINKY_EYE] = "PINKY_EYE"
____exports.TrinketType.PUSH_PIN = 31
____exports.TrinketType[____exports.TrinketType.PUSH_PIN] = "PUSH_PIN"
____exports.TrinketType.LIBERTY_CAP = 32
____exports.TrinketType[____exports.TrinketType.LIBERTY_CAP] = "LIBERTY_CAP"
____exports.TrinketType.UMBILICAL_CORD = 33
____exports.TrinketType[____exports.TrinketType.UMBILICAL_CORD] = "UMBILICAL_CORD"
____exports.TrinketType.CHILDS_HEART = 34
____exports.TrinketType[____exports.TrinketType.CHILDS_HEART] = "CHILDS_HEART"
____exports.TrinketType.CURVED_HORN = 35
____exports.TrinketType[____exports.TrinketType.CURVED_HORN] = "CURVED_HORN"
____exports.TrinketType.RUSTED_KEY = 36
____exports.TrinketType[____exports.TrinketType.RUSTED_KEY] = "RUSTED_KEY"
____exports.TrinketType.GOAT_HOOF = 37
____exports.TrinketType[____exports.TrinketType.GOAT_HOOF] = "GOAT_HOOF"
____exports.TrinketType.MOMS_PEARL = 38
____exports.TrinketType[____exports.TrinketType.MOMS_PEARL] = "MOMS_PEARL"
____exports.TrinketType.CANCER = 39
____exports.TrinketType[____exports.TrinketType.CANCER] = "CANCER"
____exports.TrinketType.RED_PATCH = 40
____exports.TrinketType[____exports.TrinketType.RED_PATCH] = "RED_PATCH"
____exports.TrinketType.MATCH_STICK = 41
____exports.TrinketType[____exports.TrinketType.MATCH_STICK] = "MATCH_STICK"
____exports.TrinketType.LUCKY_TOE = 42
____exports.TrinketType[____exports.TrinketType.LUCKY_TOE] = "LUCKY_TOE"
____exports.TrinketType.CURSED_SKULL = 43
____exports.TrinketType[____exports.TrinketType.CURSED_SKULL] = "CURSED_SKULL"
____exports.TrinketType.SAFETY_CAP = 44
____exports.TrinketType[____exports.TrinketType.SAFETY_CAP] = "SAFETY_CAP"
____exports.TrinketType.ACE_SPADES = 45
____exports.TrinketType[____exports.TrinketType.ACE_SPADES] = "ACE_SPADES"
____exports.TrinketType.ISAACS_FORK = 46
____exports.TrinketType[____exports.TrinketType.ISAACS_FORK] = "ISAACS_FORK"
____exports.TrinketType.POLAROID_OBSOLETE = 47
____exports.TrinketType[____exports.TrinketType.POLAROID_OBSOLETE] = "POLAROID_OBSOLETE"
____exports.TrinketType.MISSING_PAGE = 48
____exports.TrinketType[____exports.TrinketType.MISSING_PAGE] = "MISSING_PAGE"
____exports.TrinketType.BLOODY_PENNY = 49
____exports.TrinketType[____exports.TrinketType.BLOODY_PENNY] = "BLOODY_PENNY"
____exports.TrinketType.BURNT_PENNY = 50
____exports.TrinketType[____exports.TrinketType.BURNT_PENNY] = "BURNT_PENNY"
____exports.TrinketType.FLAT_PENNY = 51
____exports.TrinketType[____exports.TrinketType.FLAT_PENNY] = "FLAT_PENNY"
____exports.TrinketType.COUNTERFEIT_PENNY = 52
____exports.TrinketType[____exports.TrinketType.COUNTERFEIT_PENNY] = "COUNTERFEIT_PENNY"
____exports.TrinketType.TICK = 53
____exports.TrinketType[____exports.TrinketType.TICK] = "TICK"
____exports.TrinketType.ISAACS_HEAD = 54
____exports.TrinketType[____exports.TrinketType.ISAACS_HEAD] = "ISAACS_HEAD"
____exports.TrinketType.MAGGYS_FAITH = 55
____exports.TrinketType[____exports.TrinketType.MAGGYS_FAITH] = "MAGGYS_FAITH"
____exports.TrinketType.JUDAS_TONGUE = 56
____exports.TrinketType[____exports.TrinketType.JUDAS_TONGUE] = "JUDAS_TONGUE"
____exports.TrinketType.SOUL = 57
____exports.TrinketType[____exports.TrinketType.SOUL] = "SOUL"
____exports.TrinketType.SAMSONS_LOCK = 58
____exports.TrinketType[____exports.TrinketType.SAMSONS_LOCK] = "SAMSONS_LOCK"
____exports.TrinketType.CAINS_EYE = 59
____exports.TrinketType[____exports.TrinketType.CAINS_EYE] = "CAINS_EYE"
____exports.TrinketType.EVES_BIRD_FOOT = 60
____exports.TrinketType[____exports.TrinketType.EVES_BIRD_FOOT] = "EVES_BIRD_FOOT"
____exports.TrinketType.LEFT_HAND = 61
____exports.TrinketType[____exports.TrinketType.LEFT_HAND] = "LEFT_HAND"
____exports.TrinketType.SHINY_ROCK = 62
____exports.TrinketType[____exports.TrinketType.SHINY_ROCK] = "SHINY_ROCK"
____exports.TrinketType.SAFETY_SCISSORS = 63
____exports.TrinketType[____exports.TrinketType.SAFETY_SCISSORS] = "SAFETY_SCISSORS"
____exports.TrinketType.RAINBOW_WORM = 64
____exports.TrinketType[____exports.TrinketType.RAINBOW_WORM] = "RAINBOW_WORM"
____exports.TrinketType.TAPE_WORM = 65
____exports.TrinketType[____exports.TrinketType.TAPE_WORM] = "TAPE_WORM"
____exports.TrinketType.LAZY_WORM = 66
____exports.TrinketType[____exports.TrinketType.LAZY_WORM] = "LAZY_WORM"
____exports.TrinketType.CRACKED_DICE = 67
____exports.TrinketType[____exports.TrinketType.CRACKED_DICE] = "CRACKED_DICE"
____exports.TrinketType.SUPER_MAGNET = 68
____exports.TrinketType[____exports.TrinketType.SUPER_MAGNET] = "SUPER_MAGNET"
____exports.TrinketType.FADED_POLAROID = 69
____exports.TrinketType[____exports.TrinketType.FADED_POLAROID] = "FADED_POLAROID"
____exports.TrinketType.LOUSE = 70
____exports.TrinketType[____exports.TrinketType.LOUSE] = "LOUSE"
____exports.TrinketType.BOBS_BLADDER = 71
____exports.TrinketType[____exports.TrinketType.BOBS_BLADDER] = "BOBS_BLADDER"
____exports.TrinketType.WATCH_BATTERY = 72
____exports.TrinketType[____exports.TrinketType.WATCH_BATTERY] = "WATCH_BATTERY"
____exports.TrinketType.BLASTING_CAP = 73
____exports.TrinketType[____exports.TrinketType.BLASTING_CAP] = "BLASTING_CAP"
____exports.TrinketType.STUD_FINDER = 74
____exports.TrinketType[____exports.TrinketType.STUD_FINDER] = "STUD_FINDER"
____exports.TrinketType.ERROR = 75
____exports.TrinketType[____exports.TrinketType.ERROR] = "ERROR"
____exports.TrinketType.POKER_CHIP = 76
____exports.TrinketType[____exports.TrinketType.POKER_CHIP] = "POKER_CHIP"
____exports.TrinketType.BLISTER = 77
____exports.TrinketType[____exports.TrinketType.BLISTER] = "BLISTER"
____exports.TrinketType.SECOND_HAND = 78
____exports.TrinketType[____exports.TrinketType.SECOND_HAND] = "SECOND_HAND"
____exports.TrinketType.ENDLESS_NAMELESS = 79
____exports.TrinketType[____exports.TrinketType.ENDLESS_NAMELESS] = "ENDLESS_NAMELESS"
____exports.TrinketType.BLACK_FEATHER = 80
____exports.TrinketType[____exports.TrinketType.BLACK_FEATHER] = "BLACK_FEATHER"
____exports.TrinketType.BLIND_RAGE = 81
____exports.TrinketType[____exports.TrinketType.BLIND_RAGE] = "BLIND_RAGE"
____exports.TrinketType.GOLDEN_HORSE_SHOE = 82
____exports.TrinketType[____exports.TrinketType.GOLDEN_HORSE_SHOE] = "GOLDEN_HORSE_SHOE"
____exports.TrinketType.STORE_KEY = 83
____exports.TrinketType[____exports.TrinketType.STORE_KEY] = "STORE_KEY"
____exports.TrinketType.RIB_OF_GREED = 84
____exports.TrinketType[____exports.TrinketType.RIB_OF_GREED] = "RIB_OF_GREED"
____exports.TrinketType.KARMA = 85
____exports.TrinketType[____exports.TrinketType.KARMA] = "KARMA"
____exports.TrinketType.LIL_LARVA = 86
____exports.TrinketType[____exports.TrinketType.LIL_LARVA] = "LIL_LARVA"
____exports.TrinketType.MOMS_LOCKET = 87
____exports.TrinketType[____exports.TrinketType.MOMS_LOCKET] = "MOMS_LOCKET"
____exports.TrinketType.NO = 88
____exports.TrinketType[____exports.TrinketType.NO] = "NO"
____exports.TrinketType.CHILD_LEASH = 89
____exports.TrinketType[____exports.TrinketType.CHILD_LEASH] = "CHILD_LEASH"
____exports.TrinketType.BROWN_CAP = 90
____exports.TrinketType[____exports.TrinketType.BROWN_CAP] = "BROWN_CAP"
____exports.TrinketType.MECONIUM = 91
____exports.TrinketType[____exports.TrinketType.MECONIUM] = "MECONIUM"
____exports.TrinketType.CRACKED_CROWN = 92
____exports.TrinketType[____exports.TrinketType.CRACKED_CROWN] = "CRACKED_CROWN"
____exports.TrinketType.USED_DIAPER = 93
____exports.TrinketType[____exports.TrinketType.USED_DIAPER] = "USED_DIAPER"
____exports.TrinketType.FISH_TAIL = 94
____exports.TrinketType[____exports.TrinketType.FISH_TAIL] = "FISH_TAIL"
____exports.TrinketType.BLACK_TOOTH = 95
____exports.TrinketType[____exports.TrinketType.BLACK_TOOTH] = "BLACK_TOOTH"
____exports.TrinketType.OUROBOROS_WORM = 96
____exports.TrinketType[____exports.TrinketType.OUROBOROS_WORM] = "OUROBOROS_WORM"
____exports.TrinketType.TONSIL = 97
____exports.TrinketType[____exports.TrinketType.TONSIL] = "TONSIL"
____exports.TrinketType.NOSE_GOBLIN = 98
____exports.TrinketType[____exports.TrinketType.NOSE_GOBLIN] = "NOSE_GOBLIN"
____exports.TrinketType.SUPER_BALL = 99
____exports.TrinketType[____exports.TrinketType.SUPER_BALL] = "SUPER_BALL"
____exports.TrinketType.VIBRANT_BULB = 100
____exports.TrinketType[____exports.TrinketType.VIBRANT_BULB] = "VIBRANT_BULB"
____exports.TrinketType.DIM_BULB = 101
____exports.TrinketType[____exports.TrinketType.DIM_BULB] = "DIM_BULB"
____exports.TrinketType.FRAGMENTED_CARD = 102
____exports.TrinketType[____exports.TrinketType.FRAGMENTED_CARD] = "FRAGMENTED_CARD"
____exports.TrinketType.EQUALITY = 103
____exports.TrinketType[____exports.TrinketType.EQUALITY] = "EQUALITY"
____exports.TrinketType.WISH_BONE = 104
____exports.TrinketType[____exports.TrinketType.WISH_BONE] = "WISH_BONE"
____exports.TrinketType.BAG_LUNCH = 105
____exports.TrinketType[____exports.TrinketType.BAG_LUNCH] = "BAG_LUNCH"
____exports.TrinketType.LOST_CORK = 106
____exports.TrinketType[____exports.TrinketType.LOST_CORK] = "LOST_CORK"
____exports.TrinketType.CROW_HEART = 107
____exports.TrinketType[____exports.TrinketType.CROW_HEART] = "CROW_HEART"
____exports.TrinketType.WALNUT = 108
____exports.TrinketType[____exports.TrinketType.WALNUT] = "WALNUT"
____exports.TrinketType.DUCT_TAPE = 109
____exports.TrinketType[____exports.TrinketType.DUCT_TAPE] = "DUCT_TAPE"
____exports.TrinketType.SILVER_DOLLAR = 110
____exports.TrinketType[____exports.TrinketType.SILVER_DOLLAR] = "SILVER_DOLLAR"
____exports.TrinketType.BLOODY_CROWN = 111
____exports.TrinketType[____exports.TrinketType.BLOODY_CROWN] = "BLOODY_CROWN"
____exports.TrinketType.PAY_TO_WIN = 112
____exports.TrinketType[____exports.TrinketType.PAY_TO_WIN] = "PAY_TO_WIN"
____exports.TrinketType.LOCUST_OF_WRATH = 113
____exports.TrinketType[____exports.TrinketType.LOCUST_OF_WRATH] = "LOCUST_OF_WRATH"
____exports.TrinketType.LOCUST_OF_PESTILENCE = 114
____exports.TrinketType[____exports.TrinketType.LOCUST_OF_PESTILENCE] = "LOCUST_OF_PESTILENCE"
____exports.TrinketType.LOCUST_OF_FAMINE = 115
____exports.TrinketType[____exports.TrinketType.LOCUST_OF_FAMINE] = "LOCUST_OF_FAMINE"
____exports.TrinketType.LOCUST_OF_DEATH = 116
____exports.TrinketType[____exports.TrinketType.LOCUST_OF_DEATH] = "LOCUST_OF_DEATH"
____exports.TrinketType.LOCUST_OF_CONQUEST = 117
____exports.TrinketType[____exports.TrinketType.LOCUST_OF_CONQUEST] = "LOCUST_OF_CONQUEST"
____exports.TrinketType.BAT_WING = 118
____exports.TrinketType[____exports.TrinketType.BAT_WING] = "BAT_WING"
____exports.TrinketType.STEM_CELL = 119
____exports.TrinketType[____exports.TrinketType.STEM_CELL] = "STEM_CELL"
____exports.TrinketType.HAIRPIN = 120
____exports.TrinketType[____exports.TrinketType.HAIRPIN] = "HAIRPIN"
____exports.TrinketType.WOODEN_CROSS = 121
____exports.TrinketType[____exports.TrinketType.WOODEN_CROSS] = "WOODEN_CROSS"
____exports.TrinketType.BUTTER = 122
____exports.TrinketType[____exports.TrinketType.BUTTER] = "BUTTER"
____exports.TrinketType.FILIGREE_FEATHERS = 123
____exports.TrinketType[____exports.TrinketType.FILIGREE_FEATHERS] = "FILIGREE_FEATHERS"
____exports.TrinketType.DOOR_STOP = 124
____exports.TrinketType[____exports.TrinketType.DOOR_STOP] = "DOOR_STOP"
____exports.TrinketType.EXTENSION_CORD = 125
____exports.TrinketType[____exports.TrinketType.EXTENSION_CORD] = "EXTENSION_CORD"
____exports.TrinketType.ROTTEN_PENNY = 126
____exports.TrinketType[____exports.TrinketType.ROTTEN_PENNY] = "ROTTEN_PENNY"
____exports.TrinketType.BABY_BENDER = 127
____exports.TrinketType[____exports.TrinketType.BABY_BENDER] = "BABY_BENDER"
____exports.TrinketType.FINGER_BONE = 128
____exports.TrinketType[____exports.TrinketType.FINGER_BONE] = "FINGER_BONE"
____exports.TrinketType.JAW_BREAKER = 129
____exports.TrinketType[____exports.TrinketType.JAW_BREAKER] = "JAW_BREAKER"
____exports.TrinketType.CHEWED_PEN = 130
____exports.TrinketType[____exports.TrinketType.CHEWED_PEN] = "CHEWED_PEN"
____exports.TrinketType.BLESSED_PENNY = 131
____exports.TrinketType[____exports.TrinketType.BLESSED_PENNY] = "BLESSED_PENNY"
____exports.TrinketType.BROKEN_SYRINGE = 132
____exports.TrinketType[____exports.TrinketType.BROKEN_SYRINGE] = "BROKEN_SYRINGE"
____exports.TrinketType.SHORT_FUSE = 133
____exports.TrinketType[____exports.TrinketType.SHORT_FUSE] = "SHORT_FUSE"
____exports.TrinketType.GIGANTE_BEAN = 134
____exports.TrinketType[____exports.TrinketType.GIGANTE_BEAN] = "GIGANTE_BEAN"
____exports.TrinketType.LIGHTER = 135
____exports.TrinketType[____exports.TrinketType.LIGHTER] = "LIGHTER"
____exports.TrinketType.BROKEN_PADLOCK = 136
____exports.TrinketType[____exports.TrinketType.BROKEN_PADLOCK] = "BROKEN_PADLOCK"
____exports.TrinketType.MYOSOTIS = 137
____exports.TrinketType[____exports.TrinketType.MYOSOTIS] = "MYOSOTIS"
____exports.TrinketType.M = 138
____exports.TrinketType[____exports.TrinketType.M] = "M"
____exports.TrinketType.TEARDROP_CHARM = 139
____exports.TrinketType[____exports.TrinketType.TEARDROP_CHARM] = "TEARDROP_CHARM"
____exports.TrinketType.APPLE_OF_SODOM = 140
____exports.TrinketType[____exports.TrinketType.APPLE_OF_SODOM] = "APPLE_OF_SODOM"
____exports.TrinketType.FORGOTTEN_LULLABY = 141
____exports.TrinketType[____exports.TrinketType.FORGOTTEN_LULLABY] = "FORGOTTEN_LULLABY"
____exports.TrinketType.BETHS_FAITH = 142
____exports.TrinketType[____exports.TrinketType.BETHS_FAITH] = "BETHS_FAITH"
____exports.TrinketType.OLD_CAPACITOR = 143
____exports.TrinketType[____exports.TrinketType.OLD_CAPACITOR] = "OLD_CAPACITOR"
____exports.TrinketType.BRAIN_WORM = 144
____exports.TrinketType[____exports.TrinketType.BRAIN_WORM] = "BRAIN_WORM"
____exports.TrinketType.PERFECTION = 145
____exports.TrinketType[____exports.TrinketType.PERFECTION] = "PERFECTION"
____exports.TrinketType.DEVILS_CROWN = 146
____exports.TrinketType[____exports.TrinketType.DEVILS_CROWN] = "DEVILS_CROWN"
____exports.TrinketType.CHARGED_PENNY = 147
____exports.TrinketType[____exports.TrinketType.CHARGED_PENNY] = "CHARGED_PENNY"
____exports.TrinketType.FRIENDSHIP_NECKLACE = 148
____exports.TrinketType[____exports.TrinketType.FRIENDSHIP_NECKLACE] = "FRIENDSHIP_NECKLACE"
____exports.TrinketType.PANIC_BUTTON = 149
____exports.TrinketType[____exports.TrinketType.PANIC_BUTTON] = "PANIC_BUTTON"
____exports.TrinketType.BLUE_KEY = 150
____exports.TrinketType[____exports.TrinketType.BLUE_KEY] = "BLUE_KEY"
____exports.TrinketType.FLAT_FILE = 151
____exports.TrinketType[____exports.TrinketType.FLAT_FILE] = "FLAT_FILE"
____exports.TrinketType.TELESCOPE_LENS = 152
____exports.TrinketType[____exports.TrinketType.TELESCOPE_LENS] = "TELESCOPE_LENS"
____exports.TrinketType.MOMS_LOCK = 153
____exports.TrinketType[____exports.TrinketType.MOMS_LOCK] = "MOMS_LOCK"
____exports.TrinketType.DICE_BAG = 154
____exports.TrinketType[____exports.TrinketType.DICE_BAG] = "DICE_BAG"
____exports.TrinketType.HOLY_CROWN = 155
____exports.TrinketType[____exports.TrinketType.HOLY_CROWN] = "HOLY_CROWN"
____exports.TrinketType.MOTHERS_KISS = 156
____exports.TrinketType[____exports.TrinketType.MOTHERS_KISS] = "MOTHERS_KISS"
____exports.TrinketType.TORN_CARD = 157
____exports.TrinketType[____exports.TrinketType.TORN_CARD] = "TORN_CARD"
____exports.TrinketType.TORN_POCKET = 158
____exports.TrinketType[____exports.TrinketType.TORN_POCKET] = "TORN_POCKET"
____exports.TrinketType.GILDED_KEY = 159
____exports.TrinketType[____exports.TrinketType.GILDED_KEY] = "GILDED_KEY"
____exports.TrinketType.LUCKY_SACK = 160
____exports.TrinketType[____exports.TrinketType.LUCKY_SACK] = "LUCKY_SACK"
____exports.TrinketType.WICKED_CROWN = 161
____exports.TrinketType[____exports.TrinketType.WICKED_CROWN] = "WICKED_CROWN"
____exports.TrinketType.AZAZELS_STUMP = 162
____exports.TrinketType[____exports.TrinketType.AZAZELS_STUMP] = "AZAZELS_STUMP"
____exports.TrinketType.DINGLE_BERRY = 163
____exports.TrinketType[____exports.TrinketType.DINGLE_BERRY] = "DINGLE_BERRY"
____exports.TrinketType.RING_CAP = 164
____exports.TrinketType[____exports.TrinketType.RING_CAP] = "RING_CAP"
____exports.TrinketType.NUH_UH = 165
____exports.TrinketType[____exports.TrinketType.NUH_UH] = "NUH_UH"
____exports.TrinketType.MODELING_CLAY = 166
____exports.TrinketType[____exports.TrinketType.MODELING_CLAY] = "MODELING_CLAY"
____exports.TrinketType.POLISHED_BONE = 167
____exports.TrinketType[____exports.TrinketType.POLISHED_BONE] = "POLISHED_BONE"
____exports.TrinketType.HOLLOW_HEART = 168
____exports.TrinketType[____exports.TrinketType.HOLLOW_HEART] = "HOLLOW_HEART"
____exports.TrinketType.KIDS_DRAWING = 169
____exports.TrinketType[____exports.TrinketType.KIDS_DRAWING] = "KIDS_DRAWING"
____exports.TrinketType.CRYSTAL_KEY = 170
____exports.TrinketType[____exports.TrinketType.CRYSTAL_KEY] = "CRYSTAL_KEY"
____exports.TrinketType.KEEPERS_BARGAIN = 171
____exports.TrinketType[____exports.TrinketType.KEEPERS_BARGAIN] = "KEEPERS_BARGAIN"
____exports.TrinketType.CURSED_PENNY = 172
____exports.TrinketType[____exports.TrinketType.CURSED_PENNY] = "CURSED_PENNY"
____exports.TrinketType.YOUR_SOUL = 173
____exports.TrinketType[____exports.TrinketType.YOUR_SOUL] = "YOUR_SOUL"
____exports.TrinketType.NUMBER_MAGNET = 174
____exports.TrinketType[____exports.TrinketType.NUMBER_MAGNET] = "NUMBER_MAGNET"
____exports.TrinketType.STRANGE_KEY = 175
____exports.TrinketType[____exports.TrinketType.STRANGE_KEY] = "STRANGE_KEY"
____exports.TrinketType.LIL_CLOT = 176
____exports.TrinketType[____exports.TrinketType.LIL_CLOT] = "LIL_CLOT"
____exports.TrinketType.TEMPORARY_TATTOO = 177
____exports.TrinketType[____exports.TrinketType.TEMPORARY_TATTOO] = "TEMPORARY_TATTOO"
____exports.TrinketType.SWALLOWED_M80 = 178
____exports.TrinketType[____exports.TrinketType.SWALLOWED_M80] = "SWALLOWED_M80"
____exports.TrinketType.RC_REMOTE = 179
____exports.TrinketType[____exports.TrinketType.RC_REMOTE] = "RC_REMOTE"
____exports.TrinketType.FOUND_SOUL = 180
____exports.TrinketType[____exports.TrinketType.FOUND_SOUL] = "FOUND_SOUL"
____exports.TrinketType.EXPANSION_PACK = 181
____exports.TrinketType[____exports.TrinketType.EXPANSION_PACK] = "EXPANSION_PACK"
____exports.TrinketType.BETHS_ESSENCE = 182
____exports.TrinketType[____exports.TrinketType.BETHS_ESSENCE] = "BETHS_ESSENCE"
____exports.TrinketType.TWINS = 183
____exports.TrinketType[____exports.TrinketType.TWINS] = "TWINS"
____exports.TrinketType.ADOPTION_PAPERS = 184
____exports.TrinketType[____exports.TrinketType.ADOPTION_PAPERS] = "ADOPTION_PAPERS"
____exports.TrinketType.CRICKET_LEG = 185
____exports.TrinketType[____exports.TrinketType.CRICKET_LEG] = "CRICKET_LEG"
____exports.TrinketType.APOLLYONS_BEST_FRIEND = 186
____exports.TrinketType[____exports.TrinketType.APOLLYONS_BEST_FRIEND] = "APOLLYONS_BEST_FRIEND"
____exports.TrinketType.BROKEN_GLASSES = 187
____exports.TrinketType[____exports.TrinketType.BROKEN_GLASSES] = "BROKEN_GLASSES"
____exports.TrinketType.ICE_CUBE = 188
____exports.TrinketType[____exports.TrinketType.ICE_CUBE] = "ICE_CUBE"
____exports.TrinketType.SIGIL_OF_BAPHOMET = 189
____exports.TrinketType[____exports.TrinketType.SIGIL_OF_BAPHOMET] = "SIGIL_OF_BAPHOMET"
--- For `EntityType.PICKUP` (5), `PickupVariant.BED` (380).
____exports.BedSubType = {}
____exports.BedSubType.ISAAC = 0
____exports.BedSubType[____exports.BedSubType.ISAAC] = "ISAAC"
____exports.BedSubType.MOM = 1
____exports.BedSubType[____exports.BedSubType.MOM] = "MOM"
--- For `EntityType.LASER` (7).
____exports.LaserSubType = {}
____exports.LaserSubType.LINEAR = 0
____exports.LaserSubType[____exports.LaserSubType.LINEAR] = "LINEAR"
____exports.LaserSubType.RING_LUDOVICO = 1
____exports.LaserSubType[____exports.LaserSubType.RING_LUDOVICO] = "RING_LUDOVICO"
____exports.LaserSubType.RING_PROJECTILE = 2
____exports.LaserSubType[____exports.LaserSubType.RING_PROJECTILE] = "RING_PROJECTILE"
____exports.LaserSubType.RING_FOLLOW_PARENT = 3
____exports.LaserSubType[____exports.LaserSubType.RING_FOLLOW_PARENT] = "RING_FOLLOW_PARENT"
____exports.LaserSubType.NO_IMPACT = 4
____exports.LaserSubType[____exports.LaserSubType.NO_IMPACT] = "NO_IMPACT"
--- For `EntityType.CHARGER` (23), `ChargerVariant.CHARGER` (0).
____exports.ChargerSubType = {}
____exports.ChargerSubType.CHARGER = 0
____exports.ChargerSubType[____exports.ChargerSubType.CHARGER] = "CHARGER"
____exports.ChargerSubType.MY_SHADOW = 1
____exports.ChargerSubType[____exports.ChargerSubType.MY_SHADOW] = "MY_SHADOW"
--- For `EntityType.CONSTANT_STONE_SHOOTER` (202),
-- `ConstantStoneShooterVariant.CONSTANT_STONE_SHOOTER` (0).
-- 
-- This is the same as the `Direction` enum.
____exports.ConstantStoneShooterSubType = {}
____exports.ConstantStoneShooterSubType.LEFT = 0
____exports.ConstantStoneShooterSubType[____exports.ConstantStoneShooterSubType.LEFT] = "LEFT"
____exports.ConstantStoneShooterSubType.UP = 1
____exports.ConstantStoneShooterSubType[____exports.ConstantStoneShooterSubType.UP] = "UP"
____exports.ConstantStoneShooterSubType.RIGHT = 2
____exports.ConstantStoneShooterSubType[____exports.ConstantStoneShooterSubType.RIGHT] = "RIGHT"
____exports.ConstantStoneShooterSubType.DOWN = 3
____exports.ConstantStoneShooterSubType[____exports.ConstantStoneShooterSubType.DOWN] = "DOWN"
--- For `EntityType.MOTHER` (912), `MotherVariant.MOTHER_1` (0).
____exports.MotherSubType = {}
____exports.MotherSubType.PHASE_1 = 0
____exports.MotherSubType[____exports.MotherSubType.PHASE_1] = "PHASE_1"
____exports.MotherSubType.PHASE_2 = 1
____exports.MotherSubType[____exports.MotherSubType.PHASE_2] = "PHASE_2"
--- For `EntityType.EFFECT` (1000), `EffectVariant.BLOOD_EXPLOSION` (2).
____exports.BloodExplosionSubType = {}
____exports.BloodExplosionSubType.MEDIUM_WITH_LEFTOVER_BLOOD = 0
____exports.BloodExplosionSubType[____exports.BloodExplosionSubType.MEDIUM_WITH_LEFTOVER_BLOOD] = "MEDIUM_WITH_LEFTOVER_BLOOD"
____exports.BloodExplosionSubType.SMALL = 1
____exports.BloodExplosionSubType[____exports.BloodExplosionSubType.SMALL] = "SMALL"
____exports.BloodExplosionSubType.MEDIUM = 2
____exports.BloodExplosionSubType[____exports.BloodExplosionSubType.MEDIUM] = "MEDIUM"
____exports.BloodExplosionSubType.LARGE = 3
____exports.BloodExplosionSubType[____exports.BloodExplosionSubType.LARGE] = "LARGE"
____exports.BloodExplosionSubType.GIANT = 4
____exports.BloodExplosionSubType[____exports.BloodExplosionSubType.GIANT] = "GIANT"
____exports.BloodExplosionSubType.SWIRL = 5
____exports.BloodExplosionSubType[____exports.BloodExplosionSubType.SWIRL] = "SWIRL"
--- For `EntityType.EFFECT` (1000), `EffectVariant.POOF_1` (15).
____exports.PoofSubType = {}
____exports.PoofSubType.NORMAL = 0
____exports.PoofSubType[____exports.PoofSubType.NORMAL] = "NORMAL"
____exports.PoofSubType.SMALL = 1
____exports.PoofSubType[____exports.PoofSubType.SMALL] = "SMALL"
____exports.PoofSubType.LARGE = 3
____exports.PoofSubType[____exports.PoofSubType.LARGE] = "LARGE"
--- For `EntityType.EFFECT` (1000), `EffectVariant.HEAVEN_LIGHT_DOOR` (39).
____exports.HeavenLightDoorSubType = {}
____exports.HeavenLightDoorSubType.HEAVEN_DOOR = 0
____exports.HeavenLightDoorSubType[____exports.HeavenLightDoorSubType.HEAVEN_DOOR] = "HEAVEN_DOOR"
____exports.HeavenLightDoorSubType.MOONLIGHT = 1
____exports.HeavenLightDoorSubType[____exports.HeavenLightDoorSubType.MOONLIGHT] = "MOONLIGHT"
--- For `EntityType.EFFECT` (1000), `EffectVariant.DICE_FLOOR` (76).
____exports.DiceFloorSubType = {}
____exports.DiceFloorSubType.ONE_PIP = 0
____exports.DiceFloorSubType[____exports.DiceFloorSubType.ONE_PIP] = "ONE_PIP"
____exports.DiceFloorSubType.TWO_PIP = 1
____exports.DiceFloorSubType[____exports.DiceFloorSubType.TWO_PIP] = "TWO_PIP"
____exports.DiceFloorSubType.THREE_PIP = 2
____exports.DiceFloorSubType[____exports.DiceFloorSubType.THREE_PIP] = "THREE_PIP"
____exports.DiceFloorSubType.FOUR_PIP = 3
____exports.DiceFloorSubType[____exports.DiceFloorSubType.FOUR_PIP] = "FOUR_PIP"
____exports.DiceFloorSubType.FIVE_PIP = 4
____exports.DiceFloorSubType[____exports.DiceFloorSubType.FIVE_PIP] = "FIVE_PIP"
____exports.DiceFloorSubType.SIX_PIP = 5
____exports.DiceFloorSubType[____exports.DiceFloorSubType.SIX_PIP] = "SIX_PIP"
--- For `EntityType.EFFECT` (1000), `EffectVariant.TALL_LADDER` (156).
____exports.TallLadderSubType = {}
____exports.TallLadderSubType.TALL_LADDER = 0
____exports.TallLadderSubType[____exports.TallLadderSubType.TALL_LADDER] = "TALL_LADDER"
____exports.TallLadderSubType.STAIRWAY = 1
____exports.TallLadderSubType[____exports.TallLadderSubType.STAIRWAY] = "STAIRWAY"
--- For `EntityType.EFFECT` (1000), `EffectVariant.PURGATORY` (189).
____exports.PurgatorySubType = {}
____exports.PurgatorySubType.RIFT = 0
____exports.PurgatorySubType[____exports.PurgatorySubType.RIFT] = "RIFT"
____exports.PurgatorySubType.GHOST = 1
____exports.PurgatorySubType[____exports.PurgatorySubType.GHOST] = "GHOST"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.collections.variants"] = function(...) 
local ____exports = {}
--- For `EntityType.PLAYER` (1).
____exports.PlayerVariant = {}
____exports.PlayerVariant.PLAYER = 0
____exports.PlayerVariant[____exports.PlayerVariant.PLAYER] = "PLAYER"
____exports.PlayerVariant.COOP_BABY = 1
____exports.PlayerVariant[____exports.PlayerVariant.COOP_BABY] = "COOP_BABY"
--- For `EntityType.TEAR` (2).
-- 
-- Generally, the `TearVariant` affects the graphics of the tear, while the `TearFlag` affects the
-- gameplay mechanic. For example, the Euthanasia collectible grants a chance for needle tears that
-- explode. `TearVariant.NEEDLE` makes the tear look like a needle, and the exploding effect comes
-- from `TearFlag.NEEDLE`.
-- 
-- However, there are some exceptions:
-- - `TearVariant.CHAOS_CARD` (9) - The variant grants the instant-kill property of the tear.
-- - `TearVariant.KEY_BLOOD` (44) - Sharp Key makes Isaac shoot key tears that deal extra damage.
--   Both the graphical effect and the extra damage are granted by this variant.
____exports.TearVariant = {}
____exports.TearVariant.BLUE = 0
____exports.TearVariant[____exports.TearVariant.BLUE] = "BLUE"
____exports.TearVariant.BLOOD = 1
____exports.TearVariant[____exports.TearVariant.BLOOD] = "BLOOD"
____exports.TearVariant.TOOTH = 2
____exports.TearVariant[____exports.TearVariant.TOOTH] = "TOOTH"
____exports.TearVariant.METALLIC = 3
____exports.TearVariant[____exports.TearVariant.METALLIC] = "METALLIC"
____exports.TearVariant.BOBS_HEAD = 4
____exports.TearVariant[____exports.TearVariant.BOBS_HEAD] = "BOBS_HEAD"
____exports.TearVariant.FIRE_MIND = 5
____exports.TearVariant[____exports.TearVariant.FIRE_MIND] = "FIRE_MIND"
____exports.TearVariant.DARK_MATTER = 6
____exports.TearVariant[____exports.TearVariant.DARK_MATTER] = "DARK_MATTER"
____exports.TearVariant.MYSTERIOUS = 7
____exports.TearVariant[____exports.TearVariant.MYSTERIOUS] = "MYSTERIOUS"
____exports.TearVariant.SCHYTHE = 8
____exports.TearVariant[____exports.TearVariant.SCHYTHE] = "SCHYTHE"
____exports.TearVariant.CHAOS_CARD = 9
____exports.TearVariant[____exports.TearVariant.CHAOS_CARD] = "CHAOS_CARD"
____exports.TearVariant.LOST_CONTACT = 10
____exports.TearVariant[____exports.TearVariant.LOST_CONTACT] = "LOST_CONTACT"
____exports.TearVariant.CUPID_BLUE = 11
____exports.TearVariant[____exports.TearVariant.CUPID_BLUE] = "CUPID_BLUE"
____exports.TearVariant.CUPID_BLOOD = 12
____exports.TearVariant[____exports.TearVariant.CUPID_BLOOD] = "CUPID_BLOOD"
____exports.TearVariant.NAIL = 13
____exports.TearVariant[____exports.TearVariant.NAIL] = "NAIL"
____exports.TearVariant.PUPULA = 14
____exports.TearVariant[____exports.TearVariant.PUPULA] = "PUPULA"
____exports.TearVariant.PUPULA_BLOOD = 15
____exports.TearVariant[____exports.TearVariant.PUPULA_BLOOD] = "PUPULA_BLOOD"
____exports.TearVariant.GODS_FLESH = 16
____exports.TearVariant[____exports.TearVariant.GODS_FLESH] = "GODS_FLESH"
____exports.TearVariant.GODS_FLESH_BLOOD = 17
____exports.TearVariant[____exports.TearVariant.GODS_FLESH_BLOOD] = "GODS_FLESH_BLOOD"
____exports.TearVariant.DIAMOND = 18
____exports.TearVariant[____exports.TearVariant.DIAMOND] = "DIAMOND"
____exports.TearVariant.EXPLOSIVO = 19
____exports.TearVariant[____exports.TearVariant.EXPLOSIVO] = "EXPLOSIVO"
____exports.TearVariant.COIN = 20
____exports.TearVariant[____exports.TearVariant.COIN] = "COIN"
____exports.TearVariant.MULTIDIMENSIONAL = 21
____exports.TearVariant[____exports.TearVariant.MULTIDIMENSIONAL] = "MULTIDIMENSIONAL"
____exports.TearVariant.STONE = 22
____exports.TearVariant[____exports.TearVariant.STONE] = "STONE"
____exports.TearVariant.NAIL_BLOOD = 23
____exports.TearVariant[____exports.TearVariant.NAIL_BLOOD] = "NAIL_BLOOD"
____exports.TearVariant.GLAUCOMA = 24
____exports.TearVariant[____exports.TearVariant.GLAUCOMA] = "GLAUCOMA"
____exports.TearVariant.GLAUCOMA_BLOOD = 25
____exports.TearVariant[____exports.TearVariant.GLAUCOMA_BLOOD] = "GLAUCOMA_BLOOD"
____exports.TearVariant.BOOGER = 26
____exports.TearVariant[____exports.TearVariant.BOOGER] = "BOOGER"
____exports.TearVariant.EGG = 27
____exports.TearVariant[____exports.TearVariant.EGG] = "EGG"
____exports.TearVariant.RAZOR = 28
____exports.TearVariant[____exports.TearVariant.RAZOR] = "RAZOR"
____exports.TearVariant.BONE = 29
____exports.TearVariant[____exports.TearVariant.BONE] = "BONE"
____exports.TearVariant.BLACK_TOOTH = 30
____exports.TearVariant[____exports.TearVariant.BLACK_TOOTH] = "BLACK_TOOTH"
____exports.TearVariant.NEEDLE = 31
____exports.TearVariant[____exports.TearVariant.NEEDLE] = "NEEDLE"
____exports.TearVariant.BELIAL = 32
____exports.TearVariant[____exports.TearVariant.BELIAL] = "BELIAL"
____exports.TearVariant.EYE = 33
____exports.TearVariant[____exports.TearVariant.EYE] = "EYE"
____exports.TearVariant.EYE_BLOOD = 34
____exports.TearVariant[____exports.TearVariant.EYE_BLOOD] = "EYE_BLOOD"
____exports.TearVariant.BALLOON = 35
____exports.TearVariant[____exports.TearVariant.BALLOON] = "BALLOON"
____exports.TearVariant.HUNGRY = 36
____exports.TearVariant[____exports.TearVariant.HUNGRY] = "HUNGRY"
____exports.TearVariant.BALLOON_BRIMSTONE = 37
____exports.TearVariant[____exports.TearVariant.BALLOON_BRIMSTONE] = "BALLOON_BRIMSTONE"
____exports.TearVariant.BALLOON_BOMB = 38
____exports.TearVariant[____exports.TearVariant.BALLOON_BOMB] = "BALLOON_BOMB"
____exports.TearVariant.FIST = 39
____exports.TearVariant[____exports.TearVariant.FIST] = "FIST"
____exports.TearVariant.GRID_ENTITY = 40
____exports.TearVariant[____exports.TearVariant.GRID_ENTITY] = "GRID_ENTITY"
____exports.TearVariant.ICE = 41
____exports.TearVariant[____exports.TearVariant.ICE] = "ICE"
____exports.TearVariant.ROCK = 42
____exports.TearVariant[____exports.TearVariant.ROCK] = "ROCK"
____exports.TearVariant.KEY = 43
____exports.TearVariant[____exports.TearVariant.KEY] = "KEY"
____exports.TearVariant.KEY_BLOOD = 44
____exports.TearVariant[____exports.TearVariant.KEY_BLOOD] = "KEY_BLOOD"
____exports.TearVariant.ERASER = 45
____exports.TearVariant[____exports.TearVariant.ERASER] = "ERASER"
____exports.TearVariant.FIRE = 46
____exports.TearVariant[____exports.TearVariant.FIRE] = "FIRE"
____exports.TearVariant.SWORD_BEAM = 47
____exports.TearVariant[____exports.TearVariant.SWORD_BEAM] = "SWORD_BEAM"
____exports.TearVariant.SPORE = 48
____exports.TearVariant[____exports.TearVariant.SPORE] = "SPORE"
____exports.TearVariant.TECH_SWORD_BEAM = 49
____exports.TearVariant[____exports.TearVariant.TECH_SWORD_BEAM] = "TECH_SWORD_BEAM"
--- For `EntityType.FAMILIAR` (3).
____exports.FamiliarVariant = {}
____exports.FamiliarVariant.FAMILIAR_NULL = 0
____exports.FamiliarVariant[____exports.FamiliarVariant.FAMILIAR_NULL] = "FAMILIAR_NULL"
____exports.FamiliarVariant.BROTHER_BOBBY = 1
____exports.FamiliarVariant[____exports.FamiliarVariant.BROTHER_BOBBY] = "BROTHER_BOBBY"
____exports.FamiliarVariant.DEMON_BABY = 2
____exports.FamiliarVariant[____exports.FamiliarVariant.DEMON_BABY] = "DEMON_BABY"
____exports.FamiliarVariant.LITTLE_CHUBBY = 3
____exports.FamiliarVariant[____exports.FamiliarVariant.LITTLE_CHUBBY] = "LITTLE_CHUBBY"
____exports.FamiliarVariant.LITTLE_GISH = 4
____exports.FamiliarVariant[____exports.FamiliarVariant.LITTLE_GISH] = "LITTLE_GISH"
____exports.FamiliarVariant.LITTLE_STEVEN = 5
____exports.FamiliarVariant[____exports.FamiliarVariant.LITTLE_STEVEN] = "LITTLE_STEVEN"
____exports.FamiliarVariant.ROBO_BABY = 6
____exports.FamiliarVariant[____exports.FamiliarVariant.ROBO_BABY] = "ROBO_BABY"
____exports.FamiliarVariant.SISTER_MAGGY = 7
____exports.FamiliarVariant[____exports.FamiliarVariant.SISTER_MAGGY] = "SISTER_MAGGY"
____exports.FamiliarVariant.ABEL = 8
____exports.FamiliarVariant[____exports.FamiliarVariant.ABEL] = "ABEL"
____exports.FamiliarVariant.GHOST_BABY = 9
____exports.FamiliarVariant[____exports.FamiliarVariant.GHOST_BABY] = "GHOST_BABY"
____exports.FamiliarVariant.HARLEQUIN_BABY = 10
____exports.FamiliarVariant[____exports.FamiliarVariant.HARLEQUIN_BABY] = "HARLEQUIN_BABY"
____exports.FamiliarVariant.RAINBOW_BABY = 11
____exports.FamiliarVariant[____exports.FamiliarVariant.RAINBOW_BABY] = "RAINBOW_BABY"
____exports.FamiliarVariant.ISAACS_HEAD = 12
____exports.FamiliarVariant[____exports.FamiliarVariant.ISAACS_HEAD] = "ISAACS_HEAD"
____exports.FamiliarVariant.BLUE_BABY_SOUL = 13
____exports.FamiliarVariant[____exports.FamiliarVariant.BLUE_BABY_SOUL] = "BLUE_BABY_SOUL"
____exports.FamiliarVariant.DEAD_BIRD = 14
____exports.FamiliarVariant[____exports.FamiliarVariant.DEAD_BIRD] = "DEAD_BIRD"
____exports.FamiliarVariant.EVES_BIRD_FOOT = 15
____exports.FamiliarVariant[____exports.FamiliarVariant.EVES_BIRD_FOOT] = "EVES_BIRD_FOOT"
____exports.FamiliarVariant.DADDY_LONGLEGS = 16
____exports.FamiliarVariant[____exports.FamiliarVariant.DADDY_LONGLEGS] = "DADDY_LONGLEGS"
____exports.FamiliarVariant.PEEPER = 17
____exports.FamiliarVariant[____exports.FamiliarVariant.PEEPER] = "PEEPER"
____exports.FamiliarVariant.BOMB_BAG = 20
____exports.FamiliarVariant[____exports.FamiliarVariant.BOMB_BAG] = "BOMB_BAG"
____exports.FamiliarVariant.SACK_OF_PENNIES = 21
____exports.FamiliarVariant[____exports.FamiliarVariant.SACK_OF_PENNIES] = "SACK_OF_PENNIES"
____exports.FamiliarVariant.LITTLE_CHAD = 22
____exports.FamiliarVariant[____exports.FamiliarVariant.LITTLE_CHAD] = "LITTLE_CHAD"
____exports.FamiliarVariant.RELIC = 23
____exports.FamiliarVariant[____exports.FamiliarVariant.RELIC] = "RELIC"
____exports.FamiliarVariant.BUM_FRIEND = 24
____exports.FamiliarVariant[____exports.FamiliarVariant.BUM_FRIEND] = "BUM_FRIEND"
____exports.FamiliarVariant.HOLY_WATER = 25
____exports.FamiliarVariant[____exports.FamiliarVariant.HOLY_WATER] = "HOLY_WATER"
____exports.FamiliarVariant.KEY_PIECE_1 = 26
____exports.FamiliarVariant[____exports.FamiliarVariant.KEY_PIECE_1] = "KEY_PIECE_1"
____exports.FamiliarVariant.KEY_PIECE_2 = 27
____exports.FamiliarVariant[____exports.FamiliarVariant.KEY_PIECE_2] = "KEY_PIECE_2"
____exports.FamiliarVariant.KEY_FULL = 28
____exports.FamiliarVariant[____exports.FamiliarVariant.KEY_FULL] = "KEY_FULL"
____exports.FamiliarVariant.FOREVER_ALONE = 30
____exports.FamiliarVariant[____exports.FamiliarVariant.FOREVER_ALONE] = "FOREVER_ALONE"
____exports.FamiliarVariant.DISTANT_ADMIRATION = 31
____exports.FamiliarVariant[____exports.FamiliarVariant.DISTANT_ADMIRATION] = "DISTANT_ADMIRATION"
____exports.FamiliarVariant.GUARDIAN_ANGEL = 32
____exports.FamiliarVariant[____exports.FamiliarVariant.GUARDIAN_ANGEL] = "GUARDIAN_ANGEL"
____exports.FamiliarVariant.FLY_ORBITAL = 33
____exports.FamiliarVariant[____exports.FamiliarVariant.FLY_ORBITAL] = "FLY_ORBITAL"
____exports.FamiliarVariant.SACRIFICIAL_DAGGER = 35
____exports.FamiliarVariant[____exports.FamiliarVariant.SACRIFICIAL_DAGGER] = "SACRIFICIAL_DAGGER"
____exports.FamiliarVariant.DEAD_CAT = 40
____exports.FamiliarVariant[____exports.FamiliarVariant.DEAD_CAT] = "DEAD_CAT"
____exports.FamiliarVariant.ONE_UP = 41
____exports.FamiliarVariant[____exports.FamiliarVariant.ONE_UP] = "ONE_UP"
____exports.FamiliarVariant.GUPPYS_HAIRBALL = 42
____exports.FamiliarVariant[____exports.FamiliarVariant.GUPPYS_HAIRBALL] = "GUPPYS_HAIRBALL"
____exports.FamiliarVariant.BLUE_FLY = 43
____exports.FamiliarVariant[____exports.FamiliarVariant.BLUE_FLY] = "BLUE_FLY"
____exports.FamiliarVariant.CUBE_OF_MEAT_1 = 44
____exports.FamiliarVariant[____exports.FamiliarVariant.CUBE_OF_MEAT_1] = "CUBE_OF_MEAT_1"
____exports.FamiliarVariant.CUBE_OF_MEAT_2 = 45
____exports.FamiliarVariant[____exports.FamiliarVariant.CUBE_OF_MEAT_2] = "CUBE_OF_MEAT_2"
____exports.FamiliarVariant.CUBE_OF_MEAT_3 = 46
____exports.FamiliarVariant[____exports.FamiliarVariant.CUBE_OF_MEAT_3] = "CUBE_OF_MEAT_3"
____exports.FamiliarVariant.CUBE_OF_MEAT_4 = 47
____exports.FamiliarVariant[____exports.FamiliarVariant.CUBE_OF_MEAT_4] = "CUBE_OF_MEAT_4"
____exports.FamiliarVariant.ISAACS_BODY = 48
____exports.FamiliarVariant[____exports.FamiliarVariant.ISAACS_BODY] = "ISAACS_BODY"
____exports.FamiliarVariant.SMART_FLY = 50
____exports.FamiliarVariant[____exports.FamiliarVariant.SMART_FLY] = "SMART_FLY"
____exports.FamiliarVariant.DRY_BABY = 51
____exports.FamiliarVariant[____exports.FamiliarVariant.DRY_BABY] = "DRY_BABY"
____exports.FamiliarVariant.JUICY_SACK = 52
____exports.FamiliarVariant[____exports.FamiliarVariant.JUICY_SACK] = "JUICY_SACK"
____exports.FamiliarVariant.ROBO_BABY_2 = 53
____exports.FamiliarVariant[____exports.FamiliarVariant.ROBO_BABY_2] = "ROBO_BABY_2"
____exports.FamiliarVariant.ROTTEN_BABY = 54
____exports.FamiliarVariant[____exports.FamiliarVariant.ROTTEN_BABY] = "ROTTEN_BABY"
____exports.FamiliarVariant.HEADLESS_BABY = 55
____exports.FamiliarVariant[____exports.FamiliarVariant.HEADLESS_BABY] = "HEADLESS_BABY"
____exports.FamiliarVariant.LEECH = 56
____exports.FamiliarVariant[____exports.FamiliarVariant.LEECH] = "LEECH"
____exports.FamiliarVariant.MYSTERY_SACK = 57
____exports.FamiliarVariant[____exports.FamiliarVariant.MYSTERY_SACK] = "MYSTERY_SACK"
____exports.FamiliarVariant.BBF = 58
____exports.FamiliarVariant[____exports.FamiliarVariant.BBF] = "BBF"
____exports.FamiliarVariant.BOBS_BRAIN = 59
____exports.FamiliarVariant[____exports.FamiliarVariant.BOBS_BRAIN] = "BOBS_BRAIN"
____exports.FamiliarVariant.BEST_BUD = 60
____exports.FamiliarVariant[____exports.FamiliarVariant.BEST_BUD] = "BEST_BUD"
____exports.FamiliarVariant.LIL_BRIMSTONE = 61
____exports.FamiliarVariant[____exports.FamiliarVariant.LIL_BRIMSTONE] = "LIL_BRIMSTONE"
____exports.FamiliarVariant.ISAACS_HEART = 62
____exports.FamiliarVariant[____exports.FamiliarVariant.ISAACS_HEART] = "ISAACS_HEART"
____exports.FamiliarVariant.LIL_HAUNT = 63
____exports.FamiliarVariant[____exports.FamiliarVariant.LIL_HAUNT] = "LIL_HAUNT"
____exports.FamiliarVariant.DARK_BUM = 64
____exports.FamiliarVariant[____exports.FamiliarVariant.DARK_BUM] = "DARK_BUM"
____exports.FamiliarVariant.BIG_FAN = 65
____exports.FamiliarVariant[____exports.FamiliarVariant.BIG_FAN] = "BIG_FAN"
____exports.FamiliarVariant.SISSY_LONGLEGS = 66
____exports.FamiliarVariant[____exports.FamiliarVariant.SISSY_LONGLEGS] = "SISSY_LONGLEGS"
____exports.FamiliarVariant.PUNCHING_BAG = 67
____exports.FamiliarVariant[____exports.FamiliarVariant.PUNCHING_BAG] = "PUNCHING_BAG"
____exports.FamiliarVariant.GUILLOTINE = 68
____exports.FamiliarVariant[____exports.FamiliarVariant.GUILLOTINE] = "GUILLOTINE"
____exports.FamiliarVariant.BALL_OF_BANDAGES_1 = 69
____exports.FamiliarVariant[____exports.FamiliarVariant.BALL_OF_BANDAGES_1] = "BALL_OF_BANDAGES_1"
____exports.FamiliarVariant.BALL_OF_BANDAGES_2 = 70
____exports.FamiliarVariant[____exports.FamiliarVariant.BALL_OF_BANDAGES_2] = "BALL_OF_BANDAGES_2"
____exports.FamiliarVariant.BALL_OF_BANDAGES_3 = 71
____exports.FamiliarVariant[____exports.FamiliarVariant.BALL_OF_BANDAGES_3] = "BALL_OF_BANDAGES_3"
____exports.FamiliarVariant.BALL_OF_BANDAGES_4 = 72
____exports.FamiliarVariant[____exports.FamiliarVariant.BALL_OF_BANDAGES_4] = "BALL_OF_BANDAGES_4"
____exports.FamiliarVariant.BLUE_SPIDER = 73
____exports.FamiliarVariant[____exports.FamiliarVariant.BLUE_SPIDER] = "BLUE_SPIDER"
____exports.FamiliarVariant.MONGO_BABY = 74
____exports.FamiliarVariant[____exports.FamiliarVariant.MONGO_BABY] = "MONGO_BABY"
____exports.FamiliarVariant.SAMSONS_CHAINS = 75
____exports.FamiliarVariant[____exports.FamiliarVariant.SAMSONS_CHAINS] = "SAMSONS_CHAINS"
____exports.FamiliarVariant.CAINS_OTHER_EYE = 76
____exports.FamiliarVariant[____exports.FamiliarVariant.CAINS_OTHER_EYE] = "CAINS_OTHER_EYE"
____exports.FamiliarVariant.BLUE_BABYS_ONLY_FRIEND = 77
____exports.FamiliarVariant[____exports.FamiliarVariant.BLUE_BABYS_ONLY_FRIEND] = "BLUE_BABYS_ONLY_FRIEND"
____exports.FamiliarVariant.SCISSORS = 78
____exports.FamiliarVariant[____exports.FamiliarVariant.SCISSORS] = "SCISSORS"
____exports.FamiliarVariant.GEMINI = 79
____exports.FamiliarVariant[____exports.FamiliarVariant.GEMINI] = "GEMINI"
____exports.FamiliarVariant.INCUBUS = 80
____exports.FamiliarVariant[____exports.FamiliarVariant.INCUBUS] = "INCUBUS"
____exports.FamiliarVariant.FATES_REWARD = 81
____exports.FamiliarVariant[____exports.FamiliarVariant.FATES_REWARD] = "FATES_REWARD"
____exports.FamiliarVariant.LIL_CHEST = 82
____exports.FamiliarVariant[____exports.FamiliarVariant.LIL_CHEST] = "LIL_CHEST"
____exports.FamiliarVariant.SWORN_PROTECTOR = 83
____exports.FamiliarVariant[____exports.FamiliarVariant.SWORN_PROTECTOR] = "SWORN_PROTECTOR"
____exports.FamiliarVariant.FRIEND_ZONE = 84
____exports.FamiliarVariant[____exports.FamiliarVariant.FRIEND_ZONE] = "FRIEND_ZONE"
____exports.FamiliarVariant.LOST_FLY = 85
____exports.FamiliarVariant[____exports.FamiliarVariant.LOST_FLY] = "LOST_FLY"
____exports.FamiliarVariant.CHARGED_BABY = 86
____exports.FamiliarVariant[____exports.FamiliarVariant.CHARGED_BABY] = "CHARGED_BABY"
____exports.FamiliarVariant.LIL_GURDY = 87
____exports.FamiliarVariant[____exports.FamiliarVariant.LIL_GURDY] = "LIL_GURDY"
____exports.FamiliarVariant.BUMBO = 88
____exports.FamiliarVariant[____exports.FamiliarVariant.BUMBO] = "BUMBO"
____exports.FamiliarVariant.CENSER = 89
____exports.FamiliarVariant[____exports.FamiliarVariant.CENSER] = "CENSER"
____exports.FamiliarVariant.KEY_BUM = 90
____exports.FamiliarVariant[____exports.FamiliarVariant.KEY_BUM] = "KEY_BUM"
____exports.FamiliarVariant.RUNE_BAG = 91
____exports.FamiliarVariant[____exports.FamiliarVariant.RUNE_BAG] = "RUNE_BAG"
____exports.FamiliarVariant.SERAPHIM = 92
____exports.FamiliarVariant[____exports.FamiliarVariant.SERAPHIM] = "SERAPHIM"
____exports.FamiliarVariant.GB_BUG = 93
____exports.FamiliarVariant[____exports.FamiliarVariant.GB_BUG] = "GB_BUG"
____exports.FamiliarVariant.SPIDER_MOD = 94
____exports.FamiliarVariant[____exports.FamiliarVariant.SPIDER_MOD] = "SPIDER_MOD"
____exports.FamiliarVariant.FARTING_BABY = 95
____exports.FamiliarVariant[____exports.FamiliarVariant.FARTING_BABY] = "FARTING_BABY"
____exports.FamiliarVariant.SUCCUBUS = 96
____exports.FamiliarVariant[____exports.FamiliarVariant.SUCCUBUS] = "SUCCUBUS"
____exports.FamiliarVariant.LIL_LOKI = 97
____exports.FamiliarVariant[____exports.FamiliarVariant.LIL_LOKI] = "LIL_LOKI"
____exports.FamiliarVariant.OBSESSED_FAN = 98
____exports.FamiliarVariant[____exports.FamiliarVariant.OBSESSED_FAN] = "OBSESSED_FAN"
____exports.FamiliarVariant.PAPA_FLY = 99
____exports.FamiliarVariant[____exports.FamiliarVariant.PAPA_FLY] = "PAPA_FLY"
____exports.FamiliarVariant.MILK = 100
____exports.FamiliarVariant[____exports.FamiliarVariant.MILK] = "MILK"
____exports.FamiliarVariant.MULTIDIMENSIONAL_BABY = 101
____exports.FamiliarVariant[____exports.FamiliarVariant.MULTIDIMENSIONAL_BABY] = "MULTIDIMENSIONAL_BABY"
____exports.FamiliarVariant.SUPER_BUM = 102
____exports.FamiliarVariant[____exports.FamiliarVariant.SUPER_BUM] = "SUPER_BUM"
____exports.FamiliarVariant.TONSIL = 103
____exports.FamiliarVariant[____exports.FamiliarVariant.TONSIL] = "TONSIL"
____exports.FamiliarVariant.BIG_CHUBBY = 104
____exports.FamiliarVariant[____exports.FamiliarVariant.BIG_CHUBBY] = "BIG_CHUBBY"
____exports.FamiliarVariant.DEPRESSION = 105
____exports.FamiliarVariant[____exports.FamiliarVariant.DEPRESSION] = "DEPRESSION"
____exports.FamiliarVariant.SHADE = 106
____exports.FamiliarVariant[____exports.FamiliarVariant.SHADE] = "SHADE"
____exports.FamiliarVariant.HUSHY = 107
____exports.FamiliarVariant[____exports.FamiliarVariant.HUSHY] = "HUSHY"
____exports.FamiliarVariant.LIL_MONSTRO = 108
____exports.FamiliarVariant[____exports.FamiliarVariant.LIL_MONSTRO] = "LIL_MONSTRO"
____exports.FamiliarVariant.KING_BABY = 109
____exports.FamiliarVariant[____exports.FamiliarVariant.KING_BABY] = "KING_BABY"
____exports.FamiliarVariant.FINGER = 110
____exports.FamiliarVariant[____exports.FamiliarVariant.FINGER] = "FINGER"
____exports.FamiliarVariant.YO_LISTEN = 111
____exports.FamiliarVariant[____exports.FamiliarVariant.YO_LISTEN] = "YO_LISTEN"
____exports.FamiliarVariant.ACID_BABY = 112
____exports.FamiliarVariant[____exports.FamiliarVariant.ACID_BABY] = "ACID_BABY"
____exports.FamiliarVariant.SPIDER_BABY = 113
____exports.FamiliarVariant[____exports.FamiliarVariant.SPIDER_BABY] = "SPIDER_BABY"
____exports.FamiliarVariant.SACK_OF_SACKS = 114
____exports.FamiliarVariant[____exports.FamiliarVariant.SACK_OF_SACKS] = "SACK_OF_SACKS"
____exports.FamiliarVariant.BROWN_NUGGET_POOTER = 115
____exports.FamiliarVariant[____exports.FamiliarVariant.BROWN_NUGGET_POOTER] = "BROWN_NUGGET_POOTER"
____exports.FamiliarVariant.BLOODSHOT_EYE = 116
____exports.FamiliarVariant[____exports.FamiliarVariant.BLOODSHOT_EYE] = "BLOODSHOT_EYE"
____exports.FamiliarVariant.MOMS_RAZOR = 117
____exports.FamiliarVariant[____exports.FamiliarVariant.MOMS_RAZOR] = "MOMS_RAZOR"
____exports.FamiliarVariant.ANGRY_FLY = 118
____exports.FamiliarVariant[____exports.FamiliarVariant.ANGRY_FLY] = "ANGRY_FLY"
____exports.FamiliarVariant.BUDDY_IN_A_BOX = 119
____exports.FamiliarVariant[____exports.FamiliarVariant.BUDDY_IN_A_BOX] = "BUDDY_IN_A_BOX"
____exports.FamiliarVariant.SPRINKLER = 120
____exports.FamiliarVariant[____exports.FamiliarVariant.SPRINKLER] = "SPRINKLER"
____exports.FamiliarVariant.LEPROSY = 121
____exports.FamiliarVariant[____exports.FamiliarVariant.LEPROSY] = "LEPROSY"
____exports.FamiliarVariant.LIL_HARBINGERS = 122
____exports.FamiliarVariant[____exports.FamiliarVariant.LIL_HARBINGERS] = "LIL_HARBINGERS"
____exports.FamiliarVariant.ANGELIC_PRISM = 123
____exports.FamiliarVariant[____exports.FamiliarVariant.ANGELIC_PRISM] = "ANGELIC_PRISM"
____exports.FamiliarVariant.MYSTERY_EGG = 124
____exports.FamiliarVariant[____exports.FamiliarVariant.MYSTERY_EGG] = "MYSTERY_EGG"
____exports.FamiliarVariant.LIL_SPEWER = 125
____exports.FamiliarVariant[____exports.FamiliarVariant.LIL_SPEWER] = "LIL_SPEWER"
____exports.FamiliarVariant.SLIPPED_RIB = 126
____exports.FamiliarVariant[____exports.FamiliarVariant.SLIPPED_RIB] = "SLIPPED_RIB"
____exports.FamiliarVariant.POINTY_RIB = 127
____exports.FamiliarVariant[____exports.FamiliarVariant.POINTY_RIB] = "POINTY_RIB"
____exports.FamiliarVariant.BONE_ORBITAL = 128
____exports.FamiliarVariant[____exports.FamiliarVariant.BONE_ORBITAL] = "BONE_ORBITAL"
____exports.FamiliarVariant.HALLOWED_GROUND = 129
____exports.FamiliarVariant[____exports.FamiliarVariant.HALLOWED_GROUND] = "HALLOWED_GROUND"
____exports.FamiliarVariant.JAW_BONE = 130
____exports.FamiliarVariant[____exports.FamiliarVariant.JAW_BONE] = "JAW_BONE"
____exports.FamiliarVariant.INTRUDER = 200
____exports.FamiliarVariant[____exports.FamiliarVariant.INTRUDER] = "INTRUDER"
____exports.FamiliarVariant.DIP = 201
____exports.FamiliarVariant[____exports.FamiliarVariant.DIP] = "DIP"
____exports.FamiliarVariant.DAMOCLES = 202
____exports.FamiliarVariant[____exports.FamiliarVariant.DAMOCLES] = "DAMOCLES"
____exports.FamiliarVariant.BLOOD_OATH = 203
____exports.FamiliarVariant[____exports.FamiliarVariant.BLOOD_OATH] = "BLOOD_OATH"
____exports.FamiliarVariant.PSY_FLY = 204
____exports.FamiliarVariant[____exports.FamiliarVariant.PSY_FLY] = "PSY_FLY"
____exports.FamiliarVariant.MENORAH = 205
____exports.FamiliarVariant[____exports.FamiliarVariant.MENORAH] = "MENORAH"
____exports.FamiliarVariant.WISP = 206
____exports.FamiliarVariant[____exports.FamiliarVariant.WISP] = "WISP"
____exports.FamiliarVariant.PEEPER_2 = 207
____exports.FamiliarVariant[____exports.FamiliarVariant.PEEPER_2] = "PEEPER_2"
____exports.FamiliarVariant.BOILED_BABY = 208
____exports.FamiliarVariant[____exports.FamiliarVariant.BOILED_BABY] = "BOILED_BABY"
____exports.FamiliarVariant.FREEZER_BABY = 209
____exports.FamiliarVariant[____exports.FamiliarVariant.FREEZER_BABY] = "FREEZER_BABY"
____exports.FamiliarVariant.BIRD_CAGE = 210
____exports.FamiliarVariant[____exports.FamiliarVariant.BIRD_CAGE] = "BIRD_CAGE"
____exports.FamiliarVariant.LOST_SOUL = 211
____exports.FamiliarVariant[____exports.FamiliarVariant.LOST_SOUL] = "LOST_SOUL"
____exports.FamiliarVariant.LIL_DUMPY = 212
____exports.FamiliarVariant[____exports.FamiliarVariant.LIL_DUMPY] = "LIL_DUMPY"
____exports.FamiliarVariant.KNIFE_PIECE_1 = 213
____exports.FamiliarVariant[____exports.FamiliarVariant.KNIFE_PIECE_1] = "KNIFE_PIECE_1"
____exports.FamiliarVariant.KNIFE_PIECE_2 = 214
____exports.FamiliarVariant[____exports.FamiliarVariant.KNIFE_PIECE_2] = "KNIFE_PIECE_2"
____exports.FamiliarVariant.TINYTOMA = 216
____exports.FamiliarVariant[____exports.FamiliarVariant.TINYTOMA] = "TINYTOMA"
____exports.FamiliarVariant.TINYTOMA_2 = 217
____exports.FamiliarVariant[____exports.FamiliarVariant.TINYTOMA_2] = "TINYTOMA_2"
____exports.FamiliarVariant.BOT_FLY = 218
____exports.FamiliarVariant[____exports.FamiliarVariant.BOT_FLY] = "BOT_FLY"
____exports.FamiliarVariant.SIREN_MINION = 220
____exports.FamiliarVariant[____exports.FamiliarVariant.SIREN_MINION] = "SIREN_MINION"
____exports.FamiliarVariant.PASCHAL_CANDLE = 221
____exports.FamiliarVariant[____exports.FamiliarVariant.PASCHAL_CANDLE] = "PASCHAL_CANDLE"
____exports.FamiliarVariant.STITCHES = 222
____exports.FamiliarVariant[____exports.FamiliarVariant.STITCHES] = "STITCHES"
____exports.FamiliarVariant.KNIFE_FULL = 223
____exports.FamiliarVariant[____exports.FamiliarVariant.KNIFE_FULL] = "KNIFE_FULL"
____exports.FamiliarVariant.BABY_PLUM = 224
____exports.FamiliarVariant[____exports.FamiliarVariant.BABY_PLUM] = "BABY_PLUM"
____exports.FamiliarVariant.FRUITY_PLUM = 225
____exports.FamiliarVariant[____exports.FamiliarVariant.FRUITY_PLUM] = "FRUITY_PLUM"
____exports.FamiliarVariant.SPIN_TO_WIN = 226
____exports.FamiliarVariant[____exports.FamiliarVariant.SPIN_TO_WIN] = "SPIN_TO_WIN"
____exports.FamiliarVariant.MINISAAC = 228
____exports.FamiliarVariant[____exports.FamiliarVariant.MINISAAC] = "MINISAAC"
____exports.FamiliarVariant.SWARM_FLY_ORBITAL = 229
____exports.FamiliarVariant[____exports.FamiliarVariant.SWARM_FLY_ORBITAL] = "SWARM_FLY_ORBITAL"
____exports.FamiliarVariant.LIL_ABADDON = 230
____exports.FamiliarVariant[____exports.FamiliarVariant.LIL_ABADDON] = "LIL_ABADDON"
____exports.FamiliarVariant.ABYSS_LOCUST = 231
____exports.FamiliarVariant[____exports.FamiliarVariant.ABYSS_LOCUST] = "ABYSS_LOCUST"
____exports.FamiliarVariant.LIL_PORTAL = 232
____exports.FamiliarVariant[____exports.FamiliarVariant.LIL_PORTAL] = "LIL_PORTAL"
____exports.FamiliarVariant.WORM_FRIEND = 233
____exports.FamiliarVariant[____exports.FamiliarVariant.WORM_FRIEND] = "WORM_FRIEND"
____exports.FamiliarVariant.BONE_SPUR = 234
____exports.FamiliarVariant[____exports.FamiliarVariant.BONE_SPUR] = "BONE_SPUR"
____exports.FamiliarVariant.TWISTED_BABY = 235
____exports.FamiliarVariant[____exports.FamiliarVariant.TWISTED_BABY] = "TWISTED_BABY"
____exports.FamiliarVariant.STAR_OF_BETHLEHEM = 236
____exports.FamiliarVariant[____exports.FamiliarVariant.STAR_OF_BETHLEHEM] = "STAR_OF_BETHLEHEM"
____exports.FamiliarVariant.ITEM_WISP = 237
____exports.FamiliarVariant[____exports.FamiliarVariant.ITEM_WISP] = "ITEM_WISP"
____exports.FamiliarVariant.BLOOD_BABY = 238
____exports.FamiliarVariant[____exports.FamiliarVariant.BLOOD_BABY] = "BLOOD_BABY"
____exports.FamiliarVariant.CUBE_BABY = 239
____exports.FamiliarVariant[____exports.FamiliarVariant.CUBE_BABY] = "CUBE_BABY"
____exports.FamiliarVariant.UMBILICAL_BABY = 240
____exports.FamiliarVariant[____exports.FamiliarVariant.UMBILICAL_BABY] = "UMBILICAL_BABY"
____exports.FamiliarVariant.BLOOD_PUPPY = 241
____exports.FamiliarVariant[____exports.FamiliarVariant.BLOOD_PUPPY] = "BLOOD_PUPPY"
____exports.FamiliarVariant.VANISHING_TWIN = 242
____exports.FamiliarVariant[____exports.FamiliarVariant.VANISHING_TWIN] = "VANISHING_TWIN"
____exports.FamiliarVariant.DECAP_ATTACK = 243
____exports.FamiliarVariant[____exports.FamiliarVariant.DECAP_ATTACK] = "DECAP_ATTACK"
____exports.FamiliarVariant.FORGOTTEN_BODY = 900
____exports.FamiliarVariant[____exports.FamiliarVariant.FORGOTTEN_BODY] = "FORGOTTEN_BODY"
--- For `EntityType.BOMB` (4).
____exports.BombVariant = {}
____exports.BombVariant.NORMAL = 0
____exports.BombVariant[____exports.BombVariant.NORMAL] = "NORMAL"
____exports.BombVariant.BIG = 1
____exports.BombVariant[____exports.BombVariant.BIG] = "BIG"
____exports.BombVariant.DECOY = 2
____exports.BombVariant[____exports.BombVariant.DECOY] = "DECOY"
____exports.BombVariant.TROLL = 3
____exports.BombVariant[____exports.BombVariant.TROLL] = "TROLL"
____exports.BombVariant.MEGA_TROLL = 4
____exports.BombVariant[____exports.BombVariant.MEGA_TROLL] = "MEGA_TROLL"
____exports.BombVariant.POISON = 5
____exports.BombVariant[____exports.BombVariant.POISON] = "POISON"
____exports.BombVariant.POISON_BIG = 6
____exports.BombVariant[____exports.BombVariant.POISON_BIG] = "POISON_BIG"
____exports.BombVariant.SAD = 7
____exports.BombVariant[____exports.BombVariant.SAD] = "SAD"
____exports.BombVariant.HOT = 8
____exports.BombVariant[____exports.BombVariant.HOT] = "HOT"
____exports.BombVariant.BUTT = 9
____exports.BombVariant[____exports.BombVariant.BUTT] = "BUTT"
____exports.BombVariant.MR_MEGA = 10
____exports.BombVariant[____exports.BombVariant.MR_MEGA] = "MR_MEGA"
____exports.BombVariant.BOBBY = 11
____exports.BombVariant[____exports.BombVariant.BOBBY] = "BOBBY"
____exports.BombVariant.GLITTER = 12
____exports.BombVariant[____exports.BombVariant.GLITTER] = "GLITTER"
____exports.BombVariant.THROWABLE = 13
____exports.BombVariant[____exports.BombVariant.THROWABLE] = "THROWABLE"
____exports.BombVariant.SMALL = 14
____exports.BombVariant[____exports.BombVariant.SMALL] = "SMALL"
____exports.BombVariant.BRIMSTONE = 15
____exports.BombVariant[____exports.BombVariant.BRIMSTONE] = "BRIMSTONE"
____exports.BombVariant.SAD_BLOOD = 16
____exports.BombVariant[____exports.BombVariant.SAD_BLOOD] = "SAD_BLOOD"
____exports.BombVariant.GIGA = 17
____exports.BombVariant[____exports.BombVariant.GIGA] = "GIGA"
____exports.BombVariant.GOLDEN_TROLL = 18
____exports.BombVariant[____exports.BombVariant.GOLDEN_TROLL] = "GOLDEN_TROLL"
____exports.BombVariant.ROCKET = 19
____exports.BombVariant[____exports.BombVariant.ROCKET] = "ROCKET"
____exports.BombVariant.ROCKET_GIGA = 20
____exports.BombVariant[____exports.BombVariant.ROCKET_GIGA] = "ROCKET_GIGA"
--- For `EntityType.PICKUP` (5).
____exports.PickupVariant = {}
____exports.PickupVariant.NULL = 0
____exports.PickupVariant[____exports.PickupVariant.NULL] = "NULL"
____exports.PickupVariant.HEART = 10
____exports.PickupVariant[____exports.PickupVariant.HEART] = "HEART"
____exports.PickupVariant.COIN = 20
____exports.PickupVariant[____exports.PickupVariant.COIN] = "COIN"
____exports.PickupVariant.KEY = 30
____exports.PickupVariant[____exports.PickupVariant.KEY] = "KEY"
____exports.PickupVariant.BOMB = 40
____exports.PickupVariant[____exports.PickupVariant.BOMB] = "BOMB"
____exports.PickupVariant.THROWABLE_BOMB = 41
____exports.PickupVariant[____exports.PickupVariant.THROWABLE_BOMB] = "THROWABLE_BOMB"
____exports.PickupVariant.POOP = 42
____exports.PickupVariant[____exports.PickupVariant.POOP] = "POOP"
____exports.PickupVariant.CHEST = 50
____exports.PickupVariant[____exports.PickupVariant.CHEST] = "CHEST"
____exports.PickupVariant.BOMB_CHEST = 51
____exports.PickupVariant[____exports.PickupVariant.BOMB_CHEST] = "BOMB_CHEST"
____exports.PickupVariant.SPIKED_CHEST = 52
____exports.PickupVariant[____exports.PickupVariant.SPIKED_CHEST] = "SPIKED_CHEST"
____exports.PickupVariant.ETERNAL_CHEST = 53
____exports.PickupVariant[____exports.PickupVariant.ETERNAL_CHEST] = "ETERNAL_CHEST"
____exports.PickupVariant.MIMIC_CHEST = 54
____exports.PickupVariant[____exports.PickupVariant.MIMIC_CHEST] = "MIMIC_CHEST"
____exports.PickupVariant.OLD_CHEST = 55
____exports.PickupVariant[____exports.PickupVariant.OLD_CHEST] = "OLD_CHEST"
____exports.PickupVariant.WOODEN_CHEST = 56
____exports.PickupVariant[____exports.PickupVariant.WOODEN_CHEST] = "WOODEN_CHEST"
____exports.PickupVariant.MEGA_CHEST = 57
____exports.PickupVariant[____exports.PickupVariant.MEGA_CHEST] = "MEGA_CHEST"
____exports.PickupVariant.HAUNTED_CHEST = 58
____exports.PickupVariant[____exports.PickupVariant.HAUNTED_CHEST] = "HAUNTED_CHEST"
____exports.PickupVariant.LOCKED_CHEST = 60
____exports.PickupVariant[____exports.PickupVariant.LOCKED_CHEST] = "LOCKED_CHEST"
____exports.PickupVariant.SACK = 69
____exports.PickupVariant[____exports.PickupVariant.SACK] = "SACK"
____exports.PickupVariant.PILL = 70
____exports.PickupVariant[____exports.PickupVariant.PILL] = "PILL"
____exports.PickupVariant.LIL_BATTERY = 90
____exports.PickupVariant[____exports.PickupVariant.LIL_BATTERY] = "LIL_BATTERY"
____exports.PickupVariant.COLLECTIBLE = 100
____exports.PickupVariant[____exports.PickupVariant.COLLECTIBLE] = "COLLECTIBLE"
____exports.PickupVariant.BROKEN_SHOVEL = 110
____exports.PickupVariant[____exports.PickupVariant.BROKEN_SHOVEL] = "BROKEN_SHOVEL"
____exports.PickupVariant.SHOP_ITEM = 150
____exports.PickupVariant[____exports.PickupVariant.SHOP_ITEM] = "SHOP_ITEM"
____exports.PickupVariant.TAROT_CARD = 300
____exports.PickupVariant[____exports.PickupVariant.TAROT_CARD] = "TAROT_CARD"
____exports.PickupVariant.BIG_CHEST = 340
____exports.PickupVariant[____exports.PickupVariant.BIG_CHEST] = "BIG_CHEST"
____exports.PickupVariant.TRINKET = 350
____exports.PickupVariant[____exports.PickupVariant.TRINKET] = "TRINKET"
____exports.PickupVariant.RED_CHEST = 360
____exports.PickupVariant[____exports.PickupVariant.RED_CHEST] = "RED_CHEST"
____exports.PickupVariant.TROPHY = 370
____exports.PickupVariant[____exports.PickupVariant.TROPHY] = "TROPHY"
____exports.PickupVariant.BED = 380
____exports.PickupVariant[____exports.PickupVariant.BED] = "BED"
____exports.PickupVariant.MOMS_CHEST = 390
____exports.PickupVariant[____exports.PickupVariant.MOMS_CHEST] = "MOMS_CHEST"
--- For `EntityType.SLOT` (6).
____exports.SlotVariant = {}
____exports.SlotVariant.SLOT_MACHINE = 1
____exports.SlotVariant[____exports.SlotVariant.SLOT_MACHINE] = "SLOT_MACHINE"
____exports.SlotVariant.BLOOD_DONATION_MACHINE = 2
____exports.SlotVariant[____exports.SlotVariant.BLOOD_DONATION_MACHINE] = "BLOOD_DONATION_MACHINE"
____exports.SlotVariant.FORTUNE_TELLING_MACHINE = 3
____exports.SlotVariant[____exports.SlotVariant.FORTUNE_TELLING_MACHINE] = "FORTUNE_TELLING_MACHINE"
____exports.SlotVariant.BEGGAR = 4
____exports.SlotVariant[____exports.SlotVariant.BEGGAR] = "BEGGAR"
____exports.SlotVariant.DEVIL_BEGGAR = 5
____exports.SlotVariant[____exports.SlotVariant.DEVIL_BEGGAR] = "DEVIL_BEGGAR"
____exports.SlotVariant.SHELL_GAME = 6
____exports.SlotVariant[____exports.SlotVariant.SHELL_GAME] = "SHELL_GAME"
____exports.SlotVariant.KEY_MASTER = 7
____exports.SlotVariant[____exports.SlotVariant.KEY_MASTER] = "KEY_MASTER"
____exports.SlotVariant.DONATION_MACHINE = 8
____exports.SlotVariant[____exports.SlotVariant.DONATION_MACHINE] = "DONATION_MACHINE"
____exports.SlotVariant.BOMB_BUM = 9
____exports.SlotVariant[____exports.SlotVariant.BOMB_BUM] = "BOMB_BUM"
____exports.SlotVariant.SHOP_RESTOCK_MACHINE = 10
____exports.SlotVariant[____exports.SlotVariant.SHOP_RESTOCK_MACHINE] = "SHOP_RESTOCK_MACHINE"
____exports.SlotVariant.GREED_DONATION_MACHINE = 11
____exports.SlotVariant[____exports.SlotVariant.GREED_DONATION_MACHINE] = "GREED_DONATION_MACHINE"
____exports.SlotVariant.MOMS_DRESSING_TABLE = 12
____exports.SlotVariant[____exports.SlotVariant.MOMS_DRESSING_TABLE] = "MOMS_DRESSING_TABLE"
____exports.SlotVariant.BATTERY_BUM = 13
____exports.SlotVariant[____exports.SlotVariant.BATTERY_BUM] = "BATTERY_BUM"
____exports.SlotVariant.ISAAC_SECRET = 14
____exports.SlotVariant[____exports.SlotVariant.ISAAC_SECRET] = "ISAAC_SECRET"
____exports.SlotVariant.HELL_GAME = 15
____exports.SlotVariant[____exports.SlotVariant.HELL_GAME] = "HELL_GAME"
____exports.SlotVariant.CRANE_GAME = 16
____exports.SlotVariant[____exports.SlotVariant.CRANE_GAME] = "CRANE_GAME"
____exports.SlotVariant.CONFESSIONAL = 17
____exports.SlotVariant[____exports.SlotVariant.CONFESSIONAL] = "CONFESSIONAL"
____exports.SlotVariant.ROTTEN_BEGGAR = 18
____exports.SlotVariant[____exports.SlotVariant.ROTTEN_BEGGAR] = "ROTTEN_BEGGAR"
--- For `EntityType.LASER` (7).
____exports.LaserVariant = {}
____exports.LaserVariant.THICK_RED = 1
____exports.LaserVariant[____exports.LaserVariant.THICK_RED] = "THICK_RED"
____exports.LaserVariant.THIN_RED = 2
____exports.LaserVariant[____exports.LaserVariant.THIN_RED] = "THIN_RED"
____exports.LaserVariant.SHOOP_DA_WHOOP = 3
____exports.LaserVariant[____exports.LaserVariant.SHOOP_DA_WHOOP] = "SHOOP_DA_WHOOP"
____exports.LaserVariant.PRIDE = 4
____exports.LaserVariant[____exports.LaserVariant.PRIDE] = "PRIDE"
____exports.LaserVariant.LIGHT_BEAM = 5
____exports.LaserVariant[____exports.LaserVariant.LIGHT_BEAM] = "LIGHT_BEAM"
____exports.LaserVariant.GIANT_RED = 6
____exports.LaserVariant[____exports.LaserVariant.GIANT_RED] = "GIANT_RED"
____exports.LaserVariant.TRACTOR_BEAM = 7
____exports.LaserVariant[____exports.LaserVariant.TRACTOR_BEAM] = "TRACTOR_BEAM"
____exports.LaserVariant.LIGHT_RING = 8
____exports.LaserVariant[____exports.LaserVariant.LIGHT_RING] = "LIGHT_RING"
____exports.LaserVariant.BRIMSTONE_TECHNOLOGY = 9
____exports.LaserVariant[____exports.LaserVariant.BRIMSTONE_TECHNOLOGY] = "BRIMSTONE_TECHNOLOGY"
____exports.LaserVariant.ELECTRIC = 10
____exports.LaserVariant[____exports.LaserVariant.ELECTRIC] = "ELECTRIC"
____exports.LaserVariant.THICKER_RED = 11
____exports.LaserVariant[____exports.LaserVariant.THICKER_RED] = "THICKER_RED"
____exports.LaserVariant.THICK_BROWN = 12
____exports.LaserVariant[____exports.LaserVariant.THICK_BROWN] = "THICK_BROWN"
____exports.LaserVariant.BEAST = 13
____exports.LaserVariant[____exports.LaserVariant.BEAST] = "BEAST"
____exports.LaserVariant.THICKER_BRIMSTONE_TECHNOLOGY = 14
____exports.LaserVariant[____exports.LaserVariant.THICKER_BRIMSTONE_TECHNOLOGY] = "THICKER_BRIMSTONE_TECHNOLOGY"
____exports.LaserVariant.GIANT_BRIMSTONE_TECHNOLOGY = 15
____exports.LaserVariant[____exports.LaserVariant.GIANT_BRIMSTONE_TECHNOLOGY] = "GIANT_BRIMSTONE_TECHNOLOGY"
--- For `EntityType.KNIFE` (8).
____exports.KnifeVariant = {}
____exports.KnifeVariant.MOMS_KNIFE = 8
____exports.KnifeVariant[____exports.KnifeVariant.MOMS_KNIFE] = "MOMS_KNIFE"
____exports.KnifeVariant.BONE_CLUB = 1
____exports.KnifeVariant[____exports.KnifeVariant.BONE_CLUB] = "BONE_CLUB"
____exports.KnifeVariant.BONE_SCYTHE = 2
____exports.KnifeVariant[____exports.KnifeVariant.BONE_SCYTHE] = "BONE_SCYTHE"
____exports.KnifeVariant.DONKEY_JAWBONE = 3
____exports.KnifeVariant[____exports.KnifeVariant.DONKEY_JAWBONE] = "DONKEY_JAWBONE"
____exports.KnifeVariant.BAG_OF_CRAFTING = 4
____exports.KnifeVariant[____exports.KnifeVariant.BAG_OF_CRAFTING] = "BAG_OF_CRAFTING"
____exports.KnifeVariant.SUMPTORIUM = 5
____exports.KnifeVariant[____exports.KnifeVariant.SUMPTORIUM] = "SUMPTORIUM"
____exports.KnifeVariant.NOTCHED_AXE = 9
____exports.KnifeVariant[____exports.KnifeVariant.NOTCHED_AXE] = "NOTCHED_AXE"
____exports.KnifeVariant.SPIRIT_SWORD = 10
____exports.KnifeVariant[____exports.KnifeVariant.SPIRIT_SWORD] = "SPIRIT_SWORD"
____exports.KnifeVariant.TECH_SWORD = 11
____exports.KnifeVariant[____exports.KnifeVariant.TECH_SWORD] = "TECH_SWORD"
--- For `EntityType.PROJECTILE` (9).
____exports.ProjectileVariant = {}
____exports.ProjectileVariant.NORMAL = 0
____exports.ProjectileVariant[____exports.ProjectileVariant.NORMAL] = "NORMAL"
____exports.ProjectileVariant.BONE = 1
____exports.ProjectileVariant[____exports.ProjectileVariant.BONE] = "BONE"
____exports.ProjectileVariant.FIRE = 2
____exports.ProjectileVariant[____exports.ProjectileVariant.FIRE] = "FIRE"
____exports.ProjectileVariant.PUKE = 3
____exports.ProjectileVariant[____exports.ProjectileVariant.PUKE] = "PUKE"
____exports.ProjectileVariant.TEAR = 4
____exports.ProjectileVariant[____exports.ProjectileVariant.TEAR] = "TEAR"
____exports.ProjectileVariant.CORN = 5
____exports.ProjectileVariant[____exports.ProjectileVariant.CORN] = "CORN"
____exports.ProjectileVariant.HUSH = 6
____exports.ProjectileVariant[____exports.ProjectileVariant.HUSH] = "HUSH"
____exports.ProjectileVariant.COIN = 7
____exports.ProjectileVariant[____exports.ProjectileVariant.COIN] = "COIN"
____exports.ProjectileVariant.GRID = 8
____exports.ProjectileVariant[____exports.ProjectileVariant.GRID] = "GRID"
____exports.ProjectileVariant.ROCK = 9
____exports.ProjectileVariant[____exports.ProjectileVariant.ROCK] = "ROCK"
____exports.ProjectileVariant.RING = 10
____exports.ProjectileVariant[____exports.ProjectileVariant.RING] = "RING"
____exports.ProjectileVariant.MEAT = 11
____exports.ProjectileVariant[____exports.ProjectileVariant.MEAT] = "MEAT"
____exports.ProjectileVariant.FCUK = 12
____exports.ProjectileVariant[____exports.ProjectileVariant.FCUK] = "FCUK"
____exports.ProjectileVariant.WING = 13
____exports.ProjectileVariant[____exports.ProjectileVariant.WING] = "WING"
____exports.ProjectileVariant.LAVA = 14
____exports.ProjectileVariant[____exports.ProjectileVariant.LAVA] = "LAVA"
____exports.ProjectileVariant.HEAD = 15
____exports.ProjectileVariant[____exports.ProjectileVariant.HEAD] = "HEAD"
____exports.ProjectileVariant.PEEP = 16
____exports.ProjectileVariant[____exports.ProjectileVariant.PEEP] = "PEEP"
--- For `EntityType.GAPER` (10).
____exports.GaperVariant = {}
____exports.GaperVariant.FROWNING_GAPER = 0
____exports.GaperVariant[____exports.GaperVariant.FROWNING_GAPER] = "FROWNING_GAPER"
____exports.GaperVariant.GAPER = 1
____exports.GaperVariant[____exports.GaperVariant.GAPER] = "GAPER"
____exports.GaperVariant.FLAMING_GAPER = 2
____exports.GaperVariant[____exports.GaperVariant.FLAMING_GAPER] = "FLAMING_GAPER"
____exports.GaperVariant.ROTTEN_GAPER = 3
____exports.GaperVariant[____exports.GaperVariant.ROTTEN_GAPER] = "ROTTEN_GAPER"
--- For `EntityType.GUSHER` (11).
____exports.GusherVariant = {}
____exports.GusherVariant.GUSHER = 0
____exports.GusherVariant[____exports.GusherVariant.GUSHER] = "GUSHER"
____exports.GusherVariant.PACER = 1
____exports.GusherVariant[____exports.GusherVariant.PACER] = "PACER"
--- For `EntityType.POOTER` (14).
____exports.PooterVariant = {}
____exports.PooterVariant.POOTER = 0
____exports.PooterVariant[____exports.PooterVariant.POOTER] = "POOTER"
____exports.PooterVariant.SUPER_POOTER = 1
____exports.PooterVariant[____exports.PooterVariant.SUPER_POOTER] = "SUPER_POOTER"
____exports.PooterVariant.TAINTED_POOTER = 2
____exports.PooterVariant[____exports.PooterVariant.TAINTED_POOTER] = "TAINTED_POOTER"
--- For `EntityType.CLOTTY` (15).
____exports.ClottyVariant = {}
____exports.ClottyVariant.CLOTTY = 0
____exports.ClottyVariant[____exports.ClottyVariant.CLOTTY] = "CLOTTY"
____exports.ClottyVariant.CLOT = 1
____exports.ClottyVariant[____exports.ClottyVariant.CLOT] = "CLOT"
____exports.ClottyVariant.BLOB = 2
____exports.ClottyVariant[____exports.ClottyVariant.BLOB] = "BLOB"
____exports.ClottyVariant.GRILLED_CLOTTY = 3
____exports.ClottyVariant[____exports.ClottyVariant.GRILLED_CLOTTY] = "GRILLED_CLOTTY"
--- For `EntityType.MULLIGAN` (16).
____exports.MulliganVariant = {}
____exports.MulliganVariant.MULLIGAN = 0
____exports.MulliganVariant[____exports.MulliganVariant.MULLIGAN] = "MULLIGAN"
____exports.MulliganVariant.MULLIGOON = 1
____exports.MulliganVariant[____exports.MulliganVariant.MULLIGOON] = "MULLIGOON"
____exports.MulliganVariant.MULLIBOOM = 2
____exports.MulliganVariant[____exports.MulliganVariant.MULLIBOOM] = "MULLIBOOM"
--- For `EntityType.SHOPKEEPER` (17).
____exports.ShopkeeperVariant = {}
____exports.ShopkeeperVariant.SHOPKEEPER = 0
____exports.ShopkeeperVariant[____exports.ShopkeeperVariant.SHOPKEEPER] = "SHOPKEEPER"
____exports.ShopkeeperVariant.SECRET_ROOM_KEEPER = 1
____exports.ShopkeeperVariant[____exports.ShopkeeperVariant.SECRET_ROOM_KEEPER] = "SECRET_ROOM_KEEPER"
____exports.ShopkeeperVariant.ERROR_ROOM_KEEPER = 2
____exports.ShopkeeperVariant[____exports.ShopkeeperVariant.ERROR_ROOM_KEEPER] = "ERROR_ROOM_KEEPER"
____exports.ShopkeeperVariant.SPECIAL_SHOPKEEPER = 3
____exports.ShopkeeperVariant[____exports.ShopkeeperVariant.SPECIAL_SHOPKEEPER] = "SPECIAL_SHOPKEEPER"
____exports.ShopkeeperVariant.SPECIAL_SECRET_ROOM_KEEPER = 4
____exports.ShopkeeperVariant[____exports.ShopkeeperVariant.SPECIAL_SECRET_ROOM_KEEPER] = "SPECIAL_SECRET_ROOM_KEEPER"
--- For `EntityType.LARRY_JR` (19).
____exports.LarryJrVariant = {}
____exports.LarryJrVariant.LARRY_JR = 0
____exports.LarryJrVariant[____exports.LarryJrVariant.LARRY_JR] = "LARRY_JR"
____exports.LarryJrVariant.THE_HOLLOW = 1
____exports.LarryJrVariant[____exports.LarryJrVariant.THE_HOLLOW] = "THE_HOLLOW"
____exports.LarryJrVariant.TUFF_TWIN = 2
____exports.LarryJrVariant[____exports.LarryJrVariant.TUFF_TWIN] = "TUFF_TWIN"
____exports.LarryJrVariant.THE_SHELL = 3
____exports.LarryJrVariant[____exports.LarryJrVariant.THE_SHELL] = "THE_SHELL"
--- For `EntityType.HIVE` (22).
____exports.HiveVariant = {}
____exports.HiveVariant.HIVE = 0
____exports.HiveVariant[____exports.HiveVariant.HIVE] = "HIVE"
____exports.HiveVariant.DROWNED_HIVE = 1
____exports.HiveVariant[____exports.HiveVariant.DROWNED_HIVE] = "DROWNED_HIVE"
____exports.HiveVariant.HOLY_MULLIGAN = 2
____exports.HiveVariant[____exports.HiveVariant.HOLY_MULLIGAN] = "HOLY_MULLIGAN"
____exports.HiveVariant.TAINTED_MULLIGAN = 3
____exports.HiveVariant[____exports.HiveVariant.TAINTED_MULLIGAN] = "TAINTED_MULLIGAN"
--- For `EntityType.CHARGER` (23).
____exports.ChargerVariant = {}
____exports.ChargerVariant.CHARGER = 0
____exports.ChargerVariant[____exports.ChargerVariant.CHARGER] = "CHARGER"
____exports.ChargerVariant.DROWNED_CHARGER = 1
____exports.ChargerVariant[____exports.ChargerVariant.DROWNED_CHARGER] = "DROWNED_CHARGER"
____exports.ChargerVariant.DANK_CHARGER = 2
____exports.ChargerVariant[____exports.ChargerVariant.DANK_CHARGER] = "DANK_CHARGER"
____exports.ChargerVariant.CARRION_PRINCESS = 3
____exports.ChargerVariant[____exports.ChargerVariant.CARRION_PRINCESS] = "CARRION_PRINCESS"
--- For `EntityType.GLOBIN` (24).
____exports.GlobinVariant = {}
____exports.GlobinVariant.GLOBIN = 0
____exports.GlobinVariant[____exports.GlobinVariant.GLOBIN] = "GLOBIN"
____exports.GlobinVariant.GAZING_GLOBIN = 1
____exports.GlobinVariant[____exports.GlobinVariant.GAZING_GLOBIN] = "GAZING_GLOBIN"
____exports.GlobinVariant.DANK_GLOBIN = 2
____exports.GlobinVariant[____exports.GlobinVariant.DANK_GLOBIN] = "DANK_GLOBIN"
____exports.GlobinVariant.CURSED_GLOBIN = 3
____exports.GlobinVariant[____exports.GlobinVariant.CURSED_GLOBIN] = "CURSED_GLOBIN"
--- For `EntityType.BOOM_FLY` (25).
____exports.BoomFlyVariant = {}
____exports.BoomFlyVariant.BOOM_FLY = 0
____exports.BoomFlyVariant[____exports.BoomFlyVariant.BOOM_FLY] = "BOOM_FLY"
____exports.BoomFlyVariant.RED_BOOM_FLY = 1
____exports.BoomFlyVariant[____exports.BoomFlyVariant.RED_BOOM_FLY] = "RED_BOOM_FLY"
____exports.BoomFlyVariant.DROWNED_BOOM_FLY = 2
____exports.BoomFlyVariant[____exports.BoomFlyVariant.DROWNED_BOOM_FLY] = "DROWNED_BOOM_FLY"
____exports.BoomFlyVariant.DRAGON_FLY = 3
____exports.BoomFlyVariant[____exports.BoomFlyVariant.DRAGON_FLY] = "DRAGON_FLY"
____exports.BoomFlyVariant.BONE_FLY = 4
____exports.BoomFlyVariant[____exports.BoomFlyVariant.BONE_FLY] = "BONE_FLY"
____exports.BoomFlyVariant.SICK_BOOM_FLY = 5
____exports.BoomFlyVariant[____exports.BoomFlyVariant.SICK_BOOM_FLY] = "SICK_BOOM_FLY"
____exports.BoomFlyVariant.TAINTED_BOOM_FLY = 6
____exports.BoomFlyVariant[____exports.BoomFlyVariant.TAINTED_BOOM_FLY] = "TAINTED_BOOM_FLY"
--- For `EntityType.MAW` (26).
____exports.MawVariant = {}
____exports.MawVariant.MAW = 0
____exports.MawVariant[____exports.MawVariant.MAW] = "MAW"
____exports.MawVariant.RED_MAW = 1
____exports.MawVariant[____exports.MawVariant.RED_MAW] = "RED_MAW"
____exports.MawVariant.PSYCHIC_MAW = 2
____exports.MawVariant[____exports.MawVariant.PSYCHIC_MAW] = "PSYCHIC_MAW"
--- For `EntityType.HOST` (27).
____exports.HostVariant = {}
____exports.HostVariant.HOST = 0
____exports.HostVariant[____exports.HostVariant.HOST] = "HOST"
____exports.HostVariant.RED_HOST = 1
____exports.HostVariant[____exports.HostVariant.RED_HOST] = "RED_HOST"
____exports.HostVariant.HARD_HOST = 2
____exports.HostVariant[____exports.HostVariant.HARD_HOST] = "HARD_HOST"
--- For `EntityType.CHUB` (28).
____exports.ChubVariant = {}
____exports.ChubVariant.CHUB = 0
____exports.ChubVariant[____exports.ChubVariant.CHUB] = "CHUB"
____exports.ChubVariant.CHAD = 1
____exports.ChubVariant[____exports.ChubVariant.CHAD] = "CHAD"
____exports.ChubVariant.CARRION_QUEEN = 2
____exports.ChubVariant[____exports.ChubVariant.CARRION_QUEEN] = "CARRION_QUEEN"
--- For `EntityType.HOPPER` (29).
____exports.HopperVariant = {}
____exports.HopperVariant.HOPPER = 0
____exports.HopperVariant[____exports.HopperVariant.HOPPER] = "HOPPER"
____exports.HopperVariant.TRITE = 1
____exports.HopperVariant[____exports.HopperVariant.TRITE] = "TRITE"
____exports.HopperVariant.EGGY = 2
____exports.HopperVariant[____exports.HopperVariant.EGGY] = "EGGY"
____exports.HopperVariant.TAINTED_HOPPER = 3
____exports.HopperVariant[____exports.HopperVariant.TAINTED_HOPPER] = "TAINTED_HOPPER"
--- For `EntityType.BOIL` (30).
____exports.BoilVariant = {}
____exports.BoilVariant.BOIL = 0
____exports.BoilVariant[____exports.BoilVariant.BOIL] = "BOIL"
____exports.BoilVariant.GUT = 1
____exports.BoilVariant[____exports.BoilVariant.GUT] = "GUT"
____exports.BoilVariant.SACK = 2
____exports.BoilVariant[____exports.BoilVariant.SACK] = "SACK"
--- For `EntityType.SPITTY` (31).
____exports.SpittyVariant = {}
____exports.SpittyVariant.SPITTY = 0
____exports.SpittyVariant[____exports.SpittyVariant.SPITTY] = "SPITTY"
____exports.SpittyVariant.TAINTED_SPITTY = 1
____exports.SpittyVariant[____exports.SpittyVariant.TAINTED_SPITTY] = "TAINTED_SPITTY"
--- For `EntityType.FIREPLACE` (33).
-- 
-- Also see the `FireplaceGridEntityVariant` enum, which is different and used for the grid entity
-- version.
____exports.FireplaceVariant = {}
____exports.FireplaceVariant.NORMAL = 0
____exports.FireplaceVariant[____exports.FireplaceVariant.NORMAL] = "NORMAL"
____exports.FireplaceVariant.RED = 1
____exports.FireplaceVariant[____exports.FireplaceVariant.RED] = "RED"
____exports.FireplaceVariant.BLUE = 2
____exports.FireplaceVariant[____exports.FireplaceVariant.BLUE] = "BLUE"
____exports.FireplaceVariant.PURPLE = 3
____exports.FireplaceVariant[____exports.FireplaceVariant.PURPLE] = "PURPLE"
____exports.FireplaceVariant.WHITE = 4
____exports.FireplaceVariant[____exports.FireplaceVariant.WHITE] = "WHITE"
____exports.FireplaceVariant.MOVEABLE = 10
____exports.FireplaceVariant[____exports.FireplaceVariant.MOVEABLE] = "MOVEABLE"
____exports.FireplaceVariant.COAL = 11
____exports.FireplaceVariant[____exports.FireplaceVariant.COAL] = "COAL"
____exports.FireplaceVariant.MOVEABLE_BLUE = 12
____exports.FireplaceVariant[____exports.FireplaceVariant.MOVEABLE_BLUE] = "MOVEABLE_BLUE"
____exports.FireplaceVariant.MOVEABLE_PURPLE = 13
____exports.FireplaceVariant[____exports.FireplaceVariant.MOVEABLE_PURPLE] = "MOVEABLE_PURPLE"
--- For `EntityType.LEAPER` (34).
____exports.LeaperVariant = {}
____exports.LeaperVariant.LEAPER = 0
____exports.LeaperVariant[____exports.LeaperVariant.LEAPER] = "LEAPER"
____exports.LeaperVariant.STICKY_LEAPER = 1
____exports.LeaperVariant[____exports.LeaperVariant.STICKY_LEAPER] = "STICKY_LEAPER"
--- For `EntityType.MR_MAW` (35).
____exports.MrMawVariant = {}
____exports.MrMawVariant.MR_MAW = 0
____exports.MrMawVariant[____exports.MrMawVariant.MR_MAW] = "MR_MAW"
____exports.MrMawVariant.MR_MAW_HEAD = 1
____exports.MrMawVariant[____exports.MrMawVariant.MR_MAW_HEAD] = "MR_MAW_HEAD"
____exports.MrMawVariant.MR_RED_MAW = 2
____exports.MrMawVariant[____exports.MrMawVariant.MR_RED_MAW] = "MR_RED_MAW"
____exports.MrMawVariant.MR_RED_MAW_HEAD = 3
____exports.MrMawVariant[____exports.MrMawVariant.MR_RED_MAW_HEAD] = "MR_RED_MAW_HEAD"
____exports.MrMawVariant.MR_MAW_NECK = 10
____exports.MrMawVariant[____exports.MrMawVariant.MR_MAW_NECK] = "MR_MAW_NECK"
--- For `EntityType.BABY` (38).
____exports.BabyVariant = {}
____exports.BabyVariant.BABY = 0
____exports.BabyVariant[____exports.BabyVariant.BABY] = "BABY"
____exports.BabyVariant.ANGELIC_BABY = 1
____exports.BabyVariant[____exports.BabyVariant.ANGELIC_BABY] = "ANGELIC_BABY"
____exports.BabyVariant.ULTRA_PRIDE_BABY = 2
____exports.BabyVariant[____exports.BabyVariant.ULTRA_PRIDE_BABY] = "ULTRA_PRIDE_BABY"
____exports.BabyVariant.WRINKLY_BABY = 3
____exports.BabyVariant[____exports.BabyVariant.WRINKLY_BABY] = "WRINKLY_BABY"
--- For `EntityType.VIS` (39).
____exports.VisVariant = {}
____exports.VisVariant.VIS = 0
____exports.VisVariant[____exports.VisVariant.VIS] = "VIS"
____exports.VisVariant.DOUBLE_VIS = 1
____exports.VisVariant[____exports.VisVariant.DOUBLE_VIS] = "DOUBLE_VIS"
____exports.VisVariant.CHUBBER = 2
____exports.VisVariant[____exports.VisVariant.CHUBBER] = "CHUBBER"
____exports.VisVariant.SCARRED_DOUBLE_VIS = 3
____exports.VisVariant[____exports.VisVariant.SCARRED_DOUBLE_VIS] = "SCARRED_DOUBLE_VIS"
____exports.VisVariant.CHUBBER_PROJECTILE = 22
____exports.VisVariant[____exports.VisVariant.CHUBBER_PROJECTILE] = "CHUBBER_PROJECTILE"
--- For `EntityType.GUTS` (40).
____exports.GutsVariant = {}
____exports.GutsVariant.GUTS = 0
____exports.GutsVariant[____exports.GutsVariant.GUTS] = "GUTS"
____exports.GutsVariant.SCARRED_GUTS = 1
____exports.GutsVariant[____exports.GutsVariant.SCARRED_GUTS] = "SCARRED_GUTS"
____exports.GutsVariant.SLOG = 2
____exports.GutsVariant[____exports.GutsVariant.SLOG] = "SLOG"
--- For `EntityType.KNIGHT` (41).
____exports.KnightVariant = {}
____exports.KnightVariant.KNIGHT = 0
____exports.KnightVariant[____exports.KnightVariant.KNIGHT] = "KNIGHT"
____exports.KnightVariant.SELFLESS_KNIGHT = 1
____exports.KnightVariant[____exports.KnightVariant.SELFLESS_KNIGHT] = "SELFLESS_KNIGHT"
____exports.KnightVariant.LOOSE_KNIGHT = 2
____exports.KnightVariant[____exports.KnightVariant.LOOSE_KNIGHT] = "LOOSE_KNIGHT"
____exports.KnightVariant.BRAINLESS_KNIGHT = 3
____exports.KnightVariant[____exports.KnightVariant.BRAINLESS_KNIGHT] = "BRAINLESS_KNIGHT"
____exports.KnightVariant.BLACK_KNIGHT = 4
____exports.KnightVariant[____exports.KnightVariant.BLACK_KNIGHT] = "BLACK_KNIGHT"
--- For `EntityType.GRIMACE` (42).
____exports.GrimaceVariant = {}
____exports.GrimaceVariant.STONE_GRIMACE = 0
____exports.GrimaceVariant[____exports.GrimaceVariant.STONE_GRIMACE] = "STONE_GRIMACE"
____exports.GrimaceVariant.VOMIT_GRIMACE = 1
____exports.GrimaceVariant[____exports.GrimaceVariant.VOMIT_GRIMACE] = "VOMIT_GRIMACE"
____exports.GrimaceVariant.TRIPLE_GRIMACE = 2
____exports.GrimaceVariant[____exports.GrimaceVariant.TRIPLE_GRIMACE] = "TRIPLE_GRIMACE"
--- For `EntityType.MONSTRO_2` (43).
____exports.Monstro2Variant = {}
____exports.Monstro2Variant.MONSTRO_2 = 0
____exports.Monstro2Variant[____exports.Monstro2Variant.MONSTRO_2] = "MONSTRO_2"
____exports.Monstro2Variant.GISH = 1
____exports.Monstro2Variant[____exports.Monstro2Variant.GISH] = "GISH"
--- For `EntityType.POKY` (44).
____exports.PokyVariant = {}
____exports.PokyVariant.POKY = 0
____exports.PokyVariant[____exports.PokyVariant.POKY] = "POKY"
____exports.PokyVariant.SLIDE = 1
____exports.PokyVariant[____exports.PokyVariant.SLIDE] = "SLIDE"
--- For `EntityType.MOM` (45).
____exports.MomVariant = {}
____exports.MomVariant.MOM = 0
____exports.MomVariant[____exports.MomVariant.MOM] = "MOM"
____exports.MomVariant.STOMP = 10
____exports.MomVariant[____exports.MomVariant.STOMP] = "STOMP"
--- For `EntityType.SLOTH` (46).
____exports.SlothVariant = {}
____exports.SlothVariant.SLOTH = 0
____exports.SlothVariant[____exports.SlothVariant.SLOTH] = "SLOTH"
____exports.SlothVariant.SUPER_SLOTH = 1
____exports.SlothVariant[____exports.SlothVariant.SUPER_SLOTH] = "SUPER_SLOTH"
____exports.SlothVariant.ULTRA_PRIDE = 2
____exports.SlothVariant[____exports.SlothVariant.ULTRA_PRIDE] = "ULTRA_PRIDE"
--- For `EntityType.LUST` (47).
____exports.LustVariant = {}
____exports.LustVariant.LUST = 0
____exports.LustVariant[____exports.LustVariant.LUST] = "LUST"
____exports.LustVariant.SUPER_LUST = 1
____exports.LustVariant[____exports.LustVariant.SUPER_LUST] = "SUPER_LUST"
--- For `EntityType.WRATH` (48).
____exports.WrathVariant = {}
____exports.WrathVariant.WRATH = 0
____exports.WrathVariant[____exports.WrathVariant.WRATH] = "WRATH"
____exports.WrathVariant.SUPER_WRATH = 1
____exports.WrathVariant[____exports.WrathVariant.SUPER_WRATH] = "SUPER_WRATH"
--- For `EntityType.GLUTTONY` (49).
____exports.GluttonyVariant = {}
____exports.GluttonyVariant.GLUTTONY = 0
____exports.GluttonyVariant[____exports.GluttonyVariant.GLUTTONY] = "GLUTTONY"
____exports.GluttonyVariant.SUPER_GLUTTONY = 1
____exports.GluttonyVariant[____exports.GluttonyVariant.SUPER_GLUTTONY] = "SUPER_GLUTTONY"
--- For `EntityType.GREED` (50).
____exports.GreedVariant = {}
____exports.GreedVariant.GREED = 0
____exports.GreedVariant[____exports.GreedVariant.GREED] = "GREED"
____exports.GreedVariant.SUPER_GREED = 1
____exports.GreedVariant[____exports.GreedVariant.SUPER_GREED] = "SUPER_GREED"
--- For `EntityType.ENVY` (51).
____exports.EnvyVariant = {}
____exports.EnvyVariant.ENVY = 0
____exports.EnvyVariant[____exports.EnvyVariant.ENVY] = "ENVY"
____exports.EnvyVariant.SUPER_ENVY = 1
____exports.EnvyVariant[____exports.EnvyVariant.SUPER_ENVY] = "SUPER_ENVY"
____exports.EnvyVariant.ENVY_BIG = 10
____exports.EnvyVariant[____exports.EnvyVariant.ENVY_BIG] = "ENVY_BIG"
____exports.EnvyVariant.SUPER_ENVY_BIG = 11
____exports.EnvyVariant[____exports.EnvyVariant.SUPER_ENVY_BIG] = "SUPER_ENVY_BIG"
____exports.EnvyVariant.ENVY_MEDIUM = 20
____exports.EnvyVariant[____exports.EnvyVariant.ENVY_MEDIUM] = "ENVY_MEDIUM"
____exports.EnvyVariant.SUPER_ENVY_MEDIUM = 21
____exports.EnvyVariant[____exports.EnvyVariant.SUPER_ENVY_MEDIUM] = "SUPER_ENVY_MEDIUM"
____exports.EnvyVariant.ENVY_SMALL = 30
____exports.EnvyVariant[____exports.EnvyVariant.ENVY_SMALL] = "ENVY_SMALL"
____exports.EnvyVariant.SUPER_ENVY_SMALL = 31
____exports.EnvyVariant[____exports.EnvyVariant.SUPER_ENVY_SMALL] = "SUPER_ENVY_SMALL"
--- For `EntityType.PRIDE` (52).
____exports.PrideVariant = {}
____exports.PrideVariant.PRIDE = 0
____exports.PrideVariant[____exports.PrideVariant.PRIDE] = "PRIDE"
____exports.PrideVariant.SUPER_PRIDE = 1
____exports.PrideVariant[____exports.PrideVariant.SUPER_PRIDE] = "SUPER_PRIDE"
--- For `EntityType.DOPLE` (53).
____exports.DopleVariant = {}
____exports.DopleVariant.DOPLE = 0
____exports.DopleVariant[____exports.DopleVariant.DOPLE] = "DOPLE"
____exports.DopleVariant.EVIL_TWIN = 1
____exports.DopleVariant[____exports.DopleVariant.EVIL_TWIN] = "EVIL_TWIN"
--- For `EntityType.LEECH` (55).
____exports.LeechVariant = {}
____exports.LeechVariant.LEECH = 0
____exports.LeechVariant[____exports.LeechVariant.LEECH] = "LEECH"
____exports.LeechVariant.KAMIKAZE_LEECH = 1
____exports.LeechVariant[____exports.LeechVariant.KAMIKAZE_LEECH] = "KAMIKAZE_LEECH"
____exports.LeechVariant.HOLY_LEECH = 2
____exports.LeechVariant[____exports.LeechVariant.HOLY_LEECH] = "HOLY_LEECH"
--- For `EntityType.MEMBRAIN` (57).
____exports.MemBrainVariant = {}
____exports.MemBrainVariant.MEMBRAIN = 0
____exports.MemBrainVariant[____exports.MemBrainVariant.MEMBRAIN] = "MEMBRAIN"
____exports.MemBrainVariant.MAMA_GUTS = 1
____exports.MemBrainVariant[____exports.MemBrainVariant.MAMA_GUTS] = "MAMA_GUTS"
____exports.MemBrainVariant.DEAD_MEAT = 2
____exports.MemBrainVariant[____exports.MemBrainVariant.DEAD_MEAT] = "DEAD_MEAT"
--- For `EntityType.PARA_BITE` (58).
____exports.ParaBiteVariant = {}
____exports.ParaBiteVariant.PARA_BITE = 0
____exports.ParaBiteVariant[____exports.ParaBiteVariant.PARA_BITE] = "PARA_BITE"
____exports.ParaBiteVariant.SCARRED_PARA_BITE = 1
____exports.ParaBiteVariant[____exports.ParaBiteVariant.SCARRED_PARA_BITE] = "SCARRED_PARA_BITE"
--- For `EntityType.EYE` (60).
____exports.EyeVariant = {}
____exports.EyeVariant.EYE = 0
____exports.EyeVariant[____exports.EyeVariant.EYE] = "EYE"
____exports.EyeVariant.BLOODSHOT_EYE = 1
____exports.EyeVariant[____exports.EyeVariant.BLOODSHOT_EYE] = "BLOODSHOT_EYE"
____exports.EyeVariant.HOLY_EYE = 2
____exports.EyeVariant[____exports.EyeVariant.HOLY_EYE] = "HOLY_EYE"
--- For `EntityType.SUCKER` (61).
____exports.SuckerVariant = {}
____exports.SuckerVariant.SUCKER = 0
____exports.SuckerVariant[____exports.SuckerVariant.SUCKER] = "SUCKER"
____exports.SuckerVariant.SPIT = 1
____exports.SuckerVariant[____exports.SuckerVariant.SPIT] = "SPIT"
____exports.SuckerVariant.SOUL_SUCKER = 2
____exports.SuckerVariant[____exports.SuckerVariant.SOUL_SUCKER] = "SOUL_SUCKER"
____exports.SuckerVariant.INK = 3
____exports.SuckerVariant[____exports.SuckerVariant.INK] = "INK"
____exports.SuckerVariant.MAMA_FLY = 4
____exports.SuckerVariant[____exports.SuckerVariant.MAMA_FLY] = "MAMA_FLY"
____exports.SuckerVariant.BULB = 5
____exports.SuckerVariant[____exports.SuckerVariant.BULB] = "BULB"
____exports.SuckerVariant.BLOOD_FLY = 6
____exports.SuckerVariant[____exports.SuckerVariant.BLOOD_FLY] = "BLOOD_FLY"
____exports.SuckerVariant.TAINTED_SUCKER = 7
____exports.SuckerVariant[____exports.SuckerVariant.TAINTED_SUCKER] = "TAINTED_SUCKER"
--- For `EntityType.PIN` (62).
____exports.PinVariant = {}
____exports.PinVariant.PIN = 0
____exports.PinVariant[____exports.PinVariant.PIN] = "PIN"
____exports.PinVariant.SCOLEX = 1
____exports.PinVariant[____exports.PinVariant.SCOLEX] = "SCOLEX"
____exports.PinVariant.FRAIL = 2
____exports.PinVariant[____exports.PinVariant.FRAIL] = "FRAIL"
____exports.PinVariant.WORMWOOD = 3
____exports.PinVariant[____exports.PinVariant.WORMWOOD] = "WORMWOOD"
--- For `EntityType.WAR` (65).
____exports.WarVariant = {}
____exports.WarVariant.WAR = 0
____exports.WarVariant[____exports.WarVariant.WAR] = "WAR"
____exports.WarVariant.CONQUEST = 1
____exports.WarVariant[____exports.WarVariant.CONQUEST] = "CONQUEST"
____exports.WarVariant.WAR_WITHOUT_HORSE = 2
____exports.WarVariant[____exports.WarVariant.WAR_WITHOUT_HORSE] = "WAR_WITHOUT_HORSE"
--- For `EntityType.DEATH` (66).
____exports.DeathVariant = {}
____exports.DeathVariant.DEATH = 0
____exports.DeathVariant[____exports.DeathVariant.DEATH] = "DEATH"
____exports.DeathVariant.DEATH_SCYTHE = 10
____exports.DeathVariant[____exports.DeathVariant.DEATH_SCYTHE] = "DEATH_SCYTHE"
____exports.DeathVariant.DEATH_HORSE = 20
____exports.DeathVariant[____exports.DeathVariant.DEATH_HORSE] = "DEATH_HORSE"
____exports.DeathVariant.DEATH_WITHOUT_HORSE = 30
____exports.DeathVariant[____exports.DeathVariant.DEATH_WITHOUT_HORSE] = "DEATH_WITHOUT_HORSE"
--- For `EntityType.DUKE` (67).
____exports.DukeVariant = {}
____exports.DukeVariant.DUKE_OF_FLIES = 0
____exports.DukeVariant[____exports.DukeVariant.DUKE_OF_FLIES] = "DUKE_OF_FLIES"
____exports.DukeVariant.THE_HUSK = 1
____exports.DukeVariant[____exports.DukeVariant.THE_HUSK] = "THE_HUSK"
--- For `EntityType.PEEP` (68).
____exports.PeepVariant = {}
____exports.PeepVariant.PEEP = 0
____exports.PeepVariant[____exports.PeepVariant.PEEP] = "PEEP"
____exports.PeepVariant.BLOAT = 1
____exports.PeepVariant[____exports.PeepVariant.BLOAT] = "BLOAT"
____exports.PeepVariant.PEEP_EYE = 10
____exports.PeepVariant[____exports.PeepVariant.PEEP_EYE] = "PEEP_EYE"
____exports.PeepVariant.BLOAT_EYE = 11
____exports.PeepVariant[____exports.PeepVariant.BLOAT_EYE] = "BLOAT_EYE"
--- For `EntityType.LOKI` (69).
____exports.LokiVariant = {}
____exports.LokiVariant.LOKI = 0
____exports.LokiVariant[____exports.LokiVariant.LOKI] = "LOKI"
____exports.LokiVariant.LOKII = 1
____exports.LokiVariant[____exports.LokiVariant.LOKII] = "LOKII"
--- For:
-- - `EntityType.FISTULA_BIG` (71)
-- - `EntityType.FISTULA_MEDIUM` (72)
-- - `EntityType.FISTULA_SMALL` (73)
____exports.FistulaVariant = {}
____exports.FistulaVariant.FISTULA = 0
____exports.FistulaVariant[____exports.FistulaVariant.FISTULA] = "FISTULA"
____exports.FistulaVariant.TERATOMA = 1
____exports.FistulaVariant[____exports.FistulaVariant.TERATOMA] = "TERATOMA"
--- For `EntityType.MOMS_HEART` (78).
____exports.MomsHeartVariant = {}
____exports.MomsHeartVariant.MOMS_HEART = 0
____exports.MomsHeartVariant[____exports.MomsHeartVariant.MOMS_HEART] = "MOMS_HEART"
____exports.MomsHeartVariant.IT_LIVES = 1
____exports.MomsHeartVariant[____exports.MomsHeartVariant.IT_LIVES] = "IT_LIVES"
____exports.MomsHeartVariant.MOMS_GUTS = 2
____exports.MomsHeartVariant[____exports.MomsHeartVariant.MOMS_GUTS] = "MOMS_GUTS"
--- For `EntityType.GEMINI` (79).
____exports.GeminiVariant = {}
____exports.GeminiVariant.GEMINI = 0
____exports.GeminiVariant[____exports.GeminiVariant.GEMINI] = "GEMINI"
____exports.GeminiVariant.STEVEN = 1
____exports.GeminiVariant[____exports.GeminiVariant.STEVEN] = "STEVEN"
____exports.GeminiVariant.BLIGHTED_OVUM = 2
____exports.GeminiVariant[____exports.GeminiVariant.BLIGHTED_OVUM] = "BLIGHTED_OVUM"
____exports.GeminiVariant.GEMINI_BABY = 10
____exports.GeminiVariant[____exports.GeminiVariant.GEMINI_BABY] = "GEMINI_BABY"
____exports.GeminiVariant.STEVEN_BABY = 11
____exports.GeminiVariant[____exports.GeminiVariant.STEVEN_BABY] = "STEVEN_BABY"
____exports.GeminiVariant.BLIGHTED_OVUM_BABY = 12
____exports.GeminiVariant[____exports.GeminiVariant.BLIGHTED_OVUM_BABY] = "BLIGHTED_OVUM_BABY"
____exports.GeminiVariant.UMBILICAL_CORD = 20
____exports.GeminiVariant[____exports.GeminiVariant.UMBILICAL_CORD] = "UMBILICAL_CORD"
--- For `EntityType.FALLEN` (81).
____exports.FallenVariant = {}
____exports.FallenVariant.FALLEN = 0
____exports.FallenVariant[____exports.FallenVariant.FALLEN] = "FALLEN"
____exports.FallenVariant.KRAMPUS = 1
____exports.FallenVariant[____exports.FallenVariant.KRAMPUS] = "KRAMPUS"
--- For `EntityType.SATAN` (84).
____exports.SatanVariant = {}
____exports.SatanVariant.SATAN = 0
____exports.SatanVariant[____exports.SatanVariant.SATAN] = "SATAN"
____exports.SatanVariant.STOMP = 10
____exports.SatanVariant[____exports.SatanVariant.STOMP] = "STOMP"
--- For `EntityType.GURGLE` (87).
____exports.GurgleVariant = {}
____exports.GurgleVariant.GURGLE = 0
____exports.GurgleVariant[____exports.GurgleVariant.GURGLE] = "GURGLE"
____exports.GurgleVariant.CRACKLE = 1
____exports.GurgleVariant[____exports.GurgleVariant.CRACKLE] = "CRACKLE"
--- For `EntityType.WALKING_BOIL` (88).
____exports.WalkingBoilVariant = {}
____exports.WalkingBoilVariant.WALKING_BOIL = 0
____exports.WalkingBoilVariant[____exports.WalkingBoilVariant.WALKING_BOIL] = "WALKING_BOIL"
____exports.WalkingBoilVariant.WALKING_GUT = 1
____exports.WalkingBoilVariant[____exports.WalkingBoilVariant.WALKING_GUT] = "WALKING_GUT"
____exports.WalkingBoilVariant.WALKING_SACK = 2
____exports.WalkingBoilVariant[____exports.WalkingBoilVariant.WALKING_SACK] = "WALKING_SACK"
--- For `EntityType.HEART` (92).
____exports.HeartVariant = {}
____exports.HeartVariant.HEART = 0
____exports.HeartVariant[____exports.HeartVariant.HEART] = "HEART"
____exports.HeartVariant.HALF_HEART = 1
____exports.HeartVariant[____exports.HeartVariant.HALF_HEART] = "HALF_HEART"
--- For `EntityType.MASK` (93).
____exports.MaskVariant = {}
____exports.MaskVariant.MASK = 0
____exports.MaskVariant[____exports.MaskVariant.MASK] = "MASK"
____exports.MaskVariant.MASK_2 = 1
____exports.MaskVariant[____exports.MaskVariant.MASK_2] = "MASK_2"
--- For `EntityType.WIDOW` (100).
____exports.WidowVariant = {}
____exports.WidowVariant.WIDOW = 0
____exports.WidowVariant[____exports.WidowVariant.WIDOW] = "WIDOW"
____exports.WidowVariant.THE_WRETCHED = 1
____exports.WidowVariant[____exports.WidowVariant.THE_WRETCHED] = "THE_WRETCHED"
--- For `EntityType.DADDY_LONG_LEGS` (101).
____exports.DaddyLongLegsVariant = {}
____exports.DaddyLongLegsVariant.DADDY_LONG_LEGS = 0
____exports.DaddyLongLegsVariant[____exports.DaddyLongLegsVariant.DADDY_LONG_LEGS] = "DADDY_LONG_LEGS"
____exports.DaddyLongLegsVariant.TRIACHNID = 1
____exports.DaddyLongLegsVariant[____exports.DaddyLongLegsVariant.TRIACHNID] = "TRIACHNID"
--- For `EntityType.ISAAC` (102).
____exports.IsaacVariant = {}
____exports.IsaacVariant.ISAAC = 0
____exports.IsaacVariant[____exports.IsaacVariant.ISAAC] = "ISAAC"
____exports.IsaacVariant.BLUE_BABY = 1
____exports.IsaacVariant[____exports.IsaacVariant.BLUE_BABY] = "BLUE_BABY"
____exports.IsaacVariant.BLUE_BABY_HUSH = 2
____exports.IsaacVariant[____exports.IsaacVariant.BLUE_BABY_HUSH] = "BLUE_BABY_HUSH"
--- For `EntityType.CONSTANT_STONE_SHOOTER` (202).
____exports.ConstantStoneShooterVariant = {}
____exports.ConstantStoneShooterVariant.CONSTANT_STONE_SHOOTER = 0
____exports.ConstantStoneShooterVariant[____exports.ConstantStoneShooterVariant.CONSTANT_STONE_SHOOTER] = "CONSTANT_STONE_SHOOTER"
____exports.ConstantStoneShooterVariant.CROSS_STONE_SHOOTER = 10
____exports.ConstantStoneShooterVariant[____exports.ConstantStoneShooterVariant.CROSS_STONE_SHOOTER] = "CROSS_STONE_SHOOTER"
____exports.ConstantStoneShooterVariant.CROSS_STONE_SHOOTER_ALWAYS_ON = 11
____exports.ConstantStoneShooterVariant[____exports.ConstantStoneShooterVariant.CROSS_STONE_SHOOTER_ALWAYS_ON] = "CROSS_STONE_SHOOTER_ALWAYS_ON"
--- For `EntityType.BABY_LONG_LEGS` (206).
____exports.BabyLongLegsVariant = {}
____exports.BabyLongLegsVariant.BABY_LONG_LEGS = 0
____exports.BabyLongLegsVariant[____exports.BabyLongLegsVariant.BABY_LONG_LEGS] = "BABY_LONG_LEGS"
____exports.BabyLongLegsVariant.SMALL_BABY_LONG_LEGS = 1
____exports.BabyLongLegsVariant[____exports.BabyLongLegsVariant.SMALL_BABY_LONG_LEGS] = "SMALL_BABY_LONG_LEGS"
--- For `EntityType.CRAZY_LONG_LEGS` (207).
____exports.CrazyLongLegsVariant = {}
____exports.CrazyLongLegsVariant.CRAZY_LONG_LEGS = 0
____exports.CrazyLongLegsVariant[____exports.CrazyLongLegsVariant.CRAZY_LONG_LEGS] = "CRAZY_LONG_LEGS"
____exports.CrazyLongLegsVariant.SMALL_CRAZY_LONG_LEGS = 1
____exports.CrazyLongLegsVariant[____exports.CrazyLongLegsVariant.SMALL_CRAZY_LONG_LEGS] = "SMALL_CRAZY_LONG_LEGS"
--- For `EntityType.FATTY` (208).
____exports.FattyVariant = {}
____exports.FattyVariant.FATTY = 0
____exports.FattyVariant[____exports.FattyVariant.FATTY] = "FATTY"
____exports.FattyVariant.PALE_FATTY = 1
____exports.FattyVariant[____exports.FattyVariant.PALE_FATTY] = "PALE_FATTY"
____exports.FattyVariant.FLAMING_FATTY = 2
____exports.FattyVariant[____exports.FattyVariant.FLAMING_FATTY] = "FLAMING_FATTY"
--- For `EntityType.DEATHS_HEAD` (212).
____exports.DeathsHeadVariant = {}
____exports.DeathsHeadVariant.DEATHS_HEAD = 0
____exports.DeathsHeadVariant[____exports.DeathsHeadVariant.DEATHS_HEAD] = "DEATHS_HEAD"
____exports.DeathsHeadVariant.DANK_DEATHS_HEAD = 1
____exports.DeathsHeadVariant[____exports.DeathsHeadVariant.DANK_DEATHS_HEAD] = "DANK_DEATHS_HEAD"
____exports.DeathsHeadVariant.CURSED_DEATHS_HEAD = 2
____exports.DeathsHeadVariant[____exports.DeathsHeadVariant.CURSED_DEATHS_HEAD] = "CURSED_DEATHS_HEAD"
____exports.DeathsHeadVariant.BRIMSTONE_DEATHS_HEAD = 3
____exports.DeathsHeadVariant[____exports.DeathsHeadVariant.BRIMSTONE_DEATHS_HEAD] = "BRIMSTONE_DEATHS_HEAD"
____exports.DeathsHeadVariant.RED_SKULL = 4
____exports.DeathsHeadVariant[____exports.DeathsHeadVariant.RED_SKULL] = "RED_SKULL"
--- For `EntityType.SWINGER` (216).
____exports.SwingerVariant = {}
____exports.SwingerVariant.SWINGER = 0
____exports.SwingerVariant[____exports.SwingerVariant.SWINGER] = "SWINGER"
____exports.SwingerVariant.SWINGER_HEAD = 1
____exports.SwingerVariant[____exports.SwingerVariant.SWINGER_HEAD] = "SWINGER_HEAD"
____exports.SwingerVariant.SWINGER_NECK = 10
____exports.SwingerVariant[____exports.SwingerVariant.SWINGER_NECK] = "SWINGER_NECK"
--- For `EntityType.DIP` (217).
____exports.DipVariant = {}
____exports.DipVariant.DIP = 0
____exports.DipVariant[____exports.DipVariant.DIP] = "DIP"
____exports.DipVariant.CORN = 1
____exports.DipVariant[____exports.DipVariant.CORN] = "CORN"
____exports.DipVariant.BROWNIE_CORN = 2
____exports.DipVariant[____exports.DipVariant.BROWNIE_CORN] = "BROWNIE_CORN"
____exports.DipVariant.BIG_CORN = 3
____exports.DipVariant[____exports.DipVariant.BIG_CORN] = "BIG_CORN"
--- For `EntityType.SQUIRT` (220).
____exports.SquirtVariant = {}
____exports.SquirtVariant.SQUIRT = 0
____exports.SquirtVariant[____exports.SquirtVariant.SQUIRT] = "SQUIRT"
____exports.SquirtVariant.DANK_SQUIRT = 1
____exports.SquirtVariant[____exports.SquirtVariant.DANK_SQUIRT] = "DANK_SQUIRT"
--- For `EntityType.SKINNY` (226).
____exports.SkinnyVariant = {}
____exports.SkinnyVariant.SKINNY = 0
____exports.SkinnyVariant[____exports.SkinnyVariant.SKINNY] = "SKINNY"
____exports.SkinnyVariant.ROTTY = 1
____exports.SkinnyVariant[____exports.SkinnyVariant.ROTTY] = "ROTTY"
____exports.SkinnyVariant.CRISPY = 2
____exports.SkinnyVariant[____exports.SkinnyVariant.CRISPY] = "CRISPY"
--- For `EntityType.BONY` (227).
____exports.BonyVariant = {}
____exports.BonyVariant.BONY = 0
____exports.BonyVariant[____exports.BonyVariant.BONY] = "BONY"
____exports.BonyVariant.HOLY_BONY = 1
____exports.BonyVariant[____exports.BonyVariant.HOLY_BONY] = "HOLY_BONY"
--- For `EntityType.HOMUNCULUS` (228).
____exports.HomunculusVariant = {}
____exports.HomunculusVariant.HOMUNCULUS = 0
____exports.HomunculusVariant[____exports.HomunculusVariant.HOMUNCULUS] = "HOMUNCULUS"
____exports.HomunculusVariant.HOMUNCULUS_CORD = 10
____exports.HomunculusVariant[____exports.HomunculusVariant.HOMUNCULUS_CORD] = "HOMUNCULUS_CORD"
--- For `EntityType.TUMOR` (229).
____exports.TumorVariant = {}
____exports.TumorVariant.TUMOR = 0
____exports.TumorVariant[____exports.TumorVariant.TUMOR] = "TUMOR"
____exports.TumorVariant.PLANETOID = 1
____exports.TumorVariant[____exports.TumorVariant.PLANETOID] = "PLANETOID"
--- For `EntityType.NERVE_ENDING` (231).
____exports.NerveEndingVariant = {}
____exports.NerveEndingVariant.NERVE_ENDING = 0
____exports.NerveEndingVariant[____exports.NerveEndingVariant.NERVE_ENDING] = "NERVE_ENDING"
____exports.NerveEndingVariant.NERVE_ENDING_2 = 1
____exports.NerveEndingVariant[____exports.NerveEndingVariant.NERVE_ENDING_2] = "NERVE_ENDING_2"
--- For `EntityType.GURGLING` (237).
____exports.GurglingVariant = {}
____exports.GurglingVariant.GURGLING = 0
____exports.GurglingVariant[____exports.GurglingVariant.GURGLING] = "GURGLING"
____exports.GurglingVariant.GURGLING_BOSS = 1
____exports.GurglingVariant[____exports.GurglingVariant.GURGLING_BOSS] = "GURGLING_BOSS"
____exports.GurglingVariant.TURDLING = 2
____exports.GurglingVariant[____exports.GurglingVariant.TURDLING] = "TURDLING"
--- For `EntityType.GRUB` (239).
____exports.GrubVariant = {}
____exports.GrubVariant.GRUB = 0
____exports.GrubVariant[____exports.GrubVariant.GRUB] = "GRUB"
____exports.GrubVariant.CORPSE_EATER = 1
____exports.GrubVariant[____exports.GrubVariant.CORPSE_EATER] = "CORPSE_EATER"
____exports.GrubVariant.CARRION_RIDER = 2
____exports.GrubVariant[____exports.GrubVariant.CARRION_RIDER] = "CARRION_RIDER"
--- For `EntityType.WALL_CREEP` (240).
____exports.WallCreepVariant = {}
____exports.WallCreepVariant.WALL_CREEP = 0
____exports.WallCreepVariant[____exports.WallCreepVariant.WALL_CREEP] = "WALL_CREEP"
____exports.WallCreepVariant.SOY_CREEP = 1
____exports.WallCreepVariant[____exports.WallCreepVariant.SOY_CREEP] = "SOY_CREEP"
____exports.WallCreepVariant.RAG_CREEP = 2
____exports.WallCreepVariant[____exports.WallCreepVariant.RAG_CREEP] = "RAG_CREEP"
____exports.WallCreepVariant.TAINTED_SOY_CREEP = 3
____exports.WallCreepVariant[____exports.WallCreepVariant.TAINTED_SOY_CREEP] = "TAINTED_SOY_CREEP"
--- For `EntityType.RAGE_CREEP` (241).
____exports.RageCreepVariant = {}
____exports.RageCreepVariant.RAGE_CREEP = 0
____exports.RageCreepVariant[____exports.RageCreepVariant.RAGE_CREEP] = "RAGE_CREEP"
____exports.RageCreepVariant.SPLIT_RAGE_CREEP = 1
____exports.RageCreepVariant[____exports.RageCreepVariant.SPLIT_RAGE_CREEP] = "SPLIT_RAGE_CREEP"
--- For `EntityType.ROUND_WORM` (244).
____exports.RoundWormVariant = {}
____exports.RoundWormVariant.ROUND_WORM = 0
____exports.RoundWormVariant[____exports.RoundWormVariant.ROUND_WORM] = "ROUND_WORM"
____exports.RoundWormVariant.TUBE_WORM = 1
____exports.RoundWormVariant[____exports.RoundWormVariant.TUBE_WORM] = "TUBE_WORM"
____exports.RoundWormVariant.TAINTED_ROUND_WORM = 2
____exports.RoundWormVariant[____exports.RoundWormVariant.TAINTED_ROUND_WORM] = "TAINTED_ROUND_WORM"
____exports.RoundWormVariant.TAINTED_TUBE_WORM = 3
____exports.RoundWormVariant[____exports.RoundWormVariant.TAINTED_TUBE_WORM] = "TAINTED_TUBE_WORM"
--- For `EntityType.POOP` (245).
____exports.PoopEntityVariant = {}
____exports.PoopEntityVariant.NORMAL = 0
____exports.PoopEntityVariant[____exports.PoopEntityVariant.NORMAL] = "NORMAL"
____exports.PoopEntityVariant.GOLDEN = 1
____exports.PoopEntityVariant[____exports.PoopEntityVariant.GOLDEN] = "GOLDEN"
____exports.PoopEntityVariant.STONE = 11
____exports.PoopEntityVariant[____exports.PoopEntityVariant.STONE] = "STONE"
____exports.PoopEntityVariant.CORNY = 12
____exports.PoopEntityVariant[____exports.PoopEntityVariant.CORNY] = "CORNY"
____exports.PoopEntityVariant.BURNING = 13
____exports.PoopEntityVariant[____exports.PoopEntityVariant.BURNING] = "BURNING"
____exports.PoopEntityVariant.STINKY = 14
____exports.PoopEntityVariant[____exports.PoopEntityVariant.STINKY] = "STINKY"
____exports.PoopEntityVariant.BLACK = 15
____exports.PoopEntityVariant[____exports.PoopEntityVariant.BLACK] = "BLACK"
____exports.PoopEntityVariant.HOLY = 16
____exports.PoopEntityVariant[____exports.PoopEntityVariant.HOLY] = "HOLY"
--- For `EntityType.RAGLING` (246).
____exports.RaglingVariant = {}
____exports.RaglingVariant.RAGLING = 0
____exports.RaglingVariant[____exports.RaglingVariant.RAGLING] = "RAGLING"
____exports.RaglingVariant.RAG_MANS_RAGLING = 1
____exports.RaglingVariant[____exports.RaglingVariant.RAG_MANS_RAGLING] = "RAG_MANS_RAGLING"
--- For `EntityType.BEGOTTEN` (251).
____exports.BegottenVariant = {}
____exports.BegottenVariant.BEGOTTEN = 0
____exports.BegottenVariant[____exports.BegottenVariant.BEGOTTEN] = "BEGOTTEN"
____exports.BegottenVariant.BEGOTTEN_CHAIN = 10
____exports.BegottenVariant[____exports.BegottenVariant.BEGOTTEN_CHAIN] = "BEGOTTEN_CHAIN"
--- For `EntityType.CONJOINED_FATTY` (257).
____exports.ConjoinedFattyVariant = {}
____exports.ConjoinedFattyVariant.CONJOINED_FATTY = 0
____exports.ConjoinedFattyVariant[____exports.ConjoinedFattyVariant.CONJOINED_FATTY] = "CONJOINED_FATTY"
____exports.ConjoinedFattyVariant.BLUE_CONJOINED_FATTY = 1
____exports.ConjoinedFattyVariant[____exports.ConjoinedFattyVariant.BLUE_CONJOINED_FATTY] = "BLUE_CONJOINED_FATTY"
--- For `EntityType.THE_HAUNT` (260).
____exports.HauntVariant = {}
____exports.HauntVariant.HAUNT = 0
____exports.HauntVariant[____exports.HauntVariant.HAUNT] = "HAUNT"
____exports.HauntVariant.LIL_HAUNT = 10
____exports.HauntVariant[____exports.HauntVariant.LIL_HAUNT] = "LIL_HAUNT"
--- For `EntityType.DINGLE` (261).
____exports.DingleVariant = {}
____exports.DingleVariant.DINGLE = 0
____exports.DingleVariant[____exports.DingleVariant.DINGLE] = "DINGLE"
____exports.DingleVariant.DANGLE = 1
____exports.DingleVariant[____exports.DingleVariant.DANGLE] = "DANGLE"
--- For `EntityType.MAMA_GURDY` (266).
____exports.MamaGurdyVariant = {}
____exports.MamaGurdyVariant.MAMA_GURDY = 0
____exports.MamaGurdyVariant[____exports.MamaGurdyVariant.MAMA_GURDY] = "MAMA_GURDY"
____exports.MamaGurdyVariant.LEFT_HAND = 1
____exports.MamaGurdyVariant[____exports.MamaGurdyVariant.LEFT_HAND] = "LEFT_HAND"
____exports.MamaGurdyVariant.RIGHT_HAND = 2
____exports.MamaGurdyVariant[____exports.MamaGurdyVariant.RIGHT_HAND] = "RIGHT_HAND"
--- For `EntityType.POLYCEPHALUS` (269).
____exports.PolycephalusVariant = {}
____exports.PolycephalusVariant.POLYCEPHALUS = 0
____exports.PolycephalusVariant[____exports.PolycephalusVariant.POLYCEPHALUS] = "POLYCEPHALUS"
____exports.PolycephalusVariant.THE_PILE = 1
____exports.PolycephalusVariant[____exports.PolycephalusVariant.THE_PILE] = "THE_PILE"
--- For `EntityType.URIEL` (271) and `EntityType.GABRIEL` (272).
____exports.AngelVariant = {}
____exports.AngelVariant.NORMAL = 0
____exports.AngelVariant[____exports.AngelVariant.NORMAL] = "NORMAL"
____exports.AngelVariant.FALLEN = 1
____exports.AngelVariant[____exports.AngelVariant.FALLEN] = "FALLEN"
--- For `EntityType.THE_LAMB` (273).
____exports.LambVariant = {}
____exports.LambVariant.LAMB = 0
____exports.LambVariant[____exports.LambVariant.LAMB] = "LAMB"
____exports.LambVariant.BODY = 10
____exports.LambVariant[____exports.LambVariant.BODY] = "BODY"
--- For `EntityType.MEGA_SATAN` (274) and `EntityType.MEGA_SATAN_2` (275).
____exports.MegaSatanVariant = {}
____exports.MegaSatanVariant.MEGA_SATAN = 0
____exports.MegaSatanVariant[____exports.MegaSatanVariant.MEGA_SATAN] = "MEGA_SATAN"
____exports.MegaSatanVariant.MEGA_SATAN_RIGHT_HAND = 1
____exports.MegaSatanVariant[____exports.MegaSatanVariant.MEGA_SATAN_RIGHT_HAND] = "MEGA_SATAN_RIGHT_HAND"
____exports.MegaSatanVariant.MEGA_SATAN_LEFT_HAND = 2
____exports.MegaSatanVariant[____exports.MegaSatanVariant.MEGA_SATAN_LEFT_HAND] = "MEGA_SATAN_LEFT_HAND"
--- For `EntityType.PITFALL` (291).
____exports.PitfallVariant = {}
____exports.PitfallVariant.PITFALL = 0
____exports.PitfallVariant[____exports.PitfallVariant.PITFALL] = "PITFALL"
____exports.PitfallVariant.SUCTION_PITFALL = 1
____exports.PitfallVariant[____exports.PitfallVariant.SUCTION_PITFALL] = "SUCTION_PITFALL"
____exports.PitfallVariant.TELEPORT_PITFALL = 2
____exports.PitfallVariant[____exports.PitfallVariant.TELEPORT_PITFALL] = "TELEPORT_PITFALL"
--- For `EntityType.MOVABLE_TNT` (292).
____exports.MoveableTNTVariant = {}
____exports.MoveableTNTVariant.MOVEABLE_TNT = 0
____exports.MoveableTNTVariant[____exports.MoveableTNTVariant.MOVEABLE_TNT] = "MOVEABLE_TNT"
____exports.MoveableTNTVariant.MINE_CRAFTER = 1
____exports.MoveableTNTVariant[____exports.MoveableTNTVariant.MINE_CRAFTER] = "MINE_CRAFTER"
--- For `EntityType.ULTRA_COIN` (293).
____exports.UltraCoinVariant = {}
____exports.UltraCoinVariant.SPINNER = 0
____exports.UltraCoinVariant[____exports.UltraCoinVariant.SPINNER] = "SPINNER"
____exports.UltraCoinVariant.KEY = 1
____exports.UltraCoinVariant[____exports.UltraCoinVariant.KEY] = "KEY"
____exports.UltraCoinVariant.BOMB = 2
____exports.UltraCoinVariant[____exports.UltraCoinVariant.BOMB] = "BOMB"
____exports.UltraCoinVariant.HEART = 3
____exports.UltraCoinVariant[____exports.UltraCoinVariant.HEART] = "HEART"
--- For `EntityType.STONEY` (302).
____exports.StoneyVariant = {}
____exports.StoneyVariant.STONEY = 0
____exports.StoneyVariant[____exports.StoneyVariant.STONEY] = "STONEY"
____exports.StoneyVariant.CROSS_STONEY = 10
____exports.StoneyVariant[____exports.StoneyVariant.CROSS_STONEY] = "CROSS_STONEY"
--- For `EntityType.PORTAL` (306).
____exports.PortalVariant = {}
____exports.PortalVariant.PORTAL = 0
____exports.PortalVariant[____exports.PortalVariant.PORTAL] = "PORTAL"
____exports.PortalVariant.LIL_PORTAL = 1
____exports.PortalVariant[____exports.PortalVariant.LIL_PORTAL] = "LIL_PORTAL"
--- For `EntityType.LEPER` (310).
____exports.LeperVariant = {}
____exports.LeperVariant.LEPER = 0
____exports.LeperVariant[____exports.LeperVariant.LEPER] = "LEPER"
____exports.LeperVariant.LEPER_FLESH = 1
____exports.LeperVariant[____exports.LeperVariant.LEPER_FLESH] = "LEPER_FLESH"
--- For `EntityType.MR_MINE` (311).
____exports.MrMineVariant = {}
____exports.MrMineVariant.MR_MINE = 0
____exports.MrMineVariant[____exports.MrMineVariant.MR_MINE] = "MR_MINE"
____exports.MrMineVariant.MR_MINE_NECK = 10
____exports.MrMineVariant[____exports.MrMineVariant.MR_MINE_NECK] = "MR_MINE_NECK"
--- For `EntityType.LITTLE_HORN` (404).
____exports.LittleHornVariant = {}
____exports.LittleHornVariant.LITTLE_HORN = 0
____exports.LittleHornVariant[____exports.LittleHornVariant.LITTLE_HORN] = "LITTLE_HORN"
____exports.LittleHornVariant.DARK_BALL = 1
____exports.LittleHornVariant[____exports.LittleHornVariant.DARK_BALL] = "DARK_BALL"
--- For `EntityType.RAG_MAN` (405).
____exports.RagManVariant = {}
____exports.RagManVariant.RAG_MAN = 0
____exports.RagManVariant[____exports.RagManVariant.RAG_MAN] = "RAG_MAN"
____exports.RagManVariant.RAG_MAN_HEAD = 1
____exports.RagManVariant[____exports.RagManVariant.RAG_MAN_HEAD] = "RAG_MAN_HEAD"
--- For `EntityType.ULTRA_GREED` (406).
____exports.UltraGreedVariant = {}
____exports.UltraGreedVariant.ULTRA_GREED = 0
____exports.UltraGreedVariant[____exports.UltraGreedVariant.ULTRA_GREED] = "ULTRA_GREED"
____exports.UltraGreedVariant.ULTRA_GREEDIER = 1
____exports.UltraGreedVariant[____exports.UltraGreedVariant.ULTRA_GREEDIER] = "ULTRA_GREEDIER"
--- For `EntityType.RAG_MEGA` (409).
____exports.RagMegaVariant = {}
____exports.RagMegaVariant.RAG_MEGA = 0
____exports.RagMegaVariant[____exports.RagMegaVariant.RAG_MEGA] = "RAG_MEGA"
____exports.RagMegaVariant.PURPLE_BALL = 1
____exports.RagMegaVariant[____exports.RagMegaVariant.PURPLE_BALL] = "PURPLE_BALL"
____exports.RagMegaVariant.REBIRTH_PILLAR = 2
____exports.RagMegaVariant[____exports.RagMegaVariant.REBIRTH_PILLAR] = "REBIRTH_PILLAR"
--- For `EntityType.BIG_HORN` (411).
____exports.BigHornVariant = {}
____exports.BigHornVariant.BIG_HORN = 0
____exports.BigHornVariant[____exports.BigHornVariant.BIG_HORN] = "BIG_HORN"
____exports.BigHornVariant.SMALL_HOLE = 1
____exports.BigHornVariant[____exports.BigHornVariant.SMALL_HOLE] = "SMALL_HOLE"
____exports.BigHornVariant.BIG_HOLE = 2
____exports.BigHornVariant[____exports.BigHornVariant.BIG_HOLE] = "BIG_HOLE"
--- For `EntityType.BLOOD_PUPPY` (802).
____exports.BloodPuppyVariant = {}
____exports.BloodPuppyVariant.SMALL = 0
____exports.BloodPuppyVariant[____exports.BloodPuppyVariant.SMALL] = "SMALL"
____exports.BloodPuppyVariant.LARGE = 1
____exports.BloodPuppyVariant[____exports.BloodPuppyVariant.LARGE] = "LARGE"
--- For `EntityType.SUB_HORF` (812).
____exports.SubHorfVariant = {}
____exports.SubHorfVariant.SUB_HORF = 0
____exports.SubHorfVariant[____exports.SubHorfVariant.SUB_HORF] = "SUB_HORF"
____exports.SubHorfVariant.TAINTED_SUB_HORF = 1
____exports.SubHorfVariant[____exports.SubHorfVariant.TAINTED_SUB_HORF] = "TAINTED_SUB_HORF"
--- For `EntityType.POLTY` (816).
____exports.PoltyVariant = {}
____exports.PoltyVariant.POLTY = 0
____exports.PoltyVariant[____exports.PoltyVariant.POLTY] = "POLTY"
____exports.PoltyVariant.KINETI = 1
____exports.PoltyVariant[____exports.PoltyVariant.KINETI] = "KINETI"
--- For `EntityType.PREY` (817).
____exports.PreyVariant = {}
____exports.PreyVariant.PREY = 0
____exports.PreyVariant[____exports.PreyVariant.PREY] = "PREY"
____exports.PreyVariant.MULLIGHOUL = 1
____exports.PreyVariant[____exports.PreyVariant.MULLIGHOUL] = "MULLIGHOUL"
--- For `EntityType.ROCK_SPIDER` (818).
____exports.RockSpiderVariant = {}
____exports.RockSpiderVariant.ROCK_SPIDER = 0
____exports.RockSpiderVariant[____exports.RockSpiderVariant.ROCK_SPIDER] = "ROCK_SPIDER"
____exports.RockSpiderVariant.TINTED_ROCK_SPIDER = 1
____exports.RockSpiderVariant[____exports.RockSpiderVariant.TINTED_ROCK_SPIDER] = "TINTED_ROCK_SPIDER"
____exports.RockSpiderVariant.COAL_SPIDER = 2
____exports.RockSpiderVariant[____exports.RockSpiderVariant.COAL_SPIDER] = "COAL_SPIDER"
--- For `EntityType.FLY_BOMB` (819).
____exports.FlyBombVariant = {}
____exports.FlyBombVariant.FLY_BOMB = 0
____exports.FlyBombVariant[____exports.FlyBombVariant.FLY_BOMB] = "FLY_BOMB"
____exports.FlyBombVariant.ETERNAL_FLY_BOMB = 1
____exports.FlyBombVariant[____exports.FlyBombVariant.ETERNAL_FLY_BOMB] = "ETERNAL_FLY_BOMB"
--- For `EntityType.DANNY` (820).
____exports.DannyVariant = {}
____exports.DannyVariant.DANNY = 0
____exports.DannyVariant[____exports.DannyVariant.DANNY] = "DANNY"
____exports.DannyVariant.COAL_BOY = 1
____exports.DannyVariant[____exports.DannyVariant.COAL_BOY] = "COAL_BOY"
--- For `EntityType.GYRO` (824).
____exports.GyroVariant = {}
____exports.GyroVariant.GYRO = 0
____exports.GyroVariant[____exports.GyroVariant.GYRO] = "GYRO"
____exports.GyroVariant.GRILLED_GYRO = 1
____exports.GyroVariant[____exports.GyroVariant.GRILLED_GYRO] = "GRILLED_GYRO"
--- For `EntityType.FACELESS` (827).
____exports.FacelessVariant = {}
____exports.FacelessVariant.FACELESS = 0
____exports.FacelessVariant[____exports.FacelessVariant.FACELESS] = "FACELESS"
____exports.FacelessVariant.TAINTED_FACELESS = 1
____exports.FacelessVariant[____exports.FacelessVariant.TAINTED_FACELESS] = "TAINTED_FACELESS"
--- For `EntityType.MOLE` (829).
____exports.MoleVariant = {}
____exports.MoleVariant.MOLE = 0
____exports.MoleVariant[____exports.MoleVariant.MOLE] = "MOLE"
____exports.MoleVariant.TAINTED_MOLE = 1
____exports.MoleVariant[____exports.MoleVariant.TAINTED_MOLE] = "TAINTED_MOLE"
--- For `EntityType.BIG_BONY` (830).
____exports.BigBonyVariant = {}
____exports.BigBonyVariant.BIG_BONY = 0
____exports.BigBonyVariant[____exports.BigBonyVariant.BIG_BONY] = "BIG_BONY"
____exports.BigBonyVariant.BIG_BONE = 10
____exports.BigBonyVariant[____exports.BigBonyVariant.BIG_BONE] = "BIG_BONE"
--- For `EntityType.GUTTED_FATTY` (831).
____exports.GuttyFattyVariant = {}
____exports.GuttyFattyVariant.GUTTED_FATTY = 0
____exports.GuttyFattyVariant[____exports.GuttyFattyVariant.GUTTED_FATTY] = "GUTTED_FATTY"
____exports.GuttyFattyVariant.GUTTY_FATTY_EYE = 10
____exports.GuttyFattyVariant[____exports.GuttyFattyVariant.GUTTY_FATTY_EYE] = "GUTTY_FATTY_EYE"
____exports.GuttyFattyVariant.FESTERING_GUTS = 20
____exports.GuttyFattyVariant[____exports.GuttyFattyVariant.FESTERING_GUTS] = "FESTERING_GUTS"
--- For `EntityType.EXORCIST` (832).
____exports.ExorcistVariant = {}
____exports.ExorcistVariant.EXORCIST = 0
____exports.ExorcistVariant[____exports.ExorcistVariant.EXORCIST] = "EXORCIST"
____exports.ExorcistVariant.FANATIC = 1
____exports.ExorcistVariant[____exports.ExorcistVariant.FANATIC] = "FANATIC"
--- For `EntityType.WHIPPER` (834).
____exports.WhipperVariant = {}
____exports.WhipperVariant.WHIPPER = 0
____exports.WhipperVariant[____exports.WhipperVariant.WHIPPER] = "WHIPPER"
____exports.WhipperVariant.SNAPPER = 1
____exports.WhipperVariant[____exports.WhipperVariant.SNAPPER] = "SNAPPER"
____exports.WhipperVariant.FLAGELLANT = 2
____exports.WhipperVariant[____exports.WhipperVariant.FLAGELLANT] = "FLAGELLANT"
--- For `EntityType.PEEPER_FATTY` (835).
____exports.PeeperFattyVariant = {}
____exports.PeeperFattyVariant.PEEPING_FATTY = 0
____exports.PeeperFattyVariant[____exports.PeeperFattyVariant.PEEPING_FATTY] = "PEEPING_FATTY"
____exports.PeeperFattyVariant.PEEPING_FATTY_EYE = 10
____exports.PeeperFattyVariant[____exports.PeeperFattyVariant.PEEPING_FATTY_EYE] = "PEEPING_FATTY_EYE"
--- For `EntityType.REVENANT` (841).
____exports.RevenantVariant = {}
____exports.RevenantVariant.REVENANT = 0
____exports.RevenantVariant[____exports.RevenantVariant.REVENANT] = "REVENANT"
____exports.RevenantVariant.QUAD_REVENANT = 1
____exports.RevenantVariant[____exports.RevenantVariant.QUAD_REVENANT] = "QUAD_REVENANT"
--- For `EntityType.CANARY` (843).
____exports.CanaryVariant = {}
____exports.CanaryVariant.CANARY = 0
____exports.CanaryVariant[____exports.CanaryVariant.CANARY] = "CANARY"
____exports.CanaryVariant.FOREIGNER = 1
____exports.CanaryVariant[____exports.CanaryVariant.FOREIGNER] = "FOREIGNER"
--- For `EntityType.GAPER_L2` (850).
____exports.Gaper2Variant = {}
____exports.Gaper2Variant.GAPER = 0
____exports.Gaper2Variant[____exports.Gaper2Variant.GAPER] = "GAPER"
____exports.Gaper2Variant.HORF = 1
____exports.Gaper2Variant[____exports.Gaper2Variant.HORF] = "HORF"
____exports.Gaper2Variant.GUSHER = 2
____exports.Gaper2Variant[____exports.Gaper2Variant.GUSHER] = "GUSHER"
--- For `EntityType.CHARGER_L2` (855).
____exports.Charger2Variant = {}
____exports.Charger2Variant.CHARGER = 0
____exports.Charger2Variant[____exports.Charger2Variant.CHARGER] = "CHARGER"
____exports.Charger2Variant.ELLEECH = 1
____exports.Charger2Variant[____exports.Charger2Variant.ELLEECH] = "ELLEECH"
--- For `EntityType.EVIS` (865).
____exports.EvisVariant = {}
____exports.EvisVariant.EVIS = 0
____exports.EvisVariant[____exports.EvisVariant.EVIS] = "EVIS"
____exports.EvisVariant.EVIS_GUTS = 10
____exports.EvisVariant[____exports.EvisVariant.EVIS_GUTS] = "EVIS_GUTS"
--- For `EntityType.DARK_ESAU` (866).
____exports.DarkEsauVariant = {}
____exports.DarkEsauVariant.DARK_ESAU = 0
____exports.DarkEsauVariant[____exports.DarkEsauVariant.DARK_ESAU] = "DARK_ESAU"
____exports.DarkEsauVariant.PIT = 1
____exports.DarkEsauVariant[____exports.DarkEsauVariant.PIT] = "PIT"
--- For `EntityType.DUMP` (876).
____exports.DumpVariant = {}
____exports.DumpVariant.DUMP = 0
____exports.DumpVariant[____exports.DumpVariant.DUMP] = "DUMP"
____exports.DumpVariant.DUMP_HEAD = 1
____exports.DumpVariant[____exports.DumpVariant.DUMP_HEAD] = "DUMP_HEAD"
--- For `EntityType.NEEDLE` (881).
____exports.NeedleVariant = {}
____exports.NeedleVariant.NEEDLE = 0
____exports.NeedleVariant[____exports.NeedleVariant.NEEDLE] = "NEEDLE"
____exports.NeedleVariant.PASTY = 1
____exports.NeedleVariant[____exports.NeedleVariant.PASTY] = "PASTY"
--- For `EntityType.CULTIST` (885).
____exports.CultistVariant = {}
____exports.CultistVariant.CULTIST = 0
____exports.CultistVariant[____exports.CultistVariant.CULTIST] = "CULTIST"
____exports.CultistVariant.BLOOD_CULTIST = 1
____exports.CultistVariant[____exports.CultistVariant.BLOOD_CULTIST] = "BLOOD_CULTIST"
____exports.CultistVariant.BONE_TRAP = 10
____exports.CultistVariant[____exports.CultistVariant.BONE_TRAP] = "BONE_TRAP"
--- For `EntityType.VIS_FATTY` (886).
____exports.VisFattyVariant = {}
____exports.VisFattyVariant.VIS_FATTY = 0
____exports.VisFattyVariant[____exports.VisFattyVariant.VIS_FATTY] = "VIS_FATTY"
____exports.VisFattyVariant.FETAL_DEMON = 1
____exports.VisFattyVariant[____exports.VisFattyVariant.FETAL_DEMON] = "FETAL_DEMON"
--- For `EntityType.GOAT` (891).
____exports.GoatVariant = {}
____exports.GoatVariant.GOAT = 0
____exports.GoatVariant[____exports.GoatVariant.GOAT] = "GOAT"
____exports.GoatVariant.BLACK_GOAT = 1
____exports.GoatVariant[____exports.GoatVariant.BLACK_GOAT] = "BLACK_GOAT"
--- For `EntityType.VISAGE` (903).
____exports.VisageVariant = {}
____exports.VisageVariant.VISAGE = 0
____exports.VisageVariant[____exports.VisageVariant.VISAGE] = "VISAGE"
____exports.VisageVariant.VISAGE_MASK = 1
____exports.VisageVariant[____exports.VisageVariant.VISAGE_MASK] = "VISAGE_MASK"
____exports.VisageVariant.VISAGE_CHAIN = 10
____exports.VisageVariant[____exports.VisageVariant.VISAGE_CHAIN] = "VISAGE_CHAIN"
____exports.VisageVariant.VISAGE_PLASMA = 20
____exports.VisageVariant[____exports.VisageVariant.VISAGE_PLASMA] = "VISAGE_PLASMA"
--- For `EntityType.SIREN` (904).
____exports.SirenVariant = {}
____exports.SirenVariant.SIREN = 0
____exports.SirenVariant[____exports.SirenVariant.SIREN] = "SIREN"
____exports.SirenVariant.SIREN_SKULL = 1
____exports.SirenVariant[____exports.SirenVariant.SIREN_SKULL] = "SIREN_SKULL"
____exports.SirenVariant.SIREN_HELPER_PROJECTILE = 10
____exports.SirenVariant[____exports.SirenVariant.SIREN_HELPER_PROJECTILE] = "SIREN_HELPER_PROJECTILE"
--- For `EntityType.SCOURGE` (909).
____exports.ScourgeVariant = {}
____exports.ScourgeVariant.SCOURGE = 0
____exports.ScourgeVariant[____exports.ScourgeVariant.SCOURGE] = "SCOURGE"
____exports.ScourgeVariant.SCOURGE_CHAIN = 10
____exports.ScourgeVariant[____exports.ScourgeVariant.SCOURGE_CHAIN] = "SCOURGE_CHAIN"
--- For `EntityType.CHIMERA` (910).
____exports.ChimeraVariant = {}
____exports.ChimeraVariant.CHIMERA = 0
____exports.ChimeraVariant[____exports.ChimeraVariant.CHIMERA] = "CHIMERA"
____exports.ChimeraVariant.CHIMERA_BODY = 1
____exports.ChimeraVariant[____exports.ChimeraVariant.CHIMERA_BODY] = "CHIMERA_BODY"
____exports.ChimeraVariant.CHIMERA_HEAD = 2
____exports.ChimeraVariant[____exports.ChimeraVariant.CHIMERA_HEAD] = "CHIMERA_HEAD"
--- For `EntityType.ROTGUT` (911).
____exports.RotgutVariant = {}
____exports.RotgutVariant.PHASE_1_HEAD = 0
____exports.RotgutVariant[____exports.RotgutVariant.PHASE_1_HEAD] = "PHASE_1_HEAD"
____exports.RotgutVariant.PHASE_2_MAGGOT = 1
____exports.RotgutVariant[____exports.RotgutVariant.PHASE_2_MAGGOT] = "PHASE_2_MAGGOT"
____exports.RotgutVariant.PHASE_3_HEART = 2
____exports.RotgutVariant[____exports.RotgutVariant.PHASE_3_HEART] = "PHASE_3_HEART"
--- For `EntityType.MOTHER` (912).
____exports.MotherVariant = {}
____exports.MotherVariant.MOTHER_1 = 0
____exports.MotherVariant[____exports.MotherVariant.MOTHER_1] = "MOTHER_1"
____exports.MotherVariant.MOTHER_2 = 10
____exports.MotherVariant[____exports.MotherVariant.MOTHER_2] = "MOTHER_2"
____exports.MotherVariant.BALL = 100
____exports.MotherVariant[____exports.MotherVariant.BALL] = "BALL"
--- For `EntityType.SINGE` (915).
____exports.SingeVariant = {}
____exports.SingeVariant.SINGE = 0
____exports.SingeVariant[____exports.SingeVariant.SINGE] = "SINGE"
____exports.SingeVariant.SINGE_BALL = 1
____exports.SingeVariant[____exports.SingeVariant.SINGE_BALL] = "SINGE_BALL"
--- For `EntityType.RAGLICH` (919).
____exports.RaglichVariant = {}
____exports.RaglichVariant.RAGLICH = 0
____exports.RaglichVariant[____exports.RaglichVariant.RAGLICH] = "RAGLICH"
____exports.RaglichVariant.RAGLICH_ARM = 1
____exports.RaglichVariant[____exports.RaglichVariant.RAGLICH_ARM] = "RAGLICH_ARM"
--- For `EntityType.CLUTCH` (921).
____exports.ClutchVariant = {}
____exports.ClutchVariant.CLUTCH = 0
____exports.ClutchVariant[____exports.ClutchVariant.CLUTCH] = "CLUTCH"
____exports.ClutchVariant.CLUTCH_ORBITAL = 1
____exports.ClutchVariant[____exports.ClutchVariant.CLUTCH_ORBITAL] = "CLUTCH_ORBITAL"
--- For `EntityType.DOGMA` (950).
____exports.DogmaVariant = {}
____exports.DogmaVariant.DOGMA_PHASE_1 = 0
____exports.DogmaVariant[____exports.DogmaVariant.DOGMA_PHASE_1] = "DOGMA_PHASE_1"
____exports.DogmaVariant.TV = 1
____exports.DogmaVariant[____exports.DogmaVariant.TV] = "TV"
____exports.DogmaVariant.ANGEL_PHASE_2 = 2
____exports.DogmaVariant[____exports.DogmaVariant.ANGEL_PHASE_2] = "ANGEL_PHASE_2"
____exports.DogmaVariant.ANGEL_BABY_UNUSED = 10
____exports.DogmaVariant[____exports.DogmaVariant.ANGEL_BABY_UNUSED] = "ANGEL_BABY_UNUSED"
--- For `EntityType.BEAST` (951).
____exports.BeastVariant = {}
____exports.BeastVariant.BEAST = 0
____exports.BeastVariant[____exports.BeastVariant.BEAST] = "BEAST"
____exports.BeastVariant.STALACTITE = 1
____exports.BeastVariant[____exports.BeastVariant.STALACTITE] = "STALACTITE"
____exports.BeastVariant.ROCK_PROJECTILE = 2
____exports.BeastVariant[____exports.BeastVariant.ROCK_PROJECTILE] = "ROCK_PROJECTILE"
____exports.BeastVariant.SOUL = 3
____exports.BeastVariant[____exports.BeastVariant.SOUL] = "SOUL"
____exports.BeastVariant.ULTRA_FAMINE = 10
____exports.BeastVariant[____exports.BeastVariant.ULTRA_FAMINE] = "ULTRA_FAMINE"
____exports.BeastVariant.ULTRA_FAMINE_FLY = 11
____exports.BeastVariant[____exports.BeastVariant.ULTRA_FAMINE_FLY] = "ULTRA_FAMINE_FLY"
____exports.BeastVariant.ULTRA_PESTILENCE = 20
____exports.BeastVariant[____exports.BeastVariant.ULTRA_PESTILENCE] = "ULTRA_PESTILENCE"
____exports.BeastVariant.ULTRA_PESTILENCE_FLY = 21
____exports.BeastVariant[____exports.BeastVariant.ULTRA_PESTILENCE_FLY] = "ULTRA_PESTILENCE_FLY"
____exports.BeastVariant.ULTRA_PESTILENCE_MAGGOT = 22
____exports.BeastVariant[____exports.BeastVariant.ULTRA_PESTILENCE_MAGGOT] = "ULTRA_PESTILENCE_MAGGOT"
____exports.BeastVariant.ULTRA_PESTILENCE_FLY_BALL = 23
____exports.BeastVariant[____exports.BeastVariant.ULTRA_PESTILENCE_FLY_BALL] = "ULTRA_PESTILENCE_FLY_BALL"
____exports.BeastVariant.ULTRA_WAR = 30
____exports.BeastVariant[____exports.BeastVariant.ULTRA_WAR] = "ULTRA_WAR"
____exports.BeastVariant.ULTRA_WAR_BOMB = 31
____exports.BeastVariant[____exports.BeastVariant.ULTRA_WAR_BOMB] = "ULTRA_WAR_BOMB"
____exports.BeastVariant.ULTRA_DEATH = 40
____exports.BeastVariant[____exports.BeastVariant.ULTRA_DEATH] = "ULTRA_DEATH"
____exports.BeastVariant.ULTRA_DEATH_SCYTHE = 41
____exports.BeastVariant[____exports.BeastVariant.ULTRA_DEATH_SCYTHE] = "ULTRA_DEATH_SCYTHE"
____exports.BeastVariant.ULTRA_DEATH_HEAD = 42
____exports.BeastVariant[____exports.BeastVariant.ULTRA_DEATH_HEAD] = "ULTRA_DEATH_HEAD"
____exports.BeastVariant.BACKGROUND_BEAST = 100
____exports.BeastVariant[____exports.BeastVariant.BACKGROUND_BEAST] = "BACKGROUND_BEAST"
____exports.BeastVariant.BACKGROUND_FAMINE = 101
____exports.BeastVariant[____exports.BeastVariant.BACKGROUND_FAMINE] = "BACKGROUND_FAMINE"
____exports.BeastVariant.BACKGROUND_PESTILENCE = 102
____exports.BeastVariant[____exports.BeastVariant.BACKGROUND_PESTILENCE] = "BACKGROUND_PESTILENCE"
____exports.BeastVariant.BACKGROUND_WAR = 103
____exports.BeastVariant[____exports.BeastVariant.BACKGROUND_WAR] = "BACKGROUND_WAR"
____exports.BeastVariant.BACKGROUND_DEATH = 104
____exports.BeastVariant[____exports.BeastVariant.BACKGROUND_DEATH] = "BACKGROUND_DEATH"
--- For `EntityType.GENERIC_PROP` (960).
____exports.GenericPropVariant = {}
____exports.GenericPropVariant.GENERIC_PROP = 0
____exports.GenericPropVariant[____exports.GenericPropVariant.GENERIC_PROP] = "GENERIC_PROP"
____exports.GenericPropVariant.MOMS_DRESSER = 1
____exports.GenericPropVariant[____exports.GenericPropVariant.MOMS_DRESSER] = "MOMS_DRESSER"
____exports.GenericPropVariant.MOMS_VANITY = 2
____exports.GenericPropVariant[____exports.GenericPropVariant.MOMS_VANITY] = "MOMS_VANITY"
____exports.GenericPropVariant.COUCH = 3
____exports.GenericPropVariant[____exports.GenericPropVariant.COUCH] = "COUCH"
____exports.GenericPropVariant.TV = 4
____exports.GenericPropVariant[____exports.GenericPropVariant.TV] = "TV"
--- For `EntityType.EFFECT` (1000).
____exports.EffectVariant = {}
____exports.EffectVariant.EFFECT_NULL = 0
____exports.EffectVariant[____exports.EffectVariant.EFFECT_NULL] = "EFFECT_NULL"
____exports.EffectVariant.BOMB_EXPLOSION = 1
____exports.EffectVariant[____exports.EffectVariant.BOMB_EXPLOSION] = "BOMB_EXPLOSION"
____exports.EffectVariant.BLOOD_EXPLOSION = 2
____exports.EffectVariant[____exports.EffectVariant.BLOOD_EXPLOSION] = "BLOOD_EXPLOSION"
____exports.EffectVariant.FLY_EXPLOSION = 3
____exports.EffectVariant[____exports.EffectVariant.FLY_EXPLOSION] = "FLY_EXPLOSION"
____exports.EffectVariant.ROCK_PARTICLE = 4
____exports.EffectVariant[____exports.EffectVariant.ROCK_PARTICLE] = "ROCK_PARTICLE"
____exports.EffectVariant.BLOOD_PARTICLE = 5
____exports.EffectVariant[____exports.EffectVariant.BLOOD_PARTICLE] = "BLOOD_PARTICLE"
____exports.EffectVariant.DEVIL = 6
____exports.EffectVariant[____exports.EffectVariant.DEVIL] = "DEVIL"
____exports.EffectVariant.BLOOD_SPLAT = 7
____exports.EffectVariant[____exports.EffectVariant.BLOOD_SPLAT] = "BLOOD_SPLAT"
____exports.EffectVariant.LADDER = 8
____exports.EffectVariant[____exports.EffectVariant.LADDER] = "LADDER"
____exports.EffectVariant.ANGEL = 9
____exports.EffectVariant[____exports.EffectVariant.ANGEL] = "ANGEL"
____exports.EffectVariant.BLUE_FLAME = 10
____exports.EffectVariant[____exports.EffectVariant.BLUE_FLAME] = "BLUE_FLAME"
____exports.EffectVariant.BULLET_POOF = 11
____exports.EffectVariant[____exports.EffectVariant.BULLET_POOF] = "BULLET_POOF"
____exports.EffectVariant.TEAR_POOF_A = 12
____exports.EffectVariant[____exports.EffectVariant.TEAR_POOF_A] = "TEAR_POOF_A"
____exports.EffectVariant.TEAR_POOF_B = 13
____exports.EffectVariant[____exports.EffectVariant.TEAR_POOF_B] = "TEAR_POOF_B"
____exports.EffectVariant.RIPPLE_POOF = 14
____exports.EffectVariant[____exports.EffectVariant.RIPPLE_POOF] = "RIPPLE_POOF"
____exports.EffectVariant.POOF_1 = 15
____exports.EffectVariant[____exports.EffectVariant.POOF_1] = "POOF_1"
____exports.EffectVariant.POOF_2 = 16
____exports.EffectVariant[____exports.EffectVariant.POOF_2] = "POOF_2"
____exports.EffectVariant.POOF_4 = 17
____exports.EffectVariant[____exports.EffectVariant.POOF_4] = "POOF_4"
____exports.EffectVariant.BOMB_CRATER = 18
____exports.EffectVariant[____exports.EffectVariant.BOMB_CRATER] = "BOMB_CRATER"
____exports.EffectVariant.CRACK_THE_SKY = 19
____exports.EffectVariant[____exports.EffectVariant.CRACK_THE_SKY] = "CRACK_THE_SKY"
____exports.EffectVariant.SCYTHE_BREAK = 20
____exports.EffectVariant[____exports.EffectVariant.SCYTHE_BREAK] = "SCYTHE_BREAK"
____exports.EffectVariant.TINY_BUG = 21
____exports.EffectVariant[____exports.EffectVariant.TINY_BUG] = "TINY_BUG"
____exports.EffectVariant.CREEP_RED = 22
____exports.EffectVariant[____exports.EffectVariant.CREEP_RED] = "CREEP_RED"
____exports.EffectVariant.CREEP_GREEN = 23
____exports.EffectVariant[____exports.EffectVariant.CREEP_GREEN] = "CREEP_GREEN"
____exports.EffectVariant.CREEP_YELLOW = 24
____exports.EffectVariant[____exports.EffectVariant.CREEP_YELLOW] = "CREEP_YELLOW"
____exports.EffectVariant.CREEP_WHITE = 25
____exports.EffectVariant[____exports.EffectVariant.CREEP_WHITE] = "CREEP_WHITE"
____exports.EffectVariant.CREEP_BLACK = 26
____exports.EffectVariant[____exports.EffectVariant.CREEP_BLACK] = "CREEP_BLACK"
____exports.EffectVariant.WOOD_PARTICLE = 27
____exports.EffectVariant[____exports.EffectVariant.WOOD_PARTICLE] = "WOOD_PARTICLE"
____exports.EffectVariant.MONSTROS_TOOTH = 28
____exports.EffectVariant[____exports.EffectVariant.MONSTROS_TOOTH] = "MONSTROS_TOOTH"
____exports.EffectVariant.MOM_FOOT_STOMP = 29
____exports.EffectVariant[____exports.EffectVariant.MOM_FOOT_STOMP] = "MOM_FOOT_STOMP"
____exports.EffectVariant.TARGET = 30
____exports.EffectVariant[____exports.EffectVariant.TARGET] = "TARGET"
____exports.EffectVariant.ROCKET = 31
____exports.EffectVariant[____exports.EffectVariant.ROCKET] = "ROCKET"
____exports.EffectVariant.PLAYER_CREEP_LEMON_MISHAP = 32
____exports.EffectVariant[____exports.EffectVariant.PLAYER_CREEP_LEMON_MISHAP] = "PLAYER_CREEP_LEMON_MISHAP"
____exports.EffectVariant.TINY_FLY = 33
____exports.EffectVariant[____exports.EffectVariant.TINY_FLY] = "TINY_FLY"
____exports.EffectVariant.FART = 34
____exports.EffectVariant[____exports.EffectVariant.FART] = "FART"
____exports.EffectVariant.TOOTH_PARTICLE = 35
____exports.EffectVariant[____exports.EffectVariant.TOOTH_PARTICLE] = "TOOTH_PARTICLE"
____exports.EffectVariant.XRAY_WALL = 36
____exports.EffectVariant[____exports.EffectVariant.XRAY_WALL] = "XRAY_WALL"
____exports.EffectVariant.PLAYER_CREEP_HOLY_WATER = 37
____exports.EffectVariant[____exports.EffectVariant.PLAYER_CREEP_HOLY_WATER] = "PLAYER_CREEP_HOLY_WATER"
____exports.EffectVariant.SPIDER_EXPLOSION = 38
____exports.EffectVariant[____exports.EffectVariant.SPIDER_EXPLOSION] = "SPIDER_EXPLOSION"
____exports.EffectVariant.HEAVEN_LIGHT_DOOR = 39
____exports.EffectVariant[____exports.EffectVariant.HEAVEN_LIGHT_DOOR] = "HEAVEN_LIGHT_DOOR"
____exports.EffectVariant.STAR_FLASH = 40
____exports.EffectVariant[____exports.EffectVariant.STAR_FLASH] = "STAR_FLASH"
____exports.EffectVariant.WATER_DROPLET = 41
____exports.EffectVariant[____exports.EffectVariant.WATER_DROPLET] = "WATER_DROPLET"
____exports.EffectVariant.BLOOD_GUSH = 42
____exports.EffectVariant[____exports.EffectVariant.BLOOD_GUSH] = "BLOOD_GUSH"
____exports.EffectVariant.POOP_EXPLOSION = 43
____exports.EffectVariant[____exports.EffectVariant.POOP_EXPLOSION] = "POOP_EXPLOSION"
____exports.EffectVariant.PLAYER_CREEP_WHITE = 44
____exports.EffectVariant[____exports.EffectVariant.PLAYER_CREEP_WHITE] = "PLAYER_CREEP_WHITE"
____exports.EffectVariant.PLAYER_CREEP_BLACK = 45
____exports.EffectVariant[____exports.EffectVariant.PLAYER_CREEP_BLACK] = "PLAYER_CREEP_BLACK"
____exports.EffectVariant.PLAYER_CREEP_RED = 46
____exports.EffectVariant[____exports.EffectVariant.PLAYER_CREEP_RED] = "PLAYER_CREEP_RED"
____exports.EffectVariant.TRINITY_SHIELD = 47
____exports.EffectVariant[____exports.EffectVariant.TRINITY_SHIELD] = "TRINITY_SHIELD"
____exports.EffectVariant.BATTERY = 48
____exports.EffectVariant[____exports.EffectVariant.BATTERY] = "BATTERY"
____exports.EffectVariant.HEART = 49
____exports.EffectVariant[____exports.EffectVariant.HEART] = "HEART"
____exports.EffectVariant.LASER_IMPACT = 50
____exports.EffectVariant[____exports.EffectVariant.LASER_IMPACT] = "LASER_IMPACT"
____exports.EffectVariant.HOT_BOMB_FIRE = 51
____exports.EffectVariant[____exports.EffectVariant.HOT_BOMB_FIRE] = "HOT_BOMB_FIRE"
____exports.EffectVariant.RED_CANDLE_FLAME = 52
____exports.EffectVariant[____exports.EffectVariant.RED_CANDLE_FLAME] = "RED_CANDLE_FLAME"
____exports.EffectVariant.PLAYER_CREEP_GREEN = 53
____exports.EffectVariant[____exports.EffectVariant.PLAYER_CREEP_GREEN] = "PLAYER_CREEP_GREEN"
____exports.EffectVariant.PLAYER_CREEP_HOLY_WATER_TRAIL = 54
____exports.EffectVariant[____exports.EffectVariant.PLAYER_CREEP_HOLY_WATER_TRAIL] = "PLAYER_CREEP_HOLY_WATER_TRAIL"
____exports.EffectVariant.SPIKE = 55
____exports.EffectVariant[____exports.EffectVariant.SPIKE] = "SPIKE"
____exports.EffectVariant.CREEP_BROWN = 56
____exports.EffectVariant[____exports.EffectVariant.CREEP_BROWN] = "CREEP_BROWN"
____exports.EffectVariant.PULLING_EFFECT = 57
____exports.EffectVariant[____exports.EffectVariant.PULLING_EFFECT] = "PULLING_EFFECT"
____exports.EffectVariant.POOP_PARTICLE = 58
____exports.EffectVariant[____exports.EffectVariant.POOP_PARTICLE] = "POOP_PARTICLE"
____exports.EffectVariant.DUST_CLOUD = 59
____exports.EffectVariant[____exports.EffectVariant.DUST_CLOUD] = "DUST_CLOUD"
____exports.EffectVariant.BOOMERANG = 60
____exports.EffectVariant[____exports.EffectVariant.BOOMERANG] = "BOOMERANG"
____exports.EffectVariant.SHOCKWAVE = 61
____exports.EffectVariant[____exports.EffectVariant.SHOCKWAVE] = "SHOCKWAVE"
____exports.EffectVariant.ROCK_EXPLOSION = 62
____exports.EffectVariant[____exports.EffectVariant.ROCK_EXPLOSION] = "ROCK_EXPLOSION"
____exports.EffectVariant.WORM = 63
____exports.EffectVariant[____exports.EffectVariant.WORM] = "WORM"
____exports.EffectVariant.BEETLE = 64
____exports.EffectVariant[____exports.EffectVariant.BEETLE] = "BEETLE"
____exports.EffectVariant.WISP = 65
____exports.EffectVariant[____exports.EffectVariant.WISP] = "WISP"
____exports.EffectVariant.EMBER_PARTICLE = 66
____exports.EffectVariant[____exports.EffectVariant.EMBER_PARTICLE] = "EMBER_PARTICLE"
____exports.EffectVariant.SHOCKWAVE_DIRECTIONAL = 67
____exports.EffectVariant[____exports.EffectVariant.SHOCKWAVE_DIRECTIONAL] = "SHOCKWAVE_DIRECTIONAL"
____exports.EffectVariant.WALL_BUG = 68
____exports.EffectVariant[____exports.EffectVariant.WALL_BUG] = "WALL_BUG"
____exports.EffectVariant.BUTTERFLY = 69
____exports.EffectVariant[____exports.EffectVariant.BUTTERFLY] = "BUTTERFLY"
____exports.EffectVariant.BLOOD_DROP = 70
____exports.EffectVariant[____exports.EffectVariant.BLOOD_DROP] = "BLOOD_DROP"
____exports.EffectVariant.BRIMSTONE_SWIRL = 71
____exports.EffectVariant[____exports.EffectVariant.BRIMSTONE_SWIRL] = "BRIMSTONE_SWIRL"
____exports.EffectVariant.CRACK_WAVE = 72
____exports.EffectVariant[____exports.EffectVariant.CRACK_WAVE] = "CRACK_WAVE"
____exports.EffectVariant.SHOCKWAVE_RANDOM = 73
____exports.EffectVariant[____exports.EffectVariant.SHOCKWAVE_RANDOM] = "SHOCKWAVE_RANDOM"
____exports.EffectVariant.ISAACS_CARPET = 74
____exports.EffectVariant[____exports.EffectVariant.ISAACS_CARPET] = "ISAACS_CARPET"
____exports.EffectVariant.BAR_PARTICLE = 75
____exports.EffectVariant[____exports.EffectVariant.BAR_PARTICLE] = "BAR_PARTICLE"
____exports.EffectVariant.DICE_FLOOR = 76
____exports.EffectVariant[____exports.EffectVariant.DICE_FLOOR] = "DICE_FLOOR"
____exports.EffectVariant.LARGE_BLOOD_EXPLOSION = 77
____exports.EffectVariant[____exports.EffectVariant.LARGE_BLOOD_EXPLOSION] = "LARGE_BLOOD_EXPLOSION"
____exports.EffectVariant.PLAYER_CREEP_LEMON_PARTY = 78
____exports.EffectVariant[____exports.EffectVariant.PLAYER_CREEP_LEMON_PARTY] = "PLAYER_CREEP_LEMON_PARTY"
____exports.EffectVariant.TEAR_POOF_SMALL = 79
____exports.EffectVariant[____exports.EffectVariant.TEAR_POOF_SMALL] = "TEAR_POOF_SMALL"
____exports.EffectVariant.TEAR_POOF_VERY_SMALL = 80
____exports.EffectVariant[____exports.EffectVariant.TEAR_POOF_VERY_SMALL] = "TEAR_POOF_VERY_SMALL"
____exports.EffectVariant.FRIEND_BALL = 81
____exports.EffectVariant[____exports.EffectVariant.FRIEND_BALL] = "FRIEND_BALL"
____exports.EffectVariant.WOMB_TELEPORT = 82
____exports.EffectVariant[____exports.EffectVariant.WOMB_TELEPORT] = "WOMB_TELEPORT"
____exports.EffectVariant.SPEAR_OF_DESTINY = 83
____exports.EffectVariant[____exports.EffectVariant.SPEAR_OF_DESTINY] = "SPEAR_OF_DESTINY"
____exports.EffectVariant.EVIL_EYE = 84
____exports.EffectVariant[____exports.EffectVariant.EVIL_EYE] = "EVIL_EYE"
____exports.EffectVariant.DIAMOND_PARTICLE = 85
____exports.EffectVariant[____exports.EffectVariant.DIAMOND_PARTICLE] = "DIAMOND_PARTICLE"
____exports.EffectVariant.NAIL_PARTICLE = 86
____exports.EffectVariant[____exports.EffectVariant.NAIL_PARTICLE] = "NAIL_PARTICLE"
____exports.EffectVariant.FALLING_EMBER = 87
____exports.EffectVariant[____exports.EffectVariant.FALLING_EMBER] = "FALLING_EMBER"
____exports.EffectVariant.DARK_BALL_SMOKE_PARTICLE = 88
____exports.EffectVariant[____exports.EffectVariant.DARK_BALL_SMOKE_PARTICLE] = "DARK_BALL_SMOKE_PARTICLE"
____exports.EffectVariant.ULTRA_GREED_FOOTPRINT = 89
____exports.EffectVariant[____exports.EffectVariant.ULTRA_GREED_FOOTPRINT] = "ULTRA_GREED_FOOTPRINT"
____exports.EffectVariant.PLAYER_CREEP_PUDDLE_MILK = 90
____exports.EffectVariant[____exports.EffectVariant.PLAYER_CREEP_PUDDLE_MILK] = "PLAYER_CREEP_PUDDLE_MILK"
____exports.EffectVariant.MOMS_HAND = 91
____exports.EffectVariant[____exports.EffectVariant.MOMS_HAND] = "MOMS_HAND"
____exports.EffectVariant.PLAYER_CREEP_BLACK_POWDER = 92
____exports.EffectVariant[____exports.EffectVariant.PLAYER_CREEP_BLACK_POWDER] = "PLAYER_CREEP_BLACK_POWDER"
____exports.EffectVariant.PENTAGRAM_BLACK_POWDER = 93
____exports.EffectVariant[____exports.EffectVariant.PENTAGRAM_BLACK_POWDER] = "PENTAGRAM_BLACK_POWDER"
____exports.EffectVariant.CREEP_SLIPPERY_BROWN = 94
____exports.EffectVariant[____exports.EffectVariant.CREEP_SLIPPERY_BROWN] = "CREEP_SLIPPERY_BROWN"
____exports.EffectVariant.GOLD_PARTICLE = 95
____exports.EffectVariant[____exports.EffectVariant.GOLD_PARTICLE] = "GOLD_PARTICLE"
____exports.EffectVariant.HUSH_LASER = 96
____exports.EffectVariant[____exports.EffectVariant.HUSH_LASER] = "HUSH_LASER"
____exports.EffectVariant.IMPACT = 97
____exports.EffectVariant[____exports.EffectVariant.IMPACT] = "IMPACT"
____exports.EffectVariant.COIN_PARTICLE = 98
____exports.EffectVariant[____exports.EffectVariant.COIN_PARTICLE] = "COIN_PARTICLE"
____exports.EffectVariant.WATER_SPLASH = 99
____exports.EffectVariant[____exports.EffectVariant.WATER_SPLASH] = "WATER_SPLASH"
____exports.EffectVariant.HUSH_ASHES = 100
____exports.EffectVariant[____exports.EffectVariant.HUSH_ASHES] = "HUSH_ASHES"
____exports.EffectVariant.HUSH_LASER_UP = 101
____exports.EffectVariant[____exports.EffectVariant.HUSH_LASER_UP] = "HUSH_LASER_UP"
____exports.EffectVariant.BULLET_POOF_HUSH = 102
____exports.EffectVariant[____exports.EffectVariant.BULLET_POOF_HUSH] = "BULLET_POOF_HUSH"
____exports.EffectVariant.ULTRA_GREED_BLING = 103
____exports.EffectVariant[____exports.EffectVariant.ULTRA_GREED_BLING] = "ULTRA_GREED_BLING"
____exports.EffectVariant.FIREWORKS = 104
____exports.EffectVariant[____exports.EffectVariant.FIREWORKS] = "FIREWORKS"
____exports.EffectVariant.BROWN_CLOUD = 105
____exports.EffectVariant[____exports.EffectVariant.BROWN_CLOUD] = "BROWN_CLOUD"
____exports.EffectVariant.FART_RING = 106
____exports.EffectVariant[____exports.EffectVariant.FART_RING] = "FART_RING"
____exports.EffectVariant.BLACK_HOLE = 107
____exports.EffectVariant[____exports.EffectVariant.BLACK_HOLE] = "BLACK_HOLE"
____exports.EffectVariant.MR_ME = 108
____exports.EffectVariant[____exports.EffectVariant.MR_ME] = "MR_ME"
____exports.EffectVariant.DEATH_SKULL = 109
____exports.EffectVariant[____exports.EffectVariant.DEATH_SKULL] = "DEATH_SKULL"
____exports.EffectVariant.ENEMY_BRIMSTONE_SWIRL = 110
____exports.EffectVariant[____exports.EffectVariant.ENEMY_BRIMSTONE_SWIRL] = "ENEMY_BRIMSTONE_SWIRL"
____exports.EffectVariant.HAEMO_TRAIL = 111
____exports.EffectVariant[____exports.EffectVariant.HAEMO_TRAIL] = "HAEMO_TRAIL"
____exports.EffectVariant.HALLOWED_GROUND = 112
____exports.EffectVariant[____exports.EffectVariant.HALLOWED_GROUND] = "HALLOWED_GROUND"
____exports.EffectVariant.BRIMSTONE_BALL = 113
____exports.EffectVariant[____exports.EffectVariant.BRIMSTONE_BALL] = "BRIMSTONE_BALL"
____exports.EffectVariant.FORGOTTEN_CHAIN = 114
____exports.EffectVariant[____exports.EffectVariant.FORGOTTEN_CHAIN] = "FORGOTTEN_CHAIN"
____exports.EffectVariant.BROKEN_SHOVEL_SHADOW = 115
____exports.EffectVariant[____exports.EffectVariant.BROKEN_SHOVEL_SHADOW] = "BROKEN_SHOVEL_SHADOW"
____exports.EffectVariant.DIRT_PATCH = 116
____exports.EffectVariant[____exports.EffectVariant.DIRT_PATCH] = "DIRT_PATCH"
____exports.EffectVariant.FORGOTTEN_SOUL = 117
____exports.EffectVariant[____exports.EffectVariant.FORGOTTEN_SOUL] = "FORGOTTEN_SOUL"
____exports.EffectVariant.SMALL_ROCKET = 118
____exports.EffectVariant[____exports.EffectVariant.SMALL_ROCKET] = "SMALL_ROCKET"
____exports.EffectVariant.TIMER = 119
____exports.EffectVariant[____exports.EffectVariant.TIMER] = "TIMER"
____exports.EffectVariant.SPAWNER = 120
____exports.EffectVariant[____exports.EffectVariant.SPAWNER] = "SPAWNER"
____exports.EffectVariant.LIGHT = 121
____exports.EffectVariant[____exports.EffectVariant.LIGHT] = "LIGHT"
____exports.EffectVariant.BIG_HORN_HOLE_HELPER = 122
____exports.EffectVariant[____exports.EffectVariant.BIG_HORN_HOLE_HELPER] = "BIG_HORN_HOLE_HELPER"
____exports.EffectVariant.HALO = 123
____exports.EffectVariant[____exports.EffectVariant.HALO] = "HALO"
____exports.EffectVariant.TAR_BUBBLE = 124
____exports.EffectVariant[____exports.EffectVariant.TAR_BUBBLE] = "TAR_BUBBLE"
____exports.EffectVariant.BIG_HORN_HAND = 125
____exports.EffectVariant[____exports.EffectVariant.BIG_HORN_HAND] = "BIG_HORN_HAND"
____exports.EffectVariant.TECH_DOT = 126
____exports.EffectVariant[____exports.EffectVariant.TECH_DOT] = "TECH_DOT"
____exports.EffectVariant.MAMA_MEGA_EXPLOSION = 127
____exports.EffectVariant[____exports.EffectVariant.MAMA_MEGA_EXPLOSION] = "MAMA_MEGA_EXPLOSION"
____exports.EffectVariant.OPTION_LINE = 128
____exports.EffectVariant[____exports.EffectVariant.OPTION_LINE] = "OPTION_LINE"
____exports.EffectVariant.LEECH_EXPLOSION = 130
____exports.EffectVariant[____exports.EffectVariant.LEECH_EXPLOSION] = "LEECH_EXPLOSION"
____exports.EffectVariant.MAGGOT_EXPLOSION = 131
____exports.EffectVariant[____exports.EffectVariant.MAGGOT_EXPLOSION] = "MAGGOT_EXPLOSION"
____exports.EffectVariant.BIG_SPLASH = 132
____exports.EffectVariant[____exports.EffectVariant.BIG_SPLASH] = "BIG_SPLASH"
____exports.EffectVariant.WATER_RIPPLE = 133
____exports.EffectVariant[____exports.EffectVariant.WATER_RIPPLE] = "WATER_RIPPLE"
____exports.EffectVariant.PEDESTAL_RIPPLE = 134
____exports.EffectVariant[____exports.EffectVariant.PEDESTAL_RIPPLE] = "PEDESTAL_RIPPLE"
____exports.EffectVariant.RAIN_DROP = 135
____exports.EffectVariant[____exports.EffectVariant.RAIN_DROP] = "RAIN_DROP"
____exports.EffectVariant.GRID_ENTITY_PROJECTILE_HELPER = 136
____exports.EffectVariant[____exports.EffectVariant.GRID_ENTITY_PROJECTILE_HELPER] = "GRID_ENTITY_PROJECTILE_HELPER"
____exports.EffectVariant.WORMWOOD_HOLE = 137
____exports.EffectVariant[____exports.EffectVariant.WORMWOOD_HOLE] = "WORMWOOD_HOLE"
____exports.EffectVariant.MIST = 138
____exports.EffectVariant[____exports.EffectVariant.MIST] = "MIST"
____exports.EffectVariant.TRAPDOOR_COVER = 139
____exports.EffectVariant[____exports.EffectVariant.TRAPDOOR_COVER] = "TRAPDOOR_COVER"
____exports.EffectVariant.BACKDROP_DECORATION = 140
____exports.EffectVariant[____exports.EffectVariant.BACKDROP_DECORATION] = "BACKDROP_DECORATION"
____exports.EffectVariant.SMOKE_CLOUD = 141
____exports.EffectVariant[____exports.EffectVariant.SMOKE_CLOUD] = "SMOKE_CLOUD"
____exports.EffectVariant.WHIRLPOOL = 142
____exports.EffectVariant[____exports.EffectVariant.WHIRLPOOL] = "WHIRLPOOL"
____exports.EffectVariant.FART_WAVE = 143
____exports.EffectVariant[____exports.EffectVariant.FART_WAVE] = "FART_WAVE"
____exports.EffectVariant.ENEMY_GHOST = 144
____exports.EffectVariant[____exports.EffectVariant.ENEMY_GHOST] = "ENEMY_GHOST"
____exports.EffectVariant.ROCK_POOF = 145
____exports.EffectVariant[____exports.EffectVariant.ROCK_POOF] = "ROCK_POOF"
____exports.EffectVariant.DIRT_PILE = 146
____exports.EffectVariant[____exports.EffectVariant.DIRT_PILE] = "DIRT_PILE"
____exports.EffectVariant.FIRE_JET = 147
____exports.EffectVariant[____exports.EffectVariant.FIRE_JET] = "FIRE_JET"
____exports.EffectVariant.FIRE_WAVE = 148
____exports.EffectVariant[____exports.EffectVariant.FIRE_WAVE] = "FIRE_WAVE"
____exports.EffectVariant.BIG_ROCK_EXPLOSION = 149
____exports.EffectVariant[____exports.EffectVariant.BIG_ROCK_EXPLOSION] = "BIG_ROCK_EXPLOSION"
____exports.EffectVariant.BIG_CRACK_WAVE = 150
____exports.EffectVariant[____exports.EffectVariant.BIG_CRACK_WAVE] = "BIG_CRACK_WAVE"
____exports.EffectVariant.BIG_ATTRACT = 151
____exports.EffectVariant[____exports.EffectVariant.BIG_ATTRACT] = "BIG_ATTRACT"
____exports.EffectVariant.HORNFEL_ROOM_CONTROLLER = 152
____exports.EffectVariant[____exports.EffectVariant.HORNFEL_ROOM_CONTROLLER] = "HORNFEL_ROOM_CONTROLLER"
____exports.EffectVariant.OCCULT_TARGET = 153
____exports.EffectVariant[____exports.EffectVariant.OCCULT_TARGET] = "OCCULT_TARGET"
____exports.EffectVariant.DOOR_OUTLINE = 154
____exports.EffectVariant[____exports.EffectVariant.DOOR_OUTLINE] = "DOOR_OUTLINE"
____exports.EffectVariant.CREEP_SLIPPERY_BROWN_GROWING = 155
____exports.EffectVariant[____exports.EffectVariant.CREEP_SLIPPERY_BROWN_GROWING] = "CREEP_SLIPPERY_BROWN_GROWING"
____exports.EffectVariant.TALL_LADDER = 156
____exports.EffectVariant[____exports.EffectVariant.TALL_LADDER] = "TALL_LADDER"
____exports.EffectVariant.WILLO_SPAWNER = 157
____exports.EffectVariant[____exports.EffectVariant.WILLO_SPAWNER] = "WILLO_SPAWNER"
____exports.EffectVariant.TADPOLE = 158
____exports.EffectVariant[____exports.EffectVariant.TADPOLE] = "TADPOLE"
____exports.EffectVariant.LIL_GHOST = 159
____exports.EffectVariant[____exports.EffectVariant.LIL_GHOST] = "LIL_GHOST"
____exports.EffectVariant.BISHOP_SHIELD = 160
____exports.EffectVariant[____exports.EffectVariant.BISHOP_SHIELD] = "BISHOP_SHIELD"
____exports.EffectVariant.PORTAL_TELEPORT = 161
____exports.EffectVariant[____exports.EffectVariant.PORTAL_TELEPORT] = "PORTAL_TELEPORT"
____exports.EffectVariant.HERETIC_PENTAGRAM = 162
____exports.EffectVariant[____exports.EffectVariant.HERETIC_PENTAGRAM] = "HERETIC_PENTAGRAM"
____exports.EffectVariant.CHAIN_GIB = 163
____exports.EffectVariant[____exports.EffectVariant.CHAIN_GIB] = "CHAIN_GIB"
____exports.EffectVariant.SIREN_RING = 164
____exports.EffectVariant[____exports.EffectVariant.SIREN_RING] = "SIREN_RING"
____exports.EffectVariant.CHARM_EFFECT = 165
____exports.EffectVariant[____exports.EffectVariant.CHARM_EFFECT] = "CHARM_EFFECT"
____exports.EffectVariant.SPRITE_TRAIL = 166
____exports.EffectVariant[____exports.EffectVariant.SPRITE_TRAIL] = "SPRITE_TRAIL"
____exports.EffectVariant.CHAIN_LIGHTNING = 167
____exports.EffectVariant[____exports.EffectVariant.CHAIN_LIGHTNING] = "CHAIN_LIGHTNING"
____exports.EffectVariant.COLOSTOMIA_PUDDLE = 168
____exports.EffectVariant[____exports.EffectVariant.COLOSTOMIA_PUDDLE] = "COLOSTOMIA_PUDDLE"
____exports.EffectVariant.CREEP_STATIC = 169
____exports.EffectVariant[____exports.EffectVariant.CREEP_STATIC] = "CREEP_STATIC"
____exports.EffectVariant.DOGMA_DEBRIS = 170
____exports.EffectVariant[____exports.EffectVariant.DOGMA_DEBRIS] = "DOGMA_DEBRIS"
____exports.EffectVariant.DOGMA_BLACK_HOLE = 171
____exports.EffectVariant[____exports.EffectVariant.DOGMA_BLACK_HOLE] = "DOGMA_BLACK_HOLE"
____exports.EffectVariant.DOGMA_ORB = 172
____exports.EffectVariant[____exports.EffectVariant.DOGMA_ORB] = "DOGMA_ORB"
____exports.EffectVariant.CRACKED_ORB_POOF = 173
____exports.EffectVariant[____exports.EffectVariant.CRACKED_ORB_POOF] = "CRACKED_ORB_POOF"
____exports.EffectVariant.SHOP_SPIKES = 174
____exports.EffectVariant[____exports.EffectVariant.SHOP_SPIKES] = "SHOP_SPIKES"
____exports.EffectVariant.KINETI_BEAM = 175
____exports.EffectVariant[____exports.EffectVariant.KINETI_BEAM] = "KINETI_BEAM"
____exports.EffectVariant.CLEAVER_SLASH = 176
____exports.EffectVariant[____exports.EffectVariant.CLEAVER_SLASH] = "CLEAVER_SLASH"
____exports.EffectVariant.REVERSE_EXPLOSION = 177
____exports.EffectVariant[____exports.EffectVariant.REVERSE_EXPLOSION] = "REVERSE_EXPLOSION"
____exports.EffectVariant.URN_OF_SOULS = 178
____exports.EffectVariant[____exports.EffectVariant.URN_OF_SOULS] = "URN_OF_SOULS"
____exports.EffectVariant.ENEMY_SOUL = 179
____exports.EffectVariant[____exports.EffectVariant.ENEMY_SOUL] = "ENEMY_SOUL"
____exports.EffectVariant.RIFT = 180
____exports.EffectVariant[____exports.EffectVariant.RIFT] = "RIFT"
____exports.EffectVariant.LAVA_SPAWNER = 181
____exports.EffectVariant[____exports.EffectVariant.LAVA_SPAWNER] = "LAVA_SPAWNER"
____exports.EffectVariant.BIG_KNIFE = 182
____exports.EffectVariant[____exports.EffectVariant.BIG_KNIFE] = "BIG_KNIFE"
____exports.EffectVariant.MOTHER_SHOCKWAVE = 183
____exports.EffectVariant[____exports.EffectVariant.MOTHER_SHOCKWAVE] = "MOTHER_SHOCKWAVE"
____exports.EffectVariant.WORM_FRIEND_SNARE = 184
____exports.EffectVariant[____exports.EffectVariant.WORM_FRIEND_SNARE] = "WORM_FRIEND_SNARE"
____exports.EffectVariant.REDEMPTION = 185
____exports.EffectVariant[____exports.EffectVariant.REDEMPTION] = "REDEMPTION"
____exports.EffectVariant.HUNGRY_SOUL = 186
____exports.EffectVariant[____exports.EffectVariant.HUNGRY_SOUL] = "HUNGRY_SOUL"
____exports.EffectVariant.EXPLOSION_WAVE = 187
____exports.EffectVariant[____exports.EffectVariant.EXPLOSION_WAVE] = "EXPLOSION_WAVE"
____exports.EffectVariant.DIVINE_INTERVENTION = 188
____exports.EffectVariant[____exports.EffectVariant.DIVINE_INTERVENTION] = "DIVINE_INTERVENTION"
____exports.EffectVariant.PURGATORY = 189
____exports.EffectVariant[____exports.EffectVariant.PURGATORY] = "PURGATORY"
____exports.EffectVariant.MOTHER_TRACER = 190
____exports.EffectVariant[____exports.EffectVariant.MOTHER_TRACER] = "MOTHER_TRACER"
____exports.EffectVariant.PICKUP_GHOST = 191
____exports.EffectVariant[____exports.EffectVariant.PICKUP_GHOST] = "PICKUP_GHOST"
____exports.EffectVariant.FISSURE_SPAWNER = 192
____exports.EffectVariant[____exports.EffectVariant.FISSURE_SPAWNER] = "FISSURE_SPAWNER"
____exports.EffectVariant.ANIMA_CHAIN = 193
____exports.EffectVariant[____exports.EffectVariant.ANIMA_CHAIN] = "ANIMA_CHAIN"
____exports.EffectVariant.DARK_SNARE = 194
____exports.EffectVariant[____exports.EffectVariant.DARK_SNARE] = "DARK_SNARE"
____exports.EffectVariant.CREEP_LIQUID_POOP = 195
____exports.EffectVariant[____exports.EffectVariant.CREEP_LIQUID_POOP] = "CREEP_LIQUID_POOP"
____exports.EffectVariant.GROUND_GLOW = 196
____exports.EffectVariant[____exports.EffectVariant.GROUND_GLOW] = "GROUND_GLOW"
____exports.EffectVariant.DEAD_BIRD = 197
____exports.EffectVariant[____exports.EffectVariant.DEAD_BIRD] = "DEAD_BIRD"
____exports.EffectVariant.GENERIC_TRACER = 198
____exports.EffectVariant[____exports.EffectVariant.GENERIC_TRACER] = "GENERIC_TRACER"
____exports.EffectVariant.ULTRA_DEATH_SCYTHE = 199
____exports.EffectVariant[____exports.EffectVariant.ULTRA_DEATH_SCYTHE] = "ULTRA_DEATH_SCYTHE"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.Controller"] = function(...) 
local ____exports = {}
--- These enums loop after 31, so 32 = D_PAD_LEFT, 63 = D_PAD_LEFT, and so on.
-- 
-- There appears to be no input key for joystick movement.
____exports.Controller = {}
____exports.Controller.D_PAD_LEFT = 0
____exports.Controller[____exports.Controller.D_PAD_LEFT] = "D_PAD_LEFT"
____exports.Controller.D_PAD_RIGHT = 1
____exports.Controller[____exports.Controller.D_PAD_RIGHT] = "D_PAD_RIGHT"
____exports.Controller.D_PAD_UP = 2
____exports.Controller[____exports.Controller.D_PAD_UP] = "D_PAD_UP"
____exports.Controller.D_PAD_DOWN = 3
____exports.Controller[____exports.Controller.D_PAD_DOWN] = "D_PAD_DOWN"
____exports.Controller.BUTTON_A = 4
____exports.Controller[____exports.Controller.BUTTON_A] = "BUTTON_A"
____exports.Controller.BUTTON_B = 5
____exports.Controller[____exports.Controller.BUTTON_B] = "BUTTON_B"
____exports.Controller.BUTTON_X = 6
____exports.Controller[____exports.Controller.BUTTON_X] = "BUTTON_X"
____exports.Controller.BUTTON_Y = 7
____exports.Controller[____exports.Controller.BUTTON_Y] = "BUTTON_Y"
____exports.Controller.BUMPER_LEFT = 8
____exports.Controller[____exports.Controller.BUMPER_LEFT] = "BUMPER_LEFT"
____exports.Controller.TRIGGER_LEFT = 9
____exports.Controller[____exports.Controller.TRIGGER_LEFT] = "TRIGGER_LEFT"
____exports.Controller.STICK_LEFT = 10
____exports.Controller[____exports.Controller.STICK_LEFT] = "STICK_LEFT"
____exports.Controller.BUMPER_RIGHT = 11
____exports.Controller[____exports.Controller.BUMPER_RIGHT] = "BUMPER_RIGHT"
____exports.Controller.TRIGGER_RIGHT = 12
____exports.Controller[____exports.Controller.TRIGGER_RIGHT] = "TRIGGER_RIGHT"
____exports.Controller.STICK_RIGHT = 13
____exports.Controller[____exports.Controller.STICK_RIGHT] = "STICK_RIGHT"
____exports.Controller.BUTTON_BACK = 14
____exports.Controller[____exports.Controller.BUTTON_BACK] = "BUTTON_BACK"
____exports.Controller.BUTTON_START = 15
____exports.Controller[____exports.Controller.BUTTON_START] = "BUTTON_START"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ControllerIndex"] = function(...) 
local ____exports = {}
____exports.ControllerIndex = {}
____exports.ControllerIndex.KEYBOARD = 0
____exports.ControllerIndex[____exports.ControllerIndex.KEYBOARD] = "KEYBOARD"
____exports.ControllerIndex.CONTROLLER_1 = 1
____exports.ControllerIndex[____exports.ControllerIndex.CONTROLLER_1] = "CONTROLLER_1"
____exports.ControllerIndex.CONTROLLER_2 = 2
____exports.ControllerIndex[____exports.ControllerIndex.CONTROLLER_2] = "CONTROLLER_2"
____exports.ControllerIndex.CONTROLLER_3 = 3
____exports.ControllerIndex[____exports.ControllerIndex.CONTROLLER_3] = "CONTROLLER_3"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.CopyableIsaacAPIClassType"] = function(...) 
local ____exports = {}
--- An enum containing the Isaac API classes that can be safely copied / serialized.
____exports.CopyableIsaacAPIClassType = {}
____exports.CopyableIsaacAPIClassType.BIT_SET_128 = "BitSet128"
____exports.CopyableIsaacAPIClassType.COLOR = "Color"
____exports.CopyableIsaacAPIClassType.K_COLOR = "KColor"
____exports.CopyableIsaacAPIClassType.RNG = "RNG"
____exports.CopyableIsaacAPIClassType.VECTOR = "Vector"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.CurseID"] = function(...) 
local ____exports = {}
--- Matches the "id" field in the "resources/curses.xml" file. This is used to compute the
-- `LevelCurse` enum.
-- 
-- The values of this enum are integers. Do not use this enum to check for the presence of curses;
-- use the `LevelCurse` enum instead, which has bit flag values.
____exports.CurseID = {}
____exports.CurseID.DARKNESS = 1
____exports.CurseID[____exports.CurseID.DARKNESS] = "DARKNESS"
____exports.CurseID.LABYRINTH = 2
____exports.CurseID[____exports.CurseID.LABYRINTH] = "LABYRINTH"
____exports.CurseID.LOST = 3
____exports.CurseID[____exports.CurseID.LOST] = "LOST"
____exports.CurseID.UNKNOWN = 4
____exports.CurseID[____exports.CurseID.UNKNOWN] = "UNKNOWN"
____exports.CurseID.CURSED = 5
____exports.CurseID[____exports.CurseID.CURSED] = "CURSED"
____exports.CurseID.MAZE = 6
____exports.CurseID[____exports.CurseID.MAZE] = "MAZE"
____exports.CurseID.BLIND = 7
____exports.CurseID[____exports.CurseID.BLIND] = "BLIND"
____exports.CurseID.GIANT = 8
____exports.CurseID[____exports.CurseID.GIANT] = "GIANT"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.Difficulty"] = function(...) 
local ____exports = {}
____exports.Difficulty = {}
____exports.Difficulty.NORMAL = 0
____exports.Difficulty[____exports.Difficulty.NORMAL] = "NORMAL"
____exports.Difficulty.HARD = 1
____exports.Difficulty[____exports.Difficulty.HARD] = "HARD"
____exports.Difficulty.GREED = 2
____exports.Difficulty[____exports.Difficulty.GREED] = "GREED"
____exports.Difficulty.GREEDIER = 3
____exports.Difficulty[____exports.Difficulty.GREEDIER] = "GREEDIER"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.Dimension"] = function(...) 
local ____exports = {}
____exports.Dimension = {}
____exports.Dimension.CURRENT = -1
____exports.Dimension[____exports.Dimension.CURRENT] = "CURRENT"
____exports.Dimension.MAIN = 0
____exports.Dimension[____exports.Dimension.MAIN] = "MAIN"
____exports.Dimension.SECONDARY = 1
____exports.Dimension[____exports.Dimension.SECONDARY] = "SECONDARY"
____exports.Dimension.DEATH_CERTIFICATE = 2
____exports.Dimension[____exports.Dimension.DEATH_CERTIFICATE] = "DEATH_CERTIFICATE"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.Direction"] = function(...) 
local ____exports = {}
____exports.Direction = {}
____exports.Direction.NO_DIRECTION = -1
____exports.Direction[____exports.Direction.NO_DIRECTION] = "NO_DIRECTION"
____exports.Direction.LEFT = 0
____exports.Direction[____exports.Direction.LEFT] = "LEFT"
____exports.Direction.UP = 1
____exports.Direction[____exports.Direction.UP] = "UP"
____exports.Direction.RIGHT = 2
____exports.Direction[____exports.Direction.RIGHT] = "RIGHT"
____exports.Direction.DOWN = 3
____exports.Direction[____exports.Direction.DOWN] = "DOWN"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.DoorSlot"] = function(...) 
local ____exports = {}
____exports.DoorSlot = {}
____exports.DoorSlot.NO_DOOR_SLOT = -1
____exports.DoorSlot[____exports.DoorSlot.NO_DOOR_SLOT] = "NO_DOOR_SLOT"
____exports.DoorSlot.LEFT_0 = 0
____exports.DoorSlot[____exports.DoorSlot.LEFT_0] = "LEFT_0"
____exports.DoorSlot.UP_0 = 1
____exports.DoorSlot[____exports.DoorSlot.UP_0] = "UP_0"
____exports.DoorSlot.RIGHT_0 = 2
____exports.DoorSlot[____exports.DoorSlot.RIGHT_0] = "RIGHT_0"
____exports.DoorSlot.DOWN_0 = 3
____exports.DoorSlot[____exports.DoorSlot.DOWN_0] = "DOWN_0"
____exports.DoorSlot.LEFT_1 = 4
____exports.DoorSlot[____exports.DoorSlot.LEFT_1] = "LEFT_1"
____exports.DoorSlot.UP_1 = 5
____exports.DoorSlot[____exports.DoorSlot.UP_1] = "UP_1"
____exports.DoorSlot.RIGHT_1 = 6
____exports.DoorSlot[____exports.DoorSlot.RIGHT_1] = "RIGHT_1"
____exports.DoorSlot.DOWN_1 = 7
____exports.DoorSlot[____exports.DoorSlot.DOWN_1] = "DOWN_1"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.Ending"] = function(...) 
local ____exports = {}
--- Matches the entries in the "cutscenes.xml" file.
____exports.Ending = {}
____exports.Ending.INTRO = 1
____exports.Ending[____exports.Ending.INTRO] = "INTRO"
____exports.Ending.CREDITS = 2
____exports.Ending[____exports.Ending.CREDITS] = "CREDITS"
____exports.Ending.EPILOGUE = 3
____exports.Ending[____exports.Ending.EPILOGUE] = "EPILOGUE"
____exports.Ending.WOMB_EDEN = 4
____exports.Ending[____exports.Ending.WOMB_EDEN] = "WOMB_EDEN"
____exports.Ending.WOMB_RUBBER_CEMENT = 5
____exports.Ending[____exports.Ending.WOMB_RUBBER_CEMENT] = "WOMB_RUBBER_CEMENT"
____exports.Ending.WOMB_NOOSE = 6
____exports.Ending[____exports.Ending.WOMB_NOOSE] = "WOMB_NOOSE"
____exports.Ending.WOMB_WIRE_COAT_HANGER = 7
____exports.Ending[____exports.Ending.WOMB_WIRE_COAT_HANGER] = "WOMB_WIRE_COAT_HANGER"
____exports.Ending.WOMB_EVERYTHING_IS_TERRIBLE = 8
____exports.Ending[____exports.Ending.WOMB_EVERYTHING_IS_TERRIBLE] = "WOMB_EVERYTHING_IS_TERRIBLE"
____exports.Ending.WOMB_IPECAC = 9
____exports.Ending[____exports.Ending.WOMB_IPECAC] = "WOMB_IPECAC"
____exports.Ending.WOMB_EXPERIMENTAL_TREATMENT = 10
____exports.Ending[____exports.Ending.WOMB_EXPERIMENTAL_TREATMENT] = "WOMB_EXPERIMENTAL_TREATMENT"
____exports.Ending.WOMB_A_QUARTER = 11
____exports.Ending[____exports.Ending.WOMB_A_QUARTER] = "WOMB_A_QUARTER"
____exports.Ending.WOMB_DR_FETUS = 12
____exports.Ending[____exports.Ending.WOMB_DR_FETUS] = "WOMB_DR_FETUS"
____exports.Ending.WOMB_BLUE_BABY = 13
____exports.Ending[____exports.Ending.WOMB_BLUE_BABY] = "WOMB_BLUE_BABY"
____exports.Ending.WOMB_IT_LIVES = 14
____exports.Ending[____exports.Ending.WOMB_IT_LIVES] = "WOMB_IT_LIVES"
____exports.Ending.SHEOL = 15
____exports.Ending[____exports.Ending.SHEOL] = "SHEOL"
____exports.Ending.CATHEDRAL = 16
____exports.Ending[____exports.Ending.CATHEDRAL] = "CATHEDRAL"
____exports.Ending.CHEST = 17
____exports.Ending[____exports.Ending.CHEST] = "CHEST"
____exports.Ending.DARK_ROOM = 18
____exports.Ending[____exports.Ending.DARK_ROOM] = "DARK_ROOM"
____exports.Ending.MEGA_SATAN = 19
____exports.Ending[____exports.Ending.MEGA_SATAN] = "MEGA_SATAN"
____exports.Ending.BLUE_WOMB = 20
____exports.Ending[____exports.Ending.BLUE_WOMB] = "BLUE_WOMB"
____exports.Ending.GREED_MODE = 21
____exports.Ending[____exports.Ending.GREED_MODE] = "GREED_MODE"
____exports.Ending.THE_VOID = 22
____exports.Ending[____exports.Ending.THE_VOID] = "THE_VOID"
____exports.Ending.GREEDIER = 23
____exports.Ending[____exports.Ending.GREEDIER] = "GREEDIER"
____exports.Ending.MOTHER = 24
____exports.Ending[____exports.Ending.MOTHER] = "MOTHER"
____exports.Ending.DOGMA = 25
____exports.Ending[____exports.Ending.DOGMA] = "DOGMA"
____exports.Ending.BEAST = 26
____exports.Ending[____exports.Ending.BEAST] = "BEAST"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.EntityCollisionClass"] = function(...) 
local ____exports = {}
____exports.EntityCollisionClass = {}
____exports.EntityCollisionClass.NONE = 0
____exports.EntityCollisionClass[____exports.EntityCollisionClass.NONE] = "NONE"
____exports.EntityCollisionClass.PLAYER_ONLY = 1
____exports.EntityCollisionClass[____exports.EntityCollisionClass.PLAYER_ONLY] = "PLAYER_ONLY"
____exports.EntityCollisionClass.PLAYER_OBJECTS = 2
____exports.EntityCollisionClass[____exports.EntityCollisionClass.PLAYER_OBJECTS] = "PLAYER_OBJECTS"
____exports.EntityCollisionClass.ENEMIES = 3
____exports.EntityCollisionClass[____exports.EntityCollisionClass.ENEMIES] = "ENEMIES"
____exports.EntityCollisionClass.ALL = 4
____exports.EntityCollisionClass[____exports.EntityCollisionClass.ALL] = "ALL"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.EntityGridCollisionClass"] = function(...) 
local ____exports = {}
____exports.EntityGridCollisionClass = {}
____exports.EntityGridCollisionClass.NONE = 0
____exports.EntityGridCollisionClass[____exports.EntityGridCollisionClass.NONE] = "NONE"
____exports.EntityGridCollisionClass.WALLS_X = 1
____exports.EntityGridCollisionClass[____exports.EntityGridCollisionClass.WALLS_X] = "WALLS_X"
____exports.EntityGridCollisionClass.WALLS_Y = 2
____exports.EntityGridCollisionClass[____exports.EntityGridCollisionClass.WALLS_Y] = "WALLS_Y"
____exports.EntityGridCollisionClass.WALLS = 3
____exports.EntityGridCollisionClass[____exports.EntityGridCollisionClass.WALLS] = "WALLS"
____exports.EntityGridCollisionClass.BULLET = 4
____exports.EntityGridCollisionClass[____exports.EntityGridCollisionClass.BULLET] = "BULLET"
____exports.EntityGridCollisionClass.GROUND = 5
____exports.EntityGridCollisionClass[____exports.EntityGridCollisionClass.GROUND] = "GROUND"
____exports.EntityGridCollisionClass.NO_PITS = 6
____exports.EntityGridCollisionClass[____exports.EntityGridCollisionClass.NO_PITS] = "NO_PITS"
____exports.EntityGridCollisionClass.PITS_ONLY = 7
____exports.EntityGridCollisionClass[____exports.EntityGridCollisionClass.PITS_ONLY] = "PITS_ONLY"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.EntityType"] = function(...) 
local ____exports = {}
____exports.EntityType = {}
____exports.EntityType.NULL = 0
____exports.EntityType[____exports.EntityType.NULL] = "NULL"
____exports.EntityType.PLAYER = 1
____exports.EntityType[____exports.EntityType.PLAYER] = "PLAYER"
____exports.EntityType.TEAR = 2
____exports.EntityType[____exports.EntityType.TEAR] = "TEAR"
____exports.EntityType.FAMILIAR = 3
____exports.EntityType[____exports.EntityType.FAMILIAR] = "FAMILIAR"
____exports.EntityType.BOMB = 4
____exports.EntityType[____exports.EntityType.BOMB] = "BOMB"
____exports.EntityType.PICKUP = 5
____exports.EntityType[____exports.EntityType.PICKUP] = "PICKUP"
____exports.EntityType.SLOT = 6
____exports.EntityType[____exports.EntityType.SLOT] = "SLOT"
____exports.EntityType.LASER = 7
____exports.EntityType[____exports.EntityType.LASER] = "LASER"
____exports.EntityType.KNIFE = 8
____exports.EntityType[____exports.EntityType.KNIFE] = "KNIFE"
____exports.EntityType.PROJECTILE = 9
____exports.EntityType[____exports.EntityType.PROJECTILE] = "PROJECTILE"
____exports.EntityType.GAPER = 10
____exports.EntityType[____exports.EntityType.GAPER] = "GAPER"
____exports.EntityType.GUSHER = 11
____exports.EntityType[____exports.EntityType.GUSHER] = "GUSHER"
____exports.EntityType.HORF = 12
____exports.EntityType[____exports.EntityType.HORF] = "HORF"
____exports.EntityType.FLY = 13
____exports.EntityType[____exports.EntityType.FLY] = "FLY"
____exports.EntityType.POOTER = 14
____exports.EntityType[____exports.EntityType.POOTER] = "POOTER"
____exports.EntityType.CLOTTY = 15
____exports.EntityType[____exports.EntityType.CLOTTY] = "CLOTTY"
____exports.EntityType.MULLIGAN = 16
____exports.EntityType[____exports.EntityType.MULLIGAN] = "MULLIGAN"
____exports.EntityType.SHOPKEEPER = 17
____exports.EntityType[____exports.EntityType.SHOPKEEPER] = "SHOPKEEPER"
____exports.EntityType.ATTACK_FLY = 18
____exports.EntityType[____exports.EntityType.ATTACK_FLY] = "ATTACK_FLY"
____exports.EntityType.LARRY_JR = 19
____exports.EntityType[____exports.EntityType.LARRY_JR] = "LARRY_JR"
____exports.EntityType.MONSTRO = 20
____exports.EntityType[____exports.EntityType.MONSTRO] = "MONSTRO"
____exports.EntityType.MAGGOT = 21
____exports.EntityType[____exports.EntityType.MAGGOT] = "MAGGOT"
____exports.EntityType.HIVE = 22
____exports.EntityType[____exports.EntityType.HIVE] = "HIVE"
____exports.EntityType.CHARGER = 23
____exports.EntityType[____exports.EntityType.CHARGER] = "CHARGER"
____exports.EntityType.GLOBIN = 24
____exports.EntityType[____exports.EntityType.GLOBIN] = "GLOBIN"
____exports.EntityType.BOOM_FLY = 25
____exports.EntityType[____exports.EntityType.BOOM_FLY] = "BOOM_FLY"
____exports.EntityType.MAW = 26
____exports.EntityType[____exports.EntityType.MAW] = "MAW"
____exports.EntityType.HOST = 27
____exports.EntityType[____exports.EntityType.HOST] = "HOST"
____exports.EntityType.CHUB = 28
____exports.EntityType[____exports.EntityType.CHUB] = "CHUB"
____exports.EntityType.HOPPER = 29
____exports.EntityType[____exports.EntityType.HOPPER] = "HOPPER"
____exports.EntityType.BOIL = 30
____exports.EntityType[____exports.EntityType.BOIL] = "BOIL"
____exports.EntityType.SPITTY = 31
____exports.EntityType[____exports.EntityType.SPITTY] = "SPITTY"
____exports.EntityType.BRAIN = 32
____exports.EntityType[____exports.EntityType.BRAIN] = "BRAIN"
____exports.EntityType.FIREPLACE = 33
____exports.EntityType[____exports.EntityType.FIREPLACE] = "FIREPLACE"
____exports.EntityType.LEAPER = 34
____exports.EntityType[____exports.EntityType.LEAPER] = "LEAPER"
____exports.EntityType.MR_MAW = 35
____exports.EntityType[____exports.EntityType.MR_MAW] = "MR_MAW"
____exports.EntityType.GURDY = 36
____exports.EntityType[____exports.EntityType.GURDY] = "GURDY"
____exports.EntityType.BABY = 38
____exports.EntityType[____exports.EntityType.BABY] = "BABY"
____exports.EntityType.VIS = 39
____exports.EntityType[____exports.EntityType.VIS] = "VIS"
____exports.EntityType.GUTS = 40
____exports.EntityType[____exports.EntityType.GUTS] = "GUTS"
____exports.EntityType.KNIGHT = 41
____exports.EntityType[____exports.EntityType.KNIGHT] = "KNIGHT"
____exports.EntityType.GRIMACE = 42
____exports.EntityType[____exports.EntityType.GRIMACE] = "GRIMACE"
____exports.EntityType.MONSTRO_2 = 43
____exports.EntityType[____exports.EntityType.MONSTRO_2] = "MONSTRO_2"
____exports.EntityType.POKY = 44
____exports.EntityType[____exports.EntityType.POKY] = "POKY"
____exports.EntityType.MOM = 45
____exports.EntityType[____exports.EntityType.MOM] = "MOM"
____exports.EntityType.SLOTH = 46
____exports.EntityType[____exports.EntityType.SLOTH] = "SLOTH"
____exports.EntityType.LUST = 47
____exports.EntityType[____exports.EntityType.LUST] = "LUST"
____exports.EntityType.WRATH = 48
____exports.EntityType[____exports.EntityType.WRATH] = "WRATH"
____exports.EntityType.GLUTTONY = 49
____exports.EntityType[____exports.EntityType.GLUTTONY] = "GLUTTONY"
____exports.EntityType.GREED = 50
____exports.EntityType[____exports.EntityType.GREED] = "GREED"
____exports.EntityType.ENVY = 51
____exports.EntityType[____exports.EntityType.ENVY] = "ENVY"
____exports.EntityType.PRIDE = 52
____exports.EntityType[____exports.EntityType.PRIDE] = "PRIDE"
____exports.EntityType.DOPLE = 53
____exports.EntityType[____exports.EntityType.DOPLE] = "DOPLE"
____exports.EntityType.FLAMING_HOPPER = 54
____exports.EntityType[____exports.EntityType.FLAMING_HOPPER] = "FLAMING_HOPPER"
____exports.EntityType.LEECH = 55
____exports.EntityType[____exports.EntityType.LEECH] = "LEECH"
____exports.EntityType.LUMP = 56
____exports.EntityType[____exports.EntityType.LUMP] = "LUMP"
____exports.EntityType.MEMBRAIN = 57
____exports.EntityType[____exports.EntityType.MEMBRAIN] = "MEMBRAIN"
____exports.EntityType.PARA_BITE = 58
____exports.EntityType[____exports.EntityType.PARA_BITE] = "PARA_BITE"
____exports.EntityType.FRED = 59
____exports.EntityType[____exports.EntityType.FRED] = "FRED"
____exports.EntityType.EYE = 60
____exports.EntityType[____exports.EntityType.EYE] = "EYE"
____exports.EntityType.SUCKER = 61
____exports.EntityType[____exports.EntityType.SUCKER] = "SUCKER"
____exports.EntityType.PIN = 62
____exports.EntityType[____exports.EntityType.PIN] = "PIN"
____exports.EntityType.FAMINE = 63
____exports.EntityType[____exports.EntityType.FAMINE] = "FAMINE"
____exports.EntityType.PESTILENCE = 64
____exports.EntityType[____exports.EntityType.PESTILENCE] = "PESTILENCE"
____exports.EntityType.WAR = 65
____exports.EntityType[____exports.EntityType.WAR] = "WAR"
____exports.EntityType.DEATH = 66
____exports.EntityType[____exports.EntityType.DEATH] = "DEATH"
____exports.EntityType.DUKE = 67
____exports.EntityType[____exports.EntityType.DUKE] = "DUKE"
____exports.EntityType.PEEP = 68
____exports.EntityType[____exports.EntityType.PEEP] = "PEEP"
____exports.EntityType.LOKI = 69
____exports.EntityType[____exports.EntityType.LOKI] = "LOKI"
____exports.EntityType.FISTULA_BIG = 71
____exports.EntityType[____exports.EntityType.FISTULA_BIG] = "FISTULA_BIG"
____exports.EntityType.FISTULA_MEDIUM = 72
____exports.EntityType[____exports.EntityType.FISTULA_MEDIUM] = "FISTULA_MEDIUM"
____exports.EntityType.FISTULA_SMALL = 73
____exports.EntityType[____exports.EntityType.FISTULA_SMALL] = "FISTULA_SMALL"
____exports.EntityType.BLASTOCYST_BIG = 74
____exports.EntityType[____exports.EntityType.BLASTOCYST_BIG] = "BLASTOCYST_BIG"
____exports.EntityType.BLASTOCYST_MEDIUM = 75
____exports.EntityType[____exports.EntityType.BLASTOCYST_MEDIUM] = "BLASTOCYST_MEDIUM"
____exports.EntityType.BLASTOCYST_SMALL = 76
____exports.EntityType[____exports.EntityType.BLASTOCYST_SMALL] = "BLASTOCYST_SMALL"
____exports.EntityType.EMBRYO = 77
____exports.EntityType[____exports.EntityType.EMBRYO] = "EMBRYO"
____exports.EntityType.MOMS_HEART = 78
____exports.EntityType[____exports.EntityType.MOMS_HEART] = "MOMS_HEART"
____exports.EntityType.GEMINI = 79
____exports.EntityType[____exports.EntityType.GEMINI] = "GEMINI"
____exports.EntityType.MOTER = 80
____exports.EntityType[____exports.EntityType.MOTER] = "MOTER"
____exports.EntityType.FALLEN = 81
____exports.EntityType[____exports.EntityType.FALLEN] = "FALLEN"
____exports.EntityType.HEADLESS_HORSEMAN = 82
____exports.EntityType[____exports.EntityType.HEADLESS_HORSEMAN] = "HEADLESS_HORSEMAN"
____exports.EntityType.HORSEMAN_HEAD = 83
____exports.EntityType[____exports.EntityType.HORSEMAN_HEAD] = "HORSEMAN_HEAD"
____exports.EntityType.SATAN = 84
____exports.EntityType[____exports.EntityType.SATAN] = "SATAN"
____exports.EntityType.SPIDER = 85
____exports.EntityType[____exports.EntityType.SPIDER] = "SPIDER"
____exports.EntityType.KEEPER = 86
____exports.EntityType[____exports.EntityType.KEEPER] = "KEEPER"
____exports.EntityType.GURGLE = 87
____exports.EntityType[____exports.EntityType.GURGLE] = "GURGLE"
____exports.EntityType.WALKING_BOIL = 88
____exports.EntityType[____exports.EntityType.WALKING_BOIL] = "WALKING_BOIL"
____exports.EntityType.BUTTLICKER = 89
____exports.EntityType[____exports.EntityType.BUTTLICKER] = "BUTTLICKER"
____exports.EntityType.HANGER = 90
____exports.EntityType[____exports.EntityType.HANGER] = "HANGER"
____exports.EntityType.SWARMER = 91
____exports.EntityType[____exports.EntityType.SWARMER] = "SWARMER"
____exports.EntityType.HEART = 92
____exports.EntityType[____exports.EntityType.HEART] = "HEART"
____exports.EntityType.MASK = 93
____exports.EntityType[____exports.EntityType.MASK] = "MASK"
____exports.EntityType.BIG_SPIDER = 94
____exports.EntityType[____exports.EntityType.BIG_SPIDER] = "BIG_SPIDER"
____exports.EntityType.ETERNAL_FLY = 96
____exports.EntityType[____exports.EntityType.ETERNAL_FLY] = "ETERNAL_FLY"
____exports.EntityType.MASK_OF_INFAMY = 97
____exports.EntityType[____exports.EntityType.MASK_OF_INFAMY] = "MASK_OF_INFAMY"
____exports.EntityType.HEART_OF_INFAMY = 98
____exports.EntityType[____exports.EntityType.HEART_OF_INFAMY] = "HEART_OF_INFAMY"
____exports.EntityType.GURDY_JR = 99
____exports.EntityType[____exports.EntityType.GURDY_JR] = "GURDY_JR"
____exports.EntityType.WIDOW = 100
____exports.EntityType[____exports.EntityType.WIDOW] = "WIDOW"
____exports.EntityType.DADDY_LONG_LEGS = 101
____exports.EntityType[____exports.EntityType.DADDY_LONG_LEGS] = "DADDY_LONG_LEGS"
____exports.EntityType.ISAAC = 102
____exports.EntityType[____exports.EntityType.ISAAC] = "ISAAC"
____exports.EntityType.STONE_EYE = 201
____exports.EntityType[____exports.EntityType.STONE_EYE] = "STONE_EYE"
____exports.EntityType.CONSTANT_STONE_SHOOTER = 202
____exports.EntityType[____exports.EntityType.CONSTANT_STONE_SHOOTER] = "CONSTANT_STONE_SHOOTER"
____exports.EntityType.BRIMSTONE_HEAD = 203
____exports.EntityType[____exports.EntityType.BRIMSTONE_HEAD] = "BRIMSTONE_HEAD"
____exports.EntityType.MOBILE_HOST = 204
____exports.EntityType[____exports.EntityType.MOBILE_HOST] = "MOBILE_HOST"
____exports.EntityType.NEST = 205
____exports.EntityType[____exports.EntityType.NEST] = "NEST"
____exports.EntityType.BABY_LONG_LEGS = 206
____exports.EntityType[____exports.EntityType.BABY_LONG_LEGS] = "BABY_LONG_LEGS"
____exports.EntityType.CRAZY_LONG_LEGS = 207
____exports.EntityType[____exports.EntityType.CRAZY_LONG_LEGS] = "CRAZY_LONG_LEGS"
____exports.EntityType.FATTY = 208
____exports.EntityType[____exports.EntityType.FATTY] = "FATTY"
____exports.EntityType.FAT_SACK = 209
____exports.EntityType[____exports.EntityType.FAT_SACK] = "FAT_SACK"
____exports.EntityType.BLUBBER = 210
____exports.EntityType[____exports.EntityType.BLUBBER] = "BLUBBER"
____exports.EntityType.HALF_SACK = 211
____exports.EntityType[____exports.EntityType.HALF_SACK] = "HALF_SACK"
____exports.EntityType.DEATHS_HEAD = 212
____exports.EntityType[____exports.EntityType.DEATHS_HEAD] = "DEATHS_HEAD"
____exports.EntityType.MOMS_HAND = 213
____exports.EntityType[____exports.EntityType.MOMS_HAND] = "MOMS_HAND"
____exports.EntityType.FLY_L2 = 214
____exports.EntityType[____exports.EntityType.FLY_L2] = "FLY_L2"
____exports.EntityType.SPIDER_L2 = 215
____exports.EntityType[____exports.EntityType.SPIDER_L2] = "SPIDER_L2"
____exports.EntityType.SWINGER = 216
____exports.EntityType[____exports.EntityType.SWINGER] = "SWINGER"
____exports.EntityType.DIP = 217
____exports.EntityType[____exports.EntityType.DIP] = "DIP"
____exports.EntityType.WALL_HUGGER = 218
____exports.EntityType[____exports.EntityType.WALL_HUGGER] = "WALL_HUGGER"
____exports.EntityType.WIZOOB = 219
____exports.EntityType[____exports.EntityType.WIZOOB] = "WIZOOB"
____exports.EntityType.SQUIRT = 220
____exports.EntityType[____exports.EntityType.SQUIRT] = "SQUIRT"
____exports.EntityType.COD_WORM = 221
____exports.EntityType[____exports.EntityType.COD_WORM] = "COD_WORM"
____exports.EntityType.RING_OF_FLIES = 222
____exports.EntityType[____exports.EntityType.RING_OF_FLIES] = "RING_OF_FLIES"
____exports.EntityType.DINGA = 223
____exports.EntityType[____exports.EntityType.DINGA] = "DINGA"
____exports.EntityType.OOB = 224
____exports.EntityType[____exports.EntityType.OOB] = "OOB"
____exports.EntityType.BLACK_MAW = 225
____exports.EntityType[____exports.EntityType.BLACK_MAW] = "BLACK_MAW"
____exports.EntityType.SKINNY = 226
____exports.EntityType[____exports.EntityType.SKINNY] = "SKINNY"
____exports.EntityType.BONY = 227
____exports.EntityType[____exports.EntityType.BONY] = "BONY"
____exports.EntityType.HOMUNCULUS = 228
____exports.EntityType[____exports.EntityType.HOMUNCULUS] = "HOMUNCULUS"
____exports.EntityType.TUMOR = 229
____exports.EntityType[____exports.EntityType.TUMOR] = "TUMOR"
____exports.EntityType.CAMILLO_JR = 230
____exports.EntityType[____exports.EntityType.CAMILLO_JR] = "CAMILLO_JR"
____exports.EntityType.NERVE_ENDING = 231
____exports.EntityType[____exports.EntityType.NERVE_ENDING] = "NERVE_ENDING"
____exports.EntityType.ONE_TOOTH = 234
____exports.EntityType[____exports.EntityType.ONE_TOOTH] = "ONE_TOOTH"
____exports.EntityType.GAPING_MAW = 235
____exports.EntityType[____exports.EntityType.GAPING_MAW] = "GAPING_MAW"
____exports.EntityType.BROKEN_GAPING_MAW = 236
____exports.EntityType[____exports.EntityType.BROKEN_GAPING_MAW] = "BROKEN_GAPING_MAW"
____exports.EntityType.GURGLING = 237
____exports.EntityType[____exports.EntityType.GURGLING] = "GURGLING"
____exports.EntityType.SPLASHER = 238
____exports.EntityType[____exports.EntityType.SPLASHER] = "SPLASHER"
____exports.EntityType.GRUB = 239
____exports.EntityType[____exports.EntityType.GRUB] = "GRUB"
____exports.EntityType.WALL_CREEP = 240
____exports.EntityType[____exports.EntityType.WALL_CREEP] = "WALL_CREEP"
____exports.EntityType.RAGE_CREEP = 241
____exports.EntityType[____exports.EntityType.RAGE_CREEP] = "RAGE_CREEP"
____exports.EntityType.BLIND_CREEP = 242
____exports.EntityType[____exports.EntityType.BLIND_CREEP] = "BLIND_CREEP"
____exports.EntityType.CONJOINED_SPITTY = 243
____exports.EntityType[____exports.EntityType.CONJOINED_SPITTY] = "CONJOINED_SPITTY"
____exports.EntityType.ROUND_WORM = 244
____exports.EntityType[____exports.EntityType.ROUND_WORM] = "ROUND_WORM"
____exports.EntityType.POOP = 245
____exports.EntityType[____exports.EntityType.POOP] = "POOP"
____exports.EntityType.RAGLING = 246
____exports.EntityType[____exports.EntityType.RAGLING] = "RAGLING"
____exports.EntityType.FLESH_MOBILE_HOST = 247
____exports.EntityType[____exports.EntityType.FLESH_MOBILE_HOST] = "FLESH_MOBILE_HOST"
____exports.EntityType.PSY_HORF = 248
____exports.EntityType[____exports.EntityType.PSY_HORF] = "PSY_HORF"
____exports.EntityType.FULL_FLY = 249
____exports.EntityType[____exports.EntityType.FULL_FLY] = "FULL_FLY"
____exports.EntityType.TICKING_SPIDER = 250
____exports.EntityType[____exports.EntityType.TICKING_SPIDER] = "TICKING_SPIDER"
____exports.EntityType.BEGOTTEN = 251
____exports.EntityType[____exports.EntityType.BEGOTTEN] = "BEGOTTEN"
____exports.EntityType.NULLS = 252
____exports.EntityType[____exports.EntityType.NULLS] = "NULLS"
____exports.EntityType.PSY_TUMOR = 253
____exports.EntityType[____exports.EntityType.PSY_TUMOR] = "PSY_TUMOR"
____exports.EntityType.FLOATING_KNIGHT = 254
____exports.EntityType[____exports.EntityType.FLOATING_KNIGHT] = "FLOATING_KNIGHT"
____exports.EntityType.NIGHT_CRAWLER = 255
____exports.EntityType[____exports.EntityType.NIGHT_CRAWLER] = "NIGHT_CRAWLER"
____exports.EntityType.DART_FLY = 256
____exports.EntityType[____exports.EntityType.DART_FLY] = "DART_FLY"
____exports.EntityType.CONJOINED_FATTY = 257
____exports.EntityType[____exports.EntityType.CONJOINED_FATTY] = "CONJOINED_FATTY"
____exports.EntityType.FAT_BAT = 258
____exports.EntityType[____exports.EntityType.FAT_BAT] = "FAT_BAT"
____exports.EntityType.IMP = 259
____exports.EntityType[____exports.EntityType.IMP] = "IMP"
____exports.EntityType.THE_HAUNT = 260
____exports.EntityType[____exports.EntityType.THE_HAUNT] = "THE_HAUNT"
____exports.EntityType.DINGLE = 261
____exports.EntityType[____exports.EntityType.DINGLE] = "DINGLE"
____exports.EntityType.MEGA_MAW = 262
____exports.EntityType[____exports.EntityType.MEGA_MAW] = "MEGA_MAW"
____exports.EntityType.GATE = 263
____exports.EntityType[____exports.EntityType.GATE] = "GATE"
____exports.EntityType.MEGA_FATTY = 264
____exports.EntityType[____exports.EntityType.MEGA_FATTY] = "MEGA_FATTY"
____exports.EntityType.CAGE = 265
____exports.EntityType[____exports.EntityType.CAGE] = "CAGE"
____exports.EntityType.MAMA_GURDY = 266
____exports.EntityType[____exports.EntityType.MAMA_GURDY] = "MAMA_GURDY"
____exports.EntityType.DARK_ONE = 267
____exports.EntityType[____exports.EntityType.DARK_ONE] = "DARK_ONE"
____exports.EntityType.ADVERSARY = 268
____exports.EntityType[____exports.EntityType.ADVERSARY] = "ADVERSARY"
____exports.EntityType.POLYCEPHALUS = 269
____exports.EntityType[____exports.EntityType.POLYCEPHALUS] = "POLYCEPHALUS"
____exports.EntityType.MR_FRED = 270
____exports.EntityType[____exports.EntityType.MR_FRED] = "MR_FRED"
____exports.EntityType.URIEL = 271
____exports.EntityType[____exports.EntityType.URIEL] = "URIEL"
____exports.EntityType.GABRIEL = 272
____exports.EntityType[____exports.EntityType.GABRIEL] = "GABRIEL"
____exports.EntityType.THE_LAMB = 273
____exports.EntityType[____exports.EntityType.THE_LAMB] = "THE_LAMB"
____exports.EntityType.MEGA_SATAN = 274
____exports.EntityType[____exports.EntityType.MEGA_SATAN] = "MEGA_SATAN"
____exports.EntityType.MEGA_SATAN_2 = 275
____exports.EntityType[____exports.EntityType.MEGA_SATAN_2] = "MEGA_SATAN_2"
____exports.EntityType.ROUNDY = 276
____exports.EntityType[____exports.EntityType.ROUNDY] = "ROUNDY"
____exports.EntityType.BLACK_BONY = 277
____exports.EntityType[____exports.EntityType.BLACK_BONY] = "BLACK_BONY"
____exports.EntityType.BLACK_GLOBIN = 278
____exports.EntityType[____exports.EntityType.BLACK_GLOBIN] = "BLACK_GLOBIN"
____exports.EntityType.BLACK_GLOBIN_HEAD = 279
____exports.EntityType[____exports.EntityType.BLACK_GLOBIN_HEAD] = "BLACK_GLOBIN_HEAD"
____exports.EntityType.BLACK_GLOBIN_BODY = 280
____exports.EntityType[____exports.EntityType.BLACK_GLOBIN_BODY] = "BLACK_GLOBIN_BODY"
____exports.EntityType.SWARM = 281
____exports.EntityType[____exports.EntityType.SWARM] = "SWARM"
____exports.EntityType.MEGA_CLOTTY = 282
____exports.EntityType[____exports.EntityType.MEGA_CLOTTY] = "MEGA_CLOTTY"
____exports.EntityType.BONE_KNIGHT = 283
____exports.EntityType[____exports.EntityType.BONE_KNIGHT] = "BONE_KNIGHT"
____exports.EntityType.CYCLOPIA = 284
____exports.EntityType[____exports.EntityType.CYCLOPIA] = "CYCLOPIA"
____exports.EntityType.RED_GHOST = 285
____exports.EntityType[____exports.EntityType.RED_GHOST] = "RED_GHOST"
____exports.EntityType.FLESH_DEATHS_HEAD = 286
____exports.EntityType[____exports.EntityType.FLESH_DEATHS_HEAD] = "FLESH_DEATHS_HEAD"
____exports.EntityType.MOMS_DEAD_HAND = 287
____exports.EntityType[____exports.EntityType.MOMS_DEAD_HAND] = "MOMS_DEAD_HAND"
____exports.EntityType.DUKIE = 288
____exports.EntityType[____exports.EntityType.DUKIE] = "DUKIE"
____exports.EntityType.ULCER = 289
____exports.EntityType[____exports.EntityType.ULCER] = "ULCER"
____exports.EntityType.MEATBALL = 290
____exports.EntityType[____exports.EntityType.MEATBALL] = "MEATBALL"
____exports.EntityType.PITFALL = 291
____exports.EntityType[____exports.EntityType.PITFALL] = "PITFALL"
____exports.EntityType.MOVABLE_TNT = 292
____exports.EntityType[____exports.EntityType.MOVABLE_TNT] = "MOVABLE_TNT"
____exports.EntityType.ULTRA_COIN = 293
____exports.EntityType[____exports.EntityType.ULTRA_COIN] = "ULTRA_COIN"
____exports.EntityType.ULTRA_DOOR = 294
____exports.EntityType[____exports.EntityType.ULTRA_DOOR] = "ULTRA_DOOR"
____exports.EntityType.CORN_MINE = 295
____exports.EntityType[____exports.EntityType.CORN_MINE] = "CORN_MINE"
____exports.EntityType.HUSH_FLY = 296
____exports.EntityType[____exports.EntityType.HUSH_FLY] = "HUSH_FLY"
____exports.EntityType.HUSH_GAPER = 297
____exports.EntityType[____exports.EntityType.HUSH_GAPER] = "HUSH_GAPER"
____exports.EntityType.HUSH_BOIL = 298
____exports.EntityType[____exports.EntityType.HUSH_BOIL] = "HUSH_BOIL"
____exports.EntityType.GREED_GAPER = 299
____exports.EntityType[____exports.EntityType.GREED_GAPER] = "GREED_GAPER"
____exports.EntityType.MUSHROOM = 300
____exports.EntityType[____exports.EntityType.MUSHROOM] = "MUSHROOM"
____exports.EntityType.POISON_MIND = 301
____exports.EntityType[____exports.EntityType.POISON_MIND] = "POISON_MIND"
____exports.EntityType.STONEY = 302
____exports.EntityType[____exports.EntityType.STONEY] = "STONEY"
____exports.EntityType.BLISTER = 303
____exports.EntityType[____exports.EntityType.BLISTER] = "BLISTER"
____exports.EntityType.THE_THING = 304
____exports.EntityType[____exports.EntityType.THE_THING] = "THE_THING"
____exports.EntityType.MINISTRO = 305
____exports.EntityType[____exports.EntityType.MINISTRO] = "MINISTRO"
____exports.EntityType.PORTAL = 306
____exports.EntityType[____exports.EntityType.PORTAL] = "PORTAL"
____exports.EntityType.TAR_BOY = 307
____exports.EntityType[____exports.EntityType.TAR_BOY] = "TAR_BOY"
____exports.EntityType.FISTULOID = 308
____exports.EntityType[____exports.EntityType.FISTULOID] = "FISTULOID"
____exports.EntityType.GUSH = 309
____exports.EntityType[____exports.EntityType.GUSH] = "GUSH"
____exports.EntityType.LEPER = 310
____exports.EntityType[____exports.EntityType.LEPER] = "LEPER"
____exports.EntityType.MR_MINE = 311
____exports.EntityType[____exports.EntityType.MR_MINE] = "MR_MINE"
____exports.EntityType.STAIN = 401
____exports.EntityType[____exports.EntityType.STAIN] = "STAIN"
____exports.EntityType.BROWNIE = 402
____exports.EntityType[____exports.EntityType.BROWNIE] = "BROWNIE"
____exports.EntityType.FORSAKEN = 403
____exports.EntityType[____exports.EntityType.FORSAKEN] = "FORSAKEN"
____exports.EntityType.LITTLE_HORN = 404
____exports.EntityType[____exports.EntityType.LITTLE_HORN] = "LITTLE_HORN"
____exports.EntityType.RAG_MAN = 405
____exports.EntityType[____exports.EntityType.RAG_MAN] = "RAG_MAN"
____exports.EntityType.ULTRA_GREED = 406
____exports.EntityType[____exports.EntityType.ULTRA_GREED] = "ULTRA_GREED"
____exports.EntityType.HUSH = 407
____exports.EntityType[____exports.EntityType.HUSH] = "HUSH"
____exports.EntityType.HUSH_SKINLESS = 408
____exports.EntityType[____exports.EntityType.HUSH_SKINLESS] = "HUSH_SKINLESS"
____exports.EntityType.RAG_MEGA = 409
____exports.EntityType[____exports.EntityType.RAG_MEGA] = "RAG_MEGA"
____exports.EntityType.SISTERS_VIS = 410
____exports.EntityType[____exports.EntityType.SISTERS_VIS] = "SISTERS_VIS"
____exports.EntityType.BIG_HORN = 411
____exports.EntityType[____exports.EntityType.BIG_HORN] = "BIG_HORN"
____exports.EntityType.DELIRIUM = 412
____exports.EntityType[____exports.EntityType.DELIRIUM] = "DELIRIUM"
____exports.EntityType.MATRIARCH = 413
____exports.EntityType[____exports.EntityType.MATRIARCH] = "MATRIARCH"
____exports.EntityType.BLOOD_PUPPY = 802
____exports.EntityType[____exports.EntityType.BLOOD_PUPPY] = "BLOOD_PUPPY"
____exports.EntityType.QUAKE_GRIMACE = 804
____exports.EntityType[____exports.EntityType.QUAKE_GRIMACE] = "QUAKE_GRIMACE"
____exports.EntityType.BISHOP = 805
____exports.EntityType[____exports.EntityType.BISHOP] = "BISHOP"
____exports.EntityType.BUBBLES = 806
____exports.EntityType[____exports.EntityType.BUBBLES] = "BUBBLES"
____exports.EntityType.WRAITH = 807
____exports.EntityType[____exports.EntityType.WRAITH] = "WRAITH"
____exports.EntityType.WILLO = 808
____exports.EntityType[____exports.EntityType.WILLO] = "WILLO"
____exports.EntityType.BOMB_GRIMACE = 809
____exports.EntityType[____exports.EntityType.BOMB_GRIMACE] = "BOMB_GRIMACE"
____exports.EntityType.SMALL_LEECH = 810
____exports.EntityType[____exports.EntityType.SMALL_LEECH] = "SMALL_LEECH"
____exports.EntityType.DEEP_GAPER = 811
____exports.EntityType[____exports.EntityType.DEEP_GAPER] = "DEEP_GAPER"
____exports.EntityType.SUB_HORF = 812
____exports.EntityType[____exports.EntityType.SUB_HORF] = "SUB_HORF"
____exports.EntityType.BLURB = 813
____exports.EntityType[____exports.EntityType.BLURB] = "BLURB"
____exports.EntityType.STRIDER = 814
____exports.EntityType[____exports.EntityType.STRIDER] = "STRIDER"
____exports.EntityType.FISSURE = 815
____exports.EntityType[____exports.EntityType.FISSURE] = "FISSURE"
____exports.EntityType.POLTY = 816
____exports.EntityType[____exports.EntityType.POLTY] = "POLTY"
____exports.EntityType.PREY = 817
____exports.EntityType[____exports.EntityType.PREY] = "PREY"
____exports.EntityType.ROCK_SPIDER = 818
____exports.EntityType[____exports.EntityType.ROCK_SPIDER] = "ROCK_SPIDER"
____exports.EntityType.FLY_BOMB = 819
____exports.EntityType[____exports.EntityType.FLY_BOMB] = "FLY_BOMB"
____exports.EntityType.DANNY = 820
____exports.EntityType[____exports.EntityType.DANNY] = "DANNY"
____exports.EntityType.BLASTER = 821
____exports.EntityType[____exports.EntityType.BLASTER] = "BLASTER"
____exports.EntityType.BOUNCER = 822
____exports.EntityType[____exports.EntityType.BOUNCER] = "BOUNCER"
____exports.EntityType.QUAKEY = 823
____exports.EntityType[____exports.EntityType.QUAKEY] = "QUAKEY"
____exports.EntityType.GYRO = 824
____exports.EntityType[____exports.EntityType.GYRO] = "GYRO"
____exports.EntityType.FIRE_WORM = 825
____exports.EntityType[____exports.EntityType.FIRE_WORM] = "FIRE_WORM"
____exports.EntityType.HARDY = 826
____exports.EntityType[____exports.EntityType.HARDY] = "HARDY"
____exports.EntityType.FACELESS = 827
____exports.EntityType[____exports.EntityType.FACELESS] = "FACELESS"
____exports.EntityType.NECRO = 828
____exports.EntityType[____exports.EntityType.NECRO] = "NECRO"
____exports.EntityType.MOLE = 829
____exports.EntityType[____exports.EntityType.MOLE] = "MOLE"
____exports.EntityType.BIG_BONY = 830
____exports.EntityType[____exports.EntityType.BIG_BONY] = "BIG_BONY"
____exports.EntityType.GUTTED_FATTY = 831
____exports.EntityType[____exports.EntityType.GUTTED_FATTY] = "GUTTED_FATTY"
____exports.EntityType.EXORCIST = 832
____exports.EntityType[____exports.EntityType.EXORCIST] = "EXORCIST"
____exports.EntityType.CANDLER = 833
____exports.EntityType[____exports.EntityType.CANDLER] = "CANDLER"
____exports.EntityType.WHIPPER = 834
____exports.EntityType[____exports.EntityType.WHIPPER] = "WHIPPER"
____exports.EntityType.PEEPER_FATTY = 835
____exports.EntityType[____exports.EntityType.PEEPER_FATTY] = "PEEPER_FATTY"
____exports.EntityType.VIS_VERSA = 836
____exports.EntityType[____exports.EntityType.VIS_VERSA] = "VIS_VERSA"
____exports.EntityType.HENRY = 837
____exports.EntityType[____exports.EntityType.HENRY] = "HENRY"
____exports.EntityType.WILLO_L2 = 838
____exports.EntityType[____exports.EntityType.WILLO_L2] = "WILLO_L2"
____exports.EntityType.PON = 840
____exports.EntityType[____exports.EntityType.PON] = "PON"
____exports.EntityType.REVENANT = 841
____exports.EntityType[____exports.EntityType.REVENANT] = "REVENANT"
____exports.EntityType.BOMBGAGGER = 844
____exports.EntityType[____exports.EntityType.BOMBGAGGER] = "BOMBGAGGER"
____exports.EntityType.GAPER_L2 = 850
____exports.EntityType[____exports.EntityType.GAPER_L2] = "GAPER_L2"
____exports.EntityType.TWITCHY = 851
____exports.EntityType[____exports.EntityType.TWITCHY] = "TWITCHY"
____exports.EntityType.SPIKEBALL = 852
____exports.EntityType[____exports.EntityType.SPIKEBALL] = "SPIKEBALL"
____exports.EntityType.SMALL_MAGGOT = 853
____exports.EntityType[____exports.EntityType.SMALL_MAGGOT] = "SMALL_MAGGOT"
____exports.EntityType.ADULT_LEECH = 854
____exports.EntityType[____exports.EntityType.ADULT_LEECH] = "ADULT_LEECH"
____exports.EntityType.CHARGER_L2 = 855
____exports.EntityType[____exports.EntityType.CHARGER_L2] = "CHARGER_L2"
____exports.EntityType.GASBAG = 856
____exports.EntityType[____exports.EntityType.GASBAG] = "GASBAG"
____exports.EntityType.COHORT = 857
____exports.EntityType[____exports.EntityType.COHORT] = "COHORT"
____exports.EntityType.FLOATING_HOST = 859
____exports.EntityType[____exports.EntityType.FLOATING_HOST] = "FLOATING_HOST"
____exports.EntityType.UNBORN = 860
____exports.EntityType[____exports.EntityType.UNBORN] = "UNBORN"
____exports.EntityType.PUSTULE = 861
____exports.EntityType[____exports.EntityType.PUSTULE] = "PUSTULE"
____exports.EntityType.CYST = 862
____exports.EntityType[____exports.EntityType.CYST] = "CYST"
____exports.EntityType.MORNINGSTAR = 863
____exports.EntityType[____exports.EntityType.MORNINGSTAR] = "MORNINGSTAR"
____exports.EntityType.MOCKULUS = 864
____exports.EntityType[____exports.EntityType.MOCKULUS] = "MOCKULUS"
____exports.EntityType.EVIS = 865
____exports.EntityType[____exports.EntityType.EVIS] = "EVIS"
____exports.EntityType.DARK_ESAU = 866
____exports.EntityType[____exports.EntityType.DARK_ESAU] = "DARK_ESAU"
____exports.EntityType.MOTHERS_SHADOW = 867
____exports.EntityType[____exports.EntityType.MOTHERS_SHADOW] = "MOTHERS_SHADOW"
____exports.EntityType.ARMY_FLY = 868
____exports.EntityType[____exports.EntityType.ARMY_FLY] = "ARMY_FLY"
____exports.EntityType.MIGRAINE = 869
____exports.EntityType[____exports.EntityType.MIGRAINE] = "MIGRAINE"
____exports.EntityType.DRIP = 870
____exports.EntityType[____exports.EntityType.DRIP] = "DRIP"
____exports.EntityType.SPLURT = 871
____exports.EntityType[____exports.EntityType.SPLURT] = "SPLURT"
____exports.EntityType.CLOGGY = 872
____exports.EntityType[____exports.EntityType.CLOGGY] = "CLOGGY"
____exports.EntityType.FLY_TRAP = 873
____exports.EntityType[____exports.EntityType.FLY_TRAP] = "FLY_TRAP"
____exports.EntityType.GAS_DWARF = 874
____exports.EntityType[____exports.EntityType.GAS_DWARF] = "GAS_DWARF"
____exports.EntityType.POOT_MINE = 875
____exports.EntityType[____exports.EntityType.POOT_MINE] = "POOT_MINE"
____exports.EntityType.DUMP = 876
____exports.EntityType[____exports.EntityType.DUMP] = "DUMP"
____exports.EntityType.GRUDGE = 877
____exports.EntityType[____exports.EntityType.GRUDGE] = "GRUDGE"
____exports.EntityType.BUTT_SLICKER = 878
____exports.EntityType[____exports.EntityType.BUTT_SLICKER] = "BUTT_SLICKER"
____exports.EntityType.BLOATY = 879
____exports.EntityType[____exports.EntityType.BLOATY] = "BLOATY"
____exports.EntityType.FLESH_MAIDEN = 880
____exports.EntityType[____exports.EntityType.FLESH_MAIDEN] = "FLESH_MAIDEN"
____exports.EntityType.NEEDLE = 881
____exports.EntityType[____exports.EntityType.NEEDLE] = "NEEDLE"
____exports.EntityType.DUST = 882
____exports.EntityType[____exports.EntityType.DUST] = "DUST"
____exports.EntityType.BABY_BEGOTTEN = 883
____exports.EntityType[____exports.EntityType.BABY_BEGOTTEN] = "BABY_BEGOTTEN"
____exports.EntityType.SWARM_SPIDER = 884
____exports.EntityType[____exports.EntityType.SWARM_SPIDER] = "SWARM_SPIDER"
____exports.EntityType.CULTIST = 885
____exports.EntityType[____exports.EntityType.CULTIST] = "CULTIST"
____exports.EntityType.VIS_FATTY = 886
____exports.EntityType[____exports.EntityType.VIS_FATTY] = "VIS_FATTY"
____exports.EntityType.DUSTY_DEATHS_HEAD = 887
____exports.EntityType[____exports.EntityType.DUSTY_DEATHS_HEAD] = "DUSTY_DEATHS_HEAD"
____exports.EntityType.SHADY = 888
____exports.EntityType[____exports.EntityType.SHADY] = "SHADY"
____exports.EntityType.CLICKETY_CLACK = 889
____exports.EntityType[____exports.EntityType.CLICKETY_CLACK] = "CLICKETY_CLACK"
____exports.EntityType.MAZE_ROAMER = 890
____exports.EntityType[____exports.EntityType.MAZE_ROAMER] = "MAZE_ROAMER"
____exports.EntityType.GOAT = 891
____exports.EntityType[____exports.EntityType.GOAT] = "GOAT"
____exports.EntityType.POOFER = 892
____exports.EntityType[____exports.EntityType.POOFER] = "POOFER"
____exports.EntityType.BALL_AND_CHAIN = 893
____exports.EntityType[____exports.EntityType.BALL_AND_CHAIN] = "BALL_AND_CHAIN"
____exports.EntityType.REAP_CREEP = 900
____exports.EntityType[____exports.EntityType.REAP_CREEP] = "REAP_CREEP"
____exports.EntityType.LIL_BLUB = 901
____exports.EntityType[____exports.EntityType.LIL_BLUB] = "LIL_BLUB"
____exports.EntityType.RAINMAKER = 902
____exports.EntityType[____exports.EntityType.RAINMAKER] = "RAINMAKER"
____exports.EntityType.VISAGE = 903
____exports.EntityType[____exports.EntityType.VISAGE] = "VISAGE"
____exports.EntityType.SIREN = 904
____exports.EntityType[____exports.EntityType.SIREN] = "SIREN"
____exports.EntityType.HERETIC = 905
____exports.EntityType[____exports.EntityType.HERETIC] = "HERETIC"
____exports.EntityType.HORNFEL = 906
____exports.EntityType[____exports.EntityType.HORNFEL] = "HORNFEL"
____exports.EntityType.GREAT_GIDEON = 907
____exports.EntityType[____exports.EntityType.GREAT_GIDEON] = "GREAT_GIDEON"
____exports.EntityType.BABY_PLUM = 908
____exports.EntityType[____exports.EntityType.BABY_PLUM] = "BABY_PLUM"
____exports.EntityType.SCOURGE = 909
____exports.EntityType[____exports.EntityType.SCOURGE] = "SCOURGE"
____exports.EntityType.CHIMERA = 910
____exports.EntityType[____exports.EntityType.CHIMERA] = "CHIMERA"
____exports.EntityType.ROTGUT = 911
____exports.EntityType[____exports.EntityType.ROTGUT] = "ROTGUT"
____exports.EntityType.MOTHER = 912
____exports.EntityType[____exports.EntityType.MOTHER] = "MOTHER"
____exports.EntityType.MIN_MIN = 913
____exports.EntityType[____exports.EntityType.MIN_MIN] = "MIN_MIN"
____exports.EntityType.CLOG = 914
____exports.EntityType[____exports.EntityType.CLOG] = "CLOG"
____exports.EntityType.SINGE = 915
____exports.EntityType[____exports.EntityType.SINGE] = "SINGE"
____exports.EntityType.BUMBINO = 916
____exports.EntityType[____exports.EntityType.BUMBINO] = "BUMBINO"
____exports.EntityType.COLOSTOMIA = 917
____exports.EntityType[____exports.EntityType.COLOSTOMIA] = "COLOSTOMIA"
____exports.EntityType.TURDLET = 918
____exports.EntityType[____exports.EntityType.TURDLET] = "TURDLET"
____exports.EntityType.RAGLICH = 919
____exports.EntityType[____exports.EntityType.RAGLICH] = "RAGLICH"
____exports.EntityType.HORNY_BOYS = 920
____exports.EntityType[____exports.EntityType.HORNY_BOYS] = "HORNY_BOYS"
____exports.EntityType.CLUTCH = 921
____exports.EntityType[____exports.EntityType.CLUTCH] = "CLUTCH"
____exports.EntityType.DOGMA = 950
____exports.EntityType[____exports.EntityType.DOGMA] = "DOGMA"
____exports.EntityType.BEAST = 951
____exports.EntityType[____exports.EntityType.BEAST] = "BEAST"
____exports.EntityType.GENERIC_PROP = 960
____exports.EntityType[____exports.EntityType.GENERIC_PROP] = "GENERIC_PROP"
____exports.EntityType.FROZEN_ENEMY = 963
____exports.EntityType[____exports.EntityType.FROZEN_ENEMY] = "FROZEN_ENEMY"
____exports.EntityType.DUMMY = 964
____exports.EntityType[____exports.EntityType.DUMMY] = "DUMMY"
____exports.EntityType.MINECART = 965
____exports.EntityType[____exports.EntityType.MINECART] = "MINECART"
____exports.EntityType.SIREN_HELPER = 966
____exports.EntityType[____exports.EntityType.SIREN_HELPER] = "SIREN_HELPER"
____exports.EntityType.HORNFEL_DOOR = 967
____exports.EntityType[____exports.EntityType.HORNFEL_DOOR] = "HORNFEL_DOOR"
____exports.EntityType.EFFECT = 1000
____exports.EntityType[____exports.EntityType.EFFECT] = "EFFECT"
____exports.EntityType.TEXT = 9001
____exports.EntityType[____exports.EntityType.TEXT] = "TEXT"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.FadeoutTarget"] = function(...) 
local ____exports = {}
____exports.FadeoutTarget = {}
____exports.FadeoutTarget.NONE = 0
____exports.FadeoutTarget[____exports.FadeoutTarget.NONE] = "NONE"
____exports.FadeoutTarget.FILE_SELECT = 1
____exports.FadeoutTarget[____exports.FadeoutTarget.FILE_SELECT] = "FILE_SELECT"
____exports.FadeoutTarget.MAIN_MENU = 2
____exports.FadeoutTarget[____exports.FadeoutTarget.MAIN_MENU] = "MAIN_MENU"
____exports.FadeoutTarget.TITLE_SCREEN = 3
____exports.FadeoutTarget[____exports.FadeoutTarget.TITLE_SCREEN] = "TITLE_SCREEN"
____exports.FadeoutTarget.RESTART_RUN = 4
____exports.FadeoutTarget[____exports.FadeoutTarget.RESTART_RUN] = "RESTART_RUN"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.ActionTrigger"] = function(...) 
local ____exports = {}
--- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename ActionTrigger
local ActionTriggerInternal = {
    NONE = 1 << -1,
    BOMB_PLACED = 1 << 0,
    MOVED = 1 << 1,
    SHOOTING = 1 << 2,
    CARD_PILL_USED = 1 << 3,
    ITEM_ACTIVATED = 1 << 4,
    ITEMS_DROPPED = 1 << 5
}
____exports.ActionTrigger = ActionTriggerInternal
____exports.ActionTriggerZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.CacheFlag"] = function(...) 
local ____exports = {}
--- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename CacheFlag
local CacheFlagInternal = {
    DAMAGE = 1 << 0,
    FIRE_DELAY = 1 << 1,
    SHOT_SPEED = 1 << 2,
    RANGE = 1 << 3,
    SPEED = 1 << 4,
    TEAR_FLAG = 1 << 5,
    TEAR_COLOR = 1 << 6,
    FLYING = 1 << 7,
    WEAPON = 1 << 8,
    FAMILIARS = 1 << 9,
    LUCK = 1 << 10,
    SIZE = 1 << 11,
    COLOR = 1 << 12,
    PICKUP_VISION = 1 << 13,
    ALL = (1 << 16) - 1,
    TWIN_SYNC = 1 << 31
}
____exports.CacheFlag = CacheFlagInternal
____exports.CacheFlagZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.DamageFlag"] = function(...) 
local ____exports = {}
--- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename DamageFlag
local DamageFlagInternal = {
    NO_KILL = 1 << 0,
    FIRE = 1 << 1,
    EXPLOSION = 1 << 2,
    LASER = 1 << 3,
    ACID = 1 << 4,
    RED_HEARTS = 1 << 5,
    COUNTDOWN = 1 << 6,
    SPIKES = 1 << 7,
    CLONES = 1 << 8,
    POOP = 1 << 9,
    DEVIL = 1 << 10,
    ISSAC_HEART = 1 << 11,
    TNT = 1 << 12,
    INVINCIBLE = 1 << 13,
    SPAWN_FLY = 1 << 14,
    POISON_BURN = 1 << 15,
    CURSED_DOOR = 1 << 16,
    TIMER = 1 << 17,
    IV_BAG = 1 << 18,
    PITFALL = 1 << 19,
    CHEST = 1 << 20,
    FAKE = 1 << 21,
    BOOGER = 1 << 22,
    SPAWN_BLACK_HEART = 1 << 23,
    CRUSH = 1 << 24,
    NO_MODIFIERS = 1 << 25,
    SPAWN_RED_HEART = 1 << 26,
    SPAWN_COIN = 1 << 27,
    NO_PENALTIES = 1 << 28,
    SPAWN_TEMP_HEART = 1 << 29,
    IGNORE_ARMOR = 1 << 30,
    SPAWN_CARD = 1 << 31,
    SPAWN_RUNE = 1 << 32
}
____exports.DamageFlag = DamageFlagInternal
____exports.DamageFlagZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.DisplayFlag"] = function(...) 
local ____exports = {}
--- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename DisplayFlag
local DisplayFlagInternal = {INVISIBLE = 1 << -1, VISIBLE = 1 << 0, SHADOW = 1 << 1, SHOW_ICON = 1 << 2}
____exports.DisplayFlag = DisplayFlagInternal
____exports.DisplayFlagZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.DoorSlotFlag"] = function(...) 
local ____exports = {}
local ____DoorSlot = require("lua_modules.isaac-typescript-definitions.dist.src.enums.DoorSlot")
local DoorSlot = ____DoorSlot.DoorSlot
--- For `GridEntityType.DOOR` (16).
-- 
-- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename DoorSlotFlag
local DoorSlotFlagInternal = {
    LEFT_0 = 1 << DoorSlot.LEFT_0,
    UP_0 = 1 << DoorSlot.UP_0,
    RIGHT_0 = 1 << DoorSlot.RIGHT_0,
    DOWN_0 = 1 << DoorSlot.DOWN_0,
    LEFT_1 = 1 << DoorSlot.LEFT_1,
    UP_1 = 1 << DoorSlot.UP_1,
    RIGHT_1 = 1 << DoorSlot.RIGHT_1,
    DOWN_1 = 1 << DoorSlot.DOWN_1
}
____exports.DoorSlotFlag = DoorSlotFlagInternal
____exports.DoorSlotFlagZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.EntityFlag"] = function(...) 
local ____exports = {}
--- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename EntityFlag
local EntityFlagInternal = {
    NO_STATUS_EFFECTS = 1 << 0,
    NO_INTERPOLATE = 1 << 1,
    APPEAR = 1 << 2,
    RENDER_FLOOR = 1 << 3,
    NO_TARGET = 1 << 4,
    FREEZE = 1 << 5,
    POISON = 1 << 6,
    SLOW = 1 << 7,
    CHARM = 1 << 8,
    CONFUSION = 1 << 9,
    MIDAS_FREEZE = 1 << 10,
    FEAR = 1 << 11,
    BURN = 1 << 12,
    RENDER_WALL = 1 << 13,
    INTERPOLATION_UPDATE = 1 << 14,
    APPLY_GRAVITY = 1 << 15,
    NO_BLOOD_SPLASH = 1 << 16,
    NO_REMOVE_ON_TEX_RENDER = 1 << 17,
    NO_DEATH_TRIGGER = 1 << 18,
    NO_SPIKE_DAMAGE = 1 << 19,
    LASER_POP = 1 << 19,
    ITEM_SHOULD_DUPLICATE = 1 << 19,
    BOSS_DEATH_TRIGGERED = 1 << 20,
    DONT_OVERWRITE = 1 << 21,
    SPAWN_STICKY_SPIDERS = 1 << 22,
    SPAWN_BLACK_HP = 1 << 23,
    SHRINK = 1 << 24,
    NO_FLASH_ON_DAMAGE = 1 << 25,
    NO_KNOCKBACK = 1 << 26,
    SLIPPERY_PHYSICS = 1 << 27,
    ADD_JAR_FLY = 1 << 28,
    FRIENDLY = 1 << 29,
    NO_PHYSICS_KNOCKBACK = 1 << 30,
    DONT_COUNT_BOSS_HP = 1 << 31,
    NO_SPRITE_UPDATE = 1 << 32,
    CONTAGIOUS = 1 << 33,
    BLEED_OUT = 1 << 34,
    HIDE_HP_BAR = 1 << 35,
    NO_DAMAGE_BLINK = 1 << 36,
    PERSISTENT = 1 << 37,
    BACKDROP_DETAIL = 1 << 38,
    AMBUSH = 1 << 39,
    GLITCH = 1 << 40,
    SPIN = 1 << 41,
    NO_REWARD = 1 << 42,
    REDUCE_GIBS = 1 << 43,
    TRANSITION_UPDATE = 1 << 44,
    NO_PLAYER_CONTROL = 1 << 45,
    NO_QUERY = 1 << 46,
    KNOCKED_BACK = 1 << 47,
    APPLY_IMPACT_DAMAGE = 1 << 48,
    ICE_FROZEN = 1 << 49,
    ICE = 1 << 50,
    MAGNETIZED = 1 << 51,
    BAITED = 1 << 52,
    KILL_SWITCH = 1 << 53,
    WEAKNESS = 1 << 54,
    EXTRA_GORE = 1 << 55,
    BRIMSTONE_MARKED = 1 << 56,
    HELD = 1 << 57,
    THROWN = 1 << 58,
    FRIENDLY_BALL = 1 << 59
}
____exports.EntityFlag = EntityFlagInternal
____exports.EntityFlagZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.EntityPartition"] = function(...) 
local ____exports = {}
--- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename EntityPartition
local EntityPartitionInternal = {
    FAMILIAR = 1 << 0,
    BULLET = 1 << 1,
    TEAR = 1 << 2,
    ENEMY = 1 << 3,
    PICKUP = 1 << 4,
    PLAYER = 1 << 5,
    EFFECT = 1 << 6
}
____exports.EntityPartition = EntityPartitionInternal
____exports.EntityPartitionZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.ItemConfigTag"] = function(...) 
local ____exports = {}
--- Matches the ItemConfig.TAG_ members of the ItemConfig class. In IsaacScript, we re-implement this
-- as an object instead, since it is cleaner.
-- 
-- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename ItemConfigTag
local ItemConfigTagInternal = {
    DEAD = 1 << 0,
    SYRINGE = 1 << 1,
    MOM = 1 << 2,
    TECH = 1 << 3,
    BATTERY = 1 << 4,
    GUPPY = 1 << 5,
    FLY = 1 << 6,
    BOB = 1 << 7,
    MUSHROOM = 1 << 8,
    BABY = 1 << 9,
    ANGEL = 1 << 10,
    DEVIL = 1 << 11,
    POOP = 1 << 12,
    BOOK = 1 << 13,
    SPIDER = 1 << 14,
    QUEST = 1 << 15,
    MONSTER_MANUAL = 1 << 16,
    NO_GREED = 1 << 17,
    FOOD = 1 << 18,
    TEARS_UP = 1 << 19,
    OFFENSIVE = 1 << 20,
    NO_KEEPER = 1 << 21,
    NO_LOST_BR = 1 << 22,
    STARS = 1 << 23,
    SUMMONABLE = 1 << 24,
    NO_CANTRIP = 1 << 25,
    WISP = 1 << 26,
    UNIQUE_FAMILIAR = 1 << 27,
    NO_CHALLENGE = 1 << 28,
    NO_DAILY = 1 << 29,
    LAZ_SHARED = 1 << 30,
    LAZ_SHARED_GLOBAL = 1 << 31,
    NO_EDEN = 1 << 32
}
____exports.ItemConfigTag = ItemConfigTagInternal
____exports.ItemConfigTagZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.LevelCurse"] = function(...) 
local ____exports = {}
local getLevelCurse
local ____CurseID = require("lua_modules.isaac-typescript-definitions.dist.src.enums.CurseID")
local CurseID = ____CurseID.CurseID
function getLevelCurse(self, curseID)
    return 1 << curseID - 1
end
--- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename LevelCurse
local LevelCurseInternal = {
    NONE = 0,
    DARKNESS = getLevelCurse(nil, CurseID.DARKNESS),
    LABYRINTH = getLevelCurse(nil, CurseID.LABYRINTH),
    LOST = getLevelCurse(nil, CurseID.LOST),
    UNKNOWN = getLevelCurse(nil, CurseID.UNKNOWN),
    CURSED = getLevelCurse(nil, CurseID.CURSED),
    MAZE = getLevelCurse(nil, CurseID.MAZE),
    BLIND = getLevelCurse(nil, CurseID.BLIND),
    GIANT = getLevelCurse(nil, CurseID.GIANT)
}
____exports.LevelCurse = LevelCurseInternal
____exports.LevelCurseZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.ProjectileFlag"] = function(...) 
local ____exports = {}
--- For `EntityType.PROJECTILE` (9).
-- 
-- This enum was renamed from "ProjectileFlags" to be consistent with the other flag enums.
-- 
-- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename ProjectileFlag
local ProjectileFlagInternal = {
    SMART = 1 << 0,
    EXPLODE = 1 << 1,
    ACID_GREEN = 1 << 2,
    GOO = 1 << 3,
    GHOST = 1 << 4,
    WIGGLE = 1 << 5,
    BOOMERANG = 1 << 6,
    HIT_ENEMIES = 1 << 7,
    ACID_RED = 1 << 8,
    GREED = 1 << 9,
    RED_CREEP = 1 << 10,
    ORBIT_CW = 1 << 11,
    ORBIT_CCW = 1 << 12,
    NO_WALL_COLLIDE = 1 << 13,
    CREEP_BROWN = 1 << 14,
    FIRE = 1 << 15,
    BURST = 1 << 16,
    ANY_HEIGHT_ENTITY_HIT = 1 << 17,
    CURVE_LEFT = 1 << 18,
    CURVE_RIGHT = 1 << 19,
    TURN_HORIZONTAL = 1 << 20,
    SINE_VELOCITY = 1 << 21,
    MEGA_WIGGLE = 1 << 22,
    SAWTOOTH_WIGGLE = 1 << 23,
    SLOWED = 1 << 24,
    TRIANGLE = 1 << 25,
    MOVE_TO_PARENT = 1 << 26,
    ACCELERATE = 1 << 27,
    DECELERATE = 1 << 28,
    BURST3 = 1 << 29,
    CONTINUUM = 1 << 30,
    CANT_HIT_PLAYER = 1 << 31,
    CHANGE_FLAGS_AFTER_TIMEOUT = 1 << 32,
    CHANGE_VELOCITY_AFTER_TIMEOUT = 1 << 33,
    STASIS = 1 << 34,
    FIRE_WAVE = 1 << 35,
    FIRE_WAVE_X = 1 << 36,
    ACCELERATE_EX = 1 << 37,
    BURST8 = 1 << 38,
    FIRE_SPAWN = 1 << 39,
    ANTI_GRAVITY = 1 << 40,
    TRACTOR_BEAM = 1 << 41,
    BOUNCE = 1 << 42,
    BOUNCE_FLOOR = 1 << 43,
    SHIELDED = 1 << 44,
    BLUE_FIRE_SPAWN = 1 << 45,
    LASER_SHOT = 1 << 46,
    GODHEAD = 1 << 47,
    SMART_PERFECT = 1 << 48,
    BURST_SPLIT = 1 << 49,
    WIGGLE_ROTGUT = 1 << 50,
    FREEZE = 1 << 51,
    ACCELERATE_TO_POSITION = 1 << 52,
    BROCCOLI = 1 << 53,
    BACK_SPLIT = 1 << 54,
    SIDE_WAVE = 1 << 55,
    ORBIT_PARENT = 1 << 56,
    FADEOUT = 1 << 57
}
____exports.ProjectileFlag = ProjectileFlagInternal
____exports.ProjectileFlagZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.RoomDescriptorFlag"] = function(...) 
local ____exports = {}
--- Matches the `RoomDescriptor.FLAG_*` members of the `RoomDescriptor` class. In IsaacScript, we
-- reimplement this as an object instead, since it is cleaner.
-- 
-- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename RoomDescriptorFlag
local RoomDescriptorFlagInternal = {
    CLEAR = 1 << 0,
    PRESSURE_PLATES_TRIGGERED = 1 << 1,
    SACRIFICE_DONE = 1 << 2,
    CHALLENGE_DONE = 1 << 3,
    SURPRISE_MINIBOSS = 1 << 4,
    HAS_WATER = 1 << 5,
    ALT_BOSS_MUSIC = 1 << 6,
    NO_REWARD = 1 << 7,
    FLOODED = 1 << 8,
    PITCH_BLACK = 1 << 9,
    RED_ROOM = 1 << 10,
    DEVIL_TREASURE = 1 << 11,
    USE_ALTERNATE_BACKDROP = 1 << 12,
    CURSED_MIST = 1 << 13,
    MAMA_MEGA = 1 << 14,
    NO_WALLS = 1 << 15,
    ROTGUT_CLEARED = 1 << 16,
    PORTAL_LINKED = 1 << 17,
    BLUE_REDIRECT = 1 << 18
}
____exports.RoomDescriptorFlag = RoomDescriptorFlagInternal
____exports.RoomDescriptorFlagZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.TargetFlag"] = function(...) 
local ____exports = {}
--- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename TargetFlag
local TargetFlagInternal = {
    ALLOW_SWITCHING = 1 << 0,
    DONT_PRIORITIZE_ENEMIES_CLOSE_TO_PLAYER = 1 << 1,
    PRIORITIZE_ENEMIES_WITH_HIGH_HP = 1 << 2,
    PRIORITIZE_ENEMIES_WITH_LOW_HP = 1 << 3,
    GIVE_LOWER_PRIORITY_TO_CURRENT_TARGET = 1 << 4
}
____exports.TargetFlag = TargetFlagInternal
____exports.TargetFlagZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.TearFlag"] = function(...) 
local ____exports = {}
local getTearFlag
function getTearFlag(self, shift)
    return shift >= 64 and BitSet128(0, 1 << shift - 64) or BitSet128(1 << shift, 0)
end
--- For `EntityType.TEAR` (2).
-- 
-- This enum was renamed from "TearFlags" to be consistent with the other flag enums.
-- 
-- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type. Furthermore, enums cannot be instantiated
-- with `BitSet128` objects.)
-- 
-- Generally, the `TearVariant` affects the graphics of the tear, while the `TearFlag` affects the
-- gameplay mechanic. For example, the Euthanasia collectible grants a chance for needle tears that
-- explode. `TearVariant.NEEDLE` makes the tear look like a needle, and the exploding effect comes
-- from `TearFlag.NEEDLE`.
-- 
-- However, there are some exceptions. For example, Sharp Key makes Isaac shoot key tears that deal
-- extra damage. Both the graphical effect and the extra damage are granted by
-- `TearVariant.KEY_BLOOD`.
-- 
-- @enum
-- @notExported
-- @rename TearFlag
local TearFlagInternal = {
    NORMAL = BitSet128(0, 0),
    SPECTRAL = getTearFlag(nil, 0),
    PIERCING = getTearFlag(nil, 1),
    HOMING = getTearFlag(nil, 2),
    SLOW = getTearFlag(nil, 3),
    POISON = getTearFlag(nil, 4),
    FREEZE = getTearFlag(nil, 5),
    SPLIT = getTearFlag(nil, 6),
    GROW = getTearFlag(nil, 7),
    BOOMERANG = getTearFlag(nil, 8),
    PERSISTENT = getTearFlag(nil, 9),
    WIGGLE = getTearFlag(nil, 10),
    MULLIGAN = getTearFlag(nil, 11),
    EXPLOSIVE = getTearFlag(nil, 12),
    CHARM = getTearFlag(nil, 13),
    CONFUSION = getTearFlag(nil, 14),
    HP_DROP = getTearFlag(nil, 15),
    ORBIT = getTearFlag(nil, 16),
    WAIT = getTearFlag(nil, 17),
    QUAD_SPLIT = getTearFlag(nil, 18),
    BOUNCE = getTearFlag(nil, 19),
    FEAR = getTearFlag(nil, 20),
    SHRINK = getTearFlag(nil, 21),
    BURN = getTearFlag(nil, 22),
    ATTRACTOR = getTearFlag(nil, 23),
    KNOCKBACK = getTearFlag(nil, 24),
    PULSE = getTearFlag(nil, 25),
    SPIRAL = getTearFlag(nil, 26),
    FLAT = getTearFlag(nil, 27),
    SAD_BOMB = getTearFlag(nil, 28),
    BUTT_BOMB = getTearFlag(nil, 29),
    SQUARE = getTearFlag(nil, 30),
    GLOW = getTearFlag(nil, 31),
    GISH = getTearFlag(nil, 32),
    MYSTERIOUS_LIQUID_CREEP = getTearFlag(nil, 33),
    SHIELDED = getTearFlag(nil, 34),
    GLITTER_BOMB = getTearFlag(nil, 35),
    SCATTER_BOMB = getTearFlag(nil, 36),
    STICKY = getTearFlag(nil, 37),
    CONTINUUM = getTearFlag(nil, 38),
    LIGHT_FROM_HEAVEN = getTearFlag(nil, 39),
    COIN_DROP = getTearFlag(nil, 40),
    BLACK_HP_DROP = getTearFlag(nil, 41),
    TRACTOR_BEAM = getTearFlag(nil, 42),
    GODS_FLESH = getTearFlag(nil, 43),
    GREED_COIN = getTearFlag(nil, 44),
    CROSS_BOMB = getTearFlag(nil, 45),
    BIG_SPIRAL = getTearFlag(nil, 46),
    PERMANENT_CONFUSION = getTearFlag(nil, 47),
    BOOGER = getTearFlag(nil, 48),
    EGG = getTearFlag(nil, 49),
    ACID = getTearFlag(nil, 50),
    BONE = getTearFlag(nil, 51),
    BELIAL = getTearFlag(nil, 52),
    MIDAS = getTearFlag(nil, 53),
    NEEDLE = getTearFlag(nil, 54),
    JACOBS = getTearFlag(nil, 55),
    HORN = getTearFlag(nil, 56),
    LASER = getTearFlag(nil, 57),
    POP = getTearFlag(nil, 58),
    ABSORB = getTearFlag(nil, 59),
    LASER_SHOT = getTearFlag(nil, 60),
    HYDRO_BOUNCE = getTearFlag(nil, 61),
    BURST_SPLIT = getTearFlag(nil, 62),
    CREEP_TRAIL = getTearFlag(nil, 63),
    PUNCH = getTearFlag(nil, 64),
    ICE = getTearFlag(nil, 65),
    MAGNETIZE = getTearFlag(nil, 66),
    BAIT = getTearFlag(nil, 67),
    OCCULT = getTearFlag(nil, 68),
    ORBIT_ADVANCED = getTearFlag(nil, 69),
    ROCK = getTearFlag(nil, 70),
    TURN_HORIZONTAL = getTearFlag(nil, 71),
    BLOOD_BOMB = getTearFlag(nil, 72),
    ECOLI = getTearFlag(nil, 73),
    COIN_DROP_DEATH = getTearFlag(nil, 74),
    BRIMSTONE_BOMB = getTearFlag(nil, 75),
    RIFT = getTearFlag(nil, 76),
    SPORE = getTearFlag(nil, 77),
    GHOST_BOMB = getTearFlag(nil, 78),
    CARD_DROP_DEATH = getTearFlag(nil, 79),
    RUNE_DROP_DEATH = getTearFlag(nil, 80),
    TELEPORT = getTearFlag(nil, 81),
    SHORT_RANGE = getTearFlag(nil, 82),
    REROLL_ROCK_WISP = getTearFlag(nil, 115),
    MOM_STOMP_WISP = getTearFlag(nil, 116),
    ENEMY_TO_WISP = getTearFlag(nil, 117),
    REROLL_ENEMY = getTearFlag(nil, 118),
    GIGA_BOMB = getTearFlag(nil, 119),
    EXTRA_GORE = getTearFlag(nil, 120),
    RAINBOW = getTearFlag(nil, 121),
    DETONATE = getTearFlag(nil, 122),
    CHAIN = getTearFlag(nil, 123),
    DARK_MATTER = getTearFlag(nil, 124),
    GOLDEN_BOMB = getTearFlag(nil, 125),
    FAST_BOMB = getTearFlag(nil, 126),
    LUDOVICO = getTearFlag(nil, 127)
}
____exports.TearFlag = TearFlagInternal
____exports.TearFlagZero = ____exports.TearFlag.NORMAL
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.flags.UseFlag"] = function(...) 
local ____exports = {}
--- This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
-- want this type to be a child of the `BitFlag` type.)
-- 
-- @enum
-- @notExported
-- @rename UseFlag
local UseFlagInternal = {
    NO_ANIMATION = 1 << 0,
    NO_COSTUME = 1 << 1,
    OWNED = 1 << 2,
    ALLOW_NON_MAIN_PLAYERS = 1 << 3,
    REMOVE_ACTIVE = 1 << 4,
    CAR_BATTERY = 1 << 5,
    VOID = 1 << 6,
    MIMIC = 1 << 7,
    NO_ANNOUNCER_VOICE = 1 << 8,
    ALLOW_WISP_SPAWN = 1 << 9,
    CUSTOM_VARDATA = 1 << 10,
    NO_HUD = 1 << 11
}
____exports.UseFlag = UseFlagInternal
____exports.UseFlagZero = 0
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.GameStateFlag"] = function(...) 
local ____exports = {}
--- Used with the `Game.GetStateFlag` and `Game.SetStateFlag` methods.
____exports.GameStateFlag = {}
____exports.GameStateFlag.FAMINE_SPAWNED = 0
____exports.GameStateFlag[____exports.GameStateFlag.FAMINE_SPAWNED] = "FAMINE_SPAWNED"
____exports.GameStateFlag.PESTILENCE_SPAWNED = 1
____exports.GameStateFlag[____exports.GameStateFlag.PESTILENCE_SPAWNED] = "PESTILENCE_SPAWNED"
____exports.GameStateFlag.WAR_SPAWNED = 2
____exports.GameStateFlag[____exports.GameStateFlag.WAR_SPAWNED] = "WAR_SPAWNED"
____exports.GameStateFlag.DEATH_SPAWNED = 3
____exports.GameStateFlag[____exports.GameStateFlag.DEATH_SPAWNED] = "DEATH_SPAWNED"
____exports.GameStateFlag.BOSS_POOL_SWITCHED = 4
____exports.GameStateFlag[____exports.GameStateFlag.BOSS_POOL_SWITCHED] = "BOSS_POOL_SWITCHED"
____exports.GameStateFlag.DEVIL_ROOM_SPAWNED = 5
____exports.GameStateFlag[____exports.GameStateFlag.DEVIL_ROOM_SPAWNED] = "DEVIL_ROOM_SPAWNED"
____exports.GameStateFlag.DEVIL_ROOM_VISITED = 6
____exports.GameStateFlag[____exports.GameStateFlag.DEVIL_ROOM_VISITED] = "DEVIL_ROOM_VISITED"
____exports.GameStateFlag.BOOK_REVELATIONS_USED = 7
____exports.GameStateFlag[____exports.GameStateFlag.BOOK_REVELATIONS_USED] = "BOOK_REVELATIONS_USED"
____exports.GameStateFlag.BOOK_PICKED_UP = 8
____exports.GameStateFlag[____exports.GameStateFlag.BOOK_PICKED_UP] = "BOOK_PICKED_UP"
____exports.GameStateFlag.WRATH_SPAWNED = 9
____exports.GameStateFlag[____exports.GameStateFlag.WRATH_SPAWNED] = "WRATH_SPAWNED"
____exports.GameStateFlag.GLUTTONY_SPAWNED = 10
____exports.GameStateFlag[____exports.GameStateFlag.GLUTTONY_SPAWNED] = "GLUTTONY_SPAWNED"
____exports.GameStateFlag.LUST_SPAWNED = 11
____exports.GameStateFlag[____exports.GameStateFlag.LUST_SPAWNED] = "LUST_SPAWNED"
____exports.GameStateFlag.SLOTH_SPAWNED = 12
____exports.GameStateFlag[____exports.GameStateFlag.SLOTH_SPAWNED] = "SLOTH_SPAWNED"
____exports.GameStateFlag.ENVY_SPAWNED = 13
____exports.GameStateFlag[____exports.GameStateFlag.ENVY_SPAWNED] = "ENVY_SPAWNED"
____exports.GameStateFlag.PRIDE_SPAWNED = 14
____exports.GameStateFlag[____exports.GameStateFlag.PRIDE_SPAWNED] = "PRIDE_SPAWNED"
____exports.GameStateFlag.GREED_SPAWNED = 15
____exports.GameStateFlag[____exports.GameStateFlag.GREED_SPAWNED] = "GREED_SPAWNED"
____exports.GameStateFlag.SUPER_GREED_SPAWNED = 16
____exports.GameStateFlag[____exports.GameStateFlag.SUPER_GREED_SPAWNED] = "SUPER_GREED_SPAWNED"
____exports.GameStateFlag.DONATION_SLOT_BROKEN = 17
____exports.GameStateFlag[____exports.GameStateFlag.DONATION_SLOT_BROKEN] = "DONATION_SLOT_BROKEN"
____exports.GameStateFlag.DONATION_SLOT_JAMMED = 18
____exports.GameStateFlag[____exports.GameStateFlag.DONATION_SLOT_JAMMED] = "DONATION_SLOT_JAMMED"
____exports.GameStateFlag.HEAVEN_PATH = 19
____exports.GameStateFlag[____exports.GameStateFlag.HEAVEN_PATH] = "HEAVEN_PATH"
____exports.GameStateFlag.REBIRTH_BOSS_SWITCHED = 20
____exports.GameStateFlag[____exports.GameStateFlag.REBIRTH_BOSS_SWITCHED] = "REBIRTH_BOSS_SWITCHED"
____exports.GameStateFlag.HAUNT_SELECTED = 21
____exports.GameStateFlag[____exports.GameStateFlag.HAUNT_SELECTED] = "HAUNT_SELECTED"
____exports.GameStateFlag.ADVERSARY_SELECTED = 22
____exports.GameStateFlag[____exports.GameStateFlag.ADVERSARY_SELECTED] = "ADVERSARY_SELECTED"
____exports.GameStateFlag.MR_FRED_SELECTED = 23
____exports.GameStateFlag[____exports.GameStateFlag.MR_FRED_SELECTED] = "MR_FRED_SELECTED"
____exports.GameStateFlag.MAMA_GURDY_SELECTED = 24
____exports.GameStateFlag[____exports.GameStateFlag.MAMA_GURDY_SELECTED] = "MAMA_GURDY_SELECTED"
____exports.GameStateFlag.URIEL_SPAWNED = 25
____exports.GameStateFlag[____exports.GameStateFlag.URIEL_SPAWNED] = "URIEL_SPAWNED"
____exports.GameStateFlag.GABRIEL_SPAWNED = 26
____exports.GameStateFlag[____exports.GameStateFlag.GABRIEL_SPAWNED] = "GABRIEL_SPAWNED"
____exports.GameStateFlag.FALLEN_SPAWNED = 27
____exports.GameStateFlag[____exports.GameStateFlag.FALLEN_SPAWNED] = "FALLEN_SPAWNED"
____exports.GameStateFlag.HEADLESS_HORSEMAN_SPAWNED = 28
____exports.GameStateFlag[____exports.GameStateFlag.HEADLESS_HORSEMAN_SPAWNED] = "HEADLESS_HORSEMAN_SPAWNED"
____exports.GameStateFlag.KRAMPUS_SPAWNED = 29
____exports.GameStateFlag[____exports.GameStateFlag.KRAMPUS_SPAWNED] = "KRAMPUS_SPAWNED"
____exports.GameStateFlag.DONATION_SLOT_BLOWN = 30
____exports.GameStateFlag[____exports.GameStateFlag.DONATION_SLOT_BLOWN] = "DONATION_SLOT_BLOWN"
____exports.GameStateFlag.SHOPKEEPER_KILLED = 31
____exports.GameStateFlag[____exports.GameStateFlag.SHOPKEEPER_KILLED] = "SHOPKEEPER_KILLED"
____exports.GameStateFlag.ULTRA_PRIDE_SPAWNED = 32
____exports.GameStateFlag[____exports.GameStateFlag.ULTRA_PRIDE_SPAWNED] = "ULTRA_PRIDE_SPAWNED"
____exports.GameStateFlag.BOSS_RUSH_DONE = 33
____exports.GameStateFlag[____exports.GameStateFlag.BOSS_RUSH_DONE] = "BOSS_RUSH_DONE"
____exports.GameStateFlag.GREED_SLOT_JAMMED = 34
____exports.GameStateFlag[____exports.GameStateFlag.GREED_SLOT_JAMMED] = "GREED_SLOT_JAMMED"
____exports.GameStateFlag.AFTERBIRTH_BOSS_SWITCHED = 35
____exports.GameStateFlag[____exports.GameStateFlag.AFTERBIRTH_BOSS_SWITCHED] = "AFTERBIRTH_BOSS_SWITCHED"
____exports.GameStateFlag.BROWNIE_SELECTED = 36
____exports.GameStateFlag[____exports.GameStateFlag.BROWNIE_SELECTED] = "BROWNIE_SELECTED"
____exports.GameStateFlag.SUPER_BUM_APPEARED = 37
____exports.GameStateFlag[____exports.GameStateFlag.SUPER_BUM_APPEARED] = "SUPER_BUM_APPEARED"
____exports.GameStateFlag.BOSS_RUSH_DOOR_SPAWNED = 38
____exports.GameStateFlag[____exports.GameStateFlag.BOSS_RUSH_DOOR_SPAWNED] = "BOSS_RUSH_DOOR_SPAWNED"
____exports.GameStateFlag.BLUE_WOMB_DOOR_SPAWNED = 39
____exports.GameStateFlag[____exports.GameStateFlag.BLUE_WOMB_DOOR_SPAWNED] = "BLUE_WOMB_DOOR_SPAWNED"
____exports.GameStateFlag.BLUE_WOMB_DONE = 40
____exports.GameStateFlag[____exports.GameStateFlag.BLUE_WOMB_DONE] = "BLUE_WOMB_DONE"
____exports.GameStateFlag.HEART_BOMB_COIN_PICKED = 41
____exports.GameStateFlag[____exports.GameStateFlag.HEART_BOMB_COIN_PICKED] = "HEART_BOMB_COIN_PICKED"
____exports.GameStateFlag.AFTERBIRTH_PLUS_BOSS_SWITCHED = 42
____exports.GameStateFlag[____exports.GameStateFlag.AFTERBIRTH_PLUS_BOSS_SWITCHED] = "AFTERBIRTH_PLUS_BOSS_SWITCHED"
____exports.GameStateFlag.MAX_COINS_OBTAINED = 43
____exports.GameStateFlag[____exports.GameStateFlag.MAX_COINS_OBTAINED] = "MAX_COINS_OBTAINED"
____exports.GameStateFlag.SECRET_PATH = 44
____exports.GameStateFlag[____exports.GameStateFlag.SECRET_PATH] = "SECRET_PATH"
____exports.GameStateFlag.PERFECTION_SPAWNED = 45
____exports.GameStateFlag[____exports.GameStateFlag.PERFECTION_SPAWNED] = "PERFECTION_SPAWNED"
____exports.GameStateFlag.MAUSOLEUM_HEART_KILLED = 46
____exports.GameStateFlag[____exports.GameStateFlag.MAUSOLEUM_HEART_KILLED] = "MAUSOLEUM_HEART_KILLED"
____exports.GameStateFlag.BACKWARDS_PATH_INIT = 47
____exports.GameStateFlag[____exports.GameStateFlag.BACKWARDS_PATH_INIT] = "BACKWARDS_PATH_INIT"
____exports.GameStateFlag.BACKWARDS_PATH = 48
____exports.GameStateFlag[____exports.GameStateFlag.BACKWARDS_PATH] = "BACKWARDS_PATH"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.GridCollisionClass"] = function(...) 
local ____exports = {}
____exports.GridCollisionClass = {}
____exports.GridCollisionClass.NONE = 0
____exports.GridCollisionClass[____exports.GridCollisionClass.NONE] = "NONE"
____exports.GridCollisionClass.PIT = 1
____exports.GridCollisionClass[____exports.GridCollisionClass.PIT] = "PIT"
____exports.GridCollisionClass.OBJECT = 2
____exports.GridCollisionClass[____exports.GridCollisionClass.OBJECT] = "OBJECT"
____exports.GridCollisionClass.SOLID = 3
____exports.GridCollisionClass[____exports.GridCollisionClass.SOLID] = "SOLID"
____exports.GridCollisionClass.WALL = 4
____exports.GridCollisionClass[____exports.GridCollisionClass.WALL] = "WALL"
____exports.GridCollisionClass.WALL_EXCEPT_PLAYER = 5
____exports.GridCollisionClass[____exports.GridCollisionClass.WALL_EXCEPT_PLAYER] = "WALL_EXCEPT_PLAYER"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.GridEntityType"] = function(...) 
local ____exports = {}
____exports.GridEntityType = {}
____exports.GridEntityType.NULL = 0
____exports.GridEntityType[____exports.GridEntityType.NULL] = "NULL"
____exports.GridEntityType.DECORATION = 1
____exports.GridEntityType[____exports.GridEntityType.DECORATION] = "DECORATION"
____exports.GridEntityType.ROCK = 2
____exports.GridEntityType[____exports.GridEntityType.ROCK] = "ROCK"
____exports.GridEntityType.BLOCK = 3
____exports.GridEntityType[____exports.GridEntityType.BLOCK] = "BLOCK"
____exports.GridEntityType.ROCK_TINTED = 4
____exports.GridEntityType[____exports.GridEntityType.ROCK_TINTED] = "ROCK_TINTED"
____exports.GridEntityType.ROCK_BOMB = 5
____exports.GridEntityType[____exports.GridEntityType.ROCK_BOMB] = "ROCK_BOMB"
____exports.GridEntityType.ROCK_ALT = 6
____exports.GridEntityType[____exports.GridEntityType.ROCK_ALT] = "ROCK_ALT"
____exports.GridEntityType.PIT = 7
____exports.GridEntityType[____exports.GridEntityType.PIT] = "PIT"
____exports.GridEntityType.SPIKES = 8
____exports.GridEntityType[____exports.GridEntityType.SPIKES] = "SPIKES"
____exports.GridEntityType.SPIKES_ON_OFF = 9
____exports.GridEntityType[____exports.GridEntityType.SPIKES_ON_OFF] = "SPIKES_ON_OFF"
____exports.GridEntityType.SPIDER_WEB = 10
____exports.GridEntityType[____exports.GridEntityType.SPIDER_WEB] = "SPIDER_WEB"
____exports.GridEntityType.LOCK = 11
____exports.GridEntityType[____exports.GridEntityType.LOCK] = "LOCK"
____exports.GridEntityType.TNT = 12
____exports.GridEntityType[____exports.GridEntityType.TNT] = "TNT"
____exports.GridEntityType.FIREPLACE = 13
____exports.GridEntityType[____exports.GridEntityType.FIREPLACE] = "FIREPLACE"
____exports.GridEntityType.POOP = 14
____exports.GridEntityType[____exports.GridEntityType.POOP] = "POOP"
____exports.GridEntityType.WALL = 15
____exports.GridEntityType[____exports.GridEntityType.WALL] = "WALL"
____exports.GridEntityType.DOOR = 16
____exports.GridEntityType[____exports.GridEntityType.DOOR] = "DOOR"
____exports.GridEntityType.TRAPDOOR = 17
____exports.GridEntityType[____exports.GridEntityType.TRAPDOOR] = "TRAPDOOR"
____exports.GridEntityType.CRAWL_SPACE = 18
____exports.GridEntityType[____exports.GridEntityType.CRAWL_SPACE] = "CRAWL_SPACE"
____exports.GridEntityType.GRAVITY = 19
____exports.GridEntityType[____exports.GridEntityType.GRAVITY] = "GRAVITY"
____exports.GridEntityType.PRESSURE_PLATE = 20
____exports.GridEntityType[____exports.GridEntityType.PRESSURE_PLATE] = "PRESSURE_PLATE"
____exports.GridEntityType.STATUE = 21
____exports.GridEntityType[____exports.GridEntityType.STATUE] = "STATUE"
____exports.GridEntityType.ROCK_SUPER_SPECIAL = 22
____exports.GridEntityType[____exports.GridEntityType.ROCK_SUPER_SPECIAL] = "ROCK_SUPER_SPECIAL"
____exports.GridEntityType.TELEPORTER = 23
____exports.GridEntityType[____exports.GridEntityType.TELEPORTER] = "TELEPORTER"
____exports.GridEntityType.PILLAR = 24
____exports.GridEntityType[____exports.GridEntityType.PILLAR] = "PILLAR"
____exports.GridEntityType.ROCK_SPIKED = 25
____exports.GridEntityType[____exports.GridEntityType.ROCK_SPIKED] = "ROCK_SPIKED"
____exports.GridEntityType.ROCK_ALT_2 = 26
____exports.GridEntityType[____exports.GridEntityType.ROCK_ALT_2] = "ROCK_ALT_2"
____exports.GridEntityType.ROCK_GOLD = 27
____exports.GridEntityType[____exports.GridEntityType.ROCK_GOLD] = "ROCK_GOLD"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.GridEntityXMLType"] = function(...) 
local ____exports = {}
--- The type of a grid entity as represented in a room XML/STB file.
-- 
-- This is converted by the game to the GridEntityType enum.
-- 
-- The `gridspawn` console command accepts `GridEntityXMLType` instead of `GridEntityType`.
____exports.GridEntityXMLType = {}
____exports.GridEntityXMLType.DECORATION = 0
____exports.GridEntityXMLType[____exports.GridEntityXMLType.DECORATION] = "DECORATION"
____exports.GridEntityXMLType.ROCK = 1000
____exports.GridEntityXMLType[____exports.GridEntityXMLType.ROCK] = "ROCK"
____exports.GridEntityXMLType.ROCK_BOMB = 1001
____exports.GridEntityXMLType[____exports.GridEntityXMLType.ROCK_BOMB] = "ROCK_BOMB"
____exports.GridEntityXMLType.ROCK_ALT = 1002
____exports.GridEntityXMLType[____exports.GridEntityXMLType.ROCK_ALT] = "ROCK_ALT"
____exports.GridEntityXMLType.ROCK_TINTED = 1003
____exports.GridEntityXMLType[____exports.GridEntityXMLType.ROCK_TINTED] = "ROCK_TINTED"
____exports.GridEntityXMLType.ROCK_ALT_2 = 1008
____exports.GridEntityXMLType[____exports.GridEntityXMLType.ROCK_ALT_2] = "ROCK_ALT_2"
____exports.GridEntityXMLType.ROCK_EVENT = 1009
____exports.GridEntityXMLType[____exports.GridEntityXMLType.ROCK_EVENT] = "ROCK_EVENT"
____exports.GridEntityXMLType.ROCK_SPIKED = 1010
____exports.GridEntityXMLType[____exports.GridEntityXMLType.ROCK_SPIKED] = "ROCK_SPIKED"
____exports.GridEntityXMLType.ROCK_GOLD = 1011
____exports.GridEntityXMLType[____exports.GridEntityXMLType.ROCK_GOLD] = "ROCK_GOLD"
____exports.GridEntityXMLType.TNT = 1300
____exports.GridEntityXMLType[____exports.GridEntityXMLType.TNT] = "TNT"
____exports.GridEntityXMLType.FIREPLACE = 1400
____exports.GridEntityXMLType[____exports.GridEntityXMLType.FIREPLACE] = "FIREPLACE"
____exports.GridEntityXMLType.RED_FIREPLACE = 1410
____exports.GridEntityXMLType[____exports.GridEntityXMLType.RED_FIREPLACE] = "RED_FIREPLACE"
____exports.GridEntityXMLType.POOP_RED = 1490
____exports.GridEntityXMLType[____exports.GridEntityXMLType.POOP_RED] = "POOP_RED"
____exports.GridEntityXMLType.POOP_RAINBOW = 1494
____exports.GridEntityXMLType[____exports.GridEntityXMLType.POOP_RAINBOW] = "POOP_RAINBOW"
____exports.GridEntityXMLType.POOP_CORN = 1495
____exports.GridEntityXMLType[____exports.GridEntityXMLType.POOP_CORN] = "POOP_CORN"
____exports.GridEntityXMLType.POOP_GOLDEN = 1496
____exports.GridEntityXMLType[____exports.GridEntityXMLType.POOP_GOLDEN] = "POOP_GOLDEN"
____exports.GridEntityXMLType.POOP_BLACK = 1497
____exports.GridEntityXMLType[____exports.GridEntityXMLType.POOP_BLACK] = "POOP_BLACK"
____exports.GridEntityXMLType.POOP_WHITE = 1498
____exports.GridEntityXMLType[____exports.GridEntityXMLType.POOP_WHITE] = "POOP_WHITE"
____exports.GridEntityXMLType.POOP_GIGA = 1499
____exports.GridEntityXMLType[____exports.GridEntityXMLType.POOP_GIGA] = "POOP_GIGA"
____exports.GridEntityXMLType.POOP = 1500
____exports.GridEntityXMLType[____exports.GridEntityXMLType.POOP] = "POOP"
____exports.GridEntityXMLType.POOP_CHARMING = 1501
____exports.GridEntityXMLType[____exports.GridEntityXMLType.POOP_CHARMING] = "POOP_CHARMING"
____exports.GridEntityXMLType.BLOCK = 1900
____exports.GridEntityXMLType[____exports.GridEntityXMLType.BLOCK] = "BLOCK"
____exports.GridEntityXMLType.PILLAR = 1901
____exports.GridEntityXMLType[____exports.GridEntityXMLType.PILLAR] = "PILLAR"
____exports.GridEntityXMLType.SPIKES = 1930
____exports.GridEntityXMLType[____exports.GridEntityXMLType.SPIKES] = "SPIKES"
____exports.GridEntityXMLType.SPIKES_ON_OFF = 1931
____exports.GridEntityXMLType[____exports.GridEntityXMLType.SPIKES_ON_OFF] = "SPIKES_ON_OFF"
____exports.GridEntityXMLType.SPIDER_WEB = 1940
____exports.GridEntityXMLType[____exports.GridEntityXMLType.SPIDER_WEB] = "SPIDER_WEB"
____exports.GridEntityXMLType.WALL = 1999
____exports.GridEntityXMLType[____exports.GridEntityXMLType.WALL] = "WALL"
____exports.GridEntityXMLType.PIT = 3000
____exports.GridEntityXMLType[____exports.GridEntityXMLType.PIT] = "PIT"
____exports.GridEntityXMLType.FISSURE_SPAWNER = 3001
____exports.GridEntityXMLType[____exports.GridEntityXMLType.FISSURE_SPAWNER] = "FISSURE_SPAWNER"
____exports.GridEntityXMLType.PIT_EVENT = 3009
____exports.GridEntityXMLType[____exports.GridEntityXMLType.PIT_EVENT] = "PIT_EVENT"
____exports.GridEntityXMLType.LOCK = 4000
____exports.GridEntityXMLType[____exports.GridEntityXMLType.LOCK] = "LOCK"
____exports.GridEntityXMLType.PRESSURE_PLATE = 4500
____exports.GridEntityXMLType[____exports.GridEntityXMLType.PRESSURE_PLATE] = "PRESSURE_PLATE"
____exports.GridEntityXMLType.STATUE_DEVIL = 5000
____exports.GridEntityXMLType[____exports.GridEntityXMLType.STATUE_DEVIL] = "STATUE_DEVIL"
____exports.GridEntityXMLType.STATUE_ANGEL = 5001
____exports.GridEntityXMLType[____exports.GridEntityXMLType.STATUE_ANGEL] = "STATUE_ANGEL"
____exports.GridEntityXMLType.TELEPORTER = 6100
____exports.GridEntityXMLType[____exports.GridEntityXMLType.TELEPORTER] = "TELEPORTER"
____exports.GridEntityXMLType.TRAPDOOR = 9000
____exports.GridEntityXMLType[____exports.GridEntityXMLType.TRAPDOOR] = "TRAPDOOR"
____exports.GridEntityXMLType.CRAWL_SPACE = 9100
____exports.GridEntityXMLType[____exports.GridEntityXMLType.CRAWL_SPACE] = "CRAWL_SPACE"
____exports.GridEntityXMLType.GRAVITY = 10000
____exports.GridEntityXMLType[____exports.GridEntityXMLType.GRAVITY] = "GRAVITY"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.GridPath"] = function(...) 
local ____exports = {}
--- GridPath is not an enum, but rather a variable integer that represents the cost it would take for
-- an entity to pass through a grid entity. This enum lists some standard cost values that the
-- vanilla game uses.
____exports.GridPath = {}
____exports.GridPath.NONE = 0
____exports.GridPath[____exports.GridPath.NONE] = "NONE"
____exports.GridPath.WALKED_TILE = 900
____exports.GridPath[____exports.GridPath.WALKED_TILE] = "WALKED_TILE"
____exports.GridPath.FIREPLACE = 950
____exports.GridPath[____exports.GridPath.FIREPLACE] = "FIREPLACE"
____exports.GridPath.ROCK = 1000
____exports.GridPath[____exports.GridPath.ROCK] = "ROCK"
____exports.GridPath.PIT = 3000
____exports.GridPath[____exports.GridPath.PIT] = "PIT"
____exports.GridPath.GRIMACE = 3999
____exports.GridPath[____exports.GridPath.GRIMACE] = "GRIMACE"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.GridRoom"] = function(...) 
local ____exports = {}
____exports.GridRoom = {}
____exports.GridRoom.DEVIL = -1
____exports.GridRoom[____exports.GridRoom.DEVIL] = "DEVIL"
____exports.GridRoom.ERROR = -2
____exports.GridRoom[____exports.GridRoom.ERROR] = "ERROR"
____exports.GridRoom.DEBUG = -3
____exports.GridRoom[____exports.GridRoom.DEBUG] = "DEBUG"
____exports.GridRoom.DUNGEON = -4
____exports.GridRoom[____exports.GridRoom.DUNGEON] = "DUNGEON"
____exports.GridRoom.BOSS_RUSH = -5
____exports.GridRoom[____exports.GridRoom.BOSS_RUSH] = "BOSS_RUSH"
____exports.GridRoom.BLACK_MARKET = -6
____exports.GridRoom[____exports.GridRoom.BLACK_MARKET] = "BLACK_MARKET"
____exports.GridRoom.MEGA_SATAN = -7
____exports.GridRoom[____exports.GridRoom.MEGA_SATAN] = "MEGA_SATAN"
____exports.GridRoom.BLUE_WOMB = -8
____exports.GridRoom[____exports.GridRoom.BLUE_WOMB] = "BLUE_WOMB"
____exports.GridRoom.THE_VOID = -9
____exports.GridRoom[____exports.GridRoom.THE_VOID] = "THE_VOID"
____exports.GridRoom.SECRET_EXIT = -10
____exports.GridRoom[____exports.GridRoom.SECRET_EXIT] = "SECRET_EXIT"
____exports.GridRoom.GIDEON_DUNGEON = -11
____exports.GridRoom[____exports.GridRoom.GIDEON_DUNGEON] = "GIDEON_DUNGEON"
____exports.GridRoom.GENESIS = -12
____exports.GridRoom[____exports.GridRoom.GENESIS] = "GENESIS"
____exports.GridRoom.SECRET_SHOP = -13
____exports.GridRoom[____exports.GridRoom.SECRET_SHOP] = "SECRET_SHOP"
____exports.GridRoom.ROTGUT_DUNGEON_1 = -14
____exports.GridRoom[____exports.GridRoom.ROTGUT_DUNGEON_1] = "ROTGUT_DUNGEON_1"
____exports.GridRoom.ROTGUT_DUNGEON_2 = -15
____exports.GridRoom[____exports.GridRoom.ROTGUT_DUNGEON_2] = "ROTGUT_DUNGEON_2"
____exports.GridRoom.BLUE_ROOM = -16
____exports.GridRoom[____exports.GridRoom.BLUE_ROOM] = "BLUE_ROOM"
____exports.GridRoom.EXTRA_BOSS = -17
____exports.GridRoom[____exports.GridRoom.EXTRA_BOSS] = "EXTRA_BOSS"
____exports.GridRoom.ANGEL_SHOP = -18
____exports.GridRoom[____exports.GridRoom.ANGEL_SHOP] = "ANGEL_SHOP"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.InputHook"] = function(...) 
local ____exports = {}
____exports.InputHook = {}
____exports.InputHook.IS_ACTION_PRESSED = 0
____exports.InputHook[____exports.InputHook.IS_ACTION_PRESSED] = "IS_ACTION_PRESSED"
____exports.InputHook.IS_ACTION_TRIGGERED = 1
____exports.InputHook[____exports.InputHook.IS_ACTION_TRIGGERED] = "IS_ACTION_TRIGGERED"
____exports.InputHook.GET_ACTION_VALUE = 2
____exports.InputHook[____exports.InputHook.GET_ACTION_VALUE] = "GET_ACTION_VALUE"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ItemConfigCardType"] = function(...) 
local ____exports = {}
--- Corresponds to the "type" attribute in the "pocketitems.xml" file.
-- 
-- Matches the `ItemConfig.CARDTYPE_` members of the `ItemConfig` class. In IsaacScript, we
-- reimplement this as an enum instead, since it is cleaner.
-- 
-- Note that this enum is not to be confused with the `CardType` enum; the latter denotes the
-- in-game sub-type of the card, which is completely different.
____exports.ItemConfigCardType = {}
____exports.ItemConfigCardType.NULL = -1
____exports.ItemConfigCardType[____exports.ItemConfigCardType.NULL] = "NULL"
____exports.ItemConfigCardType.TAROT = 0
____exports.ItemConfigCardType[____exports.ItemConfigCardType.TAROT] = "TAROT"
____exports.ItemConfigCardType.SUIT = 1
____exports.ItemConfigCardType[____exports.ItemConfigCardType.SUIT] = "SUIT"
____exports.ItemConfigCardType.RUNE = 2
____exports.ItemConfigCardType[____exports.ItemConfigCardType.RUNE] = "RUNE"
____exports.ItemConfigCardType.SPECIAL = 3
____exports.ItemConfigCardType[____exports.ItemConfigCardType.SPECIAL] = "SPECIAL"
____exports.ItemConfigCardType.SPECIAL_OBJECT = 4
____exports.ItemConfigCardType[____exports.ItemConfigCardType.SPECIAL_OBJECT] = "SPECIAL_OBJECT"
____exports.ItemConfigCardType.TAROT_REVERSE = 5
____exports.ItemConfigCardType[____exports.ItemConfigCardType.TAROT_REVERSE] = "TAROT_REVERSE"
____exports.ItemConfigCardType.MODDED = 7
____exports.ItemConfigCardType[____exports.ItemConfigCardType.MODDED] = "MODDED"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ItemConfigChargeType"] = function(...) 
local ____exports = {}
--- Matches the `ItemConfig.CHARGE_` members of the `ItemConfig` class. In IsaacScript, we
-- reimplement this as an enum instead, since it is cleaner.
____exports.ItemConfigChargeType = {}
____exports.ItemConfigChargeType.NORMAL = 0
____exports.ItemConfigChargeType[____exports.ItemConfigChargeType.NORMAL] = "NORMAL"
____exports.ItemConfigChargeType.TIMED = 1
____exports.ItemConfigChargeType[____exports.ItemConfigChargeType.TIMED] = "TIMED"
____exports.ItemConfigChargeType.SPECIAL = 2
____exports.ItemConfigChargeType[____exports.ItemConfigChargeType.SPECIAL] = "SPECIAL"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ItemConfigPillEffectClass"] = function(...) 
local ____exports = {}
--- This corresponds to the number in the "class" tag in the "pocketitems.xml" file. The "+" or "-"
-- part of the tag is contained within the `ItemConfigPillEffectType` enum.
____exports.ItemConfigPillEffectClass = {}
____exports.ItemConfigPillEffectClass.NULL = -1
____exports.ItemConfigPillEffectClass[____exports.ItemConfigPillEffectClass.NULL] = "NULL"
____exports.ItemConfigPillEffectClass.JOKE = 0
____exports.ItemConfigPillEffectClass[____exports.ItemConfigPillEffectClass.JOKE] = "JOKE"
____exports.ItemConfigPillEffectClass.MINOR = 1
____exports.ItemConfigPillEffectClass[____exports.ItemConfigPillEffectClass.MINOR] = "MINOR"
____exports.ItemConfigPillEffectClass.MEDIUM = 2
____exports.ItemConfigPillEffectClass[____exports.ItemConfigPillEffectClass.MEDIUM] = "MEDIUM"
____exports.ItemConfigPillEffectClass.MAJOR = 3
____exports.ItemConfigPillEffectClass[____exports.ItemConfigPillEffectClass.MAJOR] = "MAJOR"
____exports.ItemConfigPillEffectClass.MODDED = 4
____exports.ItemConfigPillEffectClass[____exports.ItemConfigPillEffectClass.MODDED] = "MODDED"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ItemConfigPillEffectType"] = function(...) 
local ____exports = {}
--- This corresponds to the suffix of the "class" tag in the "pocketitems.xml" file. "+" is equal to
-- `POSITIVE`, "-" is equal to `NEGATIVE`, and no suffix is equal to `NEUTRAL`.
____exports.ItemConfigPillEffectType = {}
____exports.ItemConfigPillEffectType.NULL = -1
____exports.ItemConfigPillEffectType[____exports.ItemConfigPillEffectType.NULL] = "NULL"
____exports.ItemConfigPillEffectType.POSITIVE = 0
____exports.ItemConfigPillEffectType[____exports.ItemConfigPillEffectType.POSITIVE] = "POSITIVE"
____exports.ItemConfigPillEffectType.NEGATIVE = 1
____exports.ItemConfigPillEffectType[____exports.ItemConfigPillEffectType.NEGATIVE] = "NEGATIVE"
____exports.ItemConfigPillEffectType.NEUTRAL = 2
____exports.ItemConfigPillEffectType[____exports.ItemConfigPillEffectType.NEUTRAL] = "NEUTRAL"
____exports.ItemConfigPillEffectType.MODDED = 3
____exports.ItemConfigPillEffectType[____exports.ItemConfigPillEffectType.MODDED] = "MODDED"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ItemPoolType"] = function(...) 
local ____exports = {}
____exports.ItemPoolType = {}
____exports.ItemPoolType.TREASURE = 0
____exports.ItemPoolType[____exports.ItemPoolType.TREASURE] = "TREASURE"
____exports.ItemPoolType.SHOP = 1
____exports.ItemPoolType[____exports.ItemPoolType.SHOP] = "SHOP"
____exports.ItemPoolType.BOSS = 2
____exports.ItemPoolType[____exports.ItemPoolType.BOSS] = "BOSS"
____exports.ItemPoolType.DEVIL = 3
____exports.ItemPoolType[____exports.ItemPoolType.DEVIL] = "DEVIL"
____exports.ItemPoolType.ANGEL = 4
____exports.ItemPoolType[____exports.ItemPoolType.ANGEL] = "ANGEL"
____exports.ItemPoolType.SECRET = 5
____exports.ItemPoolType[____exports.ItemPoolType.SECRET] = "SECRET"
____exports.ItemPoolType.LIBRARY = 6
____exports.ItemPoolType[____exports.ItemPoolType.LIBRARY] = "LIBRARY"
____exports.ItemPoolType.SHELL_GAME = 7
____exports.ItemPoolType[____exports.ItemPoolType.SHELL_GAME] = "SHELL_GAME"
____exports.ItemPoolType.GOLDEN_CHEST = 8
____exports.ItemPoolType[____exports.ItemPoolType.GOLDEN_CHEST] = "GOLDEN_CHEST"
____exports.ItemPoolType.RED_CHEST = 9
____exports.ItemPoolType[____exports.ItemPoolType.RED_CHEST] = "RED_CHEST"
____exports.ItemPoolType.BEGGAR = 10
____exports.ItemPoolType[____exports.ItemPoolType.BEGGAR] = "BEGGAR"
____exports.ItemPoolType.DEMON_BEGGAR = 11
____exports.ItemPoolType[____exports.ItemPoolType.DEMON_BEGGAR] = "DEMON_BEGGAR"
____exports.ItemPoolType.CURSE = 12
____exports.ItemPoolType[____exports.ItemPoolType.CURSE] = "CURSE"
____exports.ItemPoolType.KEY_MASTER = 13
____exports.ItemPoolType[____exports.ItemPoolType.KEY_MASTER] = "KEY_MASTER"
____exports.ItemPoolType.BATTERY_BUM = 14
____exports.ItemPoolType[____exports.ItemPoolType.BATTERY_BUM] = "BATTERY_BUM"
____exports.ItemPoolType.MOMS_CHEST = 15
____exports.ItemPoolType[____exports.ItemPoolType.MOMS_CHEST] = "MOMS_CHEST"
____exports.ItemPoolType.GREED_TREASURE = 16
____exports.ItemPoolType[____exports.ItemPoolType.GREED_TREASURE] = "GREED_TREASURE"
____exports.ItemPoolType.GREED_BOSS = 17
____exports.ItemPoolType[____exports.ItemPoolType.GREED_BOSS] = "GREED_BOSS"
____exports.ItemPoolType.GREED_SHOP = 18
____exports.ItemPoolType[____exports.ItemPoolType.GREED_SHOP] = "GREED_SHOP"
____exports.ItemPoolType.GREED_DEVIL = 19
____exports.ItemPoolType[____exports.ItemPoolType.GREED_DEVIL] = "GREED_DEVIL"
____exports.ItemPoolType.GREED_ANGEL = 20
____exports.ItemPoolType[____exports.ItemPoolType.GREED_ANGEL] = "GREED_ANGEL"
____exports.ItemPoolType.GREED_CURSE = 21
____exports.ItemPoolType[____exports.ItemPoolType.GREED_CURSE] = "GREED_CURSE"
____exports.ItemPoolType.GREED_SECRET = 22
____exports.ItemPoolType[____exports.ItemPoolType.GREED_SECRET] = "GREED_SECRET"
____exports.ItemPoolType.CRANE_GAME = 23
____exports.ItemPoolType[____exports.ItemPoolType.CRANE_GAME] = "CRANE_GAME"
____exports.ItemPoolType.ULTRA_SECRET = 24
____exports.ItemPoolType[____exports.ItemPoolType.ULTRA_SECRET] = "ULTRA_SECRET"
____exports.ItemPoolType.BOMB_BUM = 25
____exports.ItemPoolType[____exports.ItemPoolType.BOMB_BUM] = "BOMB_BUM"
____exports.ItemPoolType.PLANETARIUM = 26
____exports.ItemPoolType[____exports.ItemPoolType.PLANETARIUM] = "PLANETARIUM"
____exports.ItemPoolType.OLD_CHEST = 27
____exports.ItemPoolType[____exports.ItemPoolType.OLD_CHEST] = "OLD_CHEST"
____exports.ItemPoolType.BABY_SHOP = 28
____exports.ItemPoolType[____exports.ItemPoolType.BABY_SHOP] = "BABY_SHOP"
____exports.ItemPoolType.WOODEN_CHEST = 29
____exports.ItemPoolType[____exports.ItemPoolType.WOODEN_CHEST] = "WOODEN_CHEST"
____exports.ItemPoolType.ROTTEN_BEGGAR = 30
____exports.ItemPoolType[____exports.ItemPoolType.ROTTEN_BEGGAR] = "ROTTEN_BEGGAR"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ItemType"] = function(...) 
local ____exports = {}
____exports.ItemType = {}
____exports.ItemType.NULL = 0
____exports.ItemType[____exports.ItemType.NULL] = "NULL"
____exports.ItemType.PASSIVE = 1
____exports.ItemType[____exports.ItemType.PASSIVE] = "PASSIVE"
____exports.ItemType.TRINKET = 2
____exports.ItemType[____exports.ItemType.TRINKET] = "TRINKET"
____exports.ItemType.ACTIVE = 3
____exports.ItemType[____exports.ItemType.ACTIVE] = "ACTIVE"
____exports.ItemType.FAMILIAR = 4
____exports.ItemType[____exports.ItemType.FAMILIAR] = "FAMILIAR"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.Keyboard"] = function(...) 
local ____exports = {}
____exports.Keyboard = {}
____exports.Keyboard.SPACE = 32
____exports.Keyboard[____exports.Keyboard.SPACE] = "SPACE"
____exports.Keyboard.APOSTROPHE = 39
____exports.Keyboard[____exports.Keyboard.APOSTROPHE] = "APOSTROPHE"
____exports.Keyboard.COMMA = 44
____exports.Keyboard[____exports.Keyboard.COMMA] = "COMMA"
____exports.Keyboard.MINUS = 45
____exports.Keyboard[____exports.Keyboard.MINUS] = "MINUS"
____exports.Keyboard.PERIOD = 46
____exports.Keyboard[____exports.Keyboard.PERIOD] = "PERIOD"
____exports.Keyboard.SLASH = 47
____exports.Keyboard[____exports.Keyboard.SLASH] = "SLASH"
____exports.Keyboard.ZERO = 48
____exports.Keyboard[____exports.Keyboard.ZERO] = "ZERO"
____exports.Keyboard.ONE = 49
____exports.Keyboard[____exports.Keyboard.ONE] = "ONE"
____exports.Keyboard.TWO = 50
____exports.Keyboard[____exports.Keyboard.TWO] = "TWO"
____exports.Keyboard.THREE = 51
____exports.Keyboard[____exports.Keyboard.THREE] = "THREE"
____exports.Keyboard.FOUR = 52
____exports.Keyboard[____exports.Keyboard.FOUR] = "FOUR"
____exports.Keyboard.FIVE = 53
____exports.Keyboard[____exports.Keyboard.FIVE] = "FIVE"
____exports.Keyboard.SIX = 54
____exports.Keyboard[____exports.Keyboard.SIX] = "SIX"
____exports.Keyboard.SEVEN = 55
____exports.Keyboard[____exports.Keyboard.SEVEN] = "SEVEN"
____exports.Keyboard.EIGHT = 56
____exports.Keyboard[____exports.Keyboard.EIGHT] = "EIGHT"
____exports.Keyboard.NINE = 57
____exports.Keyboard[____exports.Keyboard.NINE] = "NINE"
____exports.Keyboard.SEMICOLON = 59
____exports.Keyboard[____exports.Keyboard.SEMICOLON] = "SEMICOLON"
____exports.Keyboard.EQUAL = 61
____exports.Keyboard[____exports.Keyboard.EQUAL] = "EQUAL"
____exports.Keyboard.A = 65
____exports.Keyboard[____exports.Keyboard.A] = "A"
____exports.Keyboard.B = 66
____exports.Keyboard[____exports.Keyboard.B] = "B"
____exports.Keyboard.C = 67
____exports.Keyboard[____exports.Keyboard.C] = "C"
____exports.Keyboard.D = 68
____exports.Keyboard[____exports.Keyboard.D] = "D"
____exports.Keyboard.E = 69
____exports.Keyboard[____exports.Keyboard.E] = "E"
____exports.Keyboard.F = 70
____exports.Keyboard[____exports.Keyboard.F] = "F"
____exports.Keyboard.G = 71
____exports.Keyboard[____exports.Keyboard.G] = "G"
____exports.Keyboard.H = 72
____exports.Keyboard[____exports.Keyboard.H] = "H"
____exports.Keyboard.I = 73
____exports.Keyboard[____exports.Keyboard.I] = "I"
____exports.Keyboard.J = 74
____exports.Keyboard[____exports.Keyboard.J] = "J"
____exports.Keyboard.K = 75
____exports.Keyboard[____exports.Keyboard.K] = "K"
____exports.Keyboard.L = 76
____exports.Keyboard[____exports.Keyboard.L] = "L"
____exports.Keyboard.M = 77
____exports.Keyboard[____exports.Keyboard.M] = "M"
____exports.Keyboard.N = 78
____exports.Keyboard[____exports.Keyboard.N] = "N"
____exports.Keyboard.O = 79
____exports.Keyboard[____exports.Keyboard.O] = "O"
____exports.Keyboard.P = 80
____exports.Keyboard[____exports.Keyboard.P] = "P"
____exports.Keyboard.Q = 81
____exports.Keyboard[____exports.Keyboard.Q] = "Q"
____exports.Keyboard.R = 82
____exports.Keyboard[____exports.Keyboard.R] = "R"
____exports.Keyboard.S = 83
____exports.Keyboard[____exports.Keyboard.S] = "S"
____exports.Keyboard.T = 84
____exports.Keyboard[____exports.Keyboard.T] = "T"
____exports.Keyboard.U = 85
____exports.Keyboard[____exports.Keyboard.U] = "U"
____exports.Keyboard.V = 86
____exports.Keyboard[____exports.Keyboard.V] = "V"
____exports.Keyboard.W = 87
____exports.Keyboard[____exports.Keyboard.W] = "W"
____exports.Keyboard.X = 88
____exports.Keyboard[____exports.Keyboard.X] = "X"
____exports.Keyboard.Y = 89
____exports.Keyboard[____exports.Keyboard.Y] = "Y"
____exports.Keyboard.Z = 90
____exports.Keyboard[____exports.Keyboard.Z] = "Z"
____exports.Keyboard.LEFT_BRACKET = 91
____exports.Keyboard[____exports.Keyboard.LEFT_BRACKET] = "LEFT_BRACKET"
____exports.Keyboard.BACKSLASH = 92
____exports.Keyboard[____exports.Keyboard.BACKSLASH] = "BACKSLASH"
____exports.Keyboard.RIGHT_BRACKET = 93
____exports.Keyboard[____exports.Keyboard.RIGHT_BRACKET] = "RIGHT_BRACKET"
____exports.Keyboard.GRAVE_ACCENT = 96
____exports.Keyboard[____exports.Keyboard.GRAVE_ACCENT] = "GRAVE_ACCENT"
____exports.Keyboard.WORLD_1 = 161
____exports.Keyboard[____exports.Keyboard.WORLD_1] = "WORLD_1"
____exports.Keyboard.WORLD_2 = 162
____exports.Keyboard[____exports.Keyboard.WORLD_2] = "WORLD_2"
____exports.Keyboard.ESCAPE = 256
____exports.Keyboard[____exports.Keyboard.ESCAPE] = "ESCAPE"
____exports.Keyboard.ENTER = 257
____exports.Keyboard[____exports.Keyboard.ENTER] = "ENTER"
____exports.Keyboard.TAB = 258
____exports.Keyboard[____exports.Keyboard.TAB] = "TAB"
____exports.Keyboard.BACKSPACE = 259
____exports.Keyboard[____exports.Keyboard.BACKSPACE] = "BACKSPACE"
____exports.Keyboard.INSERT = 260
____exports.Keyboard[____exports.Keyboard.INSERT] = "INSERT"
____exports.Keyboard.DELETE = 261
____exports.Keyboard[____exports.Keyboard.DELETE] = "DELETE"
____exports.Keyboard.RIGHT = 262
____exports.Keyboard[____exports.Keyboard.RIGHT] = "RIGHT"
____exports.Keyboard.LEFT = 263
____exports.Keyboard[____exports.Keyboard.LEFT] = "LEFT"
____exports.Keyboard.DOWN = 264
____exports.Keyboard[____exports.Keyboard.DOWN] = "DOWN"
____exports.Keyboard.UP = 265
____exports.Keyboard[____exports.Keyboard.UP] = "UP"
____exports.Keyboard.PAGE_UP = 266
____exports.Keyboard[____exports.Keyboard.PAGE_UP] = "PAGE_UP"
____exports.Keyboard.PAGE_DOWN = 267
____exports.Keyboard[____exports.Keyboard.PAGE_DOWN] = "PAGE_DOWN"
____exports.Keyboard.HOME = 268
____exports.Keyboard[____exports.Keyboard.HOME] = "HOME"
____exports.Keyboard.END = 269
____exports.Keyboard[____exports.Keyboard.END] = "END"
____exports.Keyboard.CAPS_LOCK = 280
____exports.Keyboard[____exports.Keyboard.CAPS_LOCK] = "CAPS_LOCK"
____exports.Keyboard.SCROLL_LOCK = 281
____exports.Keyboard[____exports.Keyboard.SCROLL_LOCK] = "SCROLL_LOCK"
____exports.Keyboard.NUM_LOCK = 282
____exports.Keyboard[____exports.Keyboard.NUM_LOCK] = "NUM_LOCK"
____exports.Keyboard.PRINT_SCREEN = 283
____exports.Keyboard[____exports.Keyboard.PRINT_SCREEN] = "PRINT_SCREEN"
____exports.Keyboard.PAUSE = 284
____exports.Keyboard[____exports.Keyboard.PAUSE] = "PAUSE"
____exports.Keyboard.F1 = 290
____exports.Keyboard[____exports.Keyboard.F1] = "F1"
____exports.Keyboard.F2 = 291
____exports.Keyboard[____exports.Keyboard.F2] = "F2"
____exports.Keyboard.F3 = 292
____exports.Keyboard[____exports.Keyboard.F3] = "F3"
____exports.Keyboard.F4 = 293
____exports.Keyboard[____exports.Keyboard.F4] = "F4"
____exports.Keyboard.F5 = 294
____exports.Keyboard[____exports.Keyboard.F5] = "F5"
____exports.Keyboard.F6 = 295
____exports.Keyboard[____exports.Keyboard.F6] = "F6"
____exports.Keyboard.F7 = 296
____exports.Keyboard[____exports.Keyboard.F7] = "F7"
____exports.Keyboard.F8 = 297
____exports.Keyboard[____exports.Keyboard.F8] = "F8"
____exports.Keyboard.F9 = 298
____exports.Keyboard[____exports.Keyboard.F9] = "F9"
____exports.Keyboard.F10 = 299
____exports.Keyboard[____exports.Keyboard.F10] = "F10"
____exports.Keyboard.F11 = 300
____exports.Keyboard[____exports.Keyboard.F11] = "F11"
____exports.Keyboard.F12 = 301
____exports.Keyboard[____exports.Keyboard.F12] = "F12"
____exports.Keyboard.F13 = 302
____exports.Keyboard[____exports.Keyboard.F13] = "F13"
____exports.Keyboard.F14 = 303
____exports.Keyboard[____exports.Keyboard.F14] = "F14"
____exports.Keyboard.F15 = 304
____exports.Keyboard[____exports.Keyboard.F15] = "F15"
____exports.Keyboard.F16 = 305
____exports.Keyboard[____exports.Keyboard.F16] = "F16"
____exports.Keyboard.F17 = 306
____exports.Keyboard[____exports.Keyboard.F17] = "F17"
____exports.Keyboard.F18 = 307
____exports.Keyboard[____exports.Keyboard.F18] = "F18"
____exports.Keyboard.F19 = 308
____exports.Keyboard[____exports.Keyboard.F19] = "F19"
____exports.Keyboard.F20 = 309
____exports.Keyboard[____exports.Keyboard.F20] = "F20"
____exports.Keyboard.F21 = 310
____exports.Keyboard[____exports.Keyboard.F21] = "F21"
____exports.Keyboard.F22 = 311
____exports.Keyboard[____exports.Keyboard.F22] = "F22"
____exports.Keyboard.F23 = 312
____exports.Keyboard[____exports.Keyboard.F23] = "F23"
____exports.Keyboard.F24 = 313
____exports.Keyboard[____exports.Keyboard.F24] = "F24"
____exports.Keyboard.F25 = 314
____exports.Keyboard[____exports.Keyboard.F25] = "F25"
____exports.Keyboard.KP_0 = 320
____exports.Keyboard[____exports.Keyboard.KP_0] = "KP_0"
____exports.Keyboard.KP_1 = 321
____exports.Keyboard[____exports.Keyboard.KP_1] = "KP_1"
____exports.Keyboard.KP_2 = 322
____exports.Keyboard[____exports.Keyboard.KP_2] = "KP_2"
____exports.Keyboard.KP_3 = 323
____exports.Keyboard[____exports.Keyboard.KP_3] = "KP_3"
____exports.Keyboard.KP_4 = 324
____exports.Keyboard[____exports.Keyboard.KP_4] = "KP_4"
____exports.Keyboard.KP_5 = 325
____exports.Keyboard[____exports.Keyboard.KP_5] = "KP_5"
____exports.Keyboard.KP_6 = 326
____exports.Keyboard[____exports.Keyboard.KP_6] = "KP_6"
____exports.Keyboard.KP_7 = 327
____exports.Keyboard[____exports.Keyboard.KP_7] = "KP_7"
____exports.Keyboard.KP_8 = 328
____exports.Keyboard[____exports.Keyboard.KP_8] = "KP_8"
____exports.Keyboard.KP_9 = 329
____exports.Keyboard[____exports.Keyboard.KP_9] = "KP_9"
____exports.Keyboard.KP_DECIMAL = 330
____exports.Keyboard[____exports.Keyboard.KP_DECIMAL] = "KP_DECIMAL"
____exports.Keyboard.KP_DIVIDE = 331
____exports.Keyboard[____exports.Keyboard.KP_DIVIDE] = "KP_DIVIDE"
____exports.Keyboard.KP_MULTIPLY = 332
____exports.Keyboard[____exports.Keyboard.KP_MULTIPLY] = "KP_MULTIPLY"
____exports.Keyboard.KP_SUBTRACT = 333
____exports.Keyboard[____exports.Keyboard.KP_SUBTRACT] = "KP_SUBTRACT"
____exports.Keyboard.KP_ADD = 334
____exports.Keyboard[____exports.Keyboard.KP_ADD] = "KP_ADD"
____exports.Keyboard.KP_ENTER = 335
____exports.Keyboard[____exports.Keyboard.KP_ENTER] = "KP_ENTER"
____exports.Keyboard.KP_EQUAL = 336
____exports.Keyboard[____exports.Keyboard.KP_EQUAL] = "KP_EQUAL"
____exports.Keyboard.LEFT_SHIFT = 340
____exports.Keyboard[____exports.Keyboard.LEFT_SHIFT] = "LEFT_SHIFT"
____exports.Keyboard.LEFT_CONTROL = 341
____exports.Keyboard[____exports.Keyboard.LEFT_CONTROL] = "LEFT_CONTROL"
____exports.Keyboard.LEFT_ALT = 342
____exports.Keyboard[____exports.Keyboard.LEFT_ALT] = "LEFT_ALT"
____exports.Keyboard.LEFT_SUPER = 343
____exports.Keyboard[____exports.Keyboard.LEFT_SUPER] = "LEFT_SUPER"
____exports.Keyboard.RIGHT_SHIFT = 344
____exports.Keyboard[____exports.Keyboard.RIGHT_SHIFT] = "RIGHT_SHIFT"
____exports.Keyboard.RIGHT_CONTROL = 345
____exports.Keyboard[____exports.Keyboard.RIGHT_CONTROL] = "RIGHT_CONTROL"
____exports.Keyboard.RIGHT_ALT = 346
____exports.Keyboard[____exports.Keyboard.RIGHT_ALT] = "RIGHT_ALT"
____exports.Keyboard.RIGHT_SUPER = 347
____exports.Keyboard[____exports.Keyboard.RIGHT_SUPER] = "RIGHT_SUPER"
____exports.Keyboard.MENU = 348
____exports.Keyboard[____exports.Keyboard.MENU] = "MENU"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.LanguageAbbreviation"] = function(...) 
local ____exports = {}
--- Listed in order of how they cycle through the options menu.
____exports.LanguageAbbreviation = {}
____exports.LanguageAbbreviation.ENGLISH = "en"
____exports.LanguageAbbreviation.JAPANESE = "jp"
____exports.LanguageAbbreviation.SPANISH = "es"
____exports.LanguageAbbreviation.GERMAN = "de"
____exports.LanguageAbbreviation.RUSSIAN = "ru"
____exports.LanguageAbbreviation.KOREAN = "kr"
____exports.LanguageAbbreviation.CHINESE_SIMPLE = "zh"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.LaserOffset"] = function(...) 
local ____exports = {}
____exports.LaserOffset = {}
____exports.LaserOffset.TECH_1 = 0
____exports.LaserOffset[____exports.LaserOffset.TECH_1] = "TECH_1"
____exports.LaserOffset.TECH_2 = 1
____exports.LaserOffset[____exports.LaserOffset.TECH_2] = "TECH_2"
____exports.LaserOffset.TECH_5 = 2
____exports.LaserOffset[____exports.LaserOffset.TECH_5] = "TECH_5"
____exports.LaserOffset.SHOOP = 3
____exports.LaserOffset[____exports.LaserOffset.SHOOP] = "SHOOP"
____exports.LaserOffset.BRIMSTONE = 4
____exports.LaserOffset[____exports.LaserOffset.BRIMSTONE] = "BRIMSTONE"
____exports.LaserOffset.MOMS_EYE = 5
____exports.LaserOffset[____exports.LaserOffset.MOMS_EYE] = "MOMS_EYE"
____exports.LaserOffset.TRACTOR_BEAM = 6
____exports.LaserOffset[____exports.LaserOffset.TRACTOR_BEAM] = "TRACTOR_BEAM"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.LevelStage"] = function(...) 
local ____exports = {}
____exports.LevelStage = {}
____exports.LevelStage.BASEMENT_1 = 1
____exports.LevelStage[____exports.LevelStage.BASEMENT_1] = "BASEMENT_1"
____exports.LevelStage.BASEMENT_2 = 2
____exports.LevelStage[____exports.LevelStage.BASEMENT_2] = "BASEMENT_2"
____exports.LevelStage.CAVES_1 = 3
____exports.LevelStage[____exports.LevelStage.CAVES_1] = "CAVES_1"
____exports.LevelStage.CAVES_2 = 4
____exports.LevelStage[____exports.LevelStage.CAVES_2] = "CAVES_2"
____exports.LevelStage.DEPTHS_1 = 5
____exports.LevelStage[____exports.LevelStage.DEPTHS_1] = "DEPTHS_1"
____exports.LevelStage.DEPTHS_2 = 6
____exports.LevelStage[____exports.LevelStage.DEPTHS_2] = "DEPTHS_2"
____exports.LevelStage.WOMB_1 = 7
____exports.LevelStage[____exports.LevelStage.WOMB_1] = "WOMB_1"
____exports.LevelStage.WOMB_2 = 8
____exports.LevelStage[____exports.LevelStage.WOMB_2] = "WOMB_2"
____exports.LevelStage.BLUE_WOMB = 9
____exports.LevelStage[____exports.LevelStage.BLUE_WOMB] = "BLUE_WOMB"
____exports.LevelStage.SHEOL_CATHEDRAL = 10
____exports.LevelStage[____exports.LevelStage.SHEOL_CATHEDRAL] = "SHEOL_CATHEDRAL"
____exports.LevelStage.DARK_ROOM_CHEST = 11
____exports.LevelStage[____exports.LevelStage.DARK_ROOM_CHEST] = "DARK_ROOM_CHEST"
____exports.LevelStage.THE_VOID = 12
____exports.LevelStage[____exports.LevelStage.THE_VOID] = "THE_VOID"
____exports.LevelStage.HOME = 13
____exports.LevelStage[____exports.LevelStage.HOME] = "HOME"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.LevelStateFlag"] = function(...) 
local ____exports = {}
--- Used with the `Level.GetStateFlag` and `Level.SetStateFlag` methods.
____exports.LevelStateFlag = {}
____exports.LevelStateFlag.BUM_KILLED = 0
____exports.LevelStateFlag[____exports.LevelStateFlag.BUM_KILLED] = "BUM_KILLED"
____exports.LevelStateFlag.EVIL_BUM_KILLED = 1
____exports.LevelStateFlag[____exports.LevelStateFlag.EVIL_BUM_KILLED] = "EVIL_BUM_KILLED"
____exports.LevelStateFlag.RED_HEART_DAMAGED = 2
____exports.LevelStateFlag[____exports.LevelStateFlag.RED_HEART_DAMAGED] = "RED_HEART_DAMAGED"
____exports.LevelStateFlag.BUM_LEFT = 3
____exports.LevelStateFlag[____exports.LevelStateFlag.BUM_LEFT] = "BUM_LEFT"
____exports.LevelStateFlag.EVIL_BUM_LEFT = 4
____exports.LevelStateFlag[____exports.LevelStateFlag.EVIL_BUM_LEFT] = "EVIL_BUM_LEFT"
____exports.LevelStateFlag.DAMAGED = 5
____exports.LevelStateFlag[____exports.LevelStateFlag.DAMAGED] = "DAMAGED"
____exports.LevelStateFlag.SHOPKEEPER_KILLED_LVL = 6
____exports.LevelStateFlag[____exports.LevelStateFlag.SHOPKEEPER_KILLED_LVL] = "SHOPKEEPER_KILLED_LVL"
____exports.LevelStateFlag.COMPASS_EFFECT = 7
____exports.LevelStateFlag[____exports.LevelStateFlag.COMPASS_EFFECT] = "COMPASS_EFFECT"
____exports.LevelStateFlag.MAP_EFFECT = 8
____exports.LevelStateFlag[____exports.LevelStateFlag.MAP_EFFECT] = "MAP_EFFECT"
____exports.LevelStateFlag.BLUE_MAP_EFFECT = 9
____exports.LevelStateFlag[____exports.LevelStateFlag.BLUE_MAP_EFFECT] = "BLUE_MAP_EFFECT"
____exports.LevelStateFlag.FULL_MAP_EFFECT = 10
____exports.LevelStateFlag[____exports.LevelStateFlag.FULL_MAP_EFFECT] = "FULL_MAP_EFFECT"
____exports.LevelStateFlag.GREED_LOST_PENALTY = 11
____exports.LevelStateFlag[____exports.LevelStateFlag.GREED_LOST_PENALTY] = "GREED_LOST_PENALTY"
____exports.LevelStateFlag.GREED_MONSTRO_SPAWNED = 12
____exports.LevelStateFlag[____exports.LevelStateFlag.GREED_MONSTRO_SPAWNED] = "GREED_MONSTRO_SPAWNED"
____exports.LevelStateFlag.ITEM_DUNGEON_FOUND = 13
____exports.LevelStateFlag[____exports.LevelStateFlag.ITEM_DUNGEON_FOUND] = "ITEM_DUNGEON_FOUND"
____exports.LevelStateFlag.MAMA_MEGA_USED = 14
____exports.LevelStateFlag[____exports.LevelStateFlag.MAMA_MEGA_USED] = "MAMA_MEGA_USED"
____exports.LevelStateFlag.WOODEN_CROSS_REMOVED = 15
____exports.LevelStateFlag[____exports.LevelStateFlag.WOODEN_CROSS_REMOVED] = "WOODEN_CROSS_REMOVED"
____exports.LevelStateFlag.SHOVEL_QUEST_TRIGGERED = 16
____exports.LevelStateFlag[____exports.LevelStateFlag.SHOVEL_QUEST_TRIGGERED] = "SHOVEL_QUEST_TRIGGERED"
____exports.LevelStateFlag.SATANIC_BIBLE_USED = 17
____exports.LevelStateFlag[____exports.LevelStateFlag.SATANIC_BIBLE_USED] = "SATANIC_BIBLE_USED"
____exports.LevelStateFlag.SOL_EFFECT = 18
____exports.LevelStateFlag[____exports.LevelStateFlag.SOL_EFFECT] = "SOL_EFFECT"
____exports.LevelStateFlag.LEVEL_START_TRIGGERED = 19
____exports.LevelStateFlag[____exports.LevelStateFlag.LEVEL_START_TRIGGERED] = "LEVEL_START_TRIGGERED"
____exports.LevelStateFlag.LUNA_EFFECT = 20
____exports.LevelStateFlag[____exports.LevelStateFlag.LUNA_EFFECT] = "LUNA_EFFECT"
____exports.LevelStateFlag.VOID_DOOR_DISABLED = 21
____exports.LevelStateFlag[____exports.LevelStateFlag.VOID_DOOR_DISABLED] = "VOID_DOOR_DISABLED"
____exports.LevelStateFlag.MINESHAFT_ESCAPE = 22
____exports.LevelStateFlag[____exports.LevelStateFlag.MINESHAFT_ESCAPE] = "MINESHAFT_ESCAPE"
____exports.LevelStateFlag.MIRROR_BROKEN = 23
____exports.LevelStateFlag[____exports.LevelStateFlag.MIRROR_BROKEN] = "MIRROR_BROKEN"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.LineCheckMode"] = function(...) 
local ____exports = {}
____exports.LineCheckMode = {}
____exports.LineCheckMode.NORMAL = 0
____exports.LineCheckMode[____exports.LineCheckMode.NORMAL] = "NORMAL"
____exports.LineCheckMode.ECONOMIC = 1
____exports.LineCheckMode[____exports.LineCheckMode.ECONOMIC] = "ECONOMIC"
____exports.LineCheckMode.EXPLOSION = 2
____exports.LineCheckMode[____exports.LineCheckMode.EXPLOSION] = "EXPLOSION"
____exports.LineCheckMode.PROJECTILE = 3
____exports.LineCheckMode[____exports.LineCheckMode.PROJECTILE] = "PROJECTILE"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ModCallback"] = function(...) 
local ____exports = {}
____exports.ModCallback = {}
____exports.ModCallback.POST_NPC_UPDATE = 0
____exports.ModCallback[____exports.ModCallback.POST_NPC_UPDATE] = "POST_NPC_UPDATE"
____exports.ModCallback.POST_UPDATE = 1
____exports.ModCallback[____exports.ModCallback.POST_UPDATE] = "POST_UPDATE"
____exports.ModCallback.POST_RENDER = 2
____exports.ModCallback[____exports.ModCallback.POST_RENDER] = "POST_RENDER"
____exports.ModCallback.POST_USE_ITEM = 3
____exports.ModCallback[____exports.ModCallback.POST_USE_ITEM] = "POST_USE_ITEM"
____exports.ModCallback.POST_PEFFECT_UPDATE = 4
____exports.ModCallback[____exports.ModCallback.POST_PEFFECT_UPDATE] = "POST_PEFFECT_UPDATE"
____exports.ModCallback.POST_USE_CARD = 5
____exports.ModCallback[____exports.ModCallback.POST_USE_CARD] = "POST_USE_CARD"
____exports.ModCallback.POST_FAMILIAR_UPDATE = 6
____exports.ModCallback[____exports.ModCallback.POST_FAMILIAR_UPDATE] = "POST_FAMILIAR_UPDATE"
____exports.ModCallback.POST_FAMILIAR_INIT = 7
____exports.ModCallback[____exports.ModCallback.POST_FAMILIAR_INIT] = "POST_FAMILIAR_INIT"
____exports.ModCallback.EVALUATE_CACHE = 8
____exports.ModCallback[____exports.ModCallback.EVALUATE_CACHE] = "EVALUATE_CACHE"
____exports.ModCallback.POST_PLAYER_INIT = 9
____exports.ModCallback[____exports.ModCallback.POST_PLAYER_INIT] = "POST_PLAYER_INIT"
____exports.ModCallback.POST_USE_PILL = 10
____exports.ModCallback[____exports.ModCallback.POST_USE_PILL] = "POST_USE_PILL"
____exports.ModCallback.ENTITY_TAKE_DMG = 11
____exports.ModCallback[____exports.ModCallback.ENTITY_TAKE_DMG] = "ENTITY_TAKE_DMG"
____exports.ModCallback.POST_CURSE_EVAL = 12
____exports.ModCallback[____exports.ModCallback.POST_CURSE_EVAL] = "POST_CURSE_EVAL"
____exports.ModCallback.INPUT_ACTION = 13
____exports.ModCallback[____exports.ModCallback.INPUT_ACTION] = "INPUT_ACTION"
____exports.ModCallback.POST_GAME_STARTED = 15
____exports.ModCallback[____exports.ModCallback.POST_GAME_STARTED] = "POST_GAME_STARTED"
____exports.ModCallback.POST_GAME_END = 16
____exports.ModCallback[____exports.ModCallback.POST_GAME_END] = "POST_GAME_END"
____exports.ModCallback.PRE_GAME_EXIT = 17
____exports.ModCallback[____exports.ModCallback.PRE_GAME_EXIT] = "PRE_GAME_EXIT"
____exports.ModCallback.POST_NEW_LEVEL = 18
____exports.ModCallback[____exports.ModCallback.POST_NEW_LEVEL] = "POST_NEW_LEVEL"
____exports.ModCallback.POST_NEW_ROOM = 19
____exports.ModCallback[____exports.ModCallback.POST_NEW_ROOM] = "POST_NEW_ROOM"
____exports.ModCallback.GET_CARD = 20
____exports.ModCallback[____exports.ModCallback.GET_CARD] = "GET_CARD"
____exports.ModCallback.GET_SHADER_PARAMS = 21
____exports.ModCallback[____exports.ModCallback.GET_SHADER_PARAMS] = "GET_SHADER_PARAMS"
____exports.ModCallback.EXECUTE_CMD = 22
____exports.ModCallback[____exports.ModCallback.EXECUTE_CMD] = "EXECUTE_CMD"
____exports.ModCallback.PRE_USE_ITEM = 23
____exports.ModCallback[____exports.ModCallback.PRE_USE_ITEM] = "PRE_USE_ITEM"
____exports.ModCallback.PRE_ENTITY_SPAWN = 24
____exports.ModCallback[____exports.ModCallback.PRE_ENTITY_SPAWN] = "PRE_ENTITY_SPAWN"
____exports.ModCallback.POST_FAMILIAR_RENDER = 25
____exports.ModCallback[____exports.ModCallback.POST_FAMILIAR_RENDER] = "POST_FAMILIAR_RENDER"
____exports.ModCallback.PRE_FAMILIAR_COLLISION = 26
____exports.ModCallback[____exports.ModCallback.PRE_FAMILIAR_COLLISION] = "PRE_FAMILIAR_COLLISION"
____exports.ModCallback.POST_NPC_INIT = 27
____exports.ModCallback[____exports.ModCallback.POST_NPC_INIT] = "POST_NPC_INIT"
____exports.ModCallback.POST_NPC_RENDER = 28
____exports.ModCallback[____exports.ModCallback.POST_NPC_RENDER] = "POST_NPC_RENDER"
____exports.ModCallback.POST_NPC_DEATH = 29
____exports.ModCallback[____exports.ModCallback.POST_NPC_DEATH] = "POST_NPC_DEATH"
____exports.ModCallback.PRE_NPC_COLLISION = 30
____exports.ModCallback[____exports.ModCallback.PRE_NPC_COLLISION] = "PRE_NPC_COLLISION"
____exports.ModCallback.POST_PLAYER_UPDATE = 31
____exports.ModCallback[____exports.ModCallback.POST_PLAYER_UPDATE] = "POST_PLAYER_UPDATE"
____exports.ModCallback.POST_PLAYER_RENDER = 32
____exports.ModCallback[____exports.ModCallback.POST_PLAYER_RENDER] = "POST_PLAYER_RENDER"
____exports.ModCallback.PRE_PLAYER_COLLISION = 33
____exports.ModCallback[____exports.ModCallback.PRE_PLAYER_COLLISION] = "PRE_PLAYER_COLLISION"
____exports.ModCallback.POST_PICKUP_INIT = 34
____exports.ModCallback[____exports.ModCallback.POST_PICKUP_INIT] = "POST_PICKUP_INIT"
____exports.ModCallback.POST_PICKUP_UPDATE = 35
____exports.ModCallback[____exports.ModCallback.POST_PICKUP_UPDATE] = "POST_PICKUP_UPDATE"
____exports.ModCallback.POST_PICKUP_RENDER = 36
____exports.ModCallback[____exports.ModCallback.POST_PICKUP_RENDER] = "POST_PICKUP_RENDER"
____exports.ModCallback.POST_PICKUP_SELECTION = 37
____exports.ModCallback[____exports.ModCallback.POST_PICKUP_SELECTION] = "POST_PICKUP_SELECTION"
____exports.ModCallback.PRE_PICKUP_COLLISION = 38
____exports.ModCallback[____exports.ModCallback.PRE_PICKUP_COLLISION] = "PRE_PICKUP_COLLISION"
____exports.ModCallback.POST_TEAR_INIT = 39
____exports.ModCallback[____exports.ModCallback.POST_TEAR_INIT] = "POST_TEAR_INIT"
____exports.ModCallback.POST_TEAR_UPDATE = 40
____exports.ModCallback[____exports.ModCallback.POST_TEAR_UPDATE] = "POST_TEAR_UPDATE"
____exports.ModCallback.POST_TEAR_RENDER = 41
____exports.ModCallback[____exports.ModCallback.POST_TEAR_RENDER] = "POST_TEAR_RENDER"
____exports.ModCallback.PRE_TEAR_COLLISION = 42
____exports.ModCallback[____exports.ModCallback.PRE_TEAR_COLLISION] = "PRE_TEAR_COLLISION"
____exports.ModCallback.POST_PROJECTILE_INIT = 43
____exports.ModCallback[____exports.ModCallback.POST_PROJECTILE_INIT] = "POST_PROJECTILE_INIT"
____exports.ModCallback.POST_PROJECTILE_UPDATE = 44
____exports.ModCallback[____exports.ModCallback.POST_PROJECTILE_UPDATE] = "POST_PROJECTILE_UPDATE"
____exports.ModCallback.POST_PROJECTILE_RENDER = 45
____exports.ModCallback[____exports.ModCallback.POST_PROJECTILE_RENDER] = "POST_PROJECTILE_RENDER"
____exports.ModCallback.PRE_PROJECTILE_COLLISION = 46
____exports.ModCallback[____exports.ModCallback.PRE_PROJECTILE_COLLISION] = "PRE_PROJECTILE_COLLISION"
____exports.ModCallback.POST_LASER_INIT = 47
____exports.ModCallback[____exports.ModCallback.POST_LASER_INIT] = "POST_LASER_INIT"
____exports.ModCallback.POST_LASER_UPDATE = 48
____exports.ModCallback[____exports.ModCallback.POST_LASER_UPDATE] = "POST_LASER_UPDATE"
____exports.ModCallback.POST_LASER_RENDER = 49
____exports.ModCallback[____exports.ModCallback.POST_LASER_RENDER] = "POST_LASER_RENDER"
____exports.ModCallback.POST_KNIFE_INIT = 50
____exports.ModCallback[____exports.ModCallback.POST_KNIFE_INIT] = "POST_KNIFE_INIT"
____exports.ModCallback.POST_KNIFE_UPDATE = 51
____exports.ModCallback[____exports.ModCallback.POST_KNIFE_UPDATE] = "POST_KNIFE_UPDATE"
____exports.ModCallback.POST_KNIFE_RENDER = 52
____exports.ModCallback[____exports.ModCallback.POST_KNIFE_RENDER] = "POST_KNIFE_RENDER"
____exports.ModCallback.PRE_KNIFE_COLLISION = 53
____exports.ModCallback[____exports.ModCallback.PRE_KNIFE_COLLISION] = "PRE_KNIFE_COLLISION"
____exports.ModCallback.POST_EFFECT_INIT = 54
____exports.ModCallback[____exports.ModCallback.POST_EFFECT_INIT] = "POST_EFFECT_INIT"
____exports.ModCallback.POST_EFFECT_UPDATE = 55
____exports.ModCallback[____exports.ModCallback.POST_EFFECT_UPDATE] = "POST_EFFECT_UPDATE"
____exports.ModCallback.POST_EFFECT_RENDER = 56
____exports.ModCallback[____exports.ModCallback.POST_EFFECT_RENDER] = "POST_EFFECT_RENDER"
____exports.ModCallback.POST_BOMB_INIT = 57
____exports.ModCallback[____exports.ModCallback.POST_BOMB_INIT] = "POST_BOMB_INIT"
____exports.ModCallback.POST_BOMB_UPDATE = 58
____exports.ModCallback[____exports.ModCallback.POST_BOMB_UPDATE] = "POST_BOMB_UPDATE"
____exports.ModCallback.POST_BOMB_RENDER = 59
____exports.ModCallback[____exports.ModCallback.POST_BOMB_RENDER] = "POST_BOMB_RENDER"
____exports.ModCallback.PRE_BOMB_COLLISION = 60
____exports.ModCallback[____exports.ModCallback.PRE_BOMB_COLLISION] = "PRE_BOMB_COLLISION"
____exports.ModCallback.POST_FIRE_TEAR = 61
____exports.ModCallback[____exports.ModCallback.POST_FIRE_TEAR] = "POST_FIRE_TEAR"
____exports.ModCallback.PRE_GET_COLLECTIBLE = 62
____exports.ModCallback[____exports.ModCallback.PRE_GET_COLLECTIBLE] = "PRE_GET_COLLECTIBLE"
____exports.ModCallback.POST_GET_COLLECTIBLE = 63
____exports.ModCallback[____exports.ModCallback.POST_GET_COLLECTIBLE] = "POST_GET_COLLECTIBLE"
____exports.ModCallback.GET_PILL_COLOR = 64
____exports.ModCallback[____exports.ModCallback.GET_PILL_COLOR] = "GET_PILL_COLOR"
____exports.ModCallback.GET_PILL_EFFECT = 65
____exports.ModCallback[____exports.ModCallback.GET_PILL_EFFECT] = "GET_PILL_EFFECT"
____exports.ModCallback.GET_TRINKET = 66
____exports.ModCallback[____exports.ModCallback.GET_TRINKET] = "GET_TRINKET"
____exports.ModCallback.POST_ENTITY_REMOVE = 67
____exports.ModCallback[____exports.ModCallback.POST_ENTITY_REMOVE] = "POST_ENTITY_REMOVE"
____exports.ModCallback.POST_ENTITY_KILL = 68
____exports.ModCallback[____exports.ModCallback.POST_ENTITY_KILL] = "POST_ENTITY_KILL"
____exports.ModCallback.PRE_NPC_UPDATE = 69
____exports.ModCallback[____exports.ModCallback.PRE_NPC_UPDATE] = "PRE_NPC_UPDATE"
____exports.ModCallback.PRE_SPAWN_CLEAN_AWARD = 70
____exports.ModCallback[____exports.ModCallback.PRE_SPAWN_CLEAN_AWARD] = "PRE_SPAWN_CLEAN_AWARD"
____exports.ModCallback.PRE_ROOM_ENTITY_SPAWN = 71
____exports.ModCallback[____exports.ModCallback.PRE_ROOM_ENTITY_SPAWN] = "PRE_ROOM_ENTITY_SPAWN"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.Mouse"] = function(...) 
local ____exports = {}
____exports.Mouse = {}
____exports.Mouse.BUTTON_LEFT = 0
____exports.Mouse[____exports.Mouse.BUTTON_LEFT] = "BUTTON_LEFT"
____exports.Mouse.BUTTON_RIGHT = 1
____exports.Mouse[____exports.Mouse.BUTTON_RIGHT] = "BUTTON_RIGHT"
____exports.Mouse.BUTTON_MIDDLE = 2
____exports.Mouse[____exports.Mouse.BUTTON_MIDDLE] = "BUTTON_MIDDLE"
____exports.Mouse.BUTTON_4 = 3
____exports.Mouse[____exports.Mouse.BUTTON_4] = "BUTTON_4"
____exports.Mouse.BUTTON_5 = 4
____exports.Mouse[____exports.Mouse.BUTTON_5] = "BUTTON_5"
____exports.Mouse.BUTTON_6 = 5
____exports.Mouse[____exports.Mouse.BUTTON_6] = "BUTTON_6"
____exports.Mouse.BUTTON_7 = 6
____exports.Mouse[____exports.Mouse.BUTTON_7] = "BUTTON_7"
____exports.Mouse.BUTTON_8 = 7
____exports.Mouse[____exports.Mouse.BUTTON_8] = "BUTTON_8"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.Music"] = function(...) 
local ____exports = {}
____exports.Music = {}
____exports.Music.NULL = 0
____exports.Music[____exports.Music.NULL] = "NULL"
____exports.Music.BASEMENT = 1
____exports.Music[____exports.Music.BASEMENT] = "BASEMENT"
____exports.Music.CAVES = 2
____exports.Music[____exports.Music.CAVES] = "CAVES"
____exports.Music.DEPTHS = 3
____exports.Music[____exports.Music.DEPTHS] = "DEPTHS"
____exports.Music.CELLAR = 4
____exports.Music[____exports.Music.CELLAR] = "CELLAR"
____exports.Music.CATACOMBS = 5
____exports.Music[____exports.Music.CATACOMBS] = "CATACOMBS"
____exports.Music.NECROPOLIS = 6
____exports.Music[____exports.Music.NECROPOLIS] = "NECROPOLIS"
____exports.Music.WOMB_UTERO = 7
____exports.Music[____exports.Music.WOMB_UTERO] = "WOMB_UTERO"
____exports.Music.GAME_OVER = 8
____exports.Music[____exports.Music.GAME_OVER] = "GAME_OVER"
____exports.Music.BOSS = 9
____exports.Music[____exports.Music.BOSS] = "BOSS"
____exports.Music.CATHEDRAL = 10
____exports.Music[____exports.Music.CATHEDRAL] = "CATHEDRAL"
____exports.Music.SHEOL = 11
____exports.Music[____exports.Music.SHEOL] = "SHEOL"
____exports.Music.DARK_ROOM = 12
____exports.Music[____exports.Music.DARK_ROOM] = "DARK_ROOM"
____exports.Music.CHEST = 13
____exports.Music[____exports.Music.CHEST] = "CHEST"
____exports.Music.BURNING_BASEMENT = 14
____exports.Music[____exports.Music.BURNING_BASEMENT] = "BURNING_BASEMENT"
____exports.Music.FLOODED_CAVES = 15
____exports.Music[____exports.Music.FLOODED_CAVES] = "FLOODED_CAVES"
____exports.Music.DANK_DEPTHS = 16
____exports.Music[____exports.Music.DANK_DEPTHS] = "DANK_DEPTHS"
____exports.Music.SCARRED_WOMB = 17
____exports.Music[____exports.Music.SCARRED_WOMB] = "SCARRED_WOMB"
____exports.Music.BLUE_WOMB = 18
____exports.Music[____exports.Music.BLUE_WOMB] = "BLUE_WOMB"
____exports.Music.UTERO = 19
____exports.Music[____exports.Music.UTERO] = "UTERO"
____exports.Music.MOM_BOSS = 20
____exports.Music[____exports.Music.MOM_BOSS] = "MOM_BOSS"
____exports.Music.MOMS_HEART_BOSS = 21
____exports.Music[____exports.Music.MOMS_HEART_BOSS] = "MOMS_HEART_BOSS"
____exports.Music.ISAAC_BOSS = 22
____exports.Music[____exports.Music.ISAAC_BOSS] = "ISAAC_BOSS"
____exports.Music.SATAN_BOSS = 23
____exports.Music[____exports.Music.SATAN_BOSS] = "SATAN_BOSS"
____exports.Music.DARK_ROOM_BOSS = 24
____exports.Music[____exports.Music.DARK_ROOM_BOSS] = "DARK_ROOM_BOSS"
____exports.Music.BLUE_BABY_BOSS = 25
____exports.Music[____exports.Music.BLUE_BABY_BOSS] = "BLUE_BABY_BOSS"
____exports.Music.BOSS_2 = 26
____exports.Music[____exports.Music.BOSS_2] = "BOSS_2"
____exports.Music.HUSH_BOSS = 27
____exports.Music[____exports.Music.HUSH_BOSS] = "HUSH_BOSS"
____exports.Music.ULTRA_GREED_BOSS = 28
____exports.Music[____exports.Music.ULTRA_GREED_BOSS] = "ULTRA_GREED_BOSS"
____exports.Music.LIBRARY_ROOM = 30
____exports.Music[____exports.Music.LIBRARY_ROOM] = "LIBRARY_ROOM"
____exports.Music.SECRET_ROOM = 31
____exports.Music[____exports.Music.SECRET_ROOM] = "SECRET_ROOM"
____exports.Music.SECRET_ROOM_2 = 32
____exports.Music[____exports.Music.SECRET_ROOM_2] = "SECRET_ROOM_2"
____exports.Music.DEVIL_ROOM = 33
____exports.Music[____exports.Music.DEVIL_ROOM] = "DEVIL_ROOM"
____exports.Music.ANGEL_ROOM = 34
____exports.Music[____exports.Music.ANGEL_ROOM] = "ANGEL_ROOM"
____exports.Music.SHOP_ROOM = 35
____exports.Music[____exports.Music.SHOP_ROOM] = "SHOP_ROOM"
____exports.Music.ARCADE_ROOM = 36
____exports.Music[____exports.Music.ARCADE_ROOM] = "ARCADE_ROOM"
____exports.Music.BOSS_OVER = 37
____exports.Music[____exports.Music.BOSS_OVER] = "BOSS_OVER"
____exports.Music.CHALLENGE_FIGHT = 38
____exports.Music[____exports.Music.CHALLENGE_FIGHT] = "CHALLENGE_FIGHT"
____exports.Music.BOSS_RUSH = 39
____exports.Music[____exports.Music.BOSS_RUSH] = "BOSS_RUSH"
____exports.Music.JINGLE_BOSS_RUSH_OUTRO = 40
____exports.Music[____exports.Music.JINGLE_BOSS_RUSH_OUTRO] = "JINGLE_BOSS_RUSH_OUTRO"
____exports.Music.BOSS_3 = 41
____exports.Music[____exports.Music.BOSS_3] = "BOSS_3"
____exports.Music.JINGLE_BOSS_OVER_3 = 42
____exports.Music[____exports.Music.JINGLE_BOSS_OVER_3] = "JINGLE_BOSS_OVER_3"
____exports.Music.MOTHER_BOSS = 43
____exports.Music[____exports.Music.MOTHER_BOSS] = "MOTHER_BOSS"
____exports.Music.DOGMA_BOSS = 44
____exports.Music[____exports.Music.DOGMA_BOSS] = "DOGMA_BOSS"
____exports.Music.BEAST_BOSS = 45
____exports.Music[____exports.Music.BEAST_BOSS] = "BEAST_BOSS"
____exports.Music.JINGLE_MOTHER_OVER = 47
____exports.Music[____exports.Music.JINGLE_MOTHER_OVER] = "JINGLE_MOTHER_OVER"
____exports.Music.JINGLE_DOGMA_OVER = 48
____exports.Music[____exports.Music.JINGLE_DOGMA_OVER] = "JINGLE_DOGMA_OVER"
____exports.Music.JINGLE_BEAST_OVER = 49
____exports.Music[____exports.Music.JINGLE_BEAST_OVER] = "JINGLE_BEAST_OVER"
____exports.Music.PLANETARIUM = 50
____exports.Music[____exports.Music.PLANETARIUM] = "PLANETARIUM"
____exports.Music.SECRET_ROOM_ALT_ALT = 51
____exports.Music[____exports.Music.SECRET_ROOM_ALT_ALT] = "SECRET_ROOM_ALT_ALT"
____exports.Music.BOSS_OVER_TWISTED = 52
____exports.Music[____exports.Music.BOSS_OVER_TWISTED] = "BOSS_OVER_TWISTED"
____exports.Music.CREDITS = 60
____exports.Music[____exports.Music.CREDITS] = "CREDITS"
____exports.Music.TITLE = 61
____exports.Music[____exports.Music.TITLE] = "TITLE"
____exports.Music.TITLE_AFTERBIRTH = 62
____exports.Music[____exports.Music.TITLE_AFTERBIRTH] = "TITLE_AFTERBIRTH"
____exports.Music.TITLE_REPENTANCE = 63
____exports.Music[____exports.Music.TITLE_REPENTANCE] = "TITLE_REPENTANCE"
____exports.Music.JINGLE_GAME_START_ALT = 64
____exports.Music[____exports.Music.JINGLE_GAME_START_ALT] = "JINGLE_GAME_START_ALT"
____exports.Music.JINGLE_NIGHTMARE_ALT = 65
____exports.Music[____exports.Music.JINGLE_NIGHTMARE_ALT] = "JINGLE_NIGHTMARE_ALT"
____exports.Music.MOTHERS_SHADOW_INTRO = 66
____exports.Music[____exports.Music.MOTHERS_SHADOW_INTRO] = "MOTHERS_SHADOW_INTRO"
____exports.Music.DOGMA_INTRO = 67
____exports.Music[____exports.Music.DOGMA_INTRO] = "DOGMA_INTRO"
____exports.Music.STRANGE_DOOR_JINGLE = 68
____exports.Music[____exports.Music.STRANGE_DOOR_JINGLE] = "STRANGE_DOOR_JINGLE"
____exports.Music.DARK_CLOSET = 69
____exports.Music[____exports.Music.DARK_CLOSET] = "DARK_CLOSET"
____exports.Music.CREDITS_ALT = 70
____exports.Music[____exports.Music.CREDITS_ALT] = "CREDITS_ALT"
____exports.Music.CREDITS_ALT_FINAL = 71
____exports.Music[____exports.Music.CREDITS_ALT_FINAL] = "CREDITS_ALT_FINAL"
____exports.Music.JINGLE_BOSS = 81
____exports.Music[____exports.Music.JINGLE_BOSS] = "JINGLE_BOSS"
____exports.Music.JINGLE_BOSS_OVER_1 = 83
____exports.Music[____exports.Music.JINGLE_BOSS_OVER_1] = "JINGLE_BOSS_OVER_1"
____exports.Music.JINGLE_HOLY_ROOM_FIND = 84
____exports.Music[____exports.Music.JINGLE_HOLY_ROOM_FIND] = "JINGLE_HOLY_ROOM_FIND"
____exports.Music.JINGLE_SECRET_ROOM_FIND = 85
____exports.Music[____exports.Music.JINGLE_SECRET_ROOM_FIND] = "JINGLE_SECRET_ROOM_FIND"
____exports.Music.JINGLE_TREASURE_ROOM_ENTRY_0 = 87
____exports.Music[____exports.Music.JINGLE_TREASURE_ROOM_ENTRY_0] = "JINGLE_TREASURE_ROOM_ENTRY_0"
____exports.Music.JINGLE_TREASURE_ROOM_ENTRY_1 = 88
____exports.Music[____exports.Music.JINGLE_TREASURE_ROOM_ENTRY_1] = "JINGLE_TREASURE_ROOM_ENTRY_1"
____exports.Music.JINGLE_TREASURE_ROOM_ENTRY_2 = 89
____exports.Music[____exports.Music.JINGLE_TREASURE_ROOM_ENTRY_2] = "JINGLE_TREASURE_ROOM_ENTRY_2"
____exports.Music.JINGLE_TREASURE_ROOM_ENTRY_3 = 90
____exports.Music[____exports.Music.JINGLE_TREASURE_ROOM_ENTRY_3] = "JINGLE_TREASURE_ROOM_ENTRY_3"
____exports.Music.JINGLE_CHALLENGE_ENTRY = 91
____exports.Music[____exports.Music.JINGLE_CHALLENGE_ENTRY] = "JINGLE_CHALLENGE_ENTRY"
____exports.Music.JINGLE_CHALLENGE_OUTRO = 92
____exports.Music[____exports.Music.JINGLE_CHALLENGE_OUTRO] = "JINGLE_CHALLENGE_OUTRO"
____exports.Music.JINGLE_GAME_OVER = 93
____exports.Music[____exports.Music.JINGLE_GAME_OVER] = "JINGLE_GAME_OVER"
____exports.Music.JINGLE_DEVIL_ROOM_FIND = 94
____exports.Music[____exports.Music.JINGLE_DEVIL_ROOM_FIND] = "JINGLE_DEVIL_ROOM_FIND"
____exports.Music.JINGLE_GAME_START = 95
____exports.Music[____exports.Music.JINGLE_GAME_START] = "JINGLE_GAME_START"
____exports.Music.JINGLE_NIGHTMARE = 96
____exports.Music[____exports.Music.JINGLE_NIGHTMARE] = "JINGLE_NIGHTMARE"
____exports.Music.JINGLE_BOSS_OVER_2 = 97
____exports.Music[____exports.Music.JINGLE_BOSS_OVER_2] = "JINGLE_BOSS_OVER_2"
____exports.Music.JINGLE_HUSH_OVER = 98
____exports.Music[____exports.Music.JINGLE_HUSH_OVER] = "JINGLE_HUSH_OVER"
____exports.Music.INTRO_VOICEOVER = 100
____exports.Music[____exports.Music.INTRO_VOICEOVER] = "INTRO_VOICEOVER"
____exports.Music.EPILOGUE_VOICEOVER = 101
____exports.Music[____exports.Music.EPILOGUE_VOICEOVER] = "EPILOGUE_VOICEOVER"
____exports.Music.VOID = 102
____exports.Music[____exports.Music.VOID] = "VOID"
____exports.Music.VOID_BOSS = 103
____exports.Music[____exports.Music.VOID_BOSS] = "VOID_BOSS"
____exports.Music.DOWNPOUR = 104
____exports.Music[____exports.Music.DOWNPOUR] = "DOWNPOUR"
____exports.Music.MINES = 105
____exports.Music[____exports.Music.MINES] = "MINES"
____exports.Music.MAUSOLEUM = 106
____exports.Music[____exports.Music.MAUSOLEUM] = "MAUSOLEUM"
____exports.Music.CORPSE = 107
____exports.Music[____exports.Music.CORPSE] = "CORPSE"
____exports.Music.DROSS = 108
____exports.Music[____exports.Music.DROSS] = "DROSS"
____exports.Music.ASHPIT = 109
____exports.Music[____exports.Music.ASHPIT] = "ASHPIT"
____exports.Music.GEHENNA = 110
____exports.Music[____exports.Music.GEHENNA] = "GEHENNA"
____exports.Music.MORTIS = 111
____exports.Music[____exports.Music.MORTIS] = "MORTIS"
____exports.Music.ISAACS_HOUSE = 112
____exports.Music[____exports.Music.ISAACS_HOUSE] = "ISAACS_HOUSE"
____exports.Music.FINAL_VOICEOVER = 113
____exports.Music[____exports.Music.FINAL_VOICEOVER] = "FINAL_VOICEOVER"
____exports.Music.DOWNPOUR_REVERSE = 114
____exports.Music[____exports.Music.DOWNPOUR_REVERSE] = "DOWNPOUR_REVERSE"
____exports.Music.DROSS_REVERSE = 115
____exports.Music[____exports.Music.DROSS_REVERSE] = "DROSS_REVERSE"
____exports.Music.MINESHAFT_AMBIENT = 116
____exports.Music[____exports.Music.MINESHAFT_AMBIENT] = "MINESHAFT_AMBIENT"
____exports.Music.MINESHAFT_ESCAPE = 117
____exports.Music[____exports.Music.MINESHAFT_ESCAPE] = "MINESHAFT_ESCAPE"
____exports.Music.REVERSE_GENESIS = 118
____exports.Music[____exports.Music.REVERSE_GENESIS] = "REVERSE_GENESIS"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.NpcState"] = function(...) 
local ____exports = {}
____exports.NpcState = {}
____exports.NpcState.INIT = 0
____exports.NpcState[____exports.NpcState.INIT] = "INIT"
____exports.NpcState.APPEAR = 1
____exports.NpcState[____exports.NpcState.APPEAR] = "APPEAR"
____exports.NpcState.APPEAR_CUSTOM = 2
____exports.NpcState[____exports.NpcState.APPEAR_CUSTOM] = "APPEAR_CUSTOM"
____exports.NpcState.IDLE = 3
____exports.NpcState[____exports.NpcState.IDLE] = "IDLE"
____exports.NpcState.MOVE = 4
____exports.NpcState[____exports.NpcState.MOVE] = "MOVE"
____exports.NpcState.SUICIDE = 5
____exports.NpcState[____exports.NpcState.SUICIDE] = "SUICIDE"
____exports.NpcState.JUMP = 6
____exports.NpcState[____exports.NpcState.JUMP] = "JUMP"
____exports.NpcState.STOMP = 7
____exports.NpcState[____exports.NpcState.STOMP] = "STOMP"
____exports.NpcState.ATTACK = 8
____exports.NpcState[____exports.NpcState.ATTACK] = "ATTACK"
____exports.NpcState.ATTACK_2 = 9
____exports.NpcState[____exports.NpcState.ATTACK_2] = "ATTACK_2"
____exports.NpcState.ATTACK_3 = 10
____exports.NpcState[____exports.NpcState.ATTACK_3] = "ATTACK_3"
____exports.NpcState.ATTACK_4 = 11
____exports.NpcState[____exports.NpcState.ATTACK_4] = "ATTACK_4"
____exports.NpcState.ATTACK_5 = 12
____exports.NpcState[____exports.NpcState.ATTACK_5] = "ATTACK_5"
____exports.NpcState.SUMMON = 13
____exports.NpcState[____exports.NpcState.SUMMON] = "SUMMON"
____exports.NpcState.SUMMON_2 = 14
____exports.NpcState[____exports.NpcState.SUMMON_2] = "SUMMON_2"
____exports.NpcState.SUMMON_3 = 15
____exports.NpcState[____exports.NpcState.SUMMON_3] = "SUMMON_3"
____exports.NpcState.SPECIAL = 16
____exports.NpcState[____exports.NpcState.SPECIAL] = "SPECIAL"
____exports.NpcState.UNIQUE_DEATH = 17
____exports.NpcState[____exports.NpcState.UNIQUE_DEATH] = "UNIQUE_DEATH"
____exports.NpcState.DEATH = 18
____exports.NpcState[____exports.NpcState.DEATH] = "DEATH"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.NullItemID"] = function(...) 
local ____exports = {}
____exports.NullItemID = {}
____exports.NullItemID.NULL = -1
____exports.NullItemID[____exports.NullItemID.NULL] = "NULL"
____exports.NullItemID.EXPLOSIVE_DIARRHEA = 0
____exports.NullItemID[____exports.NullItemID.EXPLOSIVE_DIARRHEA] = "EXPLOSIVE_DIARRHEA"
____exports.NullItemID.PUBERTY = 1
____exports.NullItemID[____exports.NullItemID.PUBERTY] = "PUBERTY"
____exports.NullItemID.I_FOUND_PILLS = 2
____exports.NullItemID[____exports.NullItemID.I_FOUND_PILLS] = "I_FOUND_PILLS"
____exports.NullItemID.LORD_OF_THE_FLIES = 3
____exports.NullItemID[____exports.NullItemID.LORD_OF_THE_FLIES] = "LORD_OF_THE_FLIES"
____exports.NullItemID.STATUE = 4
____exports.NullItemID[____exports.NullItemID.STATUE] = "STATUE"
____exports.NullItemID.GUPPY = 5
____exports.NullItemID[____exports.NullItemID.GUPPY] = "GUPPY"
____exports.NullItemID.WIZARD = 6
____exports.NullItemID[____exports.NullItemID.WIZARD] = "WIZARD"
____exports.NullItemID.MAGDALENE = 7
____exports.NullItemID[____exports.NullItemID.MAGDALENE] = "MAGDALENE"
____exports.NullItemID.CAIN = 8
____exports.NullItemID[____exports.NullItemID.CAIN] = "CAIN"
____exports.NullItemID.JUDAS = 9
____exports.NullItemID[____exports.NullItemID.JUDAS] = "JUDAS"
____exports.NullItemID.EVE = 10
____exports.NullItemID[____exports.NullItemID.EVE] = "EVE"
____exports.NullItemID.AZAZEL = 11
____exports.NullItemID[____exports.NullItemID.AZAZEL] = "AZAZEL"
____exports.NullItemID.EDEN = 12
____exports.NullItemID[____exports.NullItemID.EDEN] = "EDEN"
____exports.NullItemID.SAMSON = 13
____exports.NullItemID[____exports.NullItemID.SAMSON] = "SAMSON"
____exports.NullItemID.BLINDFOLD = 14
____exports.NullItemID[____exports.NullItemID.BLINDFOLD] = "BLINDFOLD"
____exports.NullItemID.BLANK_FACE = 15
____exports.NullItemID[____exports.NullItemID.BLANK_FACE] = "BLANK_FACE"
____exports.NullItemID.CHRISTMAS = 16
____exports.NullItemID[____exports.NullItemID.CHRISTMAS] = "CHRISTMAS"
____exports.NullItemID.PURITY_GLOW = 17
____exports.NullItemID[____exports.NullItemID.PURITY_GLOW] = "PURITY_GLOW"
____exports.NullItemID.EMPTY_VESSEL = 18
____exports.NullItemID[____exports.NullItemID.EMPTY_VESSEL] = "EMPTY_VESSEL"
____exports.NullItemID.MAW_MARK = 19
____exports.NullItemID[____exports.NullItemID.MAW_MARK] = "MAW_MARK"
____exports.NullItemID.MUSHROOM = 20
____exports.NullItemID[____exports.NullItemID.MUSHROOM] = "MUSHROOM"
____exports.NullItemID.ANGEL = 21
____exports.NullItemID[____exports.NullItemID.ANGEL] = "ANGEL"
____exports.NullItemID.BOB = 22
____exports.NullItemID[____exports.NullItemID.BOB] = "BOB"
____exports.NullItemID.DRUGS = 23
____exports.NullItemID[____exports.NullItemID.DRUGS] = "DRUGS"
____exports.NullItemID.MOM = 24
____exports.NullItemID[____exports.NullItemID.MOM] = "MOM"
____exports.NullItemID.BABY = 25
____exports.NullItemID[____exports.NullItemID.BABY] = "BABY"
____exports.NullItemID.EVIL_ANGEL = 26
____exports.NullItemID[____exports.NullItemID.EVIL_ANGEL] = "EVIL_ANGEL"
____exports.NullItemID.POOP = 27
____exports.NullItemID[____exports.NullItemID.POOP] = "POOP"
____exports.NullItemID.RELAX = 28
____exports.NullItemID[____exports.NullItemID.RELAX] = "RELAX"
____exports.NullItemID.OVERDOSE = 29
____exports.NullItemID[____exports.NullItemID.OVERDOSE] = "OVERDOSE"
____exports.NullItemID.BOOMERANG = 30
____exports.NullItemID[____exports.NullItemID.BOOMERANG] = "BOOMERANG"
____exports.NullItemID.MEGA_BLAST = 31
____exports.NullItemID[____exports.NullItemID.MEGA_BLAST] = "MEGA_BLAST"
____exports.NullItemID.LAZARUS = 32
____exports.NullItemID[____exports.NullItemID.LAZARUS] = "LAZARUS"
____exports.NullItemID.LAZARUS_2 = 33
____exports.NullItemID[____exports.NullItemID.LAZARUS_2] = "LAZARUS_2"
____exports.NullItemID.LILITH = 34
____exports.NullItemID[____exports.NullItemID.LILITH] = "LILITH"
____exports.NullItemID.IWATA = 35
____exports.NullItemID[____exports.NullItemID.IWATA] = "IWATA"
____exports.NullItemID.APOLLYON = 36
____exports.NullItemID[____exports.NullItemID.APOLLYON] = "APOLLYON"
____exports.NullItemID.BOOKWORM = 37
____exports.NullItemID[____exports.NullItemID.BOOKWORM] = "BOOKWORM"
____exports.NullItemID.ADULTHOOD = 38
____exports.NullItemID[____exports.NullItemID.ADULTHOOD] = "ADULTHOOD"
____exports.NullItemID.SPIDER_BABY = 39
____exports.NullItemID[____exports.NullItemID.SPIDER_BABY] = "SPIDER_BABY"
____exports.NullItemID.BATWING_WINGS = 40
____exports.NullItemID[____exports.NullItemID.BATWING_WINGS] = "BATWING_WINGS"
____exports.NullItemID.HUGE_GROWTH = 41
____exports.NullItemID[____exports.NullItemID.HUGE_GROWTH] = "HUGE_GROWTH"
____exports.NullItemID.ERA_WALK = 42
____exports.NullItemID[____exports.NullItemID.ERA_WALK] = "ERA_WALK"
____exports.NullItemID.SACRIFICIAL_ALTAR = 43
____exports.NullItemID[____exports.NullItemID.SACRIFICIAL_ALTAR] = "SACRIFICIAL_ALTAR"
____exports.NullItemID.FORGOTTEN = 44
____exports.NullItemID[____exports.NullItemID.FORGOTTEN] = "FORGOTTEN"
____exports.NullItemID.BRIMSTONE_2 = 45
____exports.NullItemID[____exports.NullItemID.BRIMSTONE_2] = "BRIMSTONE_2"
____exports.NullItemID.HOLY_CARD = 46
____exports.NullItemID[____exports.NullItemID.HOLY_CARD] = "HOLY_CARD"
____exports.NullItemID.KEEPER = 47
____exports.NullItemID[____exports.NullItemID.KEEPER] = "KEEPER"
____exports.NullItemID.CAMO_BOOST = 48
____exports.NullItemID[____exports.NullItemID.CAMO_BOOST] = "CAMO_BOOST"
____exports.NullItemID.LAZARUS_BOOST = 49
____exports.NullItemID[____exports.NullItemID.LAZARUS_BOOST] = "LAZARUS_BOOST"
____exports.NullItemID.SPIN_TO_WIN = 50
____exports.NullItemID[____exports.NullItemID.SPIN_TO_WIN] = "SPIN_TO_WIN"
____exports.NullItemID.BETHANY = 51
____exports.NullItemID[____exports.NullItemID.BETHANY] = "BETHANY"
____exports.NullItemID.JACOB = 52
____exports.NullItemID[____exports.NullItemID.JACOB] = "JACOB"
____exports.NullItemID.ESAU = 53
____exports.NullItemID[____exports.NullItemID.ESAU] = "ESAU"
____exports.NullItemID.BLOOD_OATH = 54
____exports.NullItemID[____exports.NullItemID.BLOOD_OATH] = "BLOOD_OATH"
____exports.NullItemID.INTRUDER = 55
____exports.NullItemID[____exports.NullItemID.INTRUDER] = "INTRUDER"
____exports.NullItemID.SOL = 56
____exports.NullItemID[____exports.NullItemID.SOL] = "SOL"
____exports.NullItemID.IT_HURTS = 57
____exports.NullItemID[____exports.NullItemID.IT_HURTS] = "IT_HURTS"
____exports.NullItemID.MARS = 58
____exports.NullItemID[____exports.NullItemID.MARS] = "MARS"
____exports.NullItemID.TOOTH_AND_NAIL = 59
____exports.NullItemID[____exports.NullItemID.TOOTH_AND_NAIL] = "TOOTH_AND_NAIL"
____exports.NullItemID.REVERSE_MAGICIAN = 60
____exports.NullItemID[____exports.NullItemID.REVERSE_MAGICIAN] = "REVERSE_MAGICIAN"
____exports.NullItemID.REVERSE_HIGH_PRIESTESS = 61
____exports.NullItemID[____exports.NullItemID.REVERSE_HIGH_PRIESTESS] = "REVERSE_HIGH_PRIESTESS"
____exports.NullItemID.REVERSE_EMPRESS = 62
____exports.NullItemID[____exports.NullItemID.REVERSE_EMPRESS] = "REVERSE_EMPRESS"
____exports.NullItemID.REVERSE_CHARIOT = 63
____exports.NullItemID[____exports.NullItemID.REVERSE_CHARIOT] = "REVERSE_CHARIOT"
____exports.NullItemID.REVERSE_STRENGTH = 64
____exports.NullItemID[____exports.NullItemID.REVERSE_STRENGTH] = "REVERSE_STRENGTH"
____exports.NullItemID.REVERSE_HANGED_MAN = 65
____exports.NullItemID[____exports.NullItemID.REVERSE_HANGED_MAN] = "REVERSE_HANGED_MAN"
____exports.NullItemID.REVERSE_SUN = 66
____exports.NullItemID[____exports.NullItemID.REVERSE_SUN] = "REVERSE_SUN"
____exports.NullItemID.REVERSE_DEVIL = 67
____exports.NullItemID[____exports.NullItemID.REVERSE_DEVIL] = "REVERSE_DEVIL"
____exports.NullItemID.REVERSE_CHARIOT_ALT = 68
____exports.NullItemID[____exports.NullItemID.REVERSE_CHARIOT_ALT] = "REVERSE_CHARIOT_ALT"
____exports.NullItemID.REVERSE_TEMPERANCE = 69
____exports.NullItemID[____exports.NullItemID.REVERSE_TEMPERANCE] = "REVERSE_TEMPERANCE"
____exports.NullItemID.REVERSE_STARS = 70
____exports.NullItemID[____exports.NullItemID.REVERSE_STARS] = "REVERSE_STARS"
____exports.NullItemID.WAVY_CAP_1 = 71
____exports.NullItemID[____exports.NullItemID.WAVY_CAP_1] = "WAVY_CAP_1"
____exports.NullItemID.WAVY_CAP_2 = 72
____exports.NullItemID[____exports.NullItemID.WAVY_CAP_2] = "WAVY_CAP_2"
____exports.NullItemID.WAVY_CAP_3 = 73
____exports.NullItemID[____exports.NullItemID.WAVY_CAP_3] = "WAVY_CAP_3"
____exports.NullItemID.LUNA = 74
____exports.NullItemID[____exports.NullItemID.LUNA] = "LUNA"
____exports.NullItemID.JUPITER_BODY = 75
____exports.NullItemID[____exports.NullItemID.JUPITER_BODY] = "JUPITER_BODY"
____exports.NullItemID.JUPITER_BODY_ANGEL = 76
____exports.NullItemID[____exports.NullItemID.JUPITER_BODY_ANGEL] = "JUPITER_BODY_ANGEL"
____exports.NullItemID.JUPITER_BODY_PONY = 77
____exports.NullItemID[____exports.NullItemID.JUPITER_BODY_PONY] = "JUPITER_BODY_PONY"
____exports.NullItemID.JUPITER_BODY_WHITE_PONY = 78
____exports.NullItemID[____exports.NullItemID.JUPITER_BODY_WHITE_PONY] = "JUPITER_BODY_WHITE_PONY"
____exports.NullItemID.ISAAC_B = 79
____exports.NullItemID[____exports.NullItemID.ISAAC_B] = "ISAAC_B"
____exports.NullItemID.MAGDALENE_B = 80
____exports.NullItemID[____exports.NullItemID.MAGDALENE_B] = "MAGDALENE_B"
____exports.NullItemID.CAIN_B = 81
____exports.NullItemID[____exports.NullItemID.CAIN_B] = "CAIN_B"
____exports.NullItemID.JUDAS_B = 82
____exports.NullItemID[____exports.NullItemID.JUDAS_B] = "JUDAS_B"
____exports.NullItemID.BLUE_BABY_B = 83
____exports.NullItemID[____exports.NullItemID.BLUE_BABY_B] = "BLUE_BABY_B"
____exports.NullItemID.EVE_B = 84
____exports.NullItemID[____exports.NullItemID.EVE_B] = "EVE_B"
____exports.NullItemID.SAMSON_B = 85
____exports.NullItemID[____exports.NullItemID.SAMSON_B] = "SAMSON_B"
____exports.NullItemID.AZAZEL_B = 86
____exports.NullItemID[____exports.NullItemID.AZAZEL_B] = "AZAZEL_B"
____exports.NullItemID.LAZARUS_B = 87
____exports.NullItemID[____exports.NullItemID.LAZARUS_B] = "LAZARUS_B"
____exports.NullItemID.EDEN_B = 88
____exports.NullItemID[____exports.NullItemID.EDEN_B] = "EDEN_B"
____exports.NullItemID.LOST_B = 89
____exports.NullItemID[____exports.NullItemID.LOST_B] = "LOST_B"
____exports.NullItemID.LILITH_B = 90
____exports.NullItemID[____exports.NullItemID.LILITH_B] = "LILITH_B"
____exports.NullItemID.KEEPER_B = 91
____exports.NullItemID[____exports.NullItemID.KEEPER_B] = "KEEPER_B"
____exports.NullItemID.APOLLYON_B = 92
____exports.NullItemID[____exports.NullItemID.APOLLYON_B] = "APOLLYON_B"
____exports.NullItemID.FORGOTTEN_B = 93
____exports.NullItemID[____exports.NullItemID.FORGOTTEN_B] = "FORGOTTEN_B"
____exports.NullItemID.BETHANY_B = 94
____exports.NullItemID[____exports.NullItemID.BETHANY_B] = "BETHANY_B"
____exports.NullItemID.JACOB_B = 95
____exports.NullItemID[____exports.NullItemID.JACOB_B] = "JACOB_B"
____exports.NullItemID.AZAZELS_RAGE_1 = 96
____exports.NullItemID[____exports.NullItemID.AZAZELS_RAGE_1] = "AZAZELS_RAGE_1"
____exports.NullItemID.AZAZELS_RAGE_2 = 97
____exports.NullItemID[____exports.NullItemID.AZAZELS_RAGE_2] = "AZAZELS_RAGE_2"
____exports.NullItemID.AZAZELS_RAGE_3 = 98
____exports.NullItemID[____exports.NullItemID.AZAZELS_RAGE_3] = "AZAZELS_RAGE_3"
____exports.NullItemID.AZAZELS_RAGE_4 = 99
____exports.NullItemID[____exports.NullItemID.AZAZELS_RAGE_4] = "AZAZELS_RAGE_4"
____exports.NullItemID.ESAU_JR = 100
____exports.NullItemID[____exports.NullItemID.ESAU_JR] = "ESAU_JR"
____exports.NullItemID.SPIRIT_SHACKLES_SOUL = 101
____exports.NullItemID[____exports.NullItemID.SPIRIT_SHACKLES_SOUL] = "SPIRIT_SHACKLES_SOUL"
____exports.NullItemID.SPIRIT_SHACKLES_DISABLED = 102
____exports.NullItemID[____exports.NullItemID.SPIRIT_SHACKLES_DISABLED] = "SPIRIT_SHACKLES_DISABLED"
____exports.NullItemID.BERSERK_SAMSON = 103
____exports.NullItemID[____exports.NullItemID.BERSERK_SAMSON] = "BERSERK_SAMSON"
____exports.NullItemID.LAZARUS_2_B = 104
____exports.NullItemID[____exports.NullItemID.LAZARUS_2_B] = "LAZARUS_2_B"
____exports.NullItemID.SOUL_B = 105
____exports.NullItemID[____exports.NullItemID.SOUL_B] = "SOUL_B"
____exports.NullItemID.FORGOTTEN_BOMB = 106
____exports.NullItemID[____exports.NullItemID.FORGOTTEN_BOMB] = "FORGOTTEN_BOMB"
____exports.NullItemID.EXTRA_BIG_FAN = 107
____exports.NullItemID[____exports.NullItemID.EXTRA_BIG_FAN] = "EXTRA_BIG_FAN"
____exports.NullItemID.JACOB_2_B = 108
____exports.NullItemID[____exports.NullItemID.JACOB_2_B] = "JACOB_2_B"
____exports.NullItemID.JACOBS_CURSE = 109
____exports.NullItemID[____exports.NullItemID.JACOBS_CURSE] = "JACOBS_CURSE"
____exports.NullItemID.BLOODY_BABYLON = 110
____exports.NullItemID[____exports.NullItemID.BLOODY_BABYLON] = "BLOODY_BABYLON"
____exports.NullItemID.DARK_ARTS = 111
____exports.NullItemID[____exports.NullItemID.DARK_ARTS] = "DARK_ARTS"
____exports.NullItemID.LOST_CURSE = 112
____exports.NullItemID[____exports.NullItemID.LOST_CURSE] = "LOST_CURSE"
____exports.NullItemID.LAZARUS_SOUL_REVIVE = 113
____exports.NullItemID[____exports.NullItemID.LAZARUS_SOUL_REVIVE] = "LAZARUS_SOUL_REVIVE"
____exports.NullItemID.SOUL_MAGDALENE = 114
____exports.NullItemID[____exports.NullItemID.SOUL_MAGDALENE] = "SOUL_MAGDALENE"
____exports.NullItemID.SOUL_BLUE_BABY = 115
____exports.NullItemID[____exports.NullItemID.SOUL_BLUE_BABY] = "SOUL_BLUE_BABY"
____exports.NullItemID.MIRROR_DEATH = 116
____exports.NullItemID[____exports.NullItemID.MIRROR_DEATH] = "MIRROR_DEATH"
____exports.NullItemID.HEMOPTYSIS = 117
____exports.NullItemID[____exports.NullItemID.HEMOPTYSIS] = "HEMOPTYSIS"
____exports.NullItemID.I_FOUND_HORSE_PILLS = 118
____exports.NullItemID[____exports.NullItemID.I_FOUND_HORSE_PILLS] = "I_FOUND_HORSE_PILLS"
____exports.NullItemID.HORSE_PUBERTY = 119
____exports.NullItemID[____exports.NullItemID.HORSE_PUBERTY] = "HORSE_PUBERTY"
____exports.NullItemID.SOUL_FORGOTTEN = 120
____exports.NullItemID[____exports.NullItemID.SOUL_FORGOTTEN] = "SOUL_FORGOTTEN"
____exports.NullItemID.SOUL_JACOB = 121
____exports.NullItemID[____exports.NullItemID.SOUL_JACOB] = "SOUL_JACOB"
____exports.NullItemID.BETHANY_B_BIRTHRIGHT = 122
____exports.NullItemID[____exports.NullItemID.BETHANY_B_BIRTHRIGHT] = "BETHANY_B_BIRTHRIGHT"
____exports.NullItemID.JUDAS_BIRTHRIGHT = 123
____exports.NullItemID[____exports.NullItemID.JUDAS_BIRTHRIGHT] = "JUDAS_BIRTHRIGHT"
____exports.NullItemID.JUDAS_BIRTHRIGHT_TIMED = 124
____exports.NullItemID[____exports.NullItemID.JUDAS_BIRTHRIGHT_TIMED] = "JUDAS_BIRTHRIGHT_TIMED"
____exports.NullItemID.DOUBLE_GUPPYS_EYE = 125
____exports.NullItemID[____exports.NullItemID.DOUBLE_GUPPYS_EYE] = "DOUBLE_GUPPYS_EYE"
____exports.NullItemID.DOUBLE_GLASS_EYE = 126
____exports.NullItemID[____exports.NullItemID.DOUBLE_GLASS_EYE] = "DOUBLE_GLASS_EYE"
____exports.NullItemID.HEMOPTYSIS_BOOST = 127
____exports.NullItemID[____exports.NullItemID.HEMOPTYSIS_BOOST] = "HEMOPTYSIS_BOOST"
____exports.NullItemID.SOUL_JUDAS = 128
____exports.NullItemID[____exports.NullItemID.SOUL_JUDAS] = "SOUL_JUDAS"
____exports.NullItemID.JUDAS_BIRTHRIGHT_STAGE = 129
____exports.NullItemID[____exports.NullItemID.JUDAS_BIRTHRIGHT_STAGE] = "JUDAS_BIRTHRIGHT_STAGE"
____exports.NullItemID.JUDAS_BIRTHRIGHT_PERMANENT = 130
____exports.NullItemID[____exports.NullItemID.JUDAS_BIRTHRIGHT_PERMANENT] = "JUDAS_BIRTHRIGHT_PERMANENT"
____exports.NullItemID.ESAU_JR_FAMILIAR = 131
____exports.NullItemID[____exports.NullItemID.ESAU_JR_FAMILIAR] = "ESAU_JR_FAMILIAR"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.PickupPrice"] = function(...) 
local ____exports = {}
____exports.PickupPrice = {}
____exports.PickupPrice.NULL = 0
____exports.PickupPrice[____exports.PickupPrice.NULL] = "NULL"
____exports.PickupPrice.ONE_HEART = -1
____exports.PickupPrice[____exports.PickupPrice.ONE_HEART] = "ONE_HEART"
____exports.PickupPrice.TWO_HEARTS = -2
____exports.PickupPrice[____exports.PickupPrice.TWO_HEARTS] = "TWO_HEARTS"
____exports.PickupPrice.THREE_SOUL_HEARTS = -3
____exports.PickupPrice[____exports.PickupPrice.THREE_SOUL_HEARTS] = "THREE_SOUL_HEARTS"
____exports.PickupPrice.ONE_HEART_AND_TWO_SOUL_HEARTS = -4
____exports.PickupPrice[____exports.PickupPrice.ONE_HEART_AND_TWO_SOUL_HEARTS] = "ONE_HEART_AND_TWO_SOUL_HEARTS"
____exports.PickupPrice.SPIKES = -5
____exports.PickupPrice[____exports.PickupPrice.SPIKES] = "SPIKES"
____exports.PickupPrice.YOUR_SOUL = -6
____exports.PickupPrice[____exports.PickupPrice.YOUR_SOUL] = "YOUR_SOUL"
____exports.PickupPrice.ONE_SOUL_HEART = -7
____exports.PickupPrice[____exports.PickupPrice.ONE_SOUL_HEART] = "ONE_SOUL_HEART"
____exports.PickupPrice.TWO_SOUL_HEARTS = -8
____exports.PickupPrice[____exports.PickupPrice.TWO_SOUL_HEARTS] = "TWO_SOUL_HEARTS"
____exports.PickupPrice.ONE_HEART_AND_ONE_SOUL_HEART = -9
____exports.PickupPrice[____exports.PickupPrice.ONE_HEART_AND_ONE_SOUL_HEART] = "ONE_HEART_AND_ONE_SOUL_HEART"
____exports.PickupPrice.FREE = -1000
____exports.PickupPrice[____exports.PickupPrice.FREE] = "FREE"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.PillEffect"] = function(...) 
local ____exports = {}
____exports.PillEffect = {}
____exports.PillEffect.BAD_GAS = 0
____exports.PillEffect[____exports.PillEffect.BAD_GAS] = "BAD_GAS"
____exports.PillEffect.BAD_TRIP = 1
____exports.PillEffect[____exports.PillEffect.BAD_TRIP] = "BAD_TRIP"
____exports.PillEffect.BALLS_OF_STEEL = 2
____exports.PillEffect[____exports.PillEffect.BALLS_OF_STEEL] = "BALLS_OF_STEEL"
____exports.PillEffect.BOMBS_ARE_KEYS = 3
____exports.PillEffect[____exports.PillEffect.BOMBS_ARE_KEYS] = "BOMBS_ARE_KEYS"
____exports.PillEffect.EXPLOSIVE_DIARRHEA = 4
____exports.PillEffect[____exports.PillEffect.EXPLOSIVE_DIARRHEA] = "EXPLOSIVE_DIARRHEA"
____exports.PillEffect.FULL_HEALTH = 5
____exports.PillEffect[____exports.PillEffect.FULL_HEALTH] = "FULL_HEALTH"
____exports.PillEffect.HEALTH_DOWN = 6
____exports.PillEffect[____exports.PillEffect.HEALTH_DOWN] = "HEALTH_DOWN"
____exports.PillEffect.HEALTH_UP = 7
____exports.PillEffect[____exports.PillEffect.HEALTH_UP] = "HEALTH_UP"
____exports.PillEffect.I_FOUND_PILLS = 8
____exports.PillEffect[____exports.PillEffect.I_FOUND_PILLS] = "I_FOUND_PILLS"
____exports.PillEffect.PUBERTY = 9
____exports.PillEffect[____exports.PillEffect.PUBERTY] = "PUBERTY"
____exports.PillEffect.PRETTY_FLY = 10
____exports.PillEffect[____exports.PillEffect.PRETTY_FLY] = "PRETTY_FLY"
____exports.PillEffect.RANGE_DOWN = 11
____exports.PillEffect[____exports.PillEffect.RANGE_DOWN] = "RANGE_DOWN"
____exports.PillEffect.RANGE_UP = 12
____exports.PillEffect[____exports.PillEffect.RANGE_UP] = "RANGE_UP"
____exports.PillEffect.SPEED_DOWN = 13
____exports.PillEffect[____exports.PillEffect.SPEED_DOWN] = "SPEED_DOWN"
____exports.PillEffect.SPEED_UP = 14
____exports.PillEffect[____exports.PillEffect.SPEED_UP] = "SPEED_UP"
____exports.PillEffect.TEARS_DOWN = 15
____exports.PillEffect[____exports.PillEffect.TEARS_DOWN] = "TEARS_DOWN"
____exports.PillEffect.TEARS_UP = 16
____exports.PillEffect[____exports.PillEffect.TEARS_UP] = "TEARS_UP"
____exports.PillEffect.LUCK_DOWN = 17
____exports.PillEffect[____exports.PillEffect.LUCK_DOWN] = "LUCK_DOWN"
____exports.PillEffect.LUCK_UP = 18
____exports.PillEffect[____exports.PillEffect.LUCK_UP] = "LUCK_UP"
____exports.PillEffect.TELEPILLS = 19
____exports.PillEffect[____exports.PillEffect.TELEPILLS] = "TELEPILLS"
____exports.PillEffect.FORTY_EIGHT_HOUR_ENERGY = 20
____exports.PillEffect[____exports.PillEffect.FORTY_EIGHT_HOUR_ENERGY] = "FORTY_EIGHT_HOUR_ENERGY"
____exports.PillEffect.HEMATEMESIS = 21
____exports.PillEffect[____exports.PillEffect.HEMATEMESIS] = "HEMATEMESIS"
____exports.PillEffect.PARALYSIS = 22
____exports.PillEffect[____exports.PillEffect.PARALYSIS] = "PARALYSIS"
____exports.PillEffect.I_CAN_SEE_FOREVER = 23
____exports.PillEffect[____exports.PillEffect.I_CAN_SEE_FOREVER] = "I_CAN_SEE_FOREVER"
____exports.PillEffect.PHEROMONES = 24
____exports.PillEffect[____exports.PillEffect.PHEROMONES] = "PHEROMONES"
____exports.PillEffect.AMNESIA = 25
____exports.PillEffect[____exports.PillEffect.AMNESIA] = "AMNESIA"
____exports.PillEffect.LEMON_PARTY = 26
____exports.PillEffect[____exports.PillEffect.LEMON_PARTY] = "LEMON_PARTY"
____exports.PillEffect.R_U_A_WIZARD = 27
____exports.PillEffect[____exports.PillEffect.R_U_A_WIZARD] = "R_U_A_WIZARD"
____exports.PillEffect.PERCS = 28
____exports.PillEffect[____exports.PillEffect.PERCS] = "PERCS"
____exports.PillEffect.ADDICTED = 29
____exports.PillEffect[____exports.PillEffect.ADDICTED] = "ADDICTED"
____exports.PillEffect.RELAX = 30
____exports.PillEffect[____exports.PillEffect.RELAX] = "RELAX"
____exports.PillEffect.QUESTION_MARKS = 31
____exports.PillEffect[____exports.PillEffect.QUESTION_MARKS] = "QUESTION_MARKS"
____exports.PillEffect.ONE_MAKES_YOU_LARGER = 32
____exports.PillEffect[____exports.PillEffect.ONE_MAKES_YOU_LARGER] = "ONE_MAKES_YOU_LARGER"
____exports.PillEffect.ONE_MAKES_YOU_SMALL = 33
____exports.PillEffect[____exports.PillEffect.ONE_MAKES_YOU_SMALL] = "ONE_MAKES_YOU_SMALL"
____exports.PillEffect.INFESTED_EXCLAMATION = 34
____exports.PillEffect[____exports.PillEffect.INFESTED_EXCLAMATION] = "INFESTED_EXCLAMATION"
____exports.PillEffect.INFESTED_QUESTION = 35
____exports.PillEffect[____exports.PillEffect.INFESTED_QUESTION] = "INFESTED_QUESTION"
____exports.PillEffect.POWER = 36
____exports.PillEffect[____exports.PillEffect.POWER] = "POWER"
____exports.PillEffect.RETRO_VISION = 37
____exports.PillEffect[____exports.PillEffect.RETRO_VISION] = "RETRO_VISION"
____exports.PillEffect.FRIENDS_TILL_THE_END = 38
____exports.PillEffect[____exports.PillEffect.FRIENDS_TILL_THE_END] = "FRIENDS_TILL_THE_END"
____exports.PillEffect.X_LAX = 39
____exports.PillEffect[____exports.PillEffect.X_LAX] = "X_LAX"
____exports.PillEffect.SOMETHINGS_WRONG = 40
____exports.PillEffect[____exports.PillEffect.SOMETHINGS_WRONG] = "SOMETHINGS_WRONG"
____exports.PillEffect.IM_DROWSY = 41
____exports.PillEffect[____exports.PillEffect.IM_DROWSY] = "IM_DROWSY"
____exports.PillEffect.IM_EXCITED = 42
____exports.PillEffect[____exports.PillEffect.IM_EXCITED] = "IM_EXCITED"
____exports.PillEffect.GULP = 43
____exports.PillEffect[____exports.PillEffect.GULP] = "GULP"
____exports.PillEffect.HORF = 44
____exports.PillEffect[____exports.PillEffect.HORF] = "HORF"
____exports.PillEffect.FEELS_LIKE_IM_WALKING_ON_SUNSHINE = 45
____exports.PillEffect[____exports.PillEffect.FEELS_LIKE_IM_WALKING_ON_SUNSHINE] = "FEELS_LIKE_IM_WALKING_ON_SUNSHINE"
____exports.PillEffect.VURP = 46
____exports.PillEffect[____exports.PillEffect.VURP] = "VURP"
____exports.PillEffect.SHOT_SPEED_DOWN = 47
____exports.PillEffect[____exports.PillEffect.SHOT_SPEED_DOWN] = "SHOT_SPEED_DOWN"
____exports.PillEffect.SHOT_SPEED_UP = 48
____exports.PillEffect[____exports.PillEffect.SHOT_SPEED_UP] = "SHOT_SPEED_UP"
____exports.PillEffect.EXPERIMENTAL = 49
____exports.PillEffect[____exports.PillEffect.EXPERIMENTAL] = "EXPERIMENTAL"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.PlayerForm"] = function(...) 
local ____exports = {}
--- The possible transformations that the player can have.
____exports.PlayerForm = {}
____exports.PlayerForm.GUPPY = 0
____exports.PlayerForm[____exports.PlayerForm.GUPPY] = "GUPPY"
____exports.PlayerForm.BEELZEBUB = 1
____exports.PlayerForm[____exports.PlayerForm.BEELZEBUB] = "BEELZEBUB"
____exports.PlayerForm.FUN_GUY = 2
____exports.PlayerForm[____exports.PlayerForm.FUN_GUY] = "FUN_GUY"
____exports.PlayerForm.SERAPHIM = 3
____exports.PlayerForm[____exports.PlayerForm.SERAPHIM] = "SERAPHIM"
____exports.PlayerForm.BOB = 4
____exports.PlayerForm[____exports.PlayerForm.BOB] = "BOB"
____exports.PlayerForm.SPUN = 5
____exports.PlayerForm[____exports.PlayerForm.SPUN] = "SPUN"
____exports.PlayerForm.YES_MOTHER = 6
____exports.PlayerForm[____exports.PlayerForm.YES_MOTHER] = "YES_MOTHER"
____exports.PlayerForm.CONJOINED = 7
____exports.PlayerForm[____exports.PlayerForm.CONJOINED] = "CONJOINED"
____exports.PlayerForm.LEVIATHAN = 8
____exports.PlayerForm[____exports.PlayerForm.LEVIATHAN] = "LEVIATHAN"
____exports.PlayerForm.OH_CRAP = 9
____exports.PlayerForm[____exports.PlayerForm.OH_CRAP] = "OH_CRAP"
____exports.PlayerForm.BOOKWORM = 10
____exports.PlayerForm[____exports.PlayerForm.BOOKWORM] = "BOOKWORM"
____exports.PlayerForm.ADULT = 11
____exports.PlayerForm[____exports.PlayerForm.ADULT] = "ADULT"
____exports.PlayerForm.SPIDER_BABY = 12
____exports.PlayerForm[____exports.PlayerForm.SPIDER_BABY] = "SPIDER_BABY"
____exports.PlayerForm.STOMPY = 13
____exports.PlayerForm[____exports.PlayerForm.STOMPY] = "STOMPY"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.PlayerItemAnimation"] = function(...) 
local ____exports = {}
____exports.PlayerItemAnimation = {}
____exports.PlayerItemAnimation.PICKUP = "Pickup"
____exports.PlayerItemAnimation.LIFT_ITEM = "LiftItem"
____exports.PlayerItemAnimation.HIDE_ITEM = "HideItem"
____exports.PlayerItemAnimation.USE_ITEM = "UseItem"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.PlayerSpriteLayer"] = function(...) 
local ____exports = {}
--- Corresponds to "resources/gfx/001.000_player.anm2".
____exports.PlayerSpriteLayer = {}
____exports.PlayerSpriteLayer.GLOW = 0
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.GLOW] = "GLOW"
____exports.PlayerSpriteLayer.BODY = 1
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.BODY] = "BODY"
____exports.PlayerSpriteLayer.BODY_0 = 2
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.BODY_0] = "BODY_0"
____exports.PlayerSpriteLayer.BODY_1 = 3
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.BODY_1] = "BODY_1"
____exports.PlayerSpriteLayer.HEAD = 4
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.HEAD] = "HEAD"
____exports.PlayerSpriteLayer.HEAD_0 = 5
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.HEAD_0] = "HEAD_0"
____exports.PlayerSpriteLayer.HEAD_1 = 6
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.HEAD_1] = "HEAD_1"
____exports.PlayerSpriteLayer.HEAD_2 = 7
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.HEAD_2] = "HEAD_2"
____exports.PlayerSpriteLayer.HEAD_3 = 8
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.HEAD_3] = "HEAD_3"
____exports.PlayerSpriteLayer.HEAD_4 = 9
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.HEAD_4] = "HEAD_4"
____exports.PlayerSpriteLayer.HEAD_5 = 10
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.HEAD_5] = "HEAD_5"
____exports.PlayerSpriteLayer.TOP_0 = 11
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.TOP_0] = "TOP_0"
____exports.PlayerSpriteLayer.EXTRA = 12
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.EXTRA] = "EXTRA"
____exports.PlayerSpriteLayer.GHOST = 13
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.GHOST] = "GHOST"
____exports.PlayerSpriteLayer.BACK = 14
____exports.PlayerSpriteLayer[____exports.PlayerSpriteLayer.BACK] = "BACK"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.PocketItemSlot"] = function(...) 
local ____exports = {}
____exports.PocketItemSlot = {}
____exports.PocketItemSlot.SLOT_1 = 0
____exports.PocketItemSlot[____exports.PocketItemSlot.SLOT_1] = "SLOT_1"
____exports.PocketItemSlot.SLOT_2 = 1
____exports.PocketItemSlot[____exports.PocketItemSlot.SLOT_2] = "SLOT_2"
____exports.PocketItemSlot.SLOT_3 = 2
____exports.PocketItemSlot[____exports.PocketItemSlot.SLOT_3] = "SLOT_3"
____exports.PocketItemSlot.SLOT_4 = 3
____exports.PocketItemSlot[____exports.PocketItemSlot.SLOT_4] = "SLOT_4"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.PoopSpellType"] = function(...) 
local ____exports = {}
____exports.PoopSpellType = {}
____exports.PoopSpellType.NONE = 0
____exports.PoopSpellType[____exports.PoopSpellType.NONE] = "NONE"
____exports.PoopSpellType.POOP = 1
____exports.PoopSpellType[____exports.PoopSpellType.POOP] = "POOP"
____exports.PoopSpellType.CORNY = 2
____exports.PoopSpellType[____exports.PoopSpellType.CORNY] = "CORNY"
____exports.PoopSpellType.BURNING = 3
____exports.PoopSpellType[____exports.PoopSpellType.BURNING] = "BURNING"
____exports.PoopSpellType.STONE = 4
____exports.PoopSpellType[____exports.PoopSpellType.STONE] = "STONE"
____exports.PoopSpellType.STINKY = 5
____exports.PoopSpellType[____exports.PoopSpellType.STINKY] = "STINKY"
____exports.PoopSpellType.BLACK = 6
____exports.PoopSpellType[____exports.PoopSpellType.BLACK] = "BLACK"
____exports.PoopSpellType.HOLY = 7
____exports.PoopSpellType[____exports.PoopSpellType.HOLY] = "HOLY"
____exports.PoopSpellType.LIQUID = 8
____exports.PoopSpellType[____exports.PoopSpellType.LIQUID] = "LIQUID"
____exports.PoopSpellType.FART = 9
____exports.PoopSpellType[____exports.PoopSpellType.FART] = "FART"
____exports.PoopSpellType.BOMB = 10
____exports.PoopSpellType[____exports.PoopSpellType.BOMB] = "BOMB"
____exports.PoopSpellType.DIARRHEA = 11
____exports.PoopSpellType[____exports.PoopSpellType.DIARRHEA] = "DIARRHEA"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.ProjectilesMode"] = function(...) 
local ____exports = {}
____exports.ProjectilesMode = {}
____exports.ProjectilesMode.ONE_PROJECTILE = 0
____exports.ProjectilesMode[____exports.ProjectilesMode.ONE_PROJECTILE] = "ONE_PROJECTILE"
____exports.ProjectilesMode.TWO_PROJECTILES = 1
____exports.ProjectilesMode[____exports.ProjectilesMode.TWO_PROJECTILES] = "TWO_PROJECTILES"
____exports.ProjectilesMode.THREE_PROJECTILES = 2
____exports.ProjectilesMode[____exports.ProjectilesMode.THREE_PROJECTILES] = "THREE_PROJECTILES"
____exports.ProjectilesMode.THREE_PROJECTILES_SPREAD = 3
____exports.ProjectilesMode[____exports.ProjectilesMode.THREE_PROJECTILES_SPREAD] = "THREE_PROJECTILES_SPREAD"
____exports.ProjectilesMode.FOUR_PROJECTILES = 4
____exports.ProjectilesMode[____exports.ProjectilesMode.FOUR_PROJECTILES] = "FOUR_PROJECTILES"
____exports.ProjectilesMode.FIVE_PROJECTILES = 5
____exports.ProjectilesMode[____exports.ProjectilesMode.FIVE_PROJECTILES] = "FIVE_PROJECTILES"
____exports.ProjectilesMode.FOUR_PROJECTILES_PLUS_PATTERN = 6
____exports.ProjectilesMode[____exports.ProjectilesMode.FOUR_PROJECTILES_PLUS_PATTERN] = "FOUR_PROJECTILES_PLUS_PATTERN"
____exports.ProjectilesMode.FOUR_PROJECTILES_X_PATTERN = 7
____exports.ProjectilesMode[____exports.ProjectilesMode.FOUR_PROJECTILES_X_PATTERN] = "FOUR_PROJECTILES_X_PATTERN"
____exports.ProjectilesMode.EIGHT_PROJECTILES_STAR_PATTERN = 8
____exports.ProjectilesMode[____exports.ProjectilesMode.EIGHT_PROJECTILES_STAR_PATTERN] = "EIGHT_PROJECTILES_STAR_PATTERN"
____exports.ProjectilesMode.N_PROJECTILES_IN_CIRCLE = 9
____exports.ProjectilesMode[____exports.ProjectilesMode.N_PROJECTILES_IN_CIRCLE] = "N_PROJECTILES_IN_CIRCLE"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.RenderMode"] = function(...) 
local ____exports = {}
____exports.RenderMode = {}
____exports.RenderMode.NULL = 0
____exports.RenderMode[____exports.RenderMode.NULL] = "NULL"
____exports.RenderMode.NORMAL = 1
____exports.RenderMode[____exports.RenderMode.NORMAL] = "NORMAL"
____exports.RenderMode.SKIP = 2
____exports.RenderMode[____exports.RenderMode.SKIP] = "SKIP"
____exports.RenderMode.WATER_ABOVE = 3
____exports.RenderMode[____exports.RenderMode.WATER_ABOVE] = "WATER_ABOVE"
____exports.RenderMode.WATER_REFRACT = 4
____exports.RenderMode[____exports.RenderMode.WATER_REFRACT] = "WATER_REFRACT"
____exports.RenderMode.WATER_REFLECT = 5
____exports.RenderMode[____exports.RenderMode.WATER_REFLECT] = "WATER_REFLECT"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.RoomDescriptorDisplayType"] = function(...) 
local ____exports = {}
--- Matches the `RoomDescriptor.DISPLAY_*` members of the `RoomDescriptor` class. In IsaacScript, we
-- reimplement this as an enum instead, since it is cleaner.
____exports.RoomDescriptorDisplayType = {}
____exports.RoomDescriptorDisplayType.NONE = 0
____exports.RoomDescriptorDisplayType[____exports.RoomDescriptorDisplayType.NONE] = "NONE"
____exports.RoomDescriptorDisplayType.BOX = 1
____exports.RoomDescriptorDisplayType[____exports.RoomDescriptorDisplayType.BOX] = "BOX"
____exports.RoomDescriptorDisplayType.LOCK = 2
____exports.RoomDescriptorDisplayType[____exports.RoomDescriptorDisplayType.LOCK] = "LOCK"
____exports.RoomDescriptorDisplayType.ICON = 4
____exports.RoomDescriptorDisplayType[____exports.RoomDescriptorDisplayType.ICON] = "ICON"
____exports.RoomDescriptorDisplayType.ALL = 5
____exports.RoomDescriptorDisplayType[____exports.RoomDescriptorDisplayType.ALL] = "ALL"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.RoomDifficulty"] = function(...) 
local ____exports = {}
--- Each room has an arbitrarily set difficulty of 0, 1, 2, 5, or 10. The floor generation algorithm
-- attempts to generates floors with a combined difficulty of a certain value.
____exports.RoomDifficulty = {}
____exports.RoomDifficulty.ALWAYS_EXCLUDED = 0
____exports.RoomDifficulty[____exports.RoomDifficulty.ALWAYS_EXCLUDED] = "ALWAYS_EXCLUDED"
____exports.RoomDifficulty.VERY_EASY = 1
____exports.RoomDifficulty[____exports.RoomDifficulty.VERY_EASY] = "VERY_EASY"
____exports.RoomDifficulty.EASY = 2
____exports.RoomDifficulty[____exports.RoomDifficulty.EASY] = "EASY"
____exports.RoomDifficulty.MEDIUM = 5
____exports.RoomDifficulty[____exports.RoomDifficulty.MEDIUM] = "MEDIUM"
____exports.RoomDifficulty.HARD = 10
____exports.RoomDifficulty[____exports.RoomDifficulty.HARD] = "HARD"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.RoomShape"] = function(...) 
local ____exports = {}
____exports.RoomShape = {}
____exports.RoomShape.SHAPE_1x1 = 1
____exports.RoomShape[____exports.RoomShape.SHAPE_1x1] = "SHAPE_1x1"
____exports.RoomShape.IH = 2
____exports.RoomShape[____exports.RoomShape.IH] = "IH"
____exports.RoomShape.IV = 3
____exports.RoomShape[____exports.RoomShape.IV] = "IV"
____exports.RoomShape.SHAPE_1x2 = 4
____exports.RoomShape[____exports.RoomShape.SHAPE_1x2] = "SHAPE_1x2"
____exports.RoomShape.IIV = 5
____exports.RoomShape[____exports.RoomShape.IIV] = "IIV"
____exports.RoomShape.SHAPE_2x1 = 6
____exports.RoomShape[____exports.RoomShape.SHAPE_2x1] = "SHAPE_2x1"
____exports.RoomShape.IIH = 7
____exports.RoomShape[____exports.RoomShape.IIH] = "IIH"
____exports.RoomShape.SHAPE_2x2 = 8
____exports.RoomShape[____exports.RoomShape.SHAPE_2x2] = "SHAPE_2x2"
____exports.RoomShape.LTL = 9
____exports.RoomShape[____exports.RoomShape.LTL] = "LTL"
____exports.RoomShape.LTR = 10
____exports.RoomShape[____exports.RoomShape.LTR] = "LTR"
____exports.RoomShape.LBL = 11
____exports.RoomShape[____exports.RoomShape.LBL] = "LBL"
____exports.RoomShape.LBR = 12
____exports.RoomShape[____exports.RoomShape.LBR] = "LBR"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.RoomTransitionAnim"] = function(...) 
local ____exports = {}
____exports.RoomTransitionAnim = {}
____exports.RoomTransitionAnim.WALK = 0
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.WALK] = "WALK"
____exports.RoomTransitionAnim.FADE = 1
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.FADE] = "FADE"
____exports.RoomTransitionAnim.PIXELATION = 2
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.PIXELATION] = "PIXELATION"
____exports.RoomTransitionAnim.TELEPORT = 3
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.TELEPORT] = "TELEPORT"
____exports.RoomTransitionAnim.MAZE = 4
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.MAZE] = "MAZE"
____exports.RoomTransitionAnim.ANKH = 5
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.ANKH] = "ANKH"
____exports.RoomTransitionAnim.DEAD_CAT = 6
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.DEAD_CAT] = "DEAD_CAT"
____exports.RoomTransitionAnim.ONE_UP = 7
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.ONE_UP] = "ONE_UP"
____exports.RoomTransitionAnim.COLLAR = 8
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.COLLAR] = "COLLAR"
____exports.RoomTransitionAnim.JUDAS_SHADOW = 9
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.JUDAS_SHADOW] = "JUDAS_SHADOW"
____exports.RoomTransitionAnim.LAZARUS = 10
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.LAZARUS] = "LAZARUS"
____exports.RoomTransitionAnim.WOMB_TELEPORT = 11
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.WOMB_TELEPORT] = "WOMB_TELEPORT"
____exports.RoomTransitionAnim.GLOWING_HOURGLASS = 12
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.GLOWING_HOURGLASS] = "GLOWING_HOURGLASS"
____exports.RoomTransitionAnim.D7 = 13
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.D7] = "D7"
____exports.RoomTransitionAnim.MISSING_POSTER = 14
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.MISSING_POSTER] = "MISSING_POSTER"
____exports.RoomTransitionAnim.BOSS_FORCED = 15
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.BOSS_FORCED] = "BOSS_FORCED"
____exports.RoomTransitionAnim.PORTAL_TELEPORT = 16
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.PORTAL_TELEPORT] = "PORTAL_TELEPORT"
____exports.RoomTransitionAnim.FORGOTTEN_TELEPORT = 17
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.FORGOTTEN_TELEPORT] = "FORGOTTEN_TELEPORT"
____exports.RoomTransitionAnim.FADE_MIRROR = 18
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.FADE_MIRROR] = "FADE_MIRROR"
____exports.RoomTransitionAnim.MINECART = 19
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.MINECART] = "MINECART"
____exports.RoomTransitionAnim.DEATH_CERTIFICATE = 20
____exports.RoomTransitionAnim[____exports.RoomTransitionAnim.DEATH_CERTIFICATE] = "DEATH_CERTIFICATE"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.RoomType"] = function(...) 
local ____exports = {}
____exports.RoomType = {}
____exports.RoomType.DEFAULT = 1
____exports.RoomType[____exports.RoomType.DEFAULT] = "DEFAULT"
____exports.RoomType.SHOP = 2
____exports.RoomType[____exports.RoomType.SHOP] = "SHOP"
____exports.RoomType.ERROR = 3
____exports.RoomType[____exports.RoomType.ERROR] = "ERROR"
____exports.RoomType.TREASURE = 4
____exports.RoomType[____exports.RoomType.TREASURE] = "TREASURE"
____exports.RoomType.BOSS = 5
____exports.RoomType[____exports.RoomType.BOSS] = "BOSS"
____exports.RoomType.MINI_BOSS = 6
____exports.RoomType[____exports.RoomType.MINI_BOSS] = "MINI_BOSS"
____exports.RoomType.SECRET = 7
____exports.RoomType[____exports.RoomType.SECRET] = "SECRET"
____exports.RoomType.SUPER_SECRET = 8
____exports.RoomType[____exports.RoomType.SUPER_SECRET] = "SUPER_SECRET"
____exports.RoomType.ARCADE = 9
____exports.RoomType[____exports.RoomType.ARCADE] = "ARCADE"
____exports.RoomType.CURSE = 10
____exports.RoomType[____exports.RoomType.CURSE] = "CURSE"
____exports.RoomType.CHALLENGE = 11
____exports.RoomType[____exports.RoomType.CHALLENGE] = "CHALLENGE"
____exports.RoomType.LIBRARY = 12
____exports.RoomType[____exports.RoomType.LIBRARY] = "LIBRARY"
____exports.RoomType.SACRIFICE = 13
____exports.RoomType[____exports.RoomType.SACRIFICE] = "SACRIFICE"
____exports.RoomType.DEVIL = 14
____exports.RoomType[____exports.RoomType.DEVIL] = "DEVIL"
____exports.RoomType.ANGEL = 15
____exports.RoomType[____exports.RoomType.ANGEL] = "ANGEL"
____exports.RoomType.DUNGEON = 16
____exports.RoomType[____exports.RoomType.DUNGEON] = "DUNGEON"
____exports.RoomType.BOSS_RUSH = 17
____exports.RoomType[____exports.RoomType.BOSS_RUSH] = "BOSS_RUSH"
____exports.RoomType.CLEAN_BEDROOM = 18
____exports.RoomType[____exports.RoomType.CLEAN_BEDROOM] = "CLEAN_BEDROOM"
____exports.RoomType.DIRTY_BEDROOM = 19
____exports.RoomType[____exports.RoomType.DIRTY_BEDROOM] = "DIRTY_BEDROOM"
____exports.RoomType.CHEST = 20
____exports.RoomType[____exports.RoomType.CHEST] = "CHEST"
____exports.RoomType.DICE = 21
____exports.RoomType[____exports.RoomType.DICE] = "DICE"
____exports.RoomType.BLACK_MARKET = 22
____exports.RoomType[____exports.RoomType.BLACK_MARKET] = "BLACK_MARKET"
____exports.RoomType.GREED_EXIT = 23
____exports.RoomType[____exports.RoomType.GREED_EXIT] = "GREED_EXIT"
____exports.RoomType.PLANETARIUM = 24
____exports.RoomType[____exports.RoomType.PLANETARIUM] = "PLANETARIUM"
____exports.RoomType.TELEPORTER = 25
____exports.RoomType[____exports.RoomType.TELEPORTER] = "TELEPORTER"
____exports.RoomType.TELEPORTER_EXIT = 26
____exports.RoomType[____exports.RoomType.TELEPORTER_EXIT] = "TELEPORTER_EXIT"
____exports.RoomType.SECRET_EXIT = 27
____exports.RoomType[____exports.RoomType.SECRET_EXIT] = "SECRET_EXIT"
____exports.RoomType.BLUE = 28
____exports.RoomType[____exports.RoomType.BLUE] = "BLUE"
____exports.RoomType.ULTRA_SECRET = 29
____exports.RoomType[____exports.RoomType.ULTRA_SECRET] = "ULTRA_SECRET"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.SeedEffect"] = function(...) 
local ____exports = {}
____exports.SeedEffect = {}
____exports.SeedEffect.NORMAL = 0
____exports.SeedEffect[____exports.SeedEffect.NORMAL] = "NORMAL"
____exports.SeedEffect.MOVEMENT_PITCH = 1
____exports.SeedEffect[____exports.SeedEffect.MOVEMENT_PITCH] = "MOVEMENT_PITCH"
____exports.SeedEffect.HEALTH_PITCH = 2
____exports.SeedEffect[____exports.SeedEffect.HEALTH_PITCH] = "HEALTH_PITCH"
____exports.SeedEffect.CAMO_ISAAC = 3
____exports.SeedEffect[____exports.SeedEffect.CAMO_ISAAC] = "CAMO_ISAAC"
____exports.SeedEffect.CAMO_ENEMIES = 4
____exports.SeedEffect[____exports.SeedEffect.CAMO_ENEMIES] = "CAMO_ENEMIES"
____exports.SeedEffect.CAMO_PICKUPS = 5
____exports.SeedEffect[____exports.SeedEffect.CAMO_PICKUPS] = "CAMO_PICKUPS"
____exports.SeedEffect.CAMO_EVERYTHING = 6
____exports.SeedEffect[____exports.SeedEffect.CAMO_EVERYTHING] = "CAMO_EVERYTHING"
____exports.SeedEffect.FART_SOUNDS = 7
____exports.SeedEffect[____exports.SeedEffect.FART_SOUNDS] = "FART_SOUNDS"
____exports.SeedEffect.OLD_TV = 8
____exports.SeedEffect[____exports.SeedEffect.OLD_TV] = "OLD_TV"
____exports.SeedEffect.DYSLEXIA = 9
____exports.SeedEffect[____exports.SeedEffect.DYSLEXIA] = "DYSLEXIA"
____exports.SeedEffect.NO_HUD = 10
____exports.SeedEffect[____exports.SeedEffect.NO_HUD] = "NO_HUD"
____exports.SeedEffect.PICKUPS_SLIDE = 11
____exports.SeedEffect[____exports.SeedEffect.PICKUPS_SLIDE] = "PICKUPS_SLIDE"
____exports.SeedEffect.CONTROLS_REVERSED = 12
____exports.SeedEffect[____exports.SeedEffect.CONTROLS_REVERSED] = "CONTROLS_REVERSED"
____exports.SeedEffect.ALL_CHAMPIONS = 13
____exports.SeedEffect[____exports.SeedEffect.ALL_CHAMPIONS] = "ALL_CHAMPIONS"
____exports.SeedEffect.INVISIBLE_ISAAC = 14
____exports.SeedEffect[____exports.SeedEffect.INVISIBLE_ISAAC] = "INVISIBLE_ISAAC"
____exports.SeedEffect.INVISIBLE_ENEMIES = 15
____exports.SeedEffect[____exports.SeedEffect.INVISIBLE_ENEMIES] = "INVISIBLE_ENEMIES"
____exports.SeedEffect.INFINITE_BASEMENT = 16
____exports.SeedEffect[____exports.SeedEffect.INFINITE_BASEMENT] = "INFINITE_BASEMENT"
____exports.SeedEffect.ALWAYS_CHARMED = 17
____exports.SeedEffect[____exports.SeedEffect.ALWAYS_CHARMED] = "ALWAYS_CHARMED"
____exports.SeedEffect.ALWAYS_CONFUSED = 18
____exports.SeedEffect[____exports.SeedEffect.ALWAYS_CONFUSED] = "ALWAYS_CONFUSED"
____exports.SeedEffect.ALWAYS_AFRAID = 19
____exports.SeedEffect[____exports.SeedEffect.ALWAYS_AFRAID] = "ALWAYS_AFRAID"
____exports.SeedEffect.ALWAYS_ALTERNATING_FEAR = 20
____exports.SeedEffect[____exports.SeedEffect.ALWAYS_ALTERNATING_FEAR] = "ALWAYS_ALTERNATING_FEAR"
____exports.SeedEffect.ALWAYS_CHARMED_AND_AFRAID = 21
____exports.SeedEffect[____exports.SeedEffect.ALWAYS_CHARMED_AND_AFRAID] = "ALWAYS_CHARMED_AND_AFRAID"
____exports.SeedEffect.EXTRA_BLOOD = 23
____exports.SeedEffect[____exports.SeedEffect.EXTRA_BLOOD] = "EXTRA_BLOOD"
____exports.SeedEffect.POOP_TRAIL = 24
____exports.SeedEffect[____exports.SeedEffect.POOP_TRAIL] = "POOP_TRAIL"
____exports.SeedEffect.PACIFIST = 25
____exports.SeedEffect[____exports.SeedEffect.PACIFIST] = "PACIFIST"
____exports.SeedEffect.DAMAGE_WHEN_STOPPED = 26
____exports.SeedEffect[____exports.SeedEffect.DAMAGE_WHEN_STOPPED] = "DAMAGE_WHEN_STOPPED"
____exports.SeedEffect.DAMAGE_ON_INTERVAL = 27
____exports.SeedEffect[____exports.SeedEffect.DAMAGE_ON_INTERVAL] = "DAMAGE_ON_INTERVAL"
____exports.SeedEffect.DAMAGE_ON_TIME_LIMIT = 28
____exports.SeedEffect[____exports.SeedEffect.DAMAGE_ON_TIME_LIMIT] = "DAMAGE_ON_TIME_LIMIT"
____exports.SeedEffect.PILLS_NEVER_IDENTIFY = 29
____exports.SeedEffect[____exports.SeedEffect.PILLS_NEVER_IDENTIFY] = "PILLS_NEVER_IDENTIFY"
____exports.SeedEffect.MYSTERY_TAROT_CARDS = 30
____exports.SeedEffect[____exports.SeedEffect.MYSTERY_TAROT_CARDS] = "MYSTERY_TAROT_CARDS"
____exports.SeedEffect.ENEMIES_RESPAWN = 32
____exports.SeedEffect[____exports.SeedEffect.ENEMIES_RESPAWN] = "ENEMIES_RESPAWN"
____exports.SeedEffect.ITEMS_COST_MONEY = 33
____exports.SeedEffect[____exports.SeedEffect.ITEMS_COST_MONEY] = "ITEMS_COST_MONEY"
____exports.SeedEffect.BIG_HEAD = 35
____exports.SeedEffect[____exports.SeedEffect.BIG_HEAD] = "BIG_HEAD"
____exports.SeedEffect.SMALL_HEAD = 36
____exports.SeedEffect[____exports.SeedEffect.SMALL_HEAD] = "SMALL_HEAD"
____exports.SeedEffect.BLACK_ISAAC = 37
____exports.SeedEffect[____exports.SeedEffect.BLACK_ISAAC] = "BLACK_ISAAC"
____exports.SeedEffect.GLOWING_TEARS = 38
____exports.SeedEffect[____exports.SeedEffect.GLOWING_TEARS] = "GLOWING_TEARS"
____exports.SeedEffect.SLOW_MUSIC = 41
____exports.SeedEffect[____exports.SeedEffect.SLOW_MUSIC] = "SLOW_MUSIC"
____exports.SeedEffect.ULTRA_SLOW_MUSIC = 42
____exports.SeedEffect[____exports.SeedEffect.ULTRA_SLOW_MUSIC] = "ULTRA_SLOW_MUSIC"
____exports.SeedEffect.FAST_MUSIC = 43
____exports.SeedEffect[____exports.SeedEffect.FAST_MUSIC] = "FAST_MUSIC"
____exports.SeedEffect.ULTRA_FAST_MUSIC = 44
____exports.SeedEffect[____exports.SeedEffect.ULTRA_FAST_MUSIC] = "ULTRA_FAST_MUSIC"
____exports.SeedEffect.NO_FACE = 46
____exports.SeedEffect[____exports.SeedEffect.NO_FACE] = "NO_FACE"
____exports.SeedEffect.ISAAC_TAKES_HIGH_DAMAGE = 47
____exports.SeedEffect[____exports.SeedEffect.ISAAC_TAKES_HIGH_DAMAGE] = "ISAAC_TAKES_HIGH_DAMAGE"
____exports.SeedEffect.ISAAC_TAKES_MASSIVE_DAMAGE = 48
____exports.SeedEffect[____exports.SeedEffect.ISAAC_TAKES_MASSIVE_DAMAGE] = "ISAAC_TAKES_MASSIVE_DAMAGE"
____exports.SeedEffect.ICE_PHYSICS = 52
____exports.SeedEffect[____exports.SeedEffect.ICE_PHYSICS] = "ICE_PHYSICS"
____exports.SeedEffect.KAPPA = 53
____exports.SeedEffect[____exports.SeedEffect.KAPPA] = "KAPPA"
____exports.SeedEffect.CHRISTMAS = 54
____exports.SeedEffect[____exports.SeedEffect.CHRISTMAS] = "CHRISTMAS"
____exports.SeedEffect.KIDS_MODE = 55
____exports.SeedEffect[____exports.SeedEffect.KIDS_MODE] = "KIDS_MODE"
____exports.SeedEffect.PERMANENT_CURSE_DARKNESS = 56
____exports.SeedEffect[____exports.SeedEffect.PERMANENT_CURSE_DARKNESS] = "PERMANENT_CURSE_DARKNESS"
____exports.SeedEffect.PERMANENT_CURSE_LABYRINTH = 57
____exports.SeedEffect[____exports.SeedEffect.PERMANENT_CURSE_LABYRINTH] = "PERMANENT_CURSE_LABYRINTH"
____exports.SeedEffect.PERMANENT_CURSE_LOST = 58
____exports.SeedEffect[____exports.SeedEffect.PERMANENT_CURSE_LOST] = "PERMANENT_CURSE_LOST"
____exports.SeedEffect.PERMANENT_CURSE_UNKNOWN = 59
____exports.SeedEffect[____exports.SeedEffect.PERMANENT_CURSE_UNKNOWN] = "PERMANENT_CURSE_UNKNOWN"
____exports.SeedEffect.PERMANENT_CURSE_MAZE = 60
____exports.SeedEffect[____exports.SeedEffect.PERMANENT_CURSE_MAZE] = "PERMANENT_CURSE_MAZE"
____exports.SeedEffect.PERMANENT_CURSE_BLIND = 61
____exports.SeedEffect[____exports.SeedEffect.PERMANENT_CURSE_BLIND] = "PERMANENT_CURSE_BLIND"
____exports.SeedEffect.PERMANENT_CURSE_CURSED = 62
____exports.SeedEffect[____exports.SeedEffect.PERMANENT_CURSE_CURSED] = "PERMANENT_CURSE_CURSED"
____exports.SeedEffect.PREVENT_CURSE_DARKNESS = 63
____exports.SeedEffect[____exports.SeedEffect.PREVENT_CURSE_DARKNESS] = "PREVENT_CURSE_DARKNESS"
____exports.SeedEffect.PREVENT_CURSE_LABYRINTH = 64
____exports.SeedEffect[____exports.SeedEffect.PREVENT_CURSE_LABYRINTH] = "PREVENT_CURSE_LABYRINTH"
____exports.SeedEffect.PREVENT_CURSE_LOST = 65
____exports.SeedEffect[____exports.SeedEffect.PREVENT_CURSE_LOST] = "PREVENT_CURSE_LOST"
____exports.SeedEffect.PREVENT_CURSE_UNKNOWN = 66
____exports.SeedEffect[____exports.SeedEffect.PREVENT_CURSE_UNKNOWN] = "PREVENT_CURSE_UNKNOWN"
____exports.SeedEffect.PREVENT_CURSE_MAZE = 67
____exports.SeedEffect[____exports.SeedEffect.PREVENT_CURSE_MAZE] = "PREVENT_CURSE_MAZE"
____exports.SeedEffect.PREVENT_CURSE_BLIND = 68
____exports.SeedEffect[____exports.SeedEffect.PREVENT_CURSE_BLIND] = "PREVENT_CURSE_BLIND"
____exports.SeedEffect.PREVENT_ALL_CURSES = 70
____exports.SeedEffect[____exports.SeedEffect.PREVENT_ALL_CURSES] = "PREVENT_ALL_CURSES"
____exports.SeedEffect.NO_BOSS_ROOM_EXITS = 71
____exports.SeedEffect[____exports.SeedEffect.NO_BOSS_ROOM_EXITS] = "NO_BOSS_ROOM_EXITS"
____exports.SeedEffect.PICKUPS_TIMEOUT = 72
____exports.SeedEffect[____exports.SeedEffect.PICKUPS_TIMEOUT] = "PICKUPS_TIMEOUT"
____exports.SeedEffect.INVINCIBLE = 73
____exports.SeedEffect[____exports.SeedEffect.INVINCIBLE] = "INVINCIBLE"
____exports.SeedEffect.SHOOT_IN_MOVEMENT_DIRECTION = 74
____exports.SeedEffect[____exports.SeedEffect.SHOOT_IN_MOVEMENT_DIRECTION] = "SHOOT_IN_MOVEMENT_DIRECTION"
____exports.SeedEffect.SHOOT_OPPOSITE_MOVEMENT_DIRECTION = 75
____exports.SeedEffect[____exports.SeedEffect.SHOOT_OPPOSITE_MOVEMENT_DIRECTION] = "SHOOT_OPPOSITE_MOVEMENT_DIRECTION"
____exports.SeedEffect.AXIS_ALIGNED_CONTROLS = 76
____exports.SeedEffect[____exports.SeedEffect.AXIS_ALIGNED_CONTROLS] = "AXIS_ALIGNED_CONTROLS"
____exports.SeedEffect.SUPER_HOT = 77
____exports.SeedEffect[____exports.SeedEffect.SUPER_HOT] = "SUPER_HOT"
____exports.SeedEffect.RETRO_VISION = 78
____exports.SeedEffect[____exports.SeedEffect.RETRO_VISION] = "RETRO_VISION"
____exports.SeedEffect.G_FUEL = 79
____exports.SeedEffect[____exports.SeedEffect.G_FUEL] = "G_FUEL"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.SkinColor"] = function(...) 
local ____exports = {}
____exports.SkinColor = {}
____exports.SkinColor.PINK = -1
____exports.SkinColor[____exports.SkinColor.PINK] = "PINK"
____exports.SkinColor.WHITE = 0
____exports.SkinColor[____exports.SkinColor.WHITE] = "WHITE"
____exports.SkinColor.BLACK = 1
____exports.SkinColor[____exports.SkinColor.BLACK] = "BLACK"
____exports.SkinColor.BLUE = 2
____exports.SkinColor[____exports.SkinColor.BLUE] = "BLUE"
____exports.SkinColor.RED = 3
____exports.SkinColor[____exports.SkinColor.RED] = "RED"
____exports.SkinColor.GREEN = 4
____exports.SkinColor[____exports.SkinColor.GREEN] = "GREEN"
____exports.SkinColor.GREY = 5
____exports.SkinColor[____exports.SkinColor.GREY] = "GREY"
____exports.SkinColor.SHADOW = 6
____exports.SkinColor[____exports.SkinColor.SHADOW] = "SHADOW"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.SortingLayer"] = function(...) 
local ____exports = {}
____exports.SortingLayer = {}
____exports.SortingLayer.BACKGROUND = 0
____exports.SortingLayer[____exports.SortingLayer.BACKGROUND] = "BACKGROUND"
____exports.SortingLayer.DOOR = 1
____exports.SortingLayer[____exports.SortingLayer.DOOR] = "DOOR"
____exports.SortingLayer.NORMAL = 2
____exports.SortingLayer[____exports.SortingLayer.NORMAL] = "NORMAL"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.SoundEffect"] = function(...) 
local ____exports = {}
____exports.SoundEffect = {}
____exports.SoundEffect.NULL = 0
____exports.SoundEffect[____exports.SoundEffect.NULL] = "NULL"
____exports.SoundEffect.ONE_UP = 1
____exports.SoundEffect[____exports.SoundEffect.ONE_UP] = "ONE_UP"
____exports.SoundEffect.BIRD_FLAP = 2
____exports.SoundEffect[____exports.SoundEffect.BIRD_FLAP] = "BIRD_FLAP"
____exports.SoundEffect.BLOBBY_WIGGLE = 3
____exports.SoundEffect[____exports.SoundEffect.BLOBBY_WIGGLE] = "BLOBBY_WIGGLE"
____exports.SoundEffect.INSECT_SWARM_LOOP = 4
____exports.SoundEffect[____exports.SoundEffect.INSECT_SWARM_LOOP] = "INSECT_SWARM_LOOP"
____exports.SoundEffect.BLOOD_LASER = 5
____exports.SoundEffect[____exports.SoundEffect.BLOOD_LASER] = "BLOOD_LASER"
____exports.SoundEffect.BLOOD_LASER_SMALL = 6
____exports.SoundEffect[____exports.SoundEffect.BLOOD_LASER_SMALL] = "BLOOD_LASER_SMALL"
____exports.SoundEffect.BLOOD_LASER_LARGE = 7
____exports.SoundEffect[____exports.SoundEffect.BLOOD_LASER_LARGE] = "BLOOD_LASER_LARGE"
____exports.SoundEffect.BOOK_PAGE_TURN_12 = 8
____exports.SoundEffect[____exports.SoundEffect.BOOK_PAGE_TURN_12] = "BOOK_PAGE_TURN_12"
____exports.SoundEffect.BOSS_BUG_HISS = 9
____exports.SoundEffect[____exports.SoundEffect.BOSS_BUG_HISS] = "BOSS_BUG_HISS"
____exports.SoundEffect.BLOOD_LASER_LARGER = 10
____exports.SoundEffect[____exports.SoundEffect.BLOOD_LASER_LARGER] = "BLOOD_LASER_LARGER"
____exports.SoundEffect.BOSS_GURGLE_ROAR = 11
____exports.SoundEffect[____exports.SoundEffect.BOSS_GURGLE_ROAR] = "BOSS_GURGLE_ROAR"
____exports.SoundEffect.BOSS_LITE_GURGLE = 12
____exports.SoundEffect[____exports.SoundEffect.BOSS_LITE_GURGLE] = "BOSS_LITE_GURGLE"
____exports.SoundEffect.BOSS_LITE_HISS = 13
____exports.SoundEffect[____exports.SoundEffect.BOSS_LITE_HISS] = "BOSS_LITE_HISS"
____exports.SoundEffect.BOSS_LITE_ROAR = 14
____exports.SoundEffect[____exports.SoundEffect.BOSS_LITE_ROAR] = "BOSS_LITE_ROAR"
____exports.SoundEffect.BOSS_LITE_SLOPPY_ROAR = 15
____exports.SoundEffect[____exports.SoundEffect.BOSS_LITE_SLOPPY_ROAR] = "BOSS_LITE_SLOPPY_ROAR"
____exports.SoundEffect.BOSS_SPIT_BLOB_BARF = 16
____exports.SoundEffect[____exports.SoundEffect.BOSS_SPIT_BLOB_BARF] = "BOSS_SPIT_BLOB_BARF"
____exports.SoundEffect.PAPER_IN = 17
____exports.SoundEffect[____exports.SoundEffect.PAPER_IN] = "PAPER_IN"
____exports.SoundEffect.PAPER_OUT = 18
____exports.SoundEffect[____exports.SoundEffect.PAPER_OUT] = "PAPER_OUT"
____exports.SoundEffect.CHEST_DROP = 21
____exports.SoundEffect[____exports.SoundEffect.CHEST_DROP] = "CHEST_DROP"
____exports.SoundEffect.CHEST_OPEN = 22
____exports.SoundEffect[____exports.SoundEffect.CHEST_OPEN] = "CHEST_OPEN"
____exports.SoundEffect.CHOIR_UNLOCK = 23
____exports.SoundEffect[____exports.SoundEffect.CHOIR_UNLOCK] = "CHOIR_UNLOCK"
____exports.SoundEffect.COIN_SLOT = 24
____exports.SoundEffect[____exports.SoundEffect.COIN_SLOT] = "COIN_SLOT"
____exports.SoundEffect.CUTE_GRUNT = 25
____exports.SoundEffect[____exports.SoundEffect.CUTE_GRUNT] = "CUTE_GRUNT"
____exports.SoundEffect.DEATH_BURST_BONE = 27
____exports.SoundEffect[____exports.SoundEffect.DEATH_BURST_BONE] = "DEATH_BURST_BONE"
____exports.SoundEffect.DEATH_BURST_LARGE = 28
____exports.SoundEffect[____exports.SoundEffect.DEATH_BURST_LARGE] = "DEATH_BURST_LARGE"
____exports.SoundEffect.DEATH_REVERSE = 29
____exports.SoundEffect[____exports.SoundEffect.DEATH_REVERSE] = "DEATH_REVERSE"
____exports.SoundEffect.DEATH_BURST_SMALL = 30
____exports.SoundEffect[____exports.SoundEffect.DEATH_BURST_SMALL] = "DEATH_BURST_SMALL"
____exports.SoundEffect.DEATH_CARD = 33
____exports.SoundEffect[____exports.SoundEffect.DEATH_CARD] = "DEATH_CARD"
____exports.SoundEffect.DEVIL_CARD = 34
____exports.SoundEffect[____exports.SoundEffect.DEVIL_CARD] = "DEVIL_CARD"
____exports.SoundEffect.DOOR_HEAVY_CLOSE = 35
____exports.SoundEffect[____exports.SoundEffect.DOOR_HEAVY_CLOSE] = "DOOR_HEAVY_CLOSE"
____exports.SoundEffect.DOOR_HEAVY_OPEN = 36
____exports.SoundEffect[____exports.SoundEffect.DOOR_HEAVY_OPEN] = "DOOR_HEAVY_OPEN"
____exports.SoundEffect.FART = 37
____exports.SoundEffect[____exports.SoundEffect.FART] = "FART"
____exports.SoundEffect.FETUS_JUMP = 38
____exports.SoundEffect[____exports.SoundEffect.FETUS_JUMP] = "FETUS_JUMP"
____exports.SoundEffect.FETUS_LAND = 40
____exports.SoundEffect[____exports.SoundEffect.FETUS_LAND] = "FETUS_LAND"
____exports.SoundEffect.FIRE_DEATH_HISS = 43
____exports.SoundEffect[____exports.SoundEffect.FIRE_DEATH_HISS] = "FIRE_DEATH_HISS"
____exports.SoundEffect.FLOATY_BABY_ROAR = 44
____exports.SoundEffect[____exports.SoundEffect.FLOATY_BABY_ROAR] = "FLOATY_BABY_ROAR"
____exports.SoundEffect.COIN_INSERT = 45
____exports.SoundEffect[____exports.SoundEffect.COIN_INSERT] = "COIN_INSERT"
____exports.SoundEffect.METAL_DOOR_CLOSE = 46
____exports.SoundEffect[____exports.SoundEffect.METAL_DOOR_CLOSE] = "METAL_DOOR_CLOSE"
____exports.SoundEffect.METAL_DOOR_OPEN = 47
____exports.SoundEffect[____exports.SoundEffect.METAL_DOOR_OPEN] = "METAL_DOOR_OPEN"
____exports.SoundEffect.FOREST_BOSS_STOMPS = 48
____exports.SoundEffect[____exports.SoundEffect.FOREST_BOSS_STOMPS] = "FOREST_BOSS_STOMPS"
____exports.SoundEffect.SCYTHE_BREAK = 49
____exports.SoundEffect[____exports.SoundEffect.SCYTHE_BREAK] = "SCYTHE_BREAK"
____exports.SoundEffect.STONE_WALKER = 50
____exports.SoundEffect[____exports.SoundEffect.STONE_WALKER] = "STONE_WALKER"
____exports.SoundEffect.GAS_CAN_POUR = 51
____exports.SoundEffect[____exports.SoundEffect.GAS_CAN_POUR] = "GAS_CAN_POUR"
____exports.SoundEffect.HELL_BOSS_GROUND_POUND = 52
____exports.SoundEffect[____exports.SoundEffect.HELL_BOSS_GROUND_POUND] = "HELL_BOSS_GROUND_POUND"
____exports.SoundEffect.GLASS_BREAK = 53
____exports.SoundEffect[____exports.SoundEffect.GLASS_BREAK] = "GLASS_BREAK"
____exports.SoundEffect.HOLY = 54
____exports.SoundEffect[____exports.SoundEffect.HOLY] = "HOLY"
____exports.SoundEffect.ISAAC_HURT_GRUNT = 55
____exports.SoundEffect[____exports.SoundEffect.ISAAC_HURT_GRUNT] = "ISAAC_HURT_GRUNT"
____exports.SoundEffect.CHILD_HAPPY_ROAR_SHORT = 56
____exports.SoundEffect[____exports.SoundEffect.CHILD_HAPPY_ROAR_SHORT] = "CHILD_HAPPY_ROAR_SHORT"
____exports.SoundEffect.CHILD_ANGRY_ROAR = 57
____exports.SoundEffect[____exports.SoundEffect.CHILD_ANGRY_ROAR] = "CHILD_ANGRY_ROAR"
____exports.SoundEffect.KEY_PICKUP_GAUNTLET = 58
____exports.SoundEffect[____exports.SoundEffect.KEY_PICKUP_GAUNTLET] = "KEY_PICKUP_GAUNTLET"
____exports.SoundEffect.KEY_DROP = 59
____exports.SoundEffect[____exports.SoundEffect.KEY_DROP] = "KEY_DROP"
____exports.SoundEffect.BABY_HURT = 60
____exports.SoundEffect[____exports.SoundEffect.BABY_HURT] = "BABY_HURT"
____exports.SoundEffect.MAGGOT_BURST_OUT = 64
____exports.SoundEffect[____exports.SoundEffect.MAGGOT_BURST_OUT] = "MAGGOT_BURST_OUT"
____exports.SoundEffect.MAGGOT_ENTER_GROUND = 66
____exports.SoundEffect[____exports.SoundEffect.MAGGOT_ENTER_GROUND] = "MAGGOT_ENTER_GROUND"
____exports.SoundEffect.MEAT_FEET_SLOW = 68
____exports.SoundEffect[____exports.SoundEffect.MEAT_FEET_SLOW] = "MEAT_FEET_SLOW"
____exports.SoundEffect.MEAT_IMPACTS = 69
____exports.SoundEffect[____exports.SoundEffect.MEAT_IMPACTS] = "MEAT_IMPACTS"
____exports.SoundEffect.MEAT_IMPACTS_OLD = 70
____exports.SoundEffect[____exports.SoundEffect.MEAT_IMPACTS_OLD] = "MEAT_IMPACTS_OLD"
____exports.SoundEffect.MEAT_JUMPS = 72
____exports.SoundEffect[____exports.SoundEffect.MEAT_JUMPS] = "MEAT_JUMPS"
____exports.SoundEffect.MEATY_DEATHS = 77
____exports.SoundEffect[____exports.SoundEffect.MEATY_DEATHS] = "MEATY_DEATHS"
____exports.SoundEffect.POT_BREAK_2 = 78
____exports.SoundEffect[____exports.SoundEffect.POT_BREAK_2] = "POT_BREAK_2"
____exports.SoundEffect.MUSHROOM_POOF_2 = 79
____exports.SoundEffect[____exports.SoundEffect.MUSHROOM_POOF_2] = "MUSHROOM_POOF_2"
____exports.SoundEffect.BLACK_POOF = 80
____exports.SoundEffect[____exports.SoundEffect.BLACK_POOF] = "BLACK_POOF"
____exports.SoundEffect.STATIC = 81
____exports.SoundEffect[____exports.SoundEffect.STATIC] = "STATIC"
____exports.SoundEffect.MOM_VOX_DEATH = 82
____exports.SoundEffect[____exports.SoundEffect.MOM_VOX_DEATH] = "MOM_VOX_DEATH"
____exports.SoundEffect.MOM_VOX_EVIL_LAUGH = 84
____exports.SoundEffect[____exports.SoundEffect.MOM_VOX_EVIL_LAUGH] = "MOM_VOX_EVIL_LAUGH"
____exports.SoundEffect.MOM_VOX_FILTERED_DEATH_1 = 85
____exports.SoundEffect[____exports.SoundEffect.MOM_VOX_FILTERED_DEATH_1] = "MOM_VOX_FILTERED_DEATH_1"
____exports.SoundEffect.MOM_VOX_FILTERED_EVIL_LAUGH = 86
____exports.SoundEffect[____exports.SoundEffect.MOM_VOX_FILTERED_EVIL_LAUGH] = "MOM_VOX_FILTERED_EVIL_LAUGH"
____exports.SoundEffect.MOM_VOX_FILTERED_HURT = 87
____exports.SoundEffect[____exports.SoundEffect.MOM_VOX_FILTERED_HURT] = "MOM_VOX_FILTERED_HURT"
____exports.SoundEffect.MOM_VOX_FILTERED_ISAAC = 90
____exports.SoundEffect[____exports.SoundEffect.MOM_VOX_FILTERED_ISAAC] = "MOM_VOX_FILTERED_ISAAC"
____exports.SoundEffect.MOM_VOX_GRUNT = 93
____exports.SoundEffect[____exports.SoundEffect.MOM_VOX_GRUNT] = "MOM_VOX_GRUNT"
____exports.SoundEffect.MOM_VOX_HURT = 97
____exports.SoundEffect[____exports.SoundEffect.MOM_VOX_HURT] = "MOM_VOX_HURT"
____exports.SoundEffect.MOM_VOX_ISAAC = 101
____exports.SoundEffect[____exports.SoundEffect.MOM_VOX_ISAAC] = "MOM_VOX_ISAAC"
____exports.SoundEffect.MONSTER_GRUNT_0 = 104
____exports.SoundEffect[____exports.SoundEffect.MONSTER_GRUNT_0] = "MONSTER_GRUNT_0"
____exports.SoundEffect.MONSTER_GRUNT_1 = 106
____exports.SoundEffect[____exports.SoundEffect.MONSTER_GRUNT_1] = "MONSTER_GRUNT_1"
____exports.SoundEffect.MONSTER_GRUNT_2 = 108
____exports.SoundEffect[____exports.SoundEffect.MONSTER_GRUNT_2] = "MONSTER_GRUNT_2"
____exports.SoundEffect.MONSTER_GRUNT_4 = 112
____exports.SoundEffect[____exports.SoundEffect.MONSTER_GRUNT_4] = "MONSTER_GRUNT_4"
____exports.SoundEffect.MONSTER_GRUNT_5 = 114
____exports.SoundEffect[____exports.SoundEffect.MONSTER_GRUNT_5] = "MONSTER_GRUNT_5"
____exports.SoundEffect.MONSTER_ROAR_0 = 115
____exports.SoundEffect[____exports.SoundEffect.MONSTER_ROAR_0] = "MONSTER_ROAR_0"
____exports.SoundEffect.MONSTER_ROAR_1 = 116
____exports.SoundEffect[____exports.SoundEffect.MONSTER_ROAR_1] = "MONSTER_ROAR_1"
____exports.SoundEffect.MONSTER_ROAR_2 = 117
____exports.SoundEffect[____exports.SoundEffect.MONSTER_ROAR_2] = "MONSTER_ROAR_2"
____exports.SoundEffect.MONSTER_ROAR_3 = 118
____exports.SoundEffect[____exports.SoundEffect.MONSTER_ROAR_3] = "MONSTER_ROAR_3"
____exports.SoundEffect.MONSTER_YELL_A = 119
____exports.SoundEffect[____exports.SoundEffect.MONSTER_YELL_A] = "MONSTER_YELL_A"
____exports.SoundEffect.MONSTER_YELL_B = 122
____exports.SoundEffect[____exports.SoundEffect.MONSTER_YELL_B] = "MONSTER_YELL_B"
____exports.SoundEffect.POWER_UP_1 = 128
____exports.SoundEffect[____exports.SoundEffect.POWER_UP_1] = "POWER_UP_1"
____exports.SoundEffect.POWER_UP_2 = 129
____exports.SoundEffect[____exports.SoundEffect.POWER_UP_2] = "POWER_UP_2"
____exports.SoundEffect.POWER_UP_3 = 130
____exports.SoundEffect[____exports.SoundEffect.POWER_UP_3] = "POWER_UP_3"
____exports.SoundEffect.POWER_UP_SPEWER = 132
____exports.SoundEffect[____exports.SoundEffect.POWER_UP_SPEWER] = "POWER_UP_SPEWER"
____exports.SoundEffect.RED_LIGHTNING_ZAP = 133
____exports.SoundEffect[____exports.SoundEffect.RED_LIGHTNING_ZAP] = "RED_LIGHTNING_ZAP"
____exports.SoundEffect.RED_LIGHTNING_ZAP_WEAK = 134
____exports.SoundEffect[____exports.SoundEffect.RED_LIGHTNING_ZAP_WEAK] = "RED_LIGHTNING_ZAP_WEAK"
____exports.SoundEffect.RED_LIGHTNING_ZAP_STRONG = 135
____exports.SoundEffect[____exports.SoundEffect.RED_LIGHTNING_ZAP_STRONG] = "RED_LIGHTNING_ZAP_STRONG"
____exports.SoundEffect.RED_LIGHTNING_ZAP_BURST = 136
____exports.SoundEffect[____exports.SoundEffect.RED_LIGHTNING_ZAP_BURST] = "RED_LIGHTNING_ZAP_BURST"
____exports.SoundEffect.ROCK_CRUMBLE = 137
____exports.SoundEffect[____exports.SoundEffect.ROCK_CRUMBLE] = "ROCK_CRUMBLE"
____exports.SoundEffect.POT_BREAK = 138
____exports.SoundEffect[____exports.SoundEffect.POT_BREAK] = "POT_BREAK"
____exports.SoundEffect.MUSHROOM_POOF = 139
____exports.SoundEffect[____exports.SoundEffect.MUSHROOM_POOF] = "MUSHROOM_POOF"
____exports.SoundEffect.ROCKET_BLAST_DEATH = 141
____exports.SoundEffect[____exports.SoundEffect.ROCKET_BLAST_DEATH] = "ROCKET_BLAST_DEATH"
____exports.SoundEffect.SMB_LARGE_CHEWS_4 = 142
____exports.SoundEffect[____exports.SoundEffect.SMB_LARGE_CHEWS_4] = "SMB_LARGE_CHEWS_4"
____exports.SoundEffect.SCARED_WHIMPER = 143
____exports.SoundEffect[____exports.SoundEffect.SCARED_WHIMPER] = "SCARED_WHIMPER"
____exports.SoundEffect.SHAKEY_KID_ROAR = 146
____exports.SoundEffect[____exports.SoundEffect.SHAKEY_KID_ROAR] = "SHAKEY_KID_ROAR"
____exports.SoundEffect.SINK_DRAIN_GURGLE = 149
____exports.SoundEffect[____exports.SoundEffect.SINK_DRAIN_GURGLE] = "SINK_DRAIN_GURGLE"
____exports.SoundEffect.TEAR_IMPACTS = 150
____exports.SoundEffect[____exports.SoundEffect.TEAR_IMPACTS] = "TEAR_IMPACTS"
____exports.SoundEffect.TEARS_FIRE = 153
____exports.SoundEffect[____exports.SoundEffect.TEARS_FIRE] = "TEARS_FIRE"
____exports.SoundEffect.UNLOCK = 156
____exports.SoundEffect[____exports.SoundEffect.UNLOCK] = "UNLOCK"
____exports.SoundEffect.VAMP_GULP = 157
____exports.SoundEffect[____exports.SoundEffect.VAMP_GULP] = "VAMP_GULP"
____exports.SoundEffect.WHEEZY_COUGH = 158
____exports.SoundEffect[____exports.SoundEffect.WHEEZY_COUGH] = "WHEEZY_COUGH"
____exports.SoundEffect.SPIDER_COUGH = 159
____exports.SoundEffect[____exports.SoundEffect.SPIDER_COUGH] = "SPIDER_COUGH"
____exports.SoundEffect.PORTAL_OPEN = 160
____exports.SoundEffect[____exports.SoundEffect.PORTAL_OPEN] = "PORTAL_OPEN"
____exports.SoundEffect.PORTAL_LOOP = 161
____exports.SoundEffect[____exports.SoundEffect.PORTAL_LOOP] = "PORTAL_LOOP"
____exports.SoundEffect.PORTAL_SPAWN = 162
____exports.SoundEffect[____exports.SoundEffect.PORTAL_SPAWN] = "PORTAL_SPAWN"
____exports.SoundEffect.TAR_LOOP = 163
____exports.SoundEffect[____exports.SoundEffect.TAR_LOOP] = "TAR_LOOP"
____exports.SoundEffect.ZOMBIE_WALKER_KID = 165
____exports.SoundEffect[____exports.SoundEffect.ZOMBIE_WALKER_KID] = "ZOMBIE_WALKER_KID"
____exports.SoundEffect.ANIMAL_SQUISH = 166
____exports.SoundEffect[____exports.SoundEffect.ANIMAL_SQUISH] = "ANIMAL_SQUISH"
____exports.SoundEffect.ANGRY_GURGLE = 167
____exports.SoundEffect[____exports.SoundEffect.ANGRY_GURGLE] = "ANGRY_GURGLE"
____exports.SoundEffect.BAND_AID_PICK_UP = 169
____exports.SoundEffect[____exports.SoundEffect.BAND_AID_PICK_UP] = "BAND_AID_PICK_UP"
____exports.SoundEffect.BATTERY_CHARGE = 170
____exports.SoundEffect[____exports.SoundEffect.BATTERY_CHARGE] = "BATTERY_CHARGE"
____exports.SoundEffect.BEEP = 171
____exports.SoundEffect[____exports.SoundEffect.BEEP] = "BEEP"
____exports.SoundEffect.LIGHT_BOLT = 172
____exports.SoundEffect[____exports.SoundEffect.LIGHT_BOLT] = "LIGHT_BOLT"
____exports.SoundEffect.LIGHT_BOLT_CHARGE = 173
____exports.SoundEffect[____exports.SoundEffect.LIGHT_BOLT_CHARGE] = "LIGHT_BOLT_CHARGE"
____exports.SoundEffect.BLOOD_BANK_TOUCHED = 174
____exports.SoundEffect[____exports.SoundEffect.BLOOD_BANK_TOUCHED] = "BLOOD_BANK_TOUCHED"
____exports.SoundEffect.BLOOD_BANK_SPAWN = 175
____exports.SoundEffect[____exports.SoundEffect.BLOOD_BANK_SPAWN] = "BLOOD_BANK_SPAWN"
____exports.SoundEffect.BLOOD_SHOOT = 178
____exports.SoundEffect[____exports.SoundEffect.BLOOD_SHOOT] = "BLOOD_SHOOT"
____exports.SoundEffect.BOIL_HATCH = 181
____exports.SoundEffect[____exports.SoundEffect.BOIL_HATCH] = "BOIL_HATCH"
____exports.SoundEffect.BOSS_1_EXPLOSIONS = 182
____exports.SoundEffect[____exports.SoundEffect.BOSS_1_EXPLOSIONS] = "BOSS_1_EXPLOSIONS"
____exports.SoundEffect.EXPLOSION_WEAK = 183
____exports.SoundEffect[____exports.SoundEffect.EXPLOSION_WEAK] = "EXPLOSION_WEAK"
____exports.SoundEffect.EXPLOSION_STRONG = 184
____exports.SoundEffect[____exports.SoundEffect.EXPLOSION_STRONG] = "EXPLOSION_STRONG"
____exports.SoundEffect.BOSS_2_BUBBLES = 185
____exports.SoundEffect[____exports.SoundEffect.BOSS_2_BUBBLES] = "BOSS_2_BUBBLES"
____exports.SoundEffect.EXPLOSION_DEBRIS = 186
____exports.SoundEffect[____exports.SoundEffect.EXPLOSION_DEBRIS] = "EXPLOSION_DEBRIS"
____exports.SoundEffect.BOSS_2_INTRO_ERROR_BUZZ = 187
____exports.SoundEffect[____exports.SoundEffect.BOSS_2_INTRO_ERROR_BUZZ] = "BOSS_2_INTRO_ERROR_BUZZ"
____exports.SoundEffect.CASTLE_PORTCULLIS = 190
____exports.SoundEffect[____exports.SoundEffect.CASTLE_PORTCULLIS] = "CASTLE_PORTCULLIS"
____exports.SoundEffect.CHARACTER_SELECT_LEFT = 194
____exports.SoundEffect[____exports.SoundEffect.CHARACTER_SELECT_LEFT] = "CHARACTER_SELECT_LEFT"
____exports.SoundEffect.CHARACTER_SELECT_RIGHT = 195
____exports.SoundEffect[____exports.SoundEffect.CHARACTER_SELECT_RIGHT] = "CHARACTER_SELECT_RIGHT"
____exports.SoundEffect.DERP = 197
____exports.SoundEffect[____exports.SoundEffect.DERP] = "DERP"
____exports.SoundEffect.DIME_DROP = 198
____exports.SoundEffect[____exports.SoundEffect.DIME_DROP] = "DIME_DROP"
____exports.SoundEffect.DIME_PICKUP = 199
____exports.SoundEffect[____exports.SoundEffect.DIME_PICKUP] = "DIME_PICKUP"
____exports.SoundEffect.LUCKY_PICKUP = 200
____exports.SoundEffect[____exports.SoundEffect.LUCKY_PICKUP] = "LUCKY_PICKUP"
____exports.SoundEffect.FETUS_FEET = 201
____exports.SoundEffect[____exports.SoundEffect.FETUS_FEET] = "FETUS_FEET"
____exports.SoundEffect.GOLDEN_KEY = 204
____exports.SoundEffect[____exports.SoundEffect.GOLDEN_KEY] = "GOLDEN_KEY"
____exports.SoundEffect.GOO_ATTACH = 205
____exports.SoundEffect[____exports.SoundEffect.GOO_ATTACH] = "GOO_ATTACH"
____exports.SoundEffect.GOO_DEATH = 207
____exports.SoundEffect[____exports.SoundEffect.GOO_DEATH] = "GOO_DEATH"
____exports.SoundEffect.HAND_LASERS = 211
____exports.SoundEffect[____exports.SoundEffect.HAND_LASERS] = "HAND_LASERS"
____exports.SoundEffect.HEART_IN = 212
____exports.SoundEffect[____exports.SoundEffect.HEART_IN] = "HEART_IN"
____exports.SoundEffect.HEART_OUT = 213
____exports.SoundEffect[____exports.SoundEffect.HEART_OUT] = "HEART_OUT"
____exports.SoundEffect.HELL_PORTAL_1 = 214
____exports.SoundEffect[____exports.SoundEffect.HELL_PORTAL_1] = "HELL_PORTAL_1"
____exports.SoundEffect.HELL_PORTAL_2 = 215
____exports.SoundEffect[____exports.SoundEffect.HELL_PORTAL_2] = "HELL_PORTAL_2"
____exports.SoundEffect.ISAAC_DIES = 217
____exports.SoundEffect[____exports.SoundEffect.ISAAC_DIES] = "ISAAC_DIES"
____exports.SoundEffect.ITEM_RECHARGE = 218
____exports.SoundEffect[____exports.SoundEffect.ITEM_RECHARGE] = "ITEM_RECHARGE"
____exports.SoundEffect.KISS_LIPS = 219
____exports.SoundEffect[____exports.SoundEffect.KISS_LIPS] = "KISS_LIPS"
____exports.SoundEffect.LEECH = 221
____exports.SoundEffect[____exports.SoundEffect.LEECH] = "LEECH"
____exports.SoundEffect.MAGGOT_CHARGE = 224
____exports.SoundEffect[____exports.SoundEffect.MAGGOT_CHARGE] = "MAGGOT_CHARGE"
____exports.SoundEffect.MEAT_HEAD_SHOOT = 226
____exports.SoundEffect[____exports.SoundEffect.MEAT_HEAD_SHOOT] = "MEAT_HEAD_SHOOT"
____exports.SoundEffect.METAL_BLOCK_BREAK = 229
____exports.SoundEffect[____exports.SoundEffect.METAL_BLOCK_BREAK] = "METAL_BLOCK_BREAK"
____exports.SoundEffect.NICKEL_DROP = 231
____exports.SoundEffect[____exports.SoundEffect.NICKEL_DROP] = "NICKEL_DROP"
____exports.SoundEffect.NICKEL_PICKUP = 232
____exports.SoundEffect[____exports.SoundEffect.NICKEL_PICKUP] = "NICKEL_PICKUP"
____exports.SoundEffect.PENNY_DROP = 233
____exports.SoundEffect[____exports.SoundEffect.PENNY_DROP] = "PENNY_DROP"
____exports.SoundEffect.PENNY_PICKUP = 234
____exports.SoundEffect[____exports.SoundEffect.PENNY_PICKUP] = "PENNY_PICKUP"
____exports.SoundEffect.PLOP = 237
____exports.SoundEffect[____exports.SoundEffect.PLOP] = "PLOP"
____exports.SoundEffect.SATAN_APPEAR = 238
____exports.SoundEffect[____exports.SoundEffect.SATAN_APPEAR] = "SATAN_APPEAR"
____exports.SoundEffect.SATAN_BLAST = 239
____exports.SoundEffect[____exports.SoundEffect.SATAN_BLAST] = "SATAN_BLAST"
____exports.SoundEffect.SATAN_CHARGE_UP = 240
____exports.SoundEffect[____exports.SoundEffect.SATAN_CHARGE_UP] = "SATAN_CHARGE_UP"
____exports.SoundEffect.SATAN_GROW = 241
____exports.SoundEffect[____exports.SoundEffect.SATAN_GROW] = "SATAN_GROW"
____exports.SoundEffect.SATAN_HURT = 242
____exports.SoundEffect[____exports.SoundEffect.SATAN_HURT] = "SATAN_HURT"
____exports.SoundEffect.SATAN_RISE_UP = 243
____exports.SoundEffect[____exports.SoundEffect.SATAN_RISE_UP] = "SATAN_RISE_UP"
____exports.SoundEffect.SATAN_SPIT = 245
____exports.SoundEffect[____exports.SoundEffect.SATAN_SPIT] = "SATAN_SPIT"
____exports.SoundEffect.SATAN_STOMP = 246
____exports.SoundEffect[____exports.SoundEffect.SATAN_STOMP] = "SATAN_STOMP"
____exports.SoundEffect.SCAMPER = 249
____exports.SoundEffect[____exports.SoundEffect.SCAMPER] = "SCAMPER"
____exports.SoundEffect.SHELL_GAME = 252
____exports.SoundEffect[____exports.SoundEffect.SHELL_GAME] = "SHELL_GAME"
____exports.SoundEffect.SLOT_SPAWN = 255
____exports.SoundEffect[____exports.SoundEffect.SLOT_SPAWN] = "SLOT_SPAWN"
____exports.SoundEffect.SPLATTER = 258
____exports.SoundEffect[____exports.SoundEffect.SPLATTER] = "SPLATTER"
____exports.SoundEffect.STEAM_HALF_SEC = 261
____exports.SoundEffect[____exports.SoundEffect.STEAM_HALF_SEC] = "STEAM_HALF_SEC"
____exports.SoundEffect.STONE_SHOOT = 262
____exports.SoundEffect[____exports.SoundEffect.STONE_SHOOT] = "STONE_SHOOT"
____exports.SoundEffect.WEIRD_WORM_SPIT = 263
____exports.SoundEffect[____exports.SoundEffect.WEIRD_WORM_SPIT] = "WEIRD_WORM_SPIT"
____exports.SoundEffect.SUMMON_SOUND = 265
____exports.SoundEffect[____exports.SoundEffect.SUMMON_SOUND] = "SUMMON_SOUND"
____exports.SoundEffect.SUPER_HOLY = 266
____exports.SoundEffect[____exports.SoundEffect.SUPER_HOLY] = "SUPER_HOLY"
____exports.SoundEffect.THUMBS_DOWN = 267
____exports.SoundEffect[____exports.SoundEffect.THUMBS_DOWN] = "THUMBS_DOWN"
____exports.SoundEffect.THUMBS_UP = 268
____exports.SoundEffect[____exports.SoundEffect.THUMBS_UP] = "THUMBS_UP"
____exports.SoundEffect.FIRE_BURN = 269
____exports.SoundEffect[____exports.SoundEffect.FIRE_BURN] = "FIRE_BURN"
____exports.SoundEffect.HAPPY_RAINBOW = 270
____exports.SoundEffect[____exports.SoundEffect.HAPPY_RAINBOW] = "HAPPY_RAINBOW"
____exports.SoundEffect.LASER_RING = 271
____exports.SoundEffect[____exports.SoundEffect.LASER_RING] = "LASER_RING"
____exports.SoundEffect.LASER_RING_WEAK = 272
____exports.SoundEffect[____exports.SoundEffect.LASER_RING_WEAK] = "LASER_RING_WEAK"
____exports.SoundEffect.LASER_RING_STRONG = 273
____exports.SoundEffect[____exports.SoundEffect.LASER_RING_STRONG] = "LASER_RING_STRONG"
____exports.SoundEffect.CASH_REGISTER = 274
____exports.SoundEffect[____exports.SoundEffect.CASH_REGISTER] = "CASH_REGISTER"
____exports.SoundEffect.ANGEL_WING = 275
____exports.SoundEffect[____exports.SoundEffect.ANGEL_WING] = "ANGEL_WING"
____exports.SoundEffect.ANGEL_BEAM = 276
____exports.SoundEffect[____exports.SoundEffect.ANGEL_BEAM] = "ANGEL_BEAM"
____exports.SoundEffect.HOLY_MANTLE = 277
____exports.SoundEffect[____exports.SoundEffect.HOLY_MANTLE] = "HOLY_MANTLE"
____exports.SoundEffect.MEGA_BLAST_START = 278
____exports.SoundEffect[____exports.SoundEffect.MEGA_BLAST_START] = "MEGA_BLAST_START"
____exports.SoundEffect.MEGA_BLAST_LOOP = 279
____exports.SoundEffect[____exports.SoundEffect.MEGA_BLAST_LOOP] = "MEGA_BLAST_LOOP"
____exports.SoundEffect.MEGA_BLAST_END = 280
____exports.SoundEffect[____exports.SoundEffect.MEGA_BLAST_END] = "MEGA_BLAST_END"
____exports.SoundEffect.BLOOD_LASER_LOOP = 281
____exports.SoundEffect[____exports.SoundEffect.BLOOD_LASER_LOOP] = "BLOOD_LASER_LOOP"
____exports.SoundEffect.MENU_SCROLL = 282
____exports.SoundEffect[____exports.SoundEffect.MENU_SCROLL] = "MENU_SCROLL"
____exports.SoundEffect.MENU_NOTE_APPEAR = 283
____exports.SoundEffect[____exports.SoundEffect.MENU_NOTE_APPEAR] = "MENU_NOTE_APPEAR"
____exports.SoundEffect.MENU_NOTE_HIDE = 284
____exports.SoundEffect[____exports.SoundEffect.MENU_NOTE_HIDE] = "MENU_NOTE_HIDE"
____exports.SoundEffect.MENU_CHARACTER_SELECT = 285
____exports.SoundEffect[____exports.SoundEffect.MENU_CHARACTER_SELECT] = "MENU_CHARACTER_SELECT"
____exports.SoundEffect.SUMMON_POOF = 286
____exports.SoundEffect[____exports.SoundEffect.SUMMON_POOF] = "SUMMON_POOF"
____exports.SoundEffect.BOO_MAD = 300
____exports.SoundEffect[____exports.SoundEffect.BOO_MAD] = "BOO_MAD"
____exports.SoundEffect.FART_GURG = 301
____exports.SoundEffect[____exports.SoundEffect.FART_GURG] = "FART_GURG"
____exports.SoundEffect.FAT_GRUNT = 302
____exports.SoundEffect[____exports.SoundEffect.FAT_GRUNT] = "FAT_GRUNT"
____exports.SoundEffect.FAT_WIGGLE = 303
____exports.SoundEffect[____exports.SoundEffect.FAT_WIGGLE] = "FAT_WIGGLE"
____exports.SoundEffect.FIRE_RUSH = 304
____exports.SoundEffect[____exports.SoundEffect.FIRE_RUSH] = "FIRE_RUSH"
____exports.SoundEffect.GHOST_ROAR = 305
____exports.SoundEffect[____exports.SoundEffect.GHOST_ROAR] = "GHOST_ROAR"
____exports.SoundEffect.GHOST_SHOOT = 306
____exports.SoundEffect[____exports.SoundEffect.GHOST_SHOOT] = "GHOST_SHOOT"
____exports.SoundEffect.GROWL = 307
____exports.SoundEffect[____exports.SoundEffect.GROWL] = "GROWL"
____exports.SoundEffect.GURG_BARF = 308
____exports.SoundEffect[____exports.SoundEffect.GURG_BARF] = "GURG_BARF"
____exports.SoundEffect.INHALE = 309
____exports.SoundEffect[____exports.SoundEffect.INHALE] = "INHALE"
____exports.SoundEffect.LOW_INHALE = 310
____exports.SoundEffect[____exports.SoundEffect.LOW_INHALE] = "LOW_INHALE"
____exports.SoundEffect.MEGA_PUKE = 311
____exports.SoundEffect[____exports.SoundEffect.MEGA_PUKE] = "MEGA_PUKE"
____exports.SoundEffect.MOUTH_FULL = 312
____exports.SoundEffect[____exports.SoundEffect.MOUTH_FULL] = "MOUTH_FULL"
____exports.SoundEffect.MULTI_SCREAM = 313
____exports.SoundEffect[____exports.SoundEffect.MULTI_SCREAM] = "MULTI_SCREAM"
____exports.SoundEffect.SKIN_PULL = 314
____exports.SoundEffect[____exports.SoundEffect.SKIN_PULL] = "SKIN_PULL"
____exports.SoundEffect.WHISTLE = 315
____exports.SoundEffect[____exports.SoundEffect.WHISTLE] = "WHISTLE"
____exports.SoundEffect.DEVIL_ROOM_DEAL = 316
____exports.SoundEffect[____exports.SoundEffect.DEVIL_ROOM_DEAL] = "DEVIL_ROOM_DEAL"
____exports.SoundEffect.SPIDER_SPIT_ROAR = 317
____exports.SoundEffect[____exports.SoundEffect.SPIDER_SPIT_ROAR] = "SPIDER_SPIT_ROAR"
____exports.SoundEffect.WORM_SPIT = 318
____exports.SoundEffect[____exports.SoundEffect.WORM_SPIT] = "WORM_SPIT"
____exports.SoundEffect.LITTLE_SPIT = 319
____exports.SoundEffect[____exports.SoundEffect.LITTLE_SPIT] = "LITTLE_SPIT"
____exports.SoundEffect.SATAN_ROOM_APPEAR = 320
____exports.SoundEffect[____exports.SoundEffect.SATAN_ROOM_APPEAR] = "SATAN_ROOM_APPEAR"
____exports.SoundEffect.HEARTBEAT = 321
____exports.SoundEffect[____exports.SoundEffect.HEARTBEAT] = "HEARTBEAT"
____exports.SoundEffect.HEARTBEAT_FASTER = 322
____exports.SoundEffect[____exports.SoundEffect.HEARTBEAT_FASTER] = "HEARTBEAT_FASTER"
____exports.SoundEffect.HEARTBEAT_FASTEST = 323
____exports.SoundEffect[____exports.SoundEffect.HEARTBEAT_FASTEST] = "HEARTBEAT_FASTEST"
____exports.SoundEffect.FORTY_EIGHT_HOUR_ENERGY = 324
____exports.SoundEffect[____exports.SoundEffect.FORTY_EIGHT_HOUR_ENERGY] = "FORTY_EIGHT_HOUR_ENERGY"
____exports.SoundEffect.ALGIZ = 325
____exports.SoundEffect[____exports.SoundEffect.ALGIZ] = "ALGIZ"
____exports.SoundEffect.AMNESIA = 326
____exports.SoundEffect[____exports.SoundEffect.AMNESIA] = "AMNESIA"
____exports.SoundEffect.ANZUS = 327
____exports.SoundEffect[____exports.SoundEffect.ANZUS] = "ANZUS"
____exports.SoundEffect.BAD_GAS = 328
____exports.SoundEffect[____exports.SoundEffect.BAD_GAS] = "BAD_GAS"
____exports.SoundEffect.BAD_TRIP = 329
____exports.SoundEffect[____exports.SoundEffect.BAD_TRIP] = "BAD_TRIP"
____exports.SoundEffect.BALLS_OF_STEEL = 330
____exports.SoundEffect[____exports.SoundEffect.BALLS_OF_STEEL] = "BALLS_OF_STEEL"
____exports.SoundEffect.BERKANO = 331
____exports.SoundEffect[____exports.SoundEffect.BERKANO] = "BERKANO"
____exports.SoundEffect.BOMBS_ARE_KEY = 332
____exports.SoundEffect[____exports.SoundEffect.BOMBS_ARE_KEY] = "BOMBS_ARE_KEY"
____exports.SoundEffect.CARD_VS_HUMAN = 333
____exports.SoundEffect[____exports.SoundEffect.CARD_VS_HUMAN] = "CARD_VS_HUMAN"
____exports.SoundEffect.CHAOS_CARD = 334
____exports.SoundEffect[____exports.SoundEffect.CHAOS_CARD] = "CHAOS_CARD"
____exports.SoundEffect.CREDIT_CARD = 335
____exports.SoundEffect[____exports.SoundEffect.CREDIT_CARD] = "CREDIT_CARD"
____exports.SoundEffect.DAGAZ = 336
____exports.SoundEffect[____exports.SoundEffect.DAGAZ] = "DAGAZ"
____exports.SoundEffect.DEATH = 337
____exports.SoundEffect[____exports.SoundEffect.DEATH] = "DEATH"
____exports.SoundEffect.EHWAZ = 338
____exports.SoundEffect[____exports.SoundEffect.EHWAZ] = "EHWAZ"
____exports.SoundEffect.EXPLOSIVE_DIARRHEA = 339
____exports.SoundEffect[____exports.SoundEffect.EXPLOSIVE_DIARRHEA] = "EXPLOSIVE_DIARRHEA"
____exports.SoundEffect.FULL_HP = 340
____exports.SoundEffect[____exports.SoundEffect.FULL_HP] = "FULL_HP"
____exports.SoundEffect.HAGALAZ = 341
____exports.SoundEffect[____exports.SoundEffect.HAGALAZ] = "HAGALAZ"
____exports.SoundEffect.HP_DOWN = 342
____exports.SoundEffect[____exports.SoundEffect.HP_DOWN] = "HP_DOWN"
____exports.SoundEffect.HP_UP = 343
____exports.SoundEffect[____exports.SoundEffect.HP_UP] = "HP_UP"
____exports.SoundEffect.HEMATEMESIS = 344
____exports.SoundEffect[____exports.SoundEffect.HEMATEMESIS] = "HEMATEMESIS"
____exports.SoundEffect.I_FOUND_PILLS = 345
____exports.SoundEffect[____exports.SoundEffect.I_FOUND_PILLS] = "I_FOUND_PILLS"
____exports.SoundEffect.JERA = 346
____exports.SoundEffect[____exports.SoundEffect.JERA] = "JERA"
____exports.SoundEffect.JOKER = 347
____exports.SoundEffect[____exports.SoundEffect.JOKER] = "JOKER"
____exports.SoundEffect.JUDGEMENT = 348
____exports.SoundEffect[____exports.SoundEffect.JUDGEMENT] = "JUDGEMENT"
____exports.SoundEffect.JUSTICE = 349
____exports.SoundEffect[____exports.SoundEffect.JUSTICE] = "JUSTICE"
____exports.SoundEffect.LEMON_PARTY = 350
____exports.SoundEffect[____exports.SoundEffect.LEMON_PARTY] = "LEMON_PARTY"
____exports.SoundEffect.LUCK_DOWN = 351
____exports.SoundEffect[____exports.SoundEffect.LUCK_DOWN] = "LUCK_DOWN"
____exports.SoundEffect.LUCK_UP = 352
____exports.SoundEffect[____exports.SoundEffect.LUCK_UP] = "LUCK_UP"
____exports.SoundEffect.PARALYSIS = 353
____exports.SoundEffect[____exports.SoundEffect.PARALYSIS] = "PARALYSIS"
____exports.SoundEffect.PERTHRO = 354
____exports.SoundEffect[____exports.SoundEffect.PERTHRO] = "PERTHRO"
____exports.SoundEffect.PHEROMONES = 355
____exports.SoundEffect[____exports.SoundEffect.PHEROMONES] = "PHEROMONES"
____exports.SoundEffect.PRETTY_FLY = 356
____exports.SoundEffect[____exports.SoundEffect.PRETTY_FLY] = "PRETTY_FLY"
____exports.SoundEffect.PUBERTY = 357
____exports.SoundEffect[____exports.SoundEffect.PUBERTY] = "PUBERTY"
____exports.SoundEffect.R_U_A_WIZARD = 358
____exports.SoundEffect[____exports.SoundEffect.R_U_A_WIZARD] = "R_U_A_WIZARD"
____exports.SoundEffect.RANGE_DOWN = 359
____exports.SoundEffect[____exports.SoundEffect.RANGE_DOWN] = "RANGE_DOWN"
____exports.SoundEffect.RANGE_UP = 360
____exports.SoundEffect[____exports.SoundEffect.RANGE_UP] = "RANGE_UP"
____exports.SoundEffect.RULES_CARD = 361
____exports.SoundEffect[____exports.SoundEffect.RULES_CARD] = "RULES_CARD"
____exports.SoundEffect.I_CAN_SEE_FOREVER = 362
____exports.SoundEffect[____exports.SoundEffect.I_CAN_SEE_FOREVER] = "I_CAN_SEE_FOREVER"
____exports.SoundEffect.SPEED_DOWN = 363
____exports.SoundEffect[____exports.SoundEffect.SPEED_DOWN] = "SPEED_DOWN"
____exports.SoundEffect.SPEED_UP = 364
____exports.SoundEffect[____exports.SoundEffect.SPEED_UP] = "SPEED_UP"
____exports.SoundEffect.STRENGTH = 365
____exports.SoundEffect[____exports.SoundEffect.STRENGTH] = "STRENGTH"
____exports.SoundEffect.SUICIDE_KING = 366
____exports.SoundEffect[____exports.SoundEffect.SUICIDE_KING] = "SUICIDE_KING"
____exports.SoundEffect.TEARS_DOWN = 367
____exports.SoundEffect[____exports.SoundEffect.TEARS_DOWN] = "TEARS_DOWN"
____exports.SoundEffect.TEARS_UP = 368
____exports.SoundEffect[____exports.SoundEffect.TEARS_UP] = "TEARS_UP"
____exports.SoundEffect.TELEPILLS = 369
____exports.SoundEffect[____exports.SoundEffect.TELEPILLS] = "TELEPILLS"
____exports.SoundEffect.TEMPERANCE = 370
____exports.SoundEffect[____exports.SoundEffect.TEMPERANCE] = "TEMPERANCE"
____exports.SoundEffect.THE_CHARIOT = 371
____exports.SoundEffect[____exports.SoundEffect.THE_CHARIOT] = "THE_CHARIOT"
____exports.SoundEffect.THE_DEVIL = 372
____exports.SoundEffect[____exports.SoundEffect.THE_DEVIL] = "THE_DEVIL"
____exports.SoundEffect.THE_EMPEROR = 373
____exports.SoundEffect[____exports.SoundEffect.THE_EMPEROR] = "THE_EMPEROR"
____exports.SoundEffect.EMPRESS = 374
____exports.SoundEffect[____exports.SoundEffect.EMPRESS] = "EMPRESS"
____exports.SoundEffect.FOOL = 375
____exports.SoundEffect[____exports.SoundEffect.FOOL] = "FOOL"
____exports.SoundEffect.HANGED_MAN = 376
____exports.SoundEffect[____exports.SoundEffect.HANGED_MAN] = "HANGED_MAN"
____exports.SoundEffect.HERMIT = 377
____exports.SoundEffect[____exports.SoundEffect.HERMIT] = "HERMIT"
____exports.SoundEffect.HIEROPHANT = 378
____exports.SoundEffect[____exports.SoundEffect.HIEROPHANT] = "HIEROPHANT"
____exports.SoundEffect.HIGHT_PRIESTESS = 379
____exports.SoundEffect[____exports.SoundEffect.HIGHT_PRIESTESS] = "HIGHT_PRIESTESS"
____exports.SoundEffect.THE_LOVERS = 380
____exports.SoundEffect[____exports.SoundEffect.THE_LOVERS] = "THE_LOVERS"
____exports.SoundEffect.MAGICIAN = 381
____exports.SoundEffect[____exports.SoundEffect.MAGICIAN] = "MAGICIAN"
____exports.SoundEffect.MOON = 382
____exports.SoundEffect[____exports.SoundEffect.MOON] = "MOON"
____exports.SoundEffect.STARS = 383
____exports.SoundEffect[____exports.SoundEffect.STARS] = "STARS"
____exports.SoundEffect.SUN = 384
____exports.SoundEffect[____exports.SoundEffect.SUN] = "SUN"
____exports.SoundEffect.TOWER = 385
____exports.SoundEffect[____exports.SoundEffect.TOWER] = "TOWER"
____exports.SoundEffect.WORLD = 386
____exports.SoundEffect[____exports.SoundEffect.WORLD] = "WORLD"
____exports.SoundEffect.TWO_CLUBS = 387
____exports.SoundEffect[____exports.SoundEffect.TWO_CLUBS] = "TWO_CLUBS"
____exports.SoundEffect.TWO_DIAMONDS = 388
____exports.SoundEffect[____exports.SoundEffect.TWO_DIAMONDS] = "TWO_DIAMONDS"
____exports.SoundEffect.TWO_HEARTS = 389
____exports.SoundEffect[____exports.SoundEffect.TWO_HEARTS] = "TWO_HEARTS"
____exports.SoundEffect.TWO_SPADES = 390
____exports.SoundEffect[____exports.SoundEffect.TWO_SPADES] = "TWO_SPADES"
____exports.SoundEffect.WHEEL_OF_FORTUNE = 391
____exports.SoundEffect[____exports.SoundEffect.WHEEL_OF_FORTUNE] = "WHEEL_OF_FORTUNE"
____exports.SoundEffect.RAGMAN_1 = 392
____exports.SoundEffect[____exports.SoundEffect.RAGMAN_1] = "RAGMAN_1"
____exports.SoundEffect.RAGMAN_2 = 393
____exports.SoundEffect[____exports.SoundEffect.RAGMAN_2] = "RAGMAN_2"
____exports.SoundEffect.RAGMAN_3 = 394
____exports.SoundEffect[____exports.SoundEffect.RAGMAN_3] = "RAGMAN_3"
____exports.SoundEffect.RAGMAN_4 = 395
____exports.SoundEffect[____exports.SoundEffect.RAGMAN_4] = "RAGMAN_4"
____exports.SoundEffect.FLUSH = 396
____exports.SoundEffect[____exports.SoundEffect.FLUSH] = "FLUSH"
____exports.SoundEffect.WATER_DROP = 397
____exports.SoundEffect[____exports.SoundEffect.WATER_DROP] = "WATER_DROP"
____exports.SoundEffect.WET_FEET = 398
____exports.SoundEffect[____exports.SoundEffect.WET_FEET] = "WET_FEET"
____exports.SoundEffect.ADDICTED = 399
____exports.SoundEffect[____exports.SoundEffect.ADDICTED] = "ADDICTED"
____exports.SoundEffect.DICE_SHARD = 400
____exports.SoundEffect[____exports.SoundEffect.DICE_SHARD] = "DICE_SHARD"
____exports.SoundEffect.EMERGENCY = 401
____exports.SoundEffect[____exports.SoundEffect.EMERGENCY] = "EMERGENCY"
____exports.SoundEffect.INFESTED_EXCL = 402
____exports.SoundEffect[____exports.SoundEffect.INFESTED_EXCL] = "INFESTED_EXCL"
____exports.SoundEffect.INFESTED_QUEST = 403
____exports.SoundEffect[____exports.SoundEffect.INFESTED_QUEST] = "INFESTED_QUEST"
____exports.SoundEffect.JAIL_CARD = 404
____exports.SoundEffect[____exports.SoundEffect.JAIL_CARD] = "JAIL_CARD"
____exports.SoundEffect.LARGER = 405
____exports.SoundEffect[____exports.SoundEffect.LARGER] = "LARGER"
____exports.SoundEffect.PERCS = 406
____exports.SoundEffect[____exports.SoundEffect.PERCS] = "PERCS"
____exports.SoundEffect.POWER_PILL = 407
____exports.SoundEffect[____exports.SoundEffect.POWER_PILL] = "POWER_PILL"
____exports.SoundEffect.QUESTION_MARK = 408
____exports.SoundEffect[____exports.SoundEffect.QUESTION_MARK] = "QUESTION_MARK"
____exports.SoundEffect.RELAX = 409
____exports.SoundEffect[____exports.SoundEffect.RELAX] = "RELAX"
____exports.SoundEffect.RETRO = 410
____exports.SoundEffect[____exports.SoundEffect.RETRO] = "RETRO"
____exports.SoundEffect.SMALL = 411
____exports.SoundEffect[____exports.SoundEffect.SMALL] = "SMALL"
____exports.SoundEffect.QQQ = 412
____exports.SoundEffect[____exports.SoundEffect.QQQ] = "QQQ"
____exports.SoundEffect.DANGLE_WHISTLE = 413
____exports.SoundEffect[____exports.SoundEffect.DANGLE_WHISTLE] = "DANGLE_WHISTLE"
____exports.SoundEffect.LITTLE_HORN_COUGH = 414
____exports.SoundEffect[____exports.SoundEffect.LITTLE_HORN_COUGH] = "LITTLE_HORN_COUGH"
____exports.SoundEffect.LITTLE_HORN_GRUNT_1 = 415
____exports.SoundEffect[____exports.SoundEffect.LITTLE_HORN_GRUNT_1] = "LITTLE_HORN_GRUNT_1"
____exports.SoundEffect.LITTLE_HORN_GRUNT_2 = 416
____exports.SoundEffect[____exports.SoundEffect.LITTLE_HORN_GRUNT_2] = "LITTLE_HORN_GRUNT_2"
____exports.SoundEffect.THE_FORSAKEN_LAUGH = 417
____exports.SoundEffect[____exports.SoundEffect.THE_FORSAKEN_LAUGH] = "THE_FORSAKEN_LAUGH"
____exports.SoundEffect.THE_FORSAKEN_SCREAM = 418
____exports.SoundEffect[____exports.SoundEffect.THE_FORSAKEN_SCREAM] = "THE_FORSAKEN_SCREAM"
____exports.SoundEffect.THE_STAIN_BURST = 419
____exports.SoundEffect[____exports.SoundEffect.THE_STAIN_BURST] = "THE_STAIN_BURST"
____exports.SoundEffect.BROWNIE_LAUGH = 420
____exports.SoundEffect[____exports.SoundEffect.BROWNIE_LAUGH] = "BROWNIE_LAUGH"
____exports.SoundEffect.HUSH_ROAR = 421
____exports.SoundEffect[____exports.SoundEffect.HUSH_ROAR] = "HUSH_ROAR"
____exports.SoundEffect.HUSH_GROWL = 422
____exports.SoundEffect[____exports.SoundEffect.HUSH_GROWL] = "HUSH_GROWL"
____exports.SoundEffect.HUSH_LOW_ROAR = 423
____exports.SoundEffect[____exports.SoundEffect.HUSH_LOW_ROAR] = "HUSH_LOW_ROAR"
____exports.SoundEffect.FRAIL_CHARGE = 424
____exports.SoundEffect[____exports.SoundEffect.FRAIL_CHARGE] = "FRAIL_CHARGE"
____exports.SoundEffect.HUSH_CHARGE = 425
____exports.SoundEffect[____exports.SoundEffect.HUSH_CHARGE] = "HUSH_CHARGE"
____exports.SoundEffect.MAW_OF_VOID = 426
____exports.SoundEffect[____exports.SoundEffect.MAW_OF_VOID] = "MAW_OF_VOID"
____exports.SoundEffect.ULTRA_GREED_COIN_DESTROY = 427
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_COIN_DESTROY] = "ULTRA_GREED_COIN_DESTROY"
____exports.SoundEffect.ULTRA_GREED_COINS_FALLING = 428
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_COINS_FALLING] = "ULTRA_GREED_COINS_FALLING"
____exports.SoundEffect.ULTRA_GREED_DEATH_SCREAM = 429
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_DEATH_SCREAM] = "ULTRA_GREED_DEATH_SCREAM"
____exports.SoundEffect.ULTRA_GREED_TURN_GOLD_1 = 430
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_TURN_GOLD_1] = "ULTRA_GREED_TURN_GOLD_1"
____exports.SoundEffect.ULTRA_GREED_TURN_GOLD_2 = 431
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_TURN_GOLD_2] = "ULTRA_GREED_TURN_GOLD_2"
____exports.SoundEffect.ULTRA_GREED_ROAR_1 = 432
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_ROAR_1] = "ULTRA_GREED_ROAR_1"
____exports.SoundEffect.ULTRA_GREED_ROAR_2 = 433
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_ROAR_2] = "ULTRA_GREED_ROAR_2"
____exports.SoundEffect.ULTRA_GREED_SPIT = 434
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_SPIT] = "ULTRA_GREED_SPIT"
____exports.SoundEffect.ULTRA_GREED_PULL_SLOT = 435
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_PULL_SLOT] = "ULTRA_GREED_PULL_SLOT"
____exports.SoundEffect.ULTRA_GREED_SLOT_SPIN_LOOP = 436
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_SLOT_SPIN_LOOP] = "ULTRA_GREED_SLOT_SPIN_LOOP"
____exports.SoundEffect.ULTRA_GREED_SLOT_STOP = 437
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_SLOT_STOP] = "ULTRA_GREED_SLOT_STOP"
____exports.SoundEffect.ULTRA_GREED_SLOT_WIN_LOOP_END = 438
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_SLOT_WIN_LOOP_END] = "ULTRA_GREED_SLOT_WIN_LOOP_END"
____exports.SoundEffect.ULTRA_GREED_SLOT_WIN_LOOP = 439
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_SLOT_WIN_LOOP] = "ULTRA_GREED_SLOT_WIN_LOOP"
____exports.SoundEffect.ULTRA_GREED_SPINNING = 440
____exports.SoundEffect[____exports.SoundEffect.ULTRA_GREED_SPINNING] = "ULTRA_GREED_SPINNING"
____exports.SoundEffect.DOG_BARK = 441
____exports.SoundEffect[____exports.SoundEffect.DOG_BARK] = "DOG_BARK"
____exports.SoundEffect.DOG_HOWELL = 442
____exports.SoundEffect[____exports.SoundEffect.DOG_HOWELL] = "DOG_HOWELL"
____exports.SoundEffect.X_LAX = 443
____exports.SoundEffect[____exports.SoundEffect.X_LAX] = "X_LAX"
____exports.SoundEffect.WRONG = 444
____exports.SoundEffect[____exports.SoundEffect.WRONG] = "WRONG"
____exports.SoundEffect.VURP = 445
____exports.SoundEffect[____exports.SoundEffect.VURP] = "VURP"
____exports.SoundEffect.SUNSHINE = 446
____exports.SoundEffect[____exports.SoundEffect.SUNSHINE] = "SUNSHINE"
____exports.SoundEffect.SPADES = 447
____exports.SoundEffect[____exports.SoundEffect.SPADES] = "SPADES"
____exports.SoundEffect.HORF = 448
____exports.SoundEffect[____exports.SoundEffect.HORF] = "HORF"
____exports.SoundEffect.HOLY_CARD = 449
____exports.SoundEffect[____exports.SoundEffect.HOLY_CARD] = "HOLY_CARD"
____exports.SoundEffect.HEARTS = 450
____exports.SoundEffect[____exports.SoundEffect.HEARTS] = "HEARTS"
____exports.SoundEffect.GULP = 451
____exports.SoundEffect[____exports.SoundEffect.GULP] = "GULP"
____exports.SoundEffect.FRIENDS = 452
____exports.SoundEffect[____exports.SoundEffect.FRIENDS] = "FRIENDS"
____exports.SoundEffect.EXCITED = 453
____exports.SoundEffect[____exports.SoundEffect.EXCITED] = "EXCITED"
____exports.SoundEffect.DROWSY = 454
____exports.SoundEffect[____exports.SoundEffect.DROWSY] = "DROWSY"
____exports.SoundEffect.DIAMONDS = 455
____exports.SoundEffect[____exports.SoundEffect.DIAMONDS] = "DIAMONDS"
____exports.SoundEffect.CLUBS = 456
____exports.SoundEffect[____exports.SoundEffect.CLUBS] = "CLUBS"
____exports.SoundEffect.BLACK_RUNE = 457
____exports.SoundEffect[____exports.SoundEffect.BLACK_RUNE] = "BLACK_RUNE"
____exports.SoundEffect.PING_PONG = 458
____exports.SoundEffect[____exports.SoundEffect.PING_PONG] = "PING_PONG"
____exports.SoundEffect.SPEWER = 459
____exports.SoundEffect[____exports.SoundEffect.SPEWER] = "SPEWER"
____exports.SoundEffect.MOM_FOOTSTEPS = 460
____exports.SoundEffect[____exports.SoundEffect.MOM_FOOTSTEPS] = "MOM_FOOTSTEPS"
____exports.SoundEffect.BONE_HEART = 461
____exports.SoundEffect[____exports.SoundEffect.BONE_HEART] = "BONE_HEART"
____exports.SoundEffect.BONE_SNAP = 462
____exports.SoundEffect[____exports.SoundEffect.BONE_SNAP] = "BONE_SNAP"
____exports.SoundEffect.SHOVEL_DROP = 463
____exports.SoundEffect[____exports.SoundEffect.SHOVEL_DROP] = "SHOVEL_DROP"
____exports.SoundEffect.SHOVEL_DIG = 464
____exports.SoundEffect[____exports.SoundEffect.SHOVEL_DIG] = "SHOVEL_DIG"
____exports.SoundEffect.GOLD_HEART = 465
____exports.SoundEffect[____exports.SoundEffect.GOLD_HEART] = "GOLD_HEART"
____exports.SoundEffect.GOLD_HEART_DROP = 466
____exports.SoundEffect[____exports.SoundEffect.GOLD_HEART_DROP] = "GOLD_HEART_DROP"
____exports.SoundEffect.BONE_DROP = 467
____exports.SoundEffect[____exports.SoundEffect.BONE_DROP] = "BONE_DROP"
____exports.SoundEffect.UNHOLY = 468
____exports.SoundEffect[____exports.SoundEffect.UNHOLY] = "UNHOLY"
____exports.SoundEffect.BUTTON_PRESS = 469
____exports.SoundEffect[____exports.SoundEffect.BUTTON_PRESS] = "BUTTON_PRESS"
____exports.SoundEffect.GOLDEN_BOMB = 470
____exports.SoundEffect[____exports.SoundEffect.GOLDEN_BOMB] = "GOLDEN_BOMB"
____exports.SoundEffect.CANDLE_LIGHT = 471
____exports.SoundEffect[____exports.SoundEffect.CANDLE_LIGHT] = "CANDLE_LIGHT"
____exports.SoundEffect.THUNDER = 472
____exports.SoundEffect[____exports.SoundEffect.THUNDER] = "THUNDER"
____exports.SoundEffect.WATER_FLOW_LOOP = 473
____exports.SoundEffect[____exports.SoundEffect.WATER_FLOW_LOOP] = "WATER_FLOW_LOOP"
____exports.SoundEffect.BOSS_2_DIVE = 474
____exports.SoundEffect[____exports.SoundEffect.BOSS_2_DIVE] = "BOSS_2_DIVE"
____exports.SoundEffect.BOSS_2_INTRO_PIPES_TURNON = 475
____exports.SoundEffect[____exports.SoundEffect.BOSS_2_INTRO_PIPES_TURNON] = "BOSS_2_INTRO_PIPES_TURNON"
____exports.SoundEffect.WATER_FLOW_LARGE = 476
____exports.SoundEffect[____exports.SoundEffect.WATER_FLOW_LARGE] = "WATER_FLOW_LARGE"
____exports.SoundEffect.DEMON_HIT = 477
____exports.SoundEffect[____exports.SoundEffect.DEMON_HIT] = "DEMON_HIT"
____exports.SoundEffect.PUNCH = 478
____exports.SoundEffect[____exports.SoundEffect.PUNCH] = "PUNCH"
____exports.SoundEffect.FLUTE = 479
____exports.SoundEffect[____exports.SoundEffect.FLUTE] = "FLUTE"
____exports.SoundEffect.LAVA_LOOP = 480
____exports.SoundEffect[____exports.SoundEffect.LAVA_LOOP] = "LAVA_LOOP"
____exports.SoundEffect.WOOD_PLANK_BREAK = 481
____exports.SoundEffect[____exports.SoundEffect.WOOD_PLANK_BREAK] = "WOOD_PLANK_BREAK"
____exports.SoundEffect.BULLET_SHOT = 482
____exports.SoundEffect[____exports.SoundEffect.BULLET_SHOT] = "BULLET_SHOT"
____exports.SoundEffect.FLAME_BURST = 483
____exports.SoundEffect[____exports.SoundEffect.FLAME_BURST] = "FLAME_BURST"
____exports.SoundEffect.INFLATE = 484
____exports.SoundEffect[____exports.SoundEffect.INFLATE] = "INFLATE"
____exports.SoundEffect.CLAP = 485
____exports.SoundEffect[____exports.SoundEffect.CLAP] = "CLAP"
____exports.SoundEffect.BOSS_2_INTRO_WATER_EXPLOSION = 486
____exports.SoundEffect[____exports.SoundEffect.BOSS_2_INTRO_WATER_EXPLOSION] = "BOSS_2_INTRO_WATER_EXPLOSION"
____exports.SoundEffect.STONE_IMPACT = 487
____exports.SoundEffect[____exports.SoundEffect.STONE_IMPACT] = "STONE_IMPACT"
____exports.SoundEffect.BOSS_2_WATER_THRASHING = 488
____exports.SoundEffect[____exports.SoundEffect.BOSS_2_WATER_THRASHING] = "BOSS_2_WATER_THRASHING"
____exports.SoundEffect.FART_MEGA = 489
____exports.SoundEffect[____exports.SoundEffect.FART_MEGA] = "FART_MEGA"
____exports.SoundEffect.MATCHSTICK = 490
____exports.SoundEffect[____exports.SoundEffect.MATCHSTICK] = "MATCHSTICK"
____exports.SoundEffect.FORTUNE_COOKIE = 491
____exports.SoundEffect[____exports.SoundEffect.FORTUNE_COOKIE] = "FORTUNE_COOKIE"
____exports.SoundEffect.BULB_FLASH = 492
____exports.SoundEffect[____exports.SoundEffect.BULB_FLASH] = "BULB_FLASH"
____exports.SoundEffect.BATTERY_DISCHARGE = 493
____exports.SoundEffect[____exports.SoundEffect.BATTERY_DISCHARGE] = "BATTERY_DISCHARGE"
____exports.SoundEffect.WHIP = 494
____exports.SoundEffect[____exports.SoundEffect.WHIP] = "WHIP"
____exports.SoundEffect.WHIP_HIT = 495
____exports.SoundEffect[____exports.SoundEffect.WHIP_HIT] = "WHIP_HIT"
____exports.SoundEffect.FREEZE = 496
____exports.SoundEffect[____exports.SoundEffect.FREEZE] = "FREEZE"
____exports.SoundEffect.ROTTEN_HEART = 497
____exports.SoundEffect[____exports.SoundEffect.ROTTEN_HEART] = "ROTTEN_HEART"
____exports.SoundEffect.FREEZE_SHATTER = 498
____exports.SoundEffect[____exports.SoundEffect.FREEZE_SHATTER] = "FREEZE_SHATTER"
____exports.SoundEffect.BONE_BOUNCE = 499
____exports.SoundEffect[____exports.SoundEffect.BONE_BOUNCE] = "BONE_BOUNCE"
____exports.SoundEffect.BONE_BREAK = 500
____exports.SoundEffect[____exports.SoundEffect.BONE_BREAK] = "BONE_BREAK"
____exports.SoundEffect.BISHOP_HIT = 501
____exports.SoundEffect[____exports.SoundEffect.BISHOP_HIT] = "BISHOP_HIT"
____exports.SoundEffect.CHAIN_LOOP = 503
____exports.SoundEffect[____exports.SoundEffect.CHAIN_LOOP] = "CHAIN_LOOP"
____exports.SoundEffect.CHAIN_BREAK = 504
____exports.SoundEffect[____exports.SoundEffect.CHAIN_BREAK] = "CHAIN_BREAK"
____exports.SoundEffect.MINECART_LOOP = 505
____exports.SoundEffect[____exports.SoundEffect.MINECART_LOOP] = "MINECART_LOOP"
____exports.SoundEffect.TOOTH_AND_NAIL = 506
____exports.SoundEffect[____exports.SoundEffect.TOOTH_AND_NAIL] = "TOOTH_AND_NAIL"
____exports.SoundEffect.TOOTH_AND_NAIL_TICK = 507
____exports.SoundEffect[____exports.SoundEffect.TOOTH_AND_NAIL_TICK] = "TOOTH_AND_NAIL_TICK"
____exports.SoundEffect.STATIC_BUILDUP = 508
____exports.SoundEffect[____exports.SoundEffect.STATIC_BUILDUP] = "STATIC_BUILDUP"
____exports.SoundEffect.BIG_LEECH = 510
____exports.SoundEffect[____exports.SoundEffect.BIG_LEECH] = "BIG_LEECH"
____exports.SoundEffect.REVERSE_EXPLOSION = 511
____exports.SoundEffect[____exports.SoundEffect.REVERSE_EXPLOSION] = "REVERSE_EXPLOSION"
____exports.SoundEffect.REVERSE_FOOL = 512
____exports.SoundEffect[____exports.SoundEffect.REVERSE_FOOL] = "REVERSE_FOOL"
____exports.SoundEffect.REVERSE_MAGICIAN = 513
____exports.SoundEffect[____exports.SoundEffect.REVERSE_MAGICIAN] = "REVERSE_MAGICIAN"
____exports.SoundEffect.REVERSE_HIGH_PRIESTESS = 514
____exports.SoundEffect[____exports.SoundEffect.REVERSE_HIGH_PRIESTESS] = "REVERSE_HIGH_PRIESTESS"
____exports.SoundEffect.REVERSE_EMPRESS = 515
____exports.SoundEffect[____exports.SoundEffect.REVERSE_EMPRESS] = "REVERSE_EMPRESS"
____exports.SoundEffect.REVERSE_EMPEROR = 516
____exports.SoundEffect[____exports.SoundEffect.REVERSE_EMPEROR] = "REVERSE_EMPEROR"
____exports.SoundEffect.REVERSE_HIEROPHANT = 517
____exports.SoundEffect[____exports.SoundEffect.REVERSE_HIEROPHANT] = "REVERSE_HIEROPHANT"
____exports.SoundEffect.REVERSE_LOVERS = 518
____exports.SoundEffect[____exports.SoundEffect.REVERSE_LOVERS] = "REVERSE_LOVERS"
____exports.SoundEffect.REVERSE_CHARIOT = 519
____exports.SoundEffect[____exports.SoundEffect.REVERSE_CHARIOT] = "REVERSE_CHARIOT"
____exports.SoundEffect.REVERSE_JUSTICE = 520
____exports.SoundEffect[____exports.SoundEffect.REVERSE_JUSTICE] = "REVERSE_JUSTICE"
____exports.SoundEffect.REVERSE_HERMIT = 521
____exports.SoundEffect[____exports.SoundEffect.REVERSE_HERMIT] = "REVERSE_HERMIT"
____exports.SoundEffect.REVERSE_WHEEL_OF_FORTUNE = 522
____exports.SoundEffect[____exports.SoundEffect.REVERSE_WHEEL_OF_FORTUNE] = "REVERSE_WHEEL_OF_FORTUNE"
____exports.SoundEffect.REVERSE_STRENGTH = 523
____exports.SoundEffect[____exports.SoundEffect.REVERSE_STRENGTH] = "REVERSE_STRENGTH"
____exports.SoundEffect.REVERSE_HANGED_MAN = 524
____exports.SoundEffect[____exports.SoundEffect.REVERSE_HANGED_MAN] = "REVERSE_HANGED_MAN"
____exports.SoundEffect.REVERSE_DEATH = 525
____exports.SoundEffect[____exports.SoundEffect.REVERSE_DEATH] = "REVERSE_DEATH"
____exports.SoundEffect.REVERSE_TEMPERANCE = 526
____exports.SoundEffect[____exports.SoundEffect.REVERSE_TEMPERANCE] = "REVERSE_TEMPERANCE"
____exports.SoundEffect.REVERSE_DEVIL = 527
____exports.SoundEffect[____exports.SoundEffect.REVERSE_DEVIL] = "REVERSE_DEVIL"
____exports.SoundEffect.REVERSE_TOWER = 528
____exports.SoundEffect[____exports.SoundEffect.REVERSE_TOWER] = "REVERSE_TOWER"
____exports.SoundEffect.REVERSE_STARS = 529
____exports.SoundEffect[____exports.SoundEffect.REVERSE_STARS] = "REVERSE_STARS"
____exports.SoundEffect.REVERSE_MOON = 530
____exports.SoundEffect[____exports.SoundEffect.REVERSE_MOON] = "REVERSE_MOON"
____exports.SoundEffect.REVERSE_SUN = 531
____exports.SoundEffect[____exports.SoundEffect.REVERSE_SUN] = "REVERSE_SUN"
____exports.SoundEffect.REVERSE_JUDGEMENT = 532
____exports.SoundEffect[____exports.SoundEffect.REVERSE_JUDGEMENT] = "REVERSE_JUDGEMENT"
____exports.SoundEffect.REVERSE_WORLD = 533
____exports.SoundEffect[____exports.SoundEffect.REVERSE_WORLD] = "REVERSE_WORLD"
____exports.SoundEffect.FLAMETHROWER_START = 534
____exports.SoundEffect[____exports.SoundEffect.FLAMETHROWER_START] = "FLAMETHROWER_START"
____exports.SoundEffect.FLAMETHROWER_LOOP = 535
____exports.SoundEffect[____exports.SoundEffect.FLAMETHROWER_LOOP] = "FLAMETHROWER_LOOP"
____exports.SoundEffect.FLAMETHROWER_END = 536
____exports.SoundEffect[____exports.SoundEffect.FLAMETHROWER_END] = "FLAMETHROWER_END"
____exports.SoundEffect.ROCKET_LAUNCH = 537
____exports.SoundEffect[____exports.SoundEffect.ROCKET_LAUNCH] = "ROCKET_LAUNCH"
____exports.SoundEffect.SWORD_SPIN = 538
____exports.SoundEffect[____exports.SoundEffect.SWORD_SPIN] = "SWORD_SPIN"
____exports.SoundEffect.BABY_BRIM = 539
____exports.SoundEffect[____exports.SoundEffect.BABY_BRIM] = "BABY_BRIM"
____exports.SoundEffect.KNIFE_PULL = 540
____exports.SoundEffect[____exports.SoundEffect.KNIFE_PULL] = "KNIFE_PULL"
____exports.SoundEffect.DOGMA_APPEAR_SCREAM = 541
____exports.SoundEffect[____exports.SoundEffect.DOGMA_APPEAR_SCREAM] = "DOGMA_APPEAR_SCREAM"
____exports.SoundEffect.DOGMA_DEATH = 542
____exports.SoundEffect[____exports.SoundEffect.DOGMA_DEATH] = "DOGMA_DEATH"
____exports.SoundEffect.DOGMA_BLACK_HOLE_CHARGE = 543
____exports.SoundEffect[____exports.SoundEffect.DOGMA_BLACK_HOLE_CHARGE] = "DOGMA_BLACK_HOLE_CHARGE"
____exports.SoundEffect.DOGMA_BLACK_HOLE_SHOOT = 544
____exports.SoundEffect[____exports.SoundEffect.DOGMA_BLACK_HOLE_SHOOT] = "DOGMA_BLACK_HOLE_SHOOT"
____exports.SoundEffect.DOGMA_BLACK_HOLE_OPEN = 545
____exports.SoundEffect[____exports.SoundEffect.DOGMA_BLACK_HOLE_OPEN] = "DOGMA_BLACK_HOLE_OPEN"
____exports.SoundEffect.DOGMA_BLACK_HOLE_CLOSE = 546
____exports.SoundEffect[____exports.SoundEffect.DOGMA_BLACK_HOLE_CLOSE] = "DOGMA_BLACK_HOLE_CLOSE"
____exports.SoundEffect.DOGMA_BRIMSTONE_CHARGE = 547
____exports.SoundEffect[____exports.SoundEffect.DOGMA_BRIMSTONE_CHARGE] = "DOGMA_BRIMSTONE_CHARGE"
____exports.SoundEffect.DOGMA_BRIMSTONE_SHOOT = 548
____exports.SoundEffect[____exports.SoundEffect.DOGMA_BRIMSTONE_SHOOT] = "DOGMA_BRIMSTONE_SHOOT"
____exports.SoundEffect.DOGMA_GODHEAD = 549
____exports.SoundEffect[____exports.SoundEffect.DOGMA_GODHEAD] = "DOGMA_GODHEAD"
____exports.SoundEffect.DOGMA_JACOBS = 550
____exports.SoundEffect[____exports.SoundEffect.DOGMA_JACOBS] = "DOGMA_JACOBS"
____exports.SoundEffect.DOGMA_JACOBS_ZAP = 551
____exports.SoundEffect[____exports.SoundEffect.DOGMA_JACOBS_ZAP] = "DOGMA_JACOBS_ZAP"
____exports.SoundEffect.DOGMA_SCREAM = 552
____exports.SoundEffect[____exports.SoundEffect.DOGMA_SCREAM] = "DOGMA_SCREAM"
____exports.SoundEffect.DOGMA_PREACHER = 553
____exports.SoundEffect[____exports.SoundEffect.DOGMA_PREACHER] = "DOGMA_PREACHER"
____exports.SoundEffect.DOGMA_RING_START = 554
____exports.SoundEffect[____exports.SoundEffect.DOGMA_RING_START] = "DOGMA_RING_START"
____exports.SoundEffect.DOGMA_RING_LOOP = 555
____exports.SoundEffect[____exports.SoundEffect.DOGMA_RING_LOOP] = "DOGMA_RING_LOOP"
____exports.SoundEffect.DOGMA_FEATHER_SPRAY = 556
____exports.SoundEffect[____exports.SoundEffect.DOGMA_FEATHER_SPRAY] = "DOGMA_FEATHER_SPRAY"
____exports.SoundEffect.DOGMA_JACOBS_DOT = 557
____exports.SoundEffect[____exports.SoundEffect.DOGMA_JACOBS_DOT] = "DOGMA_JACOBS_DOT"
____exports.SoundEffect.DOGMA_BLACK_HOLE_LOOP = 558
____exports.SoundEffect[____exports.SoundEffect.DOGMA_BLACK_HOLE_LOOP] = "DOGMA_BLACK_HOLE_LOOP"
____exports.SoundEffect.DOGMA_ANGEL_TRANSFORM = 559
____exports.SoundEffect[____exports.SoundEffect.DOGMA_ANGEL_TRANSFORM] = "DOGMA_ANGEL_TRANSFORM"
____exports.SoundEffect.DOGMA_ANGEL_TRANSFORM_END = 560
____exports.SoundEffect[____exports.SoundEffect.DOGMA_ANGEL_TRANSFORM_END] = "DOGMA_ANGEL_TRANSFORM_END"
____exports.SoundEffect.DOGMA_LIGHT_APPEAR = 561
____exports.SoundEffect[____exports.SoundEffect.DOGMA_LIGHT_APPEAR] = "DOGMA_LIGHT_APPEAR"
____exports.SoundEffect.DOGMA_LIGHT_BALL_THROW = 562
____exports.SoundEffect[____exports.SoundEffect.DOGMA_LIGHT_BALL_THROW] = "DOGMA_LIGHT_BALL_THROW"
____exports.SoundEffect.DOGMA_LIGHT_RAY_CHARGE = 563
____exports.SoundEffect[____exports.SoundEffect.DOGMA_LIGHT_RAY_CHARGE] = "DOGMA_LIGHT_RAY_CHARGE"
____exports.SoundEffect.DOGMA_LIGHT_RAY_FIRE = 564
____exports.SoundEffect[____exports.SoundEffect.DOGMA_LIGHT_RAY_FIRE] = "DOGMA_LIGHT_RAY_FIRE"
____exports.SoundEffect.DOGMA_SPIN_ATTACK = 565
____exports.SoundEffect[____exports.SoundEffect.DOGMA_SPIN_ATTACK] = "DOGMA_SPIN_ATTACK"
____exports.SoundEffect.DOGMA_WING_FLAP = 566
____exports.SoundEffect[____exports.SoundEffect.DOGMA_WING_FLAP] = "DOGMA_WING_FLAP"
____exports.SoundEffect.DOGMA_TV_BREAK = 567
____exports.SoundEffect[____exports.SoundEffect.DOGMA_TV_BREAK] = "DOGMA_TV_BREAK"
____exports.SoundEffect.DIVINE_INTERVENTION = 568
____exports.SoundEffect[____exports.SoundEffect.DIVINE_INTERVENTION] = "DIVINE_INTERVENTION"
____exports.SoundEffect.MENU_FLIP_LIGHT = 569
____exports.SoundEffect[____exports.SoundEffect.MENU_FLIP_LIGHT] = "MENU_FLIP_LIGHT"
____exports.SoundEffect.MENU_FLIP_DARK = 570
____exports.SoundEffect[____exports.SoundEffect.MENU_FLIP_DARK] = "MENU_FLIP_DARK"
____exports.SoundEffect.MENU_RIP = 571
____exports.SoundEffect[____exports.SoundEffect.MENU_RIP] = "MENU_RIP"
____exports.SoundEffect.URN_OPEN = 572
____exports.SoundEffect[____exports.SoundEffect.URN_OPEN] = "URN_OPEN"
____exports.SoundEffect.URN_CLOSE = 573
____exports.SoundEffect[____exports.SoundEffect.URN_CLOSE] = "URN_CLOSE"
____exports.SoundEffect.RECALL = 574
____exports.SoundEffect[____exports.SoundEffect.RECALL] = "RECALL"
____exports.SoundEffect.LARYNX_SCREAM_LO = 575
____exports.SoundEffect[____exports.SoundEffect.LARYNX_SCREAM_LO] = "LARYNX_SCREAM_LO"
____exports.SoundEffect.LARYNX_SCREAM_MED = 576
____exports.SoundEffect[____exports.SoundEffect.LARYNX_SCREAM_MED] = "LARYNX_SCREAM_MED"
____exports.SoundEffect.LARYNX_SCREAM_HI = 577
____exports.SoundEffect[____exports.SoundEffect.LARYNX_SCREAM_HI] = "LARYNX_SCREAM_HI"
____exports.SoundEffect.GROUND_TREMOR = 578
____exports.SoundEffect[____exports.SoundEffect.GROUND_TREMOR] = "GROUND_TREMOR"
____exports.SoundEffect.SOUL_PICKUP = 579
____exports.SoundEffect[____exports.SoundEffect.SOUL_PICKUP] = "SOUL_PICKUP"
____exports.SoundEffect.BALL_AND_CHAIN_LOOP = 580
____exports.SoundEffect[____exports.SoundEffect.BALL_AND_CHAIN_LOOP] = "BALL_AND_CHAIN_LOOP"
____exports.SoundEffect.BALL_AND_CHAIN_HIT = 581
____exports.SoundEffect[____exports.SoundEffect.BALL_AND_CHAIN_HIT] = "BALL_AND_CHAIN_HIT"
____exports.SoundEffect.LAZARUS_FLIP_DEAD = 582
____exports.SoundEffect[____exports.SoundEffect.LAZARUS_FLIP_DEAD] = "LAZARUS_FLIP_DEAD"
____exports.SoundEffect.LAZARUS_FLIP_ALIVE = 583
____exports.SoundEffect[____exports.SoundEffect.LAZARUS_FLIP_ALIVE] = "LAZARUS_FLIP_ALIVE"
____exports.SoundEffect.RECALL_FINISH = 584
____exports.SoundEffect[____exports.SoundEffect.RECALL_FINISH] = "RECALL_FINISH"
____exports.SoundEffect.ROCKET_LAUNCH_SHORT = 585
____exports.SoundEffect[____exports.SoundEffect.ROCKET_LAUNCH_SHORT] = "ROCKET_LAUNCH_SHORT"
____exports.SoundEffect.ROCKET_LAUNCH_TINY = 586
____exports.SoundEffect[____exports.SoundEffect.ROCKET_LAUNCH_TINY] = "ROCKET_LAUNCH_TINY"
____exports.SoundEffect.ROCKET_EXPLOSION = 587
____exports.SoundEffect[____exports.SoundEffect.ROCKET_EXPLOSION] = "ROCKET_EXPLOSION"
____exports.SoundEffect.JELLY_BOUNCE = 588
____exports.SoundEffect[____exports.SoundEffect.JELLY_BOUNCE] = "JELLY_BOUNCE"
____exports.SoundEffect.POOP_LASER = 589
____exports.SoundEffect[____exports.SoundEffect.POOP_LASER] = "POOP_LASER"
____exports.SoundEffect.POISON_WARN = 590
____exports.SoundEffect[____exports.SoundEffect.POISON_WARN] = "POISON_WARN"
____exports.SoundEffect.POISON_HURT = 591
____exports.SoundEffect[____exports.SoundEffect.POISON_HURT] = "POISON_HURT"
____exports.SoundEffect.BERSERK_START = 592
____exports.SoundEffect[____exports.SoundEffect.BERSERK_START] = "BERSERK_START"
____exports.SoundEffect.BERSERK_TICK = 593
____exports.SoundEffect[____exports.SoundEffect.BERSERK_TICK] = "BERSERK_TICK"
____exports.SoundEffect.BERSERK_END = 594
____exports.SoundEffect[____exports.SoundEffect.BERSERK_END] = "BERSERK_END"
____exports.SoundEffect.EDEN_GLITCH = 595
____exports.SoundEffect[____exports.SoundEffect.EDEN_GLITCH] = "EDEN_GLITCH"
____exports.SoundEffect.RAILROAD_TRACK_RAISE = 596
____exports.SoundEffect[____exports.SoundEffect.RAILROAD_TRACK_RAISE] = "RAILROAD_TRACK_RAISE"
____exports.SoundEffect.RAILROAD_TRACK_RAISE_FAR = 597
____exports.SoundEffect[____exports.SoundEffect.RAILROAD_TRACK_RAISE_FAR] = "RAILROAD_TRACK_RAISE_FAR"
____exports.SoundEffect.MOM_AND_DAD_1 = 598
____exports.SoundEffect[____exports.SoundEffect.MOM_AND_DAD_1] = "MOM_AND_DAD_1"
____exports.SoundEffect.MOM_AND_DAD_2 = 599
____exports.SoundEffect[____exports.SoundEffect.MOM_AND_DAD_2] = "MOM_AND_DAD_2"
____exports.SoundEffect.MOM_AND_DAD_3 = 600
____exports.SoundEffect[____exports.SoundEffect.MOM_AND_DAD_3] = "MOM_AND_DAD_3"
____exports.SoundEffect.MOM_AND_DAD_4 = 601
____exports.SoundEffect[____exports.SoundEffect.MOM_AND_DAD_4] = "MOM_AND_DAD_4"
____exports.SoundEffect.THUMBS_UP_AMPLIFIED = 602
____exports.SoundEffect[____exports.SoundEffect.THUMBS_UP_AMPLIFIED] = "THUMBS_UP_AMPLIFIED"
____exports.SoundEffect.THUMBS_DOWN_AMPLIFIED = 603
____exports.SoundEffect[____exports.SoundEffect.THUMBS_DOWN_AMPLIFIED] = "THUMBS_DOWN_AMPLIFIED"
____exports.SoundEffect.POWER_UP_SPEWER_AMPLIFIED = 604
____exports.SoundEffect[____exports.SoundEffect.POWER_UP_SPEWER_AMPLIFIED] = "POWER_UP_SPEWER_AMPLIFIED"
____exports.SoundEffect.POOP_ITEM_THROW = 605
____exports.SoundEffect[____exports.SoundEffect.POOP_ITEM_THROW] = "POOP_ITEM_THROW"
____exports.SoundEffect.POOP_ITEM_STORE = 606
____exports.SoundEffect[____exports.SoundEffect.POOP_ITEM_STORE] = "POOP_ITEM_STORE"
____exports.SoundEffect.POOP_ITEM_HOLD = 607
____exports.SoundEffect[____exports.SoundEffect.POOP_ITEM_HOLD] = "POOP_ITEM_HOLD"
____exports.SoundEffect.MIRROR_ENTER = 608
____exports.SoundEffect[____exports.SoundEffect.MIRROR_ENTER] = "MIRROR_ENTER"
____exports.SoundEffect.MIRROR_EXIT = 609
____exports.SoundEffect[____exports.SoundEffect.MIRROR_EXIT] = "MIRROR_EXIT"
____exports.SoundEffect.MIRROR_BREAK = 610
____exports.SoundEffect[____exports.SoundEffect.MIRROR_BREAK] = "MIRROR_BREAK"
____exports.SoundEffect.ANIMA_TRAP = 611
____exports.SoundEffect[____exports.SoundEffect.ANIMA_TRAP] = "ANIMA_TRAP"
____exports.SoundEffect.ANIMA_RATTLE = 612
____exports.SoundEffect[____exports.SoundEffect.ANIMA_RATTLE] = "ANIMA_RATTLE"
____exports.SoundEffect.ANIMA_BREAK = 613
____exports.SoundEffect[____exports.SoundEffect.ANIMA_BREAK] = "ANIMA_BREAK"
____exports.SoundEffect.VAMP_DOUBLE = 614
____exports.SoundEffect[____exports.SoundEffect.VAMP_DOUBLE] = "VAMP_DOUBLE"
____exports.SoundEffect.FLASHBACK = 615
____exports.SoundEffect[____exports.SoundEffect.FLASHBACK] = "FLASHBACK"
____exports.SoundEffect.DARK_ESAU_OPEN = 616
____exports.SoundEffect[____exports.SoundEffect.DARK_ESAU_OPEN] = "DARK_ESAU_OPEN"
____exports.SoundEffect.DARK_ESAU_DEATH_OPEN = 617
____exports.SoundEffect[____exports.SoundEffect.DARK_ESAU_DEATH_OPEN] = "DARK_ESAU_DEATH_OPEN"
____exports.SoundEffect.MOTHER_DEATH_1 = 618
____exports.SoundEffect[____exports.SoundEffect.MOTHER_DEATH_1] = "MOTHER_DEATH_1"
____exports.SoundEffect.MOTHER_DEATH_2 = 619
____exports.SoundEffect[____exports.SoundEffect.MOTHER_DEATH_2] = "MOTHER_DEATH_2"
____exports.SoundEffect.MOTHER_FIST_POUND_1 = 620
____exports.SoundEffect[____exports.SoundEffect.MOTHER_FIST_POUND_1] = "MOTHER_FIST_POUND_1"
____exports.SoundEffect.MOTHER_FIST_POUND_2 = 621
____exports.SoundEffect[____exports.SoundEffect.MOTHER_FIST_POUND_2] = "MOTHER_FIST_POUND_2"
____exports.SoundEffect.MOTHER_FIST_POUND_3 = 622
____exports.SoundEffect[____exports.SoundEffect.MOTHER_FIST_POUND_3] = "MOTHER_FIST_POUND_3"
____exports.SoundEffect.MOTHER_FISTULA = 623
____exports.SoundEffect[____exports.SoundEffect.MOTHER_FISTULA] = "MOTHER_FISTULA"
____exports.SoundEffect.MOTHER_APPEAR_1 = 624
____exports.SoundEffect[____exports.SoundEffect.MOTHER_APPEAR_1] = "MOTHER_APPEAR_1"
____exports.SoundEffect.MOTHER_APPEAR_2 = 625
____exports.SoundEffect[____exports.SoundEffect.MOTHER_APPEAR_2] = "MOTHER_APPEAR_2"
____exports.SoundEffect.MOTHER_KNIFE_START = 626
____exports.SoundEffect[____exports.SoundEffect.MOTHER_KNIFE_START] = "MOTHER_KNIFE_START"
____exports.SoundEffect.MOTHER_KNIFE_THROW = 627
____exports.SoundEffect[____exports.SoundEffect.MOTHER_KNIFE_THROW] = "MOTHER_KNIFE_THROW"
____exports.SoundEffect.MOTHER_SUMMON_ISAACS_START = 628
____exports.SoundEffect[____exports.SoundEffect.MOTHER_SUMMON_ISAACS_START] = "MOTHER_SUMMON_ISAACS_START"
____exports.SoundEffect.MOTHER_SUMMON_ISAACS_END = 629
____exports.SoundEffect[____exports.SoundEffect.MOTHER_SUMMON_ISAACS_END] = "MOTHER_SUMMON_ISAACS_END"
____exports.SoundEffect.MOTHER_HAND_BOIL_START = 630
____exports.SoundEffect[____exports.SoundEffect.MOTHER_HAND_BOIL_START] = "MOTHER_HAND_BOIL_START"
____exports.SoundEffect.MOTHER_GRUNT_1 = 631
____exports.SoundEffect[____exports.SoundEffect.MOTHER_GRUNT_1] = "MOTHER_GRUNT_1"
____exports.SoundEffect.MOTHER_GRUNT_5 = 632
____exports.SoundEffect[____exports.SoundEffect.MOTHER_GRUNT_5] = "MOTHER_GRUNT_5"
____exports.SoundEffect.MOTHER_GRUNT_6 = 633
____exports.SoundEffect[____exports.SoundEffect.MOTHER_GRUNT_6] = "MOTHER_GRUNT_6"
____exports.SoundEffect.MOTHER_GRUNT_7 = 634
____exports.SoundEffect[____exports.SoundEffect.MOTHER_GRUNT_7] = "MOTHER_GRUNT_7"
____exports.SoundEffect.MOTHER_LAUGH = 635
____exports.SoundEffect[____exports.SoundEffect.MOTHER_LAUGH] = "MOTHER_LAUGH"
____exports.SoundEffect.MOTHER_SPIN_START = 636
____exports.SoundEffect[____exports.SoundEffect.MOTHER_SPIN_START] = "MOTHER_SPIN_START"
____exports.SoundEffect.MOTHER_WALL_SHOT_START = 637
____exports.SoundEffect[____exports.SoundEffect.MOTHER_WALL_SHOT_START] = "MOTHER_WALL_SHOT_START"
____exports.SoundEffect.MOTHER_MISC = 638
____exports.SoundEffect[____exports.SoundEffect.MOTHER_MISC] = "MOTHER_MISC"
____exports.SoundEffect.MOTHER_SHOOT = 639
____exports.SoundEffect[____exports.SoundEffect.MOTHER_SHOOT] = "MOTHER_SHOOT"
____exports.SoundEffect.MOTHER_SUCTION = 640
____exports.SoundEffect[____exports.SoundEffect.MOTHER_SUCTION] = "MOTHER_SUCTION"
____exports.SoundEffect.MOTHER_ISAAC_RISE = 641
____exports.SoundEffect[____exports.SoundEffect.MOTHER_ISAAC_RISE] = "MOTHER_ISAAC_RISE"
____exports.SoundEffect.MOTHER_ISAAC_HIT = 642
____exports.SoundEffect[____exports.SoundEffect.MOTHER_ISAAC_HIT] = "MOTHER_ISAAC_HIT"
____exports.SoundEffect.MOTHER_WRIST_SWELL = 643
____exports.SoundEffect[____exports.SoundEffect.MOTHER_WRIST_SWELL] = "MOTHER_WRIST_SWELL"
____exports.SoundEffect.MOTHER_WRIST_EXPLODE = 644
____exports.SoundEffect[____exports.SoundEffect.MOTHER_WRIST_EXPLODE] = "MOTHER_WRIST_EXPLODE"
____exports.SoundEffect.MOTHER_DEATH_MELT = 645
____exports.SoundEffect[____exports.SoundEffect.MOTHER_DEATH_MELT] = "MOTHER_DEATH_MELT"
____exports.SoundEffect.MOTHER_ANGER_SHAKE = 646
____exports.SoundEffect[____exports.SoundEffect.MOTHER_ANGER_SHAKE] = "MOTHER_ANGER_SHAKE"
____exports.SoundEffect.MOTHER_CHARGE_1 = 647
____exports.SoundEffect[____exports.SoundEffect.MOTHER_CHARGE_1] = "MOTHER_CHARGE_1"
____exports.SoundEffect.MOTHER_CHARGE_2 = 648
____exports.SoundEffect[____exports.SoundEffect.MOTHER_CHARGE_2] = "MOTHER_CHARGE_2"
____exports.SoundEffect.MOTHER_LAND_SMASH = 649
____exports.SoundEffect[____exports.SoundEffect.MOTHER_LAND_SMASH] = "MOTHER_LAND_SMASH"
____exports.SoundEffect.ISAAC_ROAR = 650
____exports.SoundEffect[____exports.SoundEffect.ISAAC_ROAR] = "ISAAC_ROAR"
____exports.SoundEffect.FAMINE_APPEAR = 651
____exports.SoundEffect[____exports.SoundEffect.FAMINE_APPEAR] = "FAMINE_APPEAR"
____exports.SoundEffect.FAMINE_DEATH_1 = 652
____exports.SoundEffect[____exports.SoundEffect.FAMINE_DEATH_1] = "FAMINE_DEATH_1"
____exports.SoundEffect.FAMINE_DEATH_2 = 653
____exports.SoundEffect[____exports.SoundEffect.FAMINE_DEATH_2] = "FAMINE_DEATH_2"
____exports.SoundEffect.FAMINE_DASH_START = 654
____exports.SoundEffect[____exports.SoundEffect.FAMINE_DASH_START] = "FAMINE_DASH_START"
____exports.SoundEffect.FAMINE_DASH = 655
____exports.SoundEffect[____exports.SoundEffect.FAMINE_DASH] = "FAMINE_DASH"
____exports.SoundEffect.FAMINE_SHOOT = 656
____exports.SoundEffect[____exports.SoundEffect.FAMINE_SHOOT] = "FAMINE_SHOOT"
____exports.SoundEffect.FAMINE_BURST = 657
____exports.SoundEffect[____exports.SoundEffect.FAMINE_BURST] = "FAMINE_BURST"
____exports.SoundEffect.FAMINE_GURGLE = 658
____exports.SoundEffect[____exports.SoundEffect.FAMINE_GURGLE] = "FAMINE_GURGLE"
____exports.SoundEffect.PESTILENCE_MAGGOT_START = 659
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_MAGGOT_START] = "PESTILENCE_MAGGOT_START"
____exports.SoundEffect.PESTILENCE_MAGGOT_SHOOT_1 = 660
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_MAGGOT_SHOOT_1] = "PESTILENCE_MAGGOT_SHOOT_1"
____exports.SoundEffect.PESTILENCE_MAGGOT_RETURN = 661
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_MAGGOT_RETURN] = "PESTILENCE_MAGGOT_RETURN"
____exports.SoundEffect.PESTILENCE_BODY_SHOOT = 662
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_BODY_SHOOT] = "PESTILENCE_BODY_SHOOT"
____exports.SoundEffect.PESTILENCE_HEAD_DEATH = 663
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_HEAD_DEATH] = "PESTILENCE_HEAD_DEATH"
____exports.SoundEffect.PESTILENCE_DEATH = 664
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_DEATH] = "PESTILENCE_DEATH"
____exports.SoundEffect.PESTILENCE_COUGH = 665
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_COUGH] = "PESTILENCE_COUGH"
____exports.SoundEffect.PESTILENCE_BARF = 666
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_BARF] = "PESTILENCE_BARF"
____exports.SoundEffect.PESTILENCE_APPEAR = 667
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_APPEAR] = "PESTILENCE_APPEAR"
____exports.SoundEffect.PESTILENCE_HEAD_EXPLODE = 668
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_HEAD_EXPLODE] = "PESTILENCE_HEAD_EXPLODE"
____exports.SoundEffect.PESTILENCE_MAGGOT_ENTER = 669
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_MAGGOT_ENTER] = "PESTILENCE_MAGGOT_ENTER"
____exports.SoundEffect.PESTILENCE_MAGGOT_POP_OUT = 670
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_MAGGOT_POP_OUT] = "PESTILENCE_MAGGOT_POP_OUT"
____exports.SoundEffect.PESTILENCE_MAGGOT_SHOOT_2 = 671
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_MAGGOT_SHOOT_2] = "PESTILENCE_MAGGOT_SHOOT_2"
____exports.SoundEffect.PESTILENCE_NECK_PUKE = 672
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_NECK_PUKE] = "PESTILENCE_NECK_PUKE"
____exports.SoundEffect.PESTILENCE_PUKE_START = 673
____exports.SoundEffect[____exports.SoundEffect.PESTILENCE_PUKE_START] = "PESTILENCE_PUKE_START"
____exports.SoundEffect.WAR_APPEAR = 674
____exports.SoundEffect[____exports.SoundEffect.WAR_APPEAR] = "WAR_APPEAR"
____exports.SoundEffect.WAR_APPEAR_LAVA = 675
____exports.SoundEffect[____exports.SoundEffect.WAR_APPEAR_LAVA] = "WAR_APPEAR_LAVA"
____exports.SoundEffect.WAR_BOMB_TOSS = 676
____exports.SoundEffect[____exports.SoundEffect.WAR_BOMB_TOSS] = "WAR_BOMB_TOSS"
____exports.SoundEffect.WAR_DASH_START = 677
____exports.SoundEffect[____exports.SoundEffect.WAR_DASH_START] = "WAR_DASH_START"
____exports.SoundEffect.WAR_DASH = 678
____exports.SoundEffect[____exports.SoundEffect.WAR_DASH] = "WAR_DASH"
____exports.SoundEffect.WAR_HORSE_DEATH = 679
____exports.SoundEffect[____exports.SoundEffect.WAR_HORSE_DEATH] = "WAR_HORSE_DEATH"
____exports.SoundEffect.WAR_DEATH = 680
____exports.SoundEffect[____exports.SoundEffect.WAR_DEATH] = "WAR_DEATH"
____exports.SoundEffect.WAR_FIRE_SCREAM = 681
____exports.SoundEffect[____exports.SoundEffect.WAR_FIRE_SCREAM] = "WAR_FIRE_SCREAM"
____exports.SoundEffect.WAR_GRAB_PLAYER = 682
____exports.SoundEffect[____exports.SoundEffect.WAR_GRAB_PLAYER] = "WAR_GRAB_PLAYER"
____exports.SoundEffect.WAR_BOMB_HOLD = 683
____exports.SoundEffect[____exports.SoundEffect.WAR_BOMB_HOLD] = "WAR_BOMB_HOLD"
____exports.SoundEffect.WAR_BOMB_PULL_OUT = 684
____exports.SoundEffect[____exports.SoundEffect.WAR_BOMB_PULL_OUT] = "WAR_BOMB_PULL_OUT"
____exports.SoundEffect.WAR_CHASE = 685
____exports.SoundEffect[____exports.SoundEffect.WAR_CHASE] = "WAR_CHASE"
____exports.SoundEffect.WAR_BOMB_TICK = 686
____exports.SoundEffect[____exports.SoundEffect.WAR_BOMB_TICK] = "WAR_BOMB_TICK"
____exports.SoundEffect.WAR_FLAME = 687
____exports.SoundEffect[____exports.SoundEffect.WAR_FLAME] = "WAR_FLAME"
____exports.SoundEffect.WAR_LAVA_SPLASH = 688
____exports.SoundEffect[____exports.SoundEffect.WAR_LAVA_SPLASH] = "WAR_LAVA_SPLASH"
____exports.SoundEffect.WAR_LAVA_DASH = 689
____exports.SoundEffect[____exports.SoundEffect.WAR_LAVA_DASH] = "WAR_LAVA_DASH"
____exports.SoundEffect.DEATH_DIES = 690
____exports.SoundEffect[____exports.SoundEffect.DEATH_DIES] = "DEATH_DIES"
____exports.SoundEffect.DEATH_DESTROY_SKULLS = 691
____exports.SoundEffect[____exports.SoundEffect.DEATH_DESTROY_SKULLS] = "DEATH_DESTROY_SKULLS"
____exports.SoundEffect.DEATH_GROWL = 692
____exports.SoundEffect[____exports.SoundEffect.DEATH_GROWL] = "DEATH_GROWL"
____exports.SoundEffect.DEATH_SWIPE_START = 693
____exports.SoundEffect[____exports.SoundEffect.DEATH_SWIPE_START] = "DEATH_SWIPE_START"
____exports.SoundEffect.DEATH_SWIPE = 694
____exports.SoundEffect[____exports.SoundEffect.DEATH_SWIPE] = "DEATH_SWIPE"
____exports.SoundEffect.DEATH_SUMMON_SCYTHES = 695
____exports.SoundEffect[____exports.SoundEffect.DEATH_SUMMON_SCYTHES] = "DEATH_SUMMON_SCYTHES"
____exports.SoundEffect.DEATH_SUMMON_SKULLS = 696
____exports.SoundEffect[____exports.SoundEffect.DEATH_SUMMON_SKULLS] = "DEATH_SUMMON_SKULLS"
____exports.SoundEffect.BEAST_DEATH = 697
____exports.SoundEffect[____exports.SoundEffect.BEAST_DEATH] = "BEAST_DEATH"
____exports.SoundEffect.BEAST_LASER = 698
____exports.SoundEffect[____exports.SoundEffect.BEAST_LASER] = "BEAST_LASER"
____exports.SoundEffect.BEAST_BACKGROUND_DIVE = 699
____exports.SoundEffect[____exports.SoundEffect.BEAST_BACKGROUND_DIVE] = "BEAST_BACKGROUND_DIVE"
____exports.SoundEffect.BEAST_FIRE_RING = 700
____exports.SoundEffect[____exports.SoundEffect.BEAST_FIRE_RING] = "BEAST_FIRE_RING"
____exports.SoundEffect.BEAST_GHOST_DASH = 701
____exports.SoundEffect[____exports.SoundEffect.BEAST_GHOST_DASH] = "BEAST_GHOST_DASH"
____exports.SoundEffect.BEAST_GHOST_RISE = 702
____exports.SoundEffect[____exports.SoundEffect.BEAST_GHOST_RISE] = "BEAST_GHOST_RISE"
____exports.SoundEffect.BEAST_LAVA_BALL_SPLASH = 703
____exports.SoundEffect[____exports.SoundEffect.BEAST_LAVA_BALL_SPLASH] = "BEAST_LAVA_BALL_SPLASH"
____exports.SoundEffect.BEAST_LAVA_RISE = 704
____exports.SoundEffect[____exports.SoundEffect.BEAST_LAVA_RISE] = "BEAST_LAVA_RISE"
____exports.SoundEffect.BEAST_SUCTION_LOOP = 705
____exports.SoundEffect[____exports.SoundEffect.BEAST_SUCTION_LOOP] = "BEAST_SUCTION_LOOP"
____exports.SoundEffect.BEAST_FIRE_BARF = 706
____exports.SoundEffect[____exports.SoundEffect.BEAST_FIRE_BARF] = "BEAST_FIRE_BARF"
____exports.SoundEffect.BEAST_GHOST_ROAR = 707
____exports.SoundEffect[____exports.SoundEffect.BEAST_GHOST_ROAR] = "BEAST_GHOST_ROAR"
____exports.SoundEffect.BEAST_INTRO_SCREAM = 708
____exports.SoundEffect[____exports.SoundEffect.BEAST_INTRO_SCREAM] = "BEAST_INTRO_SCREAM"
____exports.SoundEffect.BEAST_SUCTION_END = 709
____exports.SoundEffect[____exports.SoundEffect.BEAST_SUCTION_END] = "BEAST_SUCTION_END"
____exports.SoundEffect.BEAST_SUCTION_START = 710
____exports.SoundEffect[____exports.SoundEffect.BEAST_SUCTION_START] = "BEAST_SUCTION_START"
____exports.SoundEffect.BEAST_SPIT = 711
____exports.SoundEffect[____exports.SoundEffect.BEAST_SPIT] = "BEAST_SPIT"
____exports.SoundEffect.BEAST_SURFACE_GROWL = 712
____exports.SoundEffect[____exports.SoundEffect.BEAST_SURFACE_GROWL] = "BEAST_SURFACE_GROWL"
____exports.SoundEffect.BEAST_SWITCH_SIDES = 713
____exports.SoundEffect[____exports.SoundEffect.BEAST_SWITCH_SIDES] = "BEAST_SWITCH_SIDES"
____exports.SoundEffect.MOTHER_SHADOW_APPEAR = 714
____exports.SoundEffect[____exports.SoundEffect.MOTHER_SHADOW_APPEAR] = "MOTHER_SHADOW_APPEAR"
____exports.SoundEffect.MOTHER_SHADOW_CHARGE_UP = 715
____exports.SoundEffect[____exports.SoundEffect.MOTHER_SHADOW_CHARGE_UP] = "MOTHER_SHADOW_CHARGE_UP"
____exports.SoundEffect.MOTHER_SHADOW_DASH = 716
____exports.SoundEffect[____exports.SoundEffect.MOTHER_SHADOW_DASH] = "MOTHER_SHADOW_DASH"
____exports.SoundEffect.MOTHER_SHADOW_END = 717
____exports.SoundEffect[____exports.SoundEffect.MOTHER_SHADOW_END] = "MOTHER_SHADOW_END"
____exports.SoundEffect.MOTHER_SHADOW_INTRO = 718
____exports.SoundEffect[____exports.SoundEffect.MOTHER_SHADOW_INTRO] = "MOTHER_SHADOW_INTRO"
____exports.SoundEffect.BUMBINO_DEATH = 719
____exports.SoundEffect[____exports.SoundEffect.BUMBINO_DEATH] = "BUMBINO_DEATH"
____exports.SoundEffect.BUMBINO_DIZZY = 720
____exports.SoundEffect[____exports.SoundEffect.BUMBINO_DIZZY] = "BUMBINO_DIZZY"
____exports.SoundEffect.BUMBINO_HIT_WALL = 721
____exports.SoundEffect[____exports.SoundEffect.BUMBINO_HIT_WALL] = "BUMBINO_HIT_WALL"
____exports.SoundEffect.BUMBINO_MISC = 722
____exports.SoundEffect[____exports.SoundEffect.BUMBINO_MISC] = "BUMBINO_MISC"
____exports.SoundEffect.BUMBINO_PUNCH = 723
____exports.SoundEffect[____exports.SoundEffect.BUMBINO_PUNCH] = "BUMBINO_PUNCH"
____exports.SoundEffect.BUMBINO_RAM = 724
____exports.SoundEffect[____exports.SoundEffect.BUMBINO_RAM] = "BUMBINO_RAM"
____exports.SoundEffect.BUMBINO_SLAM = 725
____exports.SoundEffect[____exports.SoundEffect.BUMBINO_SLAM] = "BUMBINO_SLAM"
____exports.SoundEffect.BUMBINO_SNAP_OUT = 726
____exports.SoundEffect[____exports.SoundEffect.BUMBINO_SNAP_OUT] = "BUMBINO_SNAP_OUT"
____exports.SoundEffect.SIREN_SCREAM = 727
____exports.SoundEffect[____exports.SoundEffect.SIREN_SCREAM] = "SIREN_SCREAM"
____exports.SoundEffect.SIREN_SING = 728
____exports.SoundEffect[____exports.SoundEffect.SIREN_SING] = "SIREN_SING"
____exports.SoundEffect.DEATH_SKULL_SUMMON_LOOP = 729
____exports.SoundEffect[____exports.SoundEffect.DEATH_SKULL_SUMMON_LOOP] = "DEATH_SKULL_SUMMON_LOOP"
____exports.SoundEffect.DEATH_SKULL_SUMMON_END = 730
____exports.SoundEffect[____exports.SoundEffect.DEATH_SKULL_SUMMON_END] = "DEATH_SKULL_SUMMON_END"
____exports.SoundEffect.BEAST_DEATH_2 = 731
____exports.SoundEffect[____exports.SoundEffect.BEAST_DEATH_2] = "BEAST_DEATH_2"
____exports.SoundEffect.BEAST_ANGELIC_BLAST = 732
____exports.SoundEffect[____exports.SoundEffect.BEAST_ANGELIC_BLAST] = "BEAST_ANGELIC_BLAST"
____exports.SoundEffect.ANCIENT_RECALL = 733
____exports.SoundEffect[____exports.SoundEffect.ANCIENT_RECALL] = "ANCIENT_RECALL"
____exports.SoundEffect.ERA_WALK = 734
____exports.SoundEffect[____exports.SoundEffect.ERA_WALK] = "ERA_WALK"
____exports.SoundEffect.HUGE_GROWTH = 735
____exports.SoundEffect[____exports.SoundEffect.HUGE_GROWTH] = "HUGE_GROWTH"
____exports.SoundEffect.RUNE_SHARD = 736
____exports.SoundEffect[____exports.SoundEffect.RUNE_SHARD] = "RUNE_SHARD"
____exports.SoundEffect.SHOT_SPEED_DOWN = 737
____exports.SoundEffect[____exports.SoundEffect.SHOT_SPEED_DOWN] = "SHOT_SPEED_DOWN"
____exports.SoundEffect.SHOT_SPEED_UP = 738
____exports.SoundEffect[____exports.SoundEffect.SHOT_SPEED_UP] = "SHOT_SPEED_UP"
____exports.SoundEffect.EXPERIMENTAL_PILL = 739
____exports.SoundEffect[____exports.SoundEffect.EXPERIMENTAL_PILL] = "EXPERIMENTAL_PILL"
____exports.SoundEffect.CRACKED_KEY = 740
____exports.SoundEffect[____exports.SoundEffect.CRACKED_KEY] = "CRACKED_KEY"
____exports.SoundEffect.QUEEN_OF_HEARTS = 741
____exports.SoundEffect[____exports.SoundEffect.QUEEN_OF_HEARTS] = "QUEEN_OF_HEARTS"
____exports.SoundEffect.WILD_CARD = 742
____exports.SoundEffect[____exports.SoundEffect.WILD_CARD] = "WILD_CARD"
____exports.SoundEffect.SOUL_OF_ISAAC = 743
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_ISAAC] = "SOUL_OF_ISAAC"
____exports.SoundEffect.SOUL_OF_MAGDALENE = 744
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_MAGDALENE] = "SOUL_OF_MAGDALENE"
____exports.SoundEffect.SOUL_OF_CAIN = 745
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_CAIN] = "SOUL_OF_CAIN"
____exports.SoundEffect.SOUL_OF_JUDAS = 746
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_JUDAS] = "SOUL_OF_JUDAS"
____exports.SoundEffect.SOUL_OF_XXX = 747
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_XXX] = "SOUL_OF_XXX"
____exports.SoundEffect.SOUL_OF_EVE = 748
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_EVE] = "SOUL_OF_EVE"
____exports.SoundEffect.SOUL_OF_SAMSON = 749
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_SAMSON] = "SOUL_OF_SAMSON"
____exports.SoundEffect.SOUL_OF_AZAZEL = 750
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_AZAZEL] = "SOUL_OF_AZAZEL"
____exports.SoundEffect.SOUL_OF_LAZARUS = 751
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_LAZARUS] = "SOUL_OF_LAZARUS"
____exports.SoundEffect.SOUL_OF_EDEN = 752
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_EDEN] = "SOUL_OF_EDEN"
____exports.SoundEffect.SOUL_OF_THE_LOST = 753
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_THE_LOST] = "SOUL_OF_THE_LOST"
____exports.SoundEffect.SOUL_OF_LILITH = 754
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_LILITH] = "SOUL_OF_LILITH"
____exports.SoundEffect.SOUL_OF_THE_KEEPER = 755
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_THE_KEEPER] = "SOUL_OF_THE_KEEPER"
____exports.SoundEffect.SOUL_OF_APOLLYON = 756
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_APOLLYON] = "SOUL_OF_APOLLYON"
____exports.SoundEffect.SOUL_OF_THE_FORGOTTEN = 757
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_THE_FORGOTTEN] = "SOUL_OF_THE_FORGOTTEN"
____exports.SoundEffect.SOUL_OF_BETHANY = 758
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_BETHANY] = "SOUL_OF_BETHANY"
____exports.SoundEffect.SOUL_OF_JACOB_AND_ESAU = 759
____exports.SoundEffect[____exports.SoundEffect.SOUL_OF_JACOB_AND_ESAU] = "SOUL_OF_JACOB_AND_ESAU"
____exports.SoundEffect.MEGA_BAD_GAS = 760
____exports.SoundEffect[____exports.SoundEffect.MEGA_BAD_GAS] = "MEGA_BAD_GAS"
____exports.SoundEffect.MEGA_BAD_TRIP = 761
____exports.SoundEffect[____exports.SoundEffect.MEGA_BAD_TRIP] = "MEGA_BAD_TRIP"
____exports.SoundEffect.MEGA_BALLS_OF_STEEL = 762
____exports.SoundEffect[____exports.SoundEffect.MEGA_BALLS_OF_STEEL] = "MEGA_BALLS_OF_STEEL"
____exports.SoundEffect.MEGA_BOMBS_ARE_KEY = 763
____exports.SoundEffect[____exports.SoundEffect.MEGA_BOMBS_ARE_KEY] = "MEGA_BOMBS_ARE_KEY"
____exports.SoundEffect.MEGA_EXPLOSIVE_DIARRHEA = 764
____exports.SoundEffect[____exports.SoundEffect.MEGA_EXPLOSIVE_DIARRHEA] = "MEGA_EXPLOSIVE_DIARRHEA"
____exports.SoundEffect.MEGA_FULL_HEALTH = 765
____exports.SoundEffect[____exports.SoundEffect.MEGA_FULL_HEALTH] = "MEGA_FULL_HEALTH"
____exports.SoundEffect.MEGA_HEALTH_UP = 766
____exports.SoundEffect[____exports.SoundEffect.MEGA_HEALTH_UP] = "MEGA_HEALTH_UP"
____exports.SoundEffect.MEGA_HEALTH_DOWN = 767
____exports.SoundEffect[____exports.SoundEffect.MEGA_HEALTH_DOWN] = "MEGA_HEALTH_DOWN"
____exports.SoundEffect.MEGA_I_FOUND_PILLS = 768
____exports.SoundEffect[____exports.SoundEffect.MEGA_I_FOUND_PILLS] = "MEGA_I_FOUND_PILLS"
____exports.SoundEffect.MEGA_PUBERTY = 769
____exports.SoundEffect[____exports.SoundEffect.MEGA_PUBERTY] = "MEGA_PUBERTY"
____exports.SoundEffect.MEGA_PRETTY_FLY = 770
____exports.SoundEffect[____exports.SoundEffect.MEGA_PRETTY_FLY] = "MEGA_PRETTY_FLY"
____exports.SoundEffect.MEGA_RANGE_DOWN = 771
____exports.SoundEffect[____exports.SoundEffect.MEGA_RANGE_DOWN] = "MEGA_RANGE_DOWN"
____exports.SoundEffect.MEGA_RANGE_UP = 772
____exports.SoundEffect[____exports.SoundEffect.MEGA_RANGE_UP] = "MEGA_RANGE_UP"
____exports.SoundEffect.MEGA_SPEED_DOWN = 773
____exports.SoundEffect[____exports.SoundEffect.MEGA_SPEED_DOWN] = "MEGA_SPEED_DOWN"
____exports.SoundEffect.MEGA_SPEED_UP = 774
____exports.SoundEffect[____exports.SoundEffect.MEGA_SPEED_UP] = "MEGA_SPEED_UP"
____exports.SoundEffect.MEGA_TEARS_DOWN = 775
____exports.SoundEffect[____exports.SoundEffect.MEGA_TEARS_DOWN] = "MEGA_TEARS_DOWN"
____exports.SoundEffect.MEGA_TEARS_UP = 776
____exports.SoundEffect[____exports.SoundEffect.MEGA_TEARS_UP] = "MEGA_TEARS_UP"
____exports.SoundEffect.MEGA_LUCK_DOWN = 777
____exports.SoundEffect[____exports.SoundEffect.MEGA_LUCK_DOWN] = "MEGA_LUCK_DOWN"
____exports.SoundEffect.MEGA_LUCK_UP = 778
____exports.SoundEffect[____exports.SoundEffect.MEGA_LUCK_UP] = "MEGA_LUCK_UP"
____exports.SoundEffect.MEGA_TELEPILLS = 779
____exports.SoundEffect[____exports.SoundEffect.MEGA_TELEPILLS] = "MEGA_TELEPILLS"
____exports.SoundEffect.MEGA_FORTY_EIGHT_HOUR_ENERGY = 780
____exports.SoundEffect[____exports.SoundEffect.MEGA_FORTY_EIGHT_HOUR_ENERGY] = "MEGA_FORTY_EIGHT_HOUR_ENERGY"
____exports.SoundEffect.MEGA_HEMATEMESIS = 781
____exports.SoundEffect[____exports.SoundEffect.MEGA_HEMATEMESIS] = "MEGA_HEMATEMESIS"
____exports.SoundEffect.MEGA_PARALYSIS = 782
____exports.SoundEffect[____exports.SoundEffect.MEGA_PARALYSIS] = "MEGA_PARALYSIS"
____exports.SoundEffect.MEGA_I_CAN_SEE_FOREVER = 783
____exports.SoundEffect[____exports.SoundEffect.MEGA_I_CAN_SEE_FOREVER] = "MEGA_I_CAN_SEE_FOREVER"
____exports.SoundEffect.MEGA_PHEROMONES = 784
____exports.SoundEffect[____exports.SoundEffect.MEGA_PHEROMONES] = "MEGA_PHEROMONES"
____exports.SoundEffect.MEGA_AMNESIA = 785
____exports.SoundEffect[____exports.SoundEffect.MEGA_AMNESIA] = "MEGA_AMNESIA"
____exports.SoundEffect.MEGA_LEMON_PARTY = 786
____exports.SoundEffect[____exports.SoundEffect.MEGA_LEMON_PARTY] = "MEGA_LEMON_PARTY"
____exports.SoundEffect.MEGA_R_U_A_WIZARD = 787
____exports.SoundEffect[____exports.SoundEffect.MEGA_R_U_A_WIZARD] = "MEGA_R_U_A_WIZARD"
____exports.SoundEffect.MEGA_PERCS = 788
____exports.SoundEffect[____exports.SoundEffect.MEGA_PERCS] = "MEGA_PERCS"
____exports.SoundEffect.MEGA_ADDICTED = 789
____exports.SoundEffect[____exports.SoundEffect.MEGA_ADDICTED] = "MEGA_ADDICTED"
____exports.SoundEffect.MEGA_RELAX = 790
____exports.SoundEffect[____exports.SoundEffect.MEGA_RELAX] = "MEGA_RELAX"
____exports.SoundEffect.MEGA_QUESTION_MARKS = 791
____exports.SoundEffect[____exports.SoundEffect.MEGA_QUESTION_MARKS] = "MEGA_QUESTION_MARKS"
____exports.SoundEffect.MEGA_ONE_MAKES_YOU_LARGER = 792
____exports.SoundEffect[____exports.SoundEffect.MEGA_ONE_MAKES_YOU_LARGER] = "MEGA_ONE_MAKES_YOU_LARGER"
____exports.SoundEffect.MEGA_ONE_MAKES_YOU_SMALL = 793
____exports.SoundEffect[____exports.SoundEffect.MEGA_ONE_MAKES_YOU_SMALL] = "MEGA_ONE_MAKES_YOU_SMALL"
____exports.SoundEffect.MEGA_INFESTED = 794
____exports.SoundEffect[____exports.SoundEffect.MEGA_INFESTED] = "MEGA_INFESTED"
____exports.SoundEffect.MEGA_INFESTED_1 = 795
____exports.SoundEffect[____exports.SoundEffect.MEGA_INFESTED_1] = "MEGA_INFESTED_1"
____exports.SoundEffect.MEGA_POWER_PILL = 796
____exports.SoundEffect[____exports.SoundEffect.MEGA_POWER_PILL] = "MEGA_POWER_PILL"
____exports.SoundEffect.MEGA_RETRO_VISION = 797
____exports.SoundEffect[____exports.SoundEffect.MEGA_RETRO_VISION] = "MEGA_RETRO_VISION"
____exports.SoundEffect.MEGA_FRIENDS_TIL_THE_END = 798
____exports.SoundEffect[____exports.SoundEffect.MEGA_FRIENDS_TIL_THE_END] = "MEGA_FRIENDS_TIL_THE_END"
____exports.SoundEffect.MEGA_X_LAX = 799
____exports.SoundEffect[____exports.SoundEffect.MEGA_X_LAX] = "MEGA_X_LAX"
____exports.SoundEffect.MEGA_SOMETHINGS_WRONG = 800
____exports.SoundEffect[____exports.SoundEffect.MEGA_SOMETHINGS_WRONG] = "MEGA_SOMETHINGS_WRONG"
____exports.SoundEffect.MEGA_IM_DROWSY = 801
____exports.SoundEffect[____exports.SoundEffect.MEGA_IM_DROWSY] = "MEGA_IM_DROWSY"
____exports.SoundEffect.MEGA_IM_EXCITED = 802
____exports.SoundEffect[____exports.SoundEffect.MEGA_IM_EXCITED] = "MEGA_IM_EXCITED"
____exports.SoundEffect.MEGA_GULP = 803
____exports.SoundEffect[____exports.SoundEffect.MEGA_GULP] = "MEGA_GULP"
____exports.SoundEffect.MEGA_HORF = 804
____exports.SoundEffect[____exports.SoundEffect.MEGA_HORF] = "MEGA_HORF"
____exports.SoundEffect.MEGA_SUNSHINE = 805
____exports.SoundEffect[____exports.SoundEffect.MEGA_SUNSHINE] = "MEGA_SUNSHINE"
____exports.SoundEffect.MEGA_VURP = 806
____exports.SoundEffect[____exports.SoundEffect.MEGA_VURP] = "MEGA_VURP"
____exports.SoundEffect.MEGA_SHOT_SPEED_DOWN = 807
____exports.SoundEffect[____exports.SoundEffect.MEGA_SHOT_SPEED_DOWN] = "MEGA_SHOT_SPEED_DOWN"
____exports.SoundEffect.MEGA_SHOT_SPEED_UP = 808
____exports.SoundEffect[____exports.SoundEffect.MEGA_SHOT_SPEED_UP] = "MEGA_SHOT_SPEED_UP"
____exports.SoundEffect.MEGA_EXPERIMENTAL_PILL = 809
____exports.SoundEffect[____exports.SoundEffect.MEGA_EXPERIMENTAL_PILL] = "MEGA_EXPERIMENTAL_PILL"
____exports.SoundEffect.SIREN_LUNGE = 810
____exports.SoundEffect[____exports.SoundEffect.SIREN_LUNGE] = "SIREN_LUNGE"
____exports.SoundEffect.SIREN_MINION_SMOKE = 811
____exports.SoundEffect[____exports.SoundEffect.SIREN_MINION_SMOKE] = "SIREN_MINION_SMOKE"
____exports.SoundEffect.SIREN_SCREAM_ATTACK = 812
____exports.SoundEffect[____exports.SoundEffect.SIREN_SCREAM_ATTACK] = "SIREN_SCREAM_ATTACK"
____exports.SoundEffect.SIREN_SING_STAB = 813
____exports.SoundEffect[____exports.SoundEffect.SIREN_SING_STAB] = "SIREN_SING_STAB"
____exports.SoundEffect.BEAST_LAVA_BALL_RISE = 814
____exports.SoundEffect[____exports.SoundEffect.BEAST_LAVA_BALL_RISE] = "BEAST_LAVA_BALL_RISE"
____exports.SoundEffect.BEAST_GROWL = 815
____exports.SoundEffect[____exports.SoundEffect.BEAST_GROWL] = "BEAST_GROWL"
____exports.SoundEffect.BEAST_GRUMBLE = 816
____exports.SoundEffect[____exports.SoundEffect.BEAST_GRUMBLE] = "BEAST_GRUMBLE"
____exports.SoundEffect.ULTRA_FAMINE_SHOOT = 817
____exports.SoundEffect[____exports.SoundEffect.ULTRA_FAMINE_SHOOT] = "ULTRA_FAMINE_SHOOT"
____exports.SoundEffect.G_FUEL_1 = 818
____exports.SoundEffect[____exports.SoundEffect.G_FUEL_1] = "G_FUEL_1"
____exports.SoundEffect.G_FUEL_2 = 819
____exports.SoundEffect[____exports.SoundEffect.G_FUEL_2] = "G_FUEL_2"
____exports.SoundEffect.G_FUEL_3 = 820
____exports.SoundEffect[____exports.SoundEffect.G_FUEL_3] = "G_FUEL_3"
____exports.SoundEffect.G_FUEL_4 = 821
____exports.SoundEffect[____exports.SoundEffect.G_FUEL_4] = "G_FUEL_4"
____exports.SoundEffect.EXPLOSION_SMALL = 822
____exports.SoundEffect[____exports.SoundEffect.EXPLOSION_SMALL] = "EXPLOSION_SMALL"
____exports.SoundEffect.EXPLOSION_BIG = 823
____exports.SoundEffect[____exports.SoundEffect.EXPLOSION_BIG] = "EXPLOSION_BIG"
____exports.SoundEffect.GUN_SHOT_MEDIUM = 824
____exports.SoundEffect[____exports.SoundEffect.GUN_SHOT_MEDIUM] = "GUN_SHOT_MEDIUM"
____exports.SoundEffect.GUN_SHOT_SMALL = 825
____exports.SoundEffect[____exports.SoundEffect.GUN_SHOT_SMALL] = "GUN_SHOT_SMALL"
____exports.SoundEffect.GUN_SHOT_LARGE = 826
____exports.SoundEffect[____exports.SoundEffect.GUN_SHOT_LARGE] = "GUN_SHOT_LARGE"
____exports.SoundEffect.GUN_SHOT_SPREAD = 827
____exports.SoundEffect[____exports.SoundEffect.GUN_SHOT_SPREAD] = "GUN_SHOT_SPREAD"
____exports.SoundEffect.AIR_HORN = 828
____exports.SoundEffect[____exports.SoundEffect.AIR_HORN] = "AIR_HORN"
____exports.SoundEffect.ITEM_EXPLOSION = 829
____exports.SoundEffect[____exports.SoundEffect.ITEM_EXPLOSION] = "ITEM_EXPLOSION"
____exports.SoundEffect.GUN_SHOT_MINI = 830
____exports.SoundEffect[____exports.SoundEffect.GUN_SHOT_MINI] = "GUN_SHOT_MINI"
____exports.SoundEffect.BULLET_RICOCHET = 831
____exports.SoundEffect[____exports.SoundEffect.BULLET_RICOCHET] = "BULLET_RICOCHET"
____exports.SoundEffect.ROCKET_LAUNCHER = 832
____exports.SoundEffect[____exports.SoundEffect.ROCKET_LAUNCHER] = "ROCKET_LAUNCHER"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.StageID"] = function(...) 
local ____exports = {}
--- This matches the filename used in the XML/STB file for the room.
____exports.StageID = {}
____exports.StageID.SPECIAL_ROOMS = 0
____exports.StageID[____exports.StageID.SPECIAL_ROOMS] = "SPECIAL_ROOMS"
____exports.StageID.BASEMENT = 1
____exports.StageID[____exports.StageID.BASEMENT] = "BASEMENT"
____exports.StageID.CELLAR = 2
____exports.StageID[____exports.StageID.CELLAR] = "CELLAR"
____exports.StageID.BURNING_BASEMENT = 3
____exports.StageID[____exports.StageID.BURNING_BASEMENT] = "BURNING_BASEMENT"
____exports.StageID.CAVES = 4
____exports.StageID[____exports.StageID.CAVES] = "CAVES"
____exports.StageID.CATACOMBS = 5
____exports.StageID[____exports.StageID.CATACOMBS] = "CATACOMBS"
____exports.StageID.FLOODED_CAVES = 6
____exports.StageID[____exports.StageID.FLOODED_CAVES] = "FLOODED_CAVES"
____exports.StageID.DEPTHS = 7
____exports.StageID[____exports.StageID.DEPTHS] = "DEPTHS"
____exports.StageID.NECROPOLIS = 8
____exports.StageID[____exports.StageID.NECROPOLIS] = "NECROPOLIS"
____exports.StageID.DANK_DEPTHS = 9
____exports.StageID[____exports.StageID.DANK_DEPTHS] = "DANK_DEPTHS"
____exports.StageID.WOMB = 10
____exports.StageID[____exports.StageID.WOMB] = "WOMB"
____exports.StageID.UTERO = 11
____exports.StageID[____exports.StageID.UTERO] = "UTERO"
____exports.StageID.SCARRED_WOMB = 12
____exports.StageID[____exports.StageID.SCARRED_WOMB] = "SCARRED_WOMB"
____exports.StageID.BLUE_WOMB = 13
____exports.StageID[____exports.StageID.BLUE_WOMB] = "BLUE_WOMB"
____exports.StageID.SHEOL = 14
____exports.StageID[____exports.StageID.SHEOL] = "SHEOL"
____exports.StageID.CATHEDRAL = 15
____exports.StageID[____exports.StageID.CATHEDRAL] = "CATHEDRAL"
____exports.StageID.DARK_ROOM = 16
____exports.StageID[____exports.StageID.DARK_ROOM] = "DARK_ROOM"
____exports.StageID.CHEST = 17
____exports.StageID[____exports.StageID.CHEST] = "CHEST"
____exports.StageID.VOID = 26
____exports.StageID[____exports.StageID.VOID] = "VOID"
____exports.StageID.DOWNPOUR = 27
____exports.StageID[____exports.StageID.DOWNPOUR] = "DOWNPOUR"
____exports.StageID.DROSS = 28
____exports.StageID[____exports.StageID.DROSS] = "DROSS"
____exports.StageID.MINES = 29
____exports.StageID[____exports.StageID.MINES] = "MINES"
____exports.StageID.ASHPIT = 30
____exports.StageID[____exports.StageID.ASHPIT] = "ASHPIT"
____exports.StageID.MAUSOLEUM = 31
____exports.StageID[____exports.StageID.MAUSOLEUM] = "MAUSOLEUM"
____exports.StageID.GEHENNA = 32
____exports.StageID[____exports.StageID.GEHENNA] = "GEHENNA"
____exports.StageID.CORPSE = 33
____exports.StageID[____exports.StageID.CORPSE] = "CORPSE"
____exports.StageID.MORTIS = 34
____exports.StageID[____exports.StageID.MORTIS] = "MORTIS"
____exports.StageID.HOME = 35
____exports.StageID[____exports.StageID.HOME] = "HOME"
____exports.StageID.BACKWARDS = 36
____exports.StageID[____exports.StageID.BACKWARDS] = "BACKWARDS"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.StageTransition"] = function(...) 
local ____exports = {}
____exports.StageTransition = {}
____exports.StageTransition.DISAPPEAR = 0
____exports.StageTransition[____exports.StageTransition.DISAPPEAR] = "DISAPPEAR"
____exports.StageTransition.NONE = 1
____exports.StageTransition[____exports.StageTransition.NONE] = "NONE"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.StageType"] = function(...) 
local ____exports = {}
____exports.StageType = {}
____exports.StageType.ORIGINAL = 0
____exports.StageType[____exports.StageType.ORIGINAL] = "ORIGINAL"
____exports.StageType.WRATH_OF_THE_LAMB = 1
____exports.StageType[____exports.StageType.WRATH_OF_THE_LAMB] = "WRATH_OF_THE_LAMB"
____exports.StageType.AFTERBIRTH = 2
____exports.StageType[____exports.StageType.AFTERBIRTH] = "AFTERBIRTH"
____exports.StageType.GREED_MODE = 3
____exports.StageType[____exports.StageType.GREED_MODE] = "GREED_MODE"
____exports.StageType.REPENTANCE = 4
____exports.StageType[____exports.StageType.REPENTANCE] = "REPENTANCE"
____exports.StageType.REPENTANCE_B = 5
____exports.StageType[____exports.StageType.REPENTANCE_B] = "REPENTANCE_B"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.TrinketSlot"] = function(...) 
local ____exports = {}
____exports.TrinketSlot = {}
____exports.TrinketSlot.SLOT_1 = 0
____exports.TrinketSlot[____exports.TrinketSlot.SLOT_1] = "SLOT_1"
____exports.TrinketSlot.SLOT_2 = 1
____exports.TrinketSlot[____exports.TrinketSlot.SLOT_2] = "SLOT_2"
return ____exports
 end,
["lua_modules.isaac-typescript-definitions.dist.src.enums.WeaponType"] = function(...) 
local ____exports = {}
____exports.WeaponType = {}
____exports.WeaponType.TEARS = 1
____exports.WeaponType[____exports.WeaponType.TEARS] = "TEARS"
____exports.WeaponType.BRIMSTONE = 2
____exports.WeaponType[____exports.WeaponType.BRIMSTONE] = "BRIMSTONE"
____exports.WeaponType.LASER = 3
____exports.WeaponType[____exports.WeaponType.LASER] = "LASER"
____exports.WeaponType.KNIFE = 4
____exports.WeaponType[____exports.WeaponType.KNIFE] = "KNIFE"
____exports.WeaponType.BOMBS = 5
____exports.WeaponType[____exports.WeaponType.BOMBS] = "BOMBS"
____exports.WeaponType.ROCKETS = 6
____exports.WeaponType[____exports.WeaponType.ROCKETS] = "ROCKETS"
____exports.WeaponType.MONSTROS_LUNG = 7
____exports.WeaponType[____exports.WeaponType.MONSTROS_LUNG] = "MONSTROS_LUNG"
____exports.WeaponType.LUDOVICO_TECHNIQUE = 8
____exports.WeaponType[____exports.WeaponType.LUDOVICO_TECHNIQUE] = "LUDOVICO_TECHNIQUE"
____exports.WeaponType.TECH_X = 9
____exports.WeaponType[____exports.WeaponType.TECH_X] = "TECH_X"
____exports.WeaponType.BONE = 10
____exports.WeaponType[____exports.WeaponType.BONE] = "BONE"
____exports.WeaponType.NOTCHED_AXE = 11
____exports.WeaponType[____exports.WeaponType.NOTCHED_AXE] = "NOTCHED_AXE"
____exports.WeaponType.URN_OF_SOULS = 12
____exports.WeaponType[____exports.WeaponType.URN_OF_SOULS] = "URN_OF_SOULS"
____exports.WeaponType.SPIRIT_SWORD = 13
____exports.WeaponType[____exports.WeaponType.SPIRIT_SWORD] = "SPIRIT_SWORD"
____exports.WeaponType.FETUS = 14
____exports.WeaponType[____exports.WeaponType.FETUS] = "FETUS"
____exports.WeaponType.UMBILICAL_WHIP = 15
____exports.WeaponType[____exports.WeaponType.UMBILICAL_WHIP] = "UMBILICAL_WHIP"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.consoleCommandsSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
--- The set of vanilla console commands, as documented here:
-- https://bindingofisaacrebirth.fandom.com/wiki/Debug_Console
____exports.CONSOLE_COMMANDS_SET = __TS__New(Set, {
    "achievement",
    "challenge",
    "clear",
    "clearcache",
    "clearseeds",
    "combo",
    "copy",
    "costumetest",
    "curse",
    "cutscene",
    "debug",
    "delirious",
    "eggs",
    "giveitem",
    "g",
    "goto",
    "gridspawn",
    "listcollectibles",
    "lua",
    "l",
    "luamem",
    "luamod",
    "luarun",
    "macro",
    "m",
    "metro",
    "playsfx",
    "prof",
    "profstop",
    "remove",
    "r",
    "reloadfx",
    "reloadshaders",
    "repeat",
    "reseed",
    "restart",
    "seed",
    "spawn",
    "stage",
    "time",
    "addplayer",
    "forceroom",
    "giveitem2",
    "g2",
    "netdelay",
    "netstart",
    "remove2",
    "r2",
    "reloadwisps",
    "restock",
    "rewind",
    "testbosspool"
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.deepCopy"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__New = ____lualib.__TS__New
local Map = ____lualib.Map
local Set = ____lualib.Set
local __TS__Iterator = ____lualib.__TS__Iterator
local __TS__ArraySort = ____lualib.__TS__ArraySort
local __TS__ArraySome = ____lualib.__TS__ArraySome
local ____exports = {}
local deepCopyTable, deepCopyDefaultMap, getNewDefaultMap, deepCopyMap, deepCopySet, deepCopyTSTLClass, deepCopyArray, deepCopyNormalLuaTable, getCopiedEntries, checkMetatable, deepCopyUserdata
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____constants = require("lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.constants")
local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG
local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.src.enums.SerializationBrand")
local SerializationBrand = ____SerializationBrand.SerializationBrand
local ____SerializationType = require("lua_modules.isaacscript-common.dist.src.enums.SerializationType")
local SerializationType = ____SerializationType.SerializationType
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local isArray = ____array.isArray
local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass")
local getIsaacAPIClassName = ____isaacAPIClass.getIsaacAPIClassName
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local ____serialization = require("lua_modules.isaacscript-common.dist.src.functions.serialization")
local copyIsaacAPIClass = ____serialization.copyIsaacAPIClass
local deserializeIsaacAPIClass = ____serialization.deserializeIsaacAPIClass
local isCopyableIsaacAPIClass = ____serialization.isCopyableIsaacAPIClass
local isSerializationBrand = ____serialization.isSerializationBrand
local isSerializedIsaacAPIClass = ____serialization.isSerializedIsaacAPIClass
local serializeIsaacAPIClass = ____serialization.serializeIsaacAPIClass
local ____tstlClass = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
local getTSTLClassName = ____tstlClass.getTSTLClassName
local isDefaultMap = ____tstlClass.isDefaultMap
local isTSTLMap = ____tstlClass.isTSTLMap
local isTSTLSet = ____tstlClass.isTSTLSet
local newTSTLClass = ____tstlClass.newTSTLClass
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asString = ____types.asString
local isNumber = ____types.isNumber
local isPrimitive = ____types.isPrimitive
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local getTraversalDescription = ____utils.getTraversalDescription
local twoDimensionalSort = ____utils.twoDimensionalSort
--- `deepCopy` is a semi-generic deep cloner. It will recursively copy all of the values so that none
-- of the nested references remain.
-- 
-- `deepCopy` is used by the IsaacScript save data manager to make a backup of your variables, so
-- that it can restore them to the default values at the beginning of a new room, floor, or run.
-- 
-- `deepCopy` supports the following object types:
-- 
-- - Primitives (i.e. strings, numbers, and booleans)
-- - Basic TSTL objects (which are the same thing as Lua tables)
-- - TSTL `Map`
-- - TSTL `Set`
-- - TSTL classes
-- - `DefaultMap`
-- - Isaac `BitSet128` objects
-- - Isaac `Color` objects
-- - Isaac `KColor` objects
-- - Isaac `RNG` objects
-- - Isaac `Vector` objects
-- 
-- It does not support:
-- - objects with values of `null` (since that transpiles to `nil`)
-- - other Isaac API objects such as `EntityPtr` (that have a type of "userdata")
-- 
-- @param value The primitive or object to copy.
-- @param serializationType Optional. Has 3 possible values. Can copy objects as-is, or can
-- serialize objects to Lua tables, or can deserialize Lua tables to
-- objects. Default is `SerializationType.NONE`.
-- @param traversalDescription Optional. Used to track the current key that we are operating on for
-- debugging purposes. Default is an empty string.
-- @param classConstructors Optional. A Lua table that maps the name of a user-defined TSTL class to
-- its corresponding constructor. If the `deepCopy` function finds any
-- user-defined TSTL classes when recursively iterating through the given
-- object, it will use this map to instantiate a new class. Default is an
-- empty Lua table.
-- @param insideMap Optional. Tracks whether or not the deep copy function is in the process of
-- recursively copying a TSTL Map. Default is false.
function ____exports.deepCopy(self, value, serializationType, traversalDescription, classConstructors, insideMap)
    if serializationType == nil then
        serializationType = SerializationType.NONE
    end
    if traversalDescription == nil then
        traversalDescription = ""
    end
    if classConstructors == nil then
        classConstructors = {}
    end
    if insideMap == nil then
        insideMap = false
    end
    if SAVE_DATA_MANAGER_DEBUG then
        local logString = "deepCopy is operating on: " .. traversalDescription
        if serializationType == SerializationType.SERIALIZE then
            logString = logString .. " (serializing)"
        elseif serializationType == SerializationType.DESERIALIZE then
            logString = logString .. " (deserializing)"
        end
        logString = logString .. ": " .. tostring(value)
        log(nil, logString)
    end
    local valueType = type(value)
    repeat
        local ____switch6 = valueType
        local ____cond6 = ____switch6 == "nil" or ____switch6 == "boolean" or ____switch6 == "number" or ____switch6 == "string"
        if ____cond6 then
            do
                return value
            end
        end
        ____cond6 = ____cond6 or (____switch6 == "function" or ____switch6 == "thread")
        if ____cond6 then
            do
                if serializationType == SerializationType.SERIALIZE then
                    error((("The deep copy function does not support serialization of \"" .. traversalDescription) .. "\", since it is type: ") .. valueType)
                end
                if serializationType == SerializationType.DESERIALIZE then
                    error((("The deep copy function does not support deserialization of \"" .. traversalDescription) .. "\", since it is type: ") .. valueType)
                end
                return value
            end
        end
        ____cond6 = ____cond6 or ____switch6 == "table"
        if ____cond6 then
            do
                local luaMap = value
                return deepCopyTable(
                    nil,
                    luaMap,
                    serializationType,
                    traversalDescription,
                    classConstructors,
                    insideMap
                )
            end
        end
        ____cond6 = ____cond6 or ____switch6 == "userdata"
        if ____cond6 then
            do
                return deepCopyUserdata(nil, value, serializationType, traversalDescription)
            end
        end
    until true
end
function deepCopyTable(self, luaMap, serializationType, traversalDescription, classConstructors, insideMap)
    if isDefaultMap(nil, luaMap) or luaMap[SerializationBrand.DEFAULT_MAP] ~= nil then
        return deepCopyDefaultMap(
            nil,
            luaMap,
            serializationType,
            traversalDescription,
            classConstructors,
            insideMap
        )
    end
    if isTSTLMap(nil, luaMap) or luaMap[SerializationBrand.MAP] ~= nil then
        return deepCopyMap(
            nil,
            luaMap,
            serializationType,
            traversalDescription,
            classConstructors,
            insideMap
        )
    end
    if isTSTLSet(nil, luaMap) or luaMap[SerializationBrand.SET] ~= nil then
        return deepCopySet(
            nil,
            luaMap,
            serializationType,
            traversalDescription,
            classConstructors,
            insideMap
        )
    end
    local className = getTSTLClassName(nil, luaMap)
    if className == "WeakMap" then
        error("The deep copy function does not support copying the \"WeakMap\" class for: " .. traversalDescription)
    end
    if className == "WeakSet" then
        error("The deep copy function does not support copying the \"WeakSet\" class for: " .. traversalDescription)
    end
    if className ~= nil or luaMap[SerializationBrand.TSTL_CLASS] ~= nil then
        return deepCopyTSTLClass(
            nil,
            luaMap,
            serializationType,
            traversalDescription,
            classConstructors,
            insideMap
        )
    end
    checkMetatable(nil, luaMap, traversalDescription)
    if isSerializedIsaacAPIClass(nil, luaMap) and serializationType == SerializationType.DESERIALIZE then
        return deserializeIsaacAPIClass(nil, luaMap)
    end
    if isArray(nil, luaMap) then
        return deepCopyArray(
            nil,
            luaMap,
            serializationType,
            traversalDescription,
            classConstructors,
            insideMap
        )
    end
    return deepCopyNormalLuaTable(
        nil,
        luaMap,
        serializationType,
        traversalDescription,
        classConstructors,
        insideMap
    )
end
function deepCopyDefaultMap(self, defaultMap, serializationType, traversalDescription, classConstructors, insideMap)
    if SAVE_DATA_MANAGER_DEBUG then
        log(nil, "deepCopy is copying a DefaultMap.")
    end
    local ____isDefaultMap_result_0
    if isDefaultMap(nil, defaultMap) then
        ____isDefaultMap_result_0 = defaultMap:getConstructorArg()
    else
        ____isDefaultMap_result_0 = nil
    end
    local constructorArg = ____isDefaultMap_result_0
    if serializationType == SerializationType.SERIALIZE and not isPrimitive(nil, constructorArg) then
        if insideMap then
            error("Failed to deep copy a DefaultMap because it was instantiated with a factory function and was also inside of an array, map, or set. For more information, see: https://isaacscript.github.io/main/gotchas#failed-to-deep-copy-a-defaultmap")
        else
            return deepCopyMap(
                nil,
                defaultMap,
                serializationType,
                traversalDescription,
                classConstructors,
                insideMap
            )
        end
    end
    local newDefaultMap = getNewDefaultMap(
        nil,
        defaultMap,
        serializationType,
        traversalDescription,
        constructorArg
    )
    insideMap = true
    local ____getCopiedEntries_result_1 = getCopiedEntries(
        nil,
        defaultMap,
        serializationType,
        traversalDescription,
        classConstructors,
        insideMap
    )
    local entries = ____getCopiedEntries_result_1.entries
    local convertedNumberKeysToStrings = ____getCopiedEntries_result_1.convertedNumberKeysToStrings
    if convertedNumberKeysToStrings then
        if isDefaultMap(nil, newDefaultMap) then
            newDefaultMap:set(SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "")
        else
            newDefaultMap[SerializationBrand.OBJECT_WITH_NUMBER_KEYS] = ""
        end
    end
    for ____, ____value in ipairs(entries) do
        local key = ____value[1]
        local value = ____value[2]
        if isDefaultMap(nil, newDefaultMap) then
            newDefaultMap:set(key, value)
        else
            newDefaultMap[key] = value
        end
    end
    insideMap = false
    return newDefaultMap
end
function getNewDefaultMap(self, defaultMap, serializationType, traversalDescription, constructorArg)
    repeat
        local ____switch35 = serializationType
        local ____cond35 = ____switch35 == SerializationType.NONE
        if ____cond35 then
            do
                return __TS__New(DefaultMap, constructorArg)
            end
        end
        ____cond35 = ____cond35 or ____switch35 == SerializationType.SERIALIZE
        if ____cond35 then
            do
                local newDefaultMap = {}
                newDefaultMap[SerializationBrand.DEFAULT_MAP] = ""
                newDefaultMap[SerializationBrand.DEFAULT_MAP_VALUE] = constructorArg
                return newDefaultMap
            end
        end
        ____cond35 = ____cond35 or ____switch35 == SerializationType.DESERIALIZE
        if ____cond35 then
            do
                if isDefaultMap(nil, defaultMap) then
                    error(("Failed to deserialize a default map of \"" .. traversalDescription) .. "\", since it was not a Lua table.")
                end
                local defaultMapValue = defaultMap[SerializationBrand.DEFAULT_MAP_VALUE]
                if defaultMapValue == nil then
                    error((("Failed to deserialize a default map of \"" .. traversalDescription) .. "\", since there was no serialization brand of: ") .. SerializationBrand.DEFAULT_MAP_VALUE)
                end
                return __TS__New(DefaultMap, defaultMapValue)
            end
        end
    until true
end
function deepCopyMap(self, map, serializationType, traversalDescription, classConstructors, insideMap)
    if SAVE_DATA_MANAGER_DEBUG then
        log(nil, "deepCopy is copying a Map.")
    end
    local newMap
    if serializationType == SerializationType.SERIALIZE then
        newMap = {}
        newMap[SerializationBrand.MAP] = ""
    else
        newMap = __TS__New(Map)
    end
    insideMap = true
    local ____getCopiedEntries_result_2 = getCopiedEntries(
        nil,
        map,
        serializationType,
        traversalDescription,
        classConstructors,
        insideMap
    )
    local entries = ____getCopiedEntries_result_2.entries
    local convertedNumberKeysToStrings = ____getCopiedEntries_result_2.convertedNumberKeysToStrings
    if convertedNumberKeysToStrings then
        if isTSTLMap(nil, newMap) then
            newMap:set(SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "")
        else
            newMap[SerializationBrand.OBJECT_WITH_NUMBER_KEYS] = ""
        end
    end
    for ____, ____value in ipairs(entries) do
        local key = ____value[1]
        local value = ____value[2]
        if isTSTLMap(nil, newMap) then
            newMap:set(key, value)
        else
            newMap[key] = value
        end
    end
    insideMap = false
    return newMap
end
function deepCopySet(self, set, serializationType, traversalDescription, classConstructors, insideMap)
    if SAVE_DATA_MANAGER_DEBUG then
        log(nil, "deepCopy is copying a Set.")
    end
    local newSet
    if serializationType == SerializationType.SERIALIZE then
        newSet = {}
        newSet[SerializationBrand.SET] = ""
    else
        newSet = __TS__New(Set)
    end
    local ____getCopiedEntries_result_3 = getCopiedEntries(
        nil,
        set,
        serializationType,
        traversalDescription,
        classConstructors,
        insideMap
    )
    local entries = ____getCopiedEntries_result_3.entries
    local convertedNumberKeysToStrings = ____getCopiedEntries_result_3.convertedNumberKeysToStrings
    if convertedNumberKeysToStrings then
        if isTSTLSet(nil, newSet) then
            error("The deep copy function cannot convert number keys to strings for a Set.")
        else
            newSet[SerializationBrand.OBJECT_WITH_NUMBER_KEYS] = ""
        end
    end
    for ____, ____value in ipairs(entries) do
        local key = ____value[1]
        if isTSTLSet(nil, newSet) then
            newSet:add(key)
        else
            newSet[key] = ""
        end
    end
    return newSet
end
function deepCopyTSTLClass(self, tstlClass, serializationType, traversalDescription, classConstructors, insideMap)
    if SAVE_DATA_MANAGER_DEBUG then
        log(nil, "deepCopy is copying a TSTL class.")
    end
    local newClass
    repeat
        local ____switch65 = serializationType
        local ____cond65 = ____switch65 == SerializationType.NONE
        if ____cond65 then
            do
                newClass = newTSTLClass(nil, tstlClass)
                break
            end
        end
        ____cond65 = ____cond65 or ____switch65 == SerializationType.SERIALIZE
        if ____cond65 then
            do
                newClass = {}
                local tstlClassName = getTSTLClassName(nil, tstlClass)
                if tstlClassName ~= nil then
                    newClass[SerializationBrand.TSTL_CLASS] = tstlClassName
                end
                break
            end
        end
        ____cond65 = ____cond65 or ____switch65 == SerializationType.DESERIALIZE
        if ____cond65 then
            do
                local tstlClassName = tstlClass[SerializationBrand.TSTL_CLASS]
                if tstlClassName == nil then
                    error("Failed to deserialize a TSTL class since the brand did not contain the class name.")
                end
                local classConstructor = classConstructors[tstlClassName]
                if classConstructor == nil then
                    error(("Failed to deserialize a TSTL class since there was no constructor registered for a class name of \"" .. tstlClassName) .. "\". If this mod is using the save data manager, it must register the class constructor with the \"saveDataManagerRegisterClass\" method.")
                end
                newClass = __TS__New(classConstructor)
            end
            break
        end
    until true
    local ____getCopiedEntries_result_4 = getCopiedEntries(
        nil,
        tstlClass,
        serializationType,
        traversalDescription,
        classConstructors,
        insideMap
    )
    local entries = ____getCopiedEntries_result_4.entries
    local convertedNumberKeysToStrings = ____getCopiedEntries_result_4.convertedNumberKeysToStrings
    if convertedNumberKeysToStrings then
        newClass[SerializationBrand.OBJECT_WITH_NUMBER_KEYS] = ""
    end
    for ____, ____value in ipairs(entries) do
        local key = ____value[1]
        local value = ____value[2]
        newClass[key] = value
    end
    return newClass
end
function deepCopyArray(self, array, serializationType, traversalDescription, classConstructors, insideMap)
    if SAVE_DATA_MANAGER_DEBUG then
        log(nil, "deepCopy is copying an array.")
    end
    local newArray = {}
    for ____, value in ipairs(array) do
        local newValue = ____exports.deepCopy(
            nil,
            value,
            serializationType,
            traversalDescription,
            classConstructors,
            insideMap
        )
        newArray[#newArray + 1] = newValue
    end
    return newArray
end
function deepCopyNormalLuaTable(self, luaMap, serializationType, traversalDescription, classConstructors, insideMap)
    if SAVE_DATA_MANAGER_DEBUG then
        log(nil, "deepCopy is copying a normal Lua table.")
    end
    local newTable = {}
    local ____getCopiedEntries_result_5 = getCopiedEntries(
        nil,
        luaMap,
        serializationType,
        traversalDescription,
        classConstructors,
        insideMap
    )
    local entries = ____getCopiedEntries_result_5.entries
    local convertedNumberKeysToStrings = ____getCopiedEntries_result_5.convertedNumberKeysToStrings
    if convertedNumberKeysToStrings then
        newTable[SerializationBrand.OBJECT_WITH_NUMBER_KEYS] = ""
    end
    for ____, ____value in ipairs(entries) do
        local key = ____value[1]
        local value = ____value[2]
        newTable[key] = value
    end
    return newTable
end
function getCopiedEntries(self, object, serializationType, traversalDescription, classConstructors, insideMap)
    local entries = {}
    if isTSTLMap(nil, object) or isTSTLSet(nil, object) or isDefaultMap(nil, object) then
        for ____, ____value in __TS__Iterator(object:entries()) do
            local key = ____value[1]
            local value = ____value[2]
            entries[#entries + 1] = {key, value}
        end
    else
        for key, value in pairs(object) do
            entries[#entries + 1] = {key, value}
        end
    end
    if SAVE_DATA_MANAGER_DEBUG then
        __TS__ArraySort(entries, twoDimensionalSort)
    end
    local convertStringKeysToNumbers = serializationType == SerializationType.DESERIALIZE and __TS__ArraySome(
        entries,
        function(____, ____bindingPattern0)
            local key
            key = ____bindingPattern0[1]
            return key == asString(nil, SerializationBrand.OBJECT_WITH_NUMBER_KEYS)
        end
    )
    local hasNumberKeys = __TS__ArraySome(
        entries,
        function(____, ____bindingPattern0)
            local key
            key = ____bindingPattern0[1]
            return isNumber(nil, key)
        end
    )
    local convertNumberKeysToStrings = serializationType == SerializationType.SERIALIZE and hasNumberKeys
    local copiedEntries = {}
    for ____, ____value in ipairs(entries) do
        local key = ____value[1]
        local value = ____value[2]
        do
            if isSerializationBrand(nil, key) then
                goto __continue93
            end
            traversalDescription = getTraversalDescription(nil, key, traversalDescription)
            local newValue = ____exports.deepCopy(
                nil,
                value,
                serializationType,
                traversalDescription,
                classConstructors,
                insideMap
            )
            local keyToUse = key
            if convertStringKeysToNumbers then
                local numberKey = tonumber(key)
                if numberKey ~= nil then
                    keyToUse = numberKey
                end
            end
            if convertNumberKeysToStrings then
                keyToUse = tostring(key)
            end
            copiedEntries[#copiedEntries + 1] = {keyToUse, newValue}
        end
        ::__continue93::
    end
    return {entries = copiedEntries, convertedNumberKeysToStrings = convertNumberKeysToStrings}
end
function checkMetatable(self, luaMap, traversalDescription)
    local metatable = getmetatable(luaMap)
    if metatable == nil then
        return
    end
    local tableDescription = traversalDescription == "" and "the table to copy" or ("\"" .. traversalDescription) .. "\""
    error(("The deepCopy function detected that " .. tableDescription) .. " has a metatable. Copying tables with metatables is not supported, unless they are explicitly handled by the save data manager. (e.g. TypeScriptToLua Maps, TypeScriptToLua Sets, etc.)")
end
function deepCopyUserdata(self, value, serializationType, traversalDescription)
    local classType = getIsaacAPIClassName(nil, value)
    if classType == nil then
        error("The deep copy function was not able to derive the Isaac API class type for: " .. traversalDescription)
    end
    if not isCopyableIsaacAPIClass(nil, value) then
        error((("The deep copy function does not support serializing \"" .. traversalDescription) .. "\", since it is an Isaac API class of type: ") .. classType)
    end
    repeat
        local ____switch104 = serializationType
        local ____cond104 = ____switch104 == SerializationType.NONE
        if ____cond104 then
            do
                return copyIsaacAPIClass(nil, value)
            end
        end
        ____cond104 = ____cond104 or ____switch104 == SerializationType.SERIALIZE
        if ____cond104 then
            do
                return serializeIsaacAPIClass(nil, value)
            end
        end
        ____cond104 = ____cond104 or ____switch104 == SerializationType.DESERIALIZE
        if ____cond104 then
            do
                error(("The deep copy function can not deserialize \"" .. traversalDescription) .. "\", since it is userdata.")
            end
            break
        end
    until true
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.constants"] = function(...) 
local ____exports = {}
____exports.SAVE_DATA_MANAGER_DEBUG = false
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.SerializationType"] = function(...) 
local ____exports = {}
--- This is used with the `deepCopy` and `merge` functions.
____exports.SerializationType = {}
____exports.SerializationType.NONE = 0
____exports.SerializationType[____exports.SerializationType.NONE] = "NONE"
____exports.SerializationType.SERIALIZE = 1
____exports.SerializationType[____exports.SerializationType.SERIALIZE] = "SERIALIZE"
____exports.SerializationType.DESERIALIZE = 2
____exports.SerializationType[____exports.SerializationType.DESERIALIZE] = "DESERIALIZE"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.log"] = function(...) 
local ____exports = {}
--- Helper function to get the name and the line number of the current calling function.
-- 
-- For this function to work properly, the "--luadebug" flag must be enabled. Otherwise, it will
-- always return undefined.
-- 
-- @param levels Optional. The amount of levels to look backwards in the call stack. Default is 3
-- (because the first level is this function, the second level is the calling
-- function, and the third level is the parent of the calling function).
function ____exports.getParentFunctionDescription(self, levels)
    if levels == nil then
        levels = 3
    end
    if debug ~= nil then
        local debugTable = debug.getinfo(levels)
        if debugTable ~= nil then
            return (tostring(debugTable.name) .. ":") .. tostring(debugTable.linedefined)
        end
    end
    if SandboxGetParentFunctionDescription ~= nil then
        return SandboxGetParentFunctionDescription(levels)
    end
    return nil
end
--- Helper function to avoid typing out `Isaac.DebugString()`.
-- 
-- If you have the "--luadebug" launch flag turned on or the Racing+ sandbox enabled, then this
-- function will also prepend the function name and the line number before the string.
function ____exports.log(self, msg)
    local parentFunctionDescription = ____exports.getParentFunctionDescription(nil)
    local debugMsg = parentFunctionDescription == nil and msg or (parentFunctionDescription .. " - ") .. msg
    Isaac.DebugString(debugMsg)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.serialization"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__TypeOf = ____lualib.__TS__TypeOf
local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries
local __TS__ObjectValues = ____lualib.__TS__ObjectValues
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__ArraySome = ____lualib.__TS__ArraySome
local ____exports = {}
local getSerializedTableType
local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.src.enums.SerializationBrand")
local SerializationBrand = ____SerializationBrand.SerializationBrand
local ____isaacAPIClassTypeToBrand = require("lua_modules.isaacscript-common.dist.src.objects.isaacAPIClassTypeToBrand")
local ISAAC_API_CLASS_TYPE_TO_BRAND = ____isaacAPIClassTypeToBrand.ISAAC_API_CLASS_TYPE_TO_BRAND
local ____isaacAPIClassTypeToFunctions = require("lua_modules.isaacscript-common.dist.src.objects.isaacAPIClassTypeToFunctions")
local ISAAC_API_CLASS_TYPE_TO_FUNCTIONS = ____isaacAPIClassTypeToFunctions.ISAAC_API_CLASS_TYPE_TO_FUNCTIONS
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass")
local getIsaacAPIClassName = ____isaacAPIClass.getIsaacAPIClassName
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isString = ____types.isString
local isTable = ____types.isTable
local isUserdata = ____types.isUserdata
function getSerializedTableType(self, serializedIsaacAPIClass)
    for ____, ____value in ipairs(__TS__ObjectEntries(ISAAC_API_CLASS_TYPE_TO_BRAND)) do
        local copyableIsaacAPIClassType = ____value[1]
        local serializationBrand = ____value[2]
        if serializedIsaacAPIClass[serializationBrand] ~= nil then
            return copyableIsaacAPIClassType
        end
    end
    return nil
end
local SERIALIZATION_BRANDS = getEnumValues(nil, SerializationBrand)
local SERIALIZATION_BRAND_SET = __TS__New(Set, SERIALIZATION_BRANDS)
--- Helper function to generically copy an Isaac API class without knowing what specific type of
-- class it is. (This is used by the save data manager.)
-- 
-- For the list of supported classes, see the `CopyableIsaacAPIClassType` enum.
function ____exports.copyIsaacAPIClass(self, isaacAPIClass)
    if not isUserdata(nil, isaacAPIClass) then
        error("Failed to copy an Isaac API class since the provided object was of type: " .. __TS__TypeOf(isaacAPIClass))
    end
    local isaacAPIClassType = getIsaacAPIClassName(nil, isaacAPIClass)
    if isaacAPIClassType == nil then
        error("Failed to copy an Isaac API class since it does not have a class type.")
    end
    local copyableIsaacAPIClassType = isaacAPIClassType
    local functions = ISAAC_API_CLASS_TYPE_TO_FUNCTIONS[copyableIsaacAPIClassType]
    if functions == nil then
        error("Failed to copy an Isaac API class since the associated functions were not found for Isaac API class type: " .. copyableIsaacAPIClassType)
    end
    return functions:copy(isaacAPIClass)
end
--- Helper function to generically deserialize an Isaac API class without knowing what specific type
-- of class it is. (This is used by the save data manager when reading data from the "save#.dat"
-- file.)
-- 
-- For the list of supported classes, see the `CopyableIsaacAPIClassType` enum.
function ____exports.deserializeIsaacAPIClass(self, serializedIsaacAPIClass)
    if not isTable(nil, serializedIsaacAPIClass) then
        error("Failed to deserialize an Isaac API class since the provided object was of type: " .. __TS__TypeOf(serializedIsaacAPIClass))
    end
    local copyableIsaacAPIClassType = getSerializedTableType(nil, serializedIsaacAPIClass)
    if copyableIsaacAPIClassType == nil then
        error("Failed to deserialize an Isaac API class since a valid class type brand was not found.")
    end
    local functions = ISAAC_API_CLASS_TYPE_TO_FUNCTIONS[copyableIsaacAPIClassType]
    if functions == nil then
        error("Failed to deserialize an Isaac API class since the associated functions were not found for class type: " .. copyableIsaacAPIClassType)
    end
    return functions:deserialize(serializedIsaacAPIClass)
end
--- Helper function to generically check if a given object is a copyable Isaac API class. (This is
-- used by the save data manager when determining what is safe to copy.)
-- 
-- For the list of supported classes, see the `CopyableIsaacAPIClassType` enum.
function ____exports.isCopyableIsaacAPIClass(self, object)
    local allFunctions = __TS__ObjectValues(ISAAC_API_CLASS_TYPE_TO_FUNCTIONS)
    local isFunctions = __TS__ArrayMap(
        allFunctions,
        function(____, functions) return functions.is end
    )
    return __TS__ArraySome(
        isFunctions,
        function(____, identityFunction) return identityFunction(nil, object) end
    )
end
--- Helper function to check if a key of a table in the "save#.dat" file is a serialization brand
-- inserted by the save data manager (i.e. the `deepCopy` function).
-- 
-- This is marked internal because end-users would not normally be iterating through a serialized
-- object directly.
-- 
-- @internal
function ____exports.isSerializationBrand(self, key)
    if not isString(nil, key) then
        return false
    end
    return SERIALIZATION_BRAND_SET:has(key)
end
--- Helper function to generically check if a given Lua table is a serialized Isaac API class. (This
-- is used by the save data manager when reading data from the "save#.dat" file.)
-- 
-- For the list of supported classes, see the `CopyableIsaacAPIClassType` enum.
function ____exports.isSerializedIsaacAPIClass(self, object)
    local allFunctions = __TS__ObjectValues(ISAAC_API_CLASS_TYPE_TO_FUNCTIONS)
    local isSerializedFunctions = __TS__ArrayMap(
        allFunctions,
        function(____, functions) return functions.isSerialized end
    )
    return __TS__ArraySome(
        isSerializedFunctions,
        function(____, identityFunction) return identityFunction(nil, object) end
    )
end
--- Helper function to generically serialize an Isaac API class without knowing what specific type of
-- class it is. (This is used by the save data manager when writing data to the "save#.dat" file.)
-- 
-- For the list of supported classes, see the `CopyableIsaacAPIClassType` enum.
function ____exports.serializeIsaacAPIClass(self, isaacAPIClass)
    if not isUserdata(nil, isaacAPIClass) then
        error("Failed to serialize an Isaac API class since the provided object was of type: " .. __TS__TypeOf(isaacAPIClass))
    end
    local isaacAPIClassType = getIsaacAPIClassName(nil, isaacAPIClass)
    if isaacAPIClassType == nil then
        error("Failed to serialize an Isaac API class since it does not have a class type.")
    end
    local copyableIsaacAPIClassType = isaacAPIClassType
    local functions = ISAAC_API_CLASS_TYPE_TO_FUNCTIONS[copyableIsaacAPIClassType]
    if functions == nil then
        error("Failed to serialize an Isaac API class since the associated functions were not found for class type: " .. copyableIsaacAPIClassType)
    end
    return functions:serialize(isaacAPIClass)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.isaacAPIClassTypeToBrand"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CopyableIsaacAPIClassType = ____isaac_2Dtypescript_2Ddefinitions.CopyableIsaacAPIClassType
local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.src.enums.SerializationBrand")
local SerializationBrand = ____SerializationBrand.SerializationBrand
____exports.ISAAC_API_CLASS_TYPE_TO_BRAND = {
    [CopyableIsaacAPIClassType.BIT_SET_128] = SerializationBrand.BIT_SET_128,
    [CopyableIsaacAPIClassType.COLOR] = SerializationBrand.COLOR,
    [CopyableIsaacAPIClassType.K_COLOR] = SerializationBrand.K_COLOR,
    [CopyableIsaacAPIClassType.RNG] = SerializationBrand.RNG,
    [CopyableIsaacAPIClassType.VECTOR] = SerializationBrand.VECTOR
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.isaacAPIClassTypeToFunctions"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CopyableIsaacAPIClassType = ____isaac_2Dtypescript_2Ddefinitions.CopyableIsaacAPIClassType
local ____bitSet128 = require("lua_modules.isaacscript-common.dist.src.functions.bitSet128")
local copyBitSet128 = ____bitSet128.copyBitSet128
local deserializeBitSet128 = ____bitSet128.deserializeBitSet128
local isBitSet128 = ____bitSet128.isBitSet128
local isSerializedBitSet128 = ____bitSet128.isSerializedBitSet128
local serializeBitSet128 = ____bitSet128.serializeBitSet128
local ____color = require("lua_modules.isaacscript-common.dist.src.functions.color")
local copyColor = ____color.copyColor
local deserializeColor = ____color.deserializeColor
local isColor = ____color.isColor
local isSerializedColor = ____color.isSerializedColor
local serializeColor = ____color.serializeColor
local ____kColor = require("lua_modules.isaacscript-common.dist.src.functions.kColor")
local copyKColor = ____kColor.copyKColor
local deserializeKColor = ____kColor.deserializeKColor
local isKColor = ____kColor.isKColor
local isSerializedKColor = ____kColor.isSerializedKColor
local serializeKColor = ____kColor.serializeKColor
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local copyRNG = ____rng.copyRNG
local deserializeRNG = ____rng.deserializeRNG
local isRNG = ____rng.isRNG
local isSerializedRNG = ____rng.isSerializedRNG
local serializeRNG = ____rng.serializeRNG
local ____vector = require("lua_modules.isaacscript-common.dist.src.functions.vector")
local copyVector = ____vector.copyVector
local deserializeVector = ____vector.deserializeVector
local isSerializedVector = ____vector.isSerializedVector
local isVector = ____vector.isVector
local serializeVector = ____vector.serializeVector
____exports.ISAAC_API_CLASS_TYPE_TO_FUNCTIONS = {
    [CopyableIsaacAPIClassType.BIT_SET_128] = {
        is = isBitSet128,
        isSerialized = isSerializedBitSet128,
        copy = copyBitSet128,
        serialize = serializeBitSet128,
        deserialize = deserializeBitSet128
    },
    [CopyableIsaacAPIClassType.COLOR] = {
        is = isColor,
        isSerialized = isSerializedColor,
        copy = copyColor,
        serialize = serializeColor,
        deserialize = deserializeColor
    },
    [CopyableIsaacAPIClassType.K_COLOR] = {
        is = isKColor,
        isSerialized = isSerializedKColor,
        copy = copyKColor,
        serialize = serializeKColor,
        deserialize = deserializeKColor
    },
    [CopyableIsaacAPIClassType.RNG] = {
        is = isRNG,
        isSerialized = isSerializedRNG,
        copy = copyRNG,
        serialize = serializeRNG,
        deserialize = deserializeRNG
    },
    [CopyableIsaacAPIClassType.VECTOR] = {
        is = isVector,
        isSerialized = isSerializedVector,
        copy = copyVector,
        serialize = serializeVector,
        deserialize = deserializeVector
    }
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.bitSet128"] = function(...) 
local ____exports = {}
local OBJECT_NAME
local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.src.enums.SerializationBrand")
local SerializationBrand = ____SerializationBrand.SerializationBrand
local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass")
local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType
local ____table = require("lua_modules.isaacscript-common.dist.src.functions.table")
local copyUserdataValuesToTable = ____table.copyUserdataValuesToTable
local getNumbersFromTable = ____table.getNumbersFromTable
local tableHasKeys = ____table.tableHasKeys
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isTable = ____types.isTable
--- Helper function to check if something is an instantiated `BitSet128` object.
function ____exports.isBitSet128(self, object)
    return isIsaacAPIClassOfType(nil, object, OBJECT_NAME)
end
OBJECT_NAME = "BitSet128"
local KEYS = {"l", "h"}
--- Helper function to copy a `BitSet128` Isaac API class.
function ____exports.copyBitSet128(self, bitSet128)
    if not ____exports.isBitSet128(nil, bitSet128) then
        error(((("Failed to copy a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
    end
    local lowBits = bitSet128.l
    local highBits = bitSet128.h
    return BitSet128(lowBits, highBits)
end
--- Helper function to convert a `SerializedBitSet128` object to a normal `BitSet128` object. (This
-- is used by the save data manager when reading data from the "save#.dat" file.)
function ____exports.deserializeBitSet128(self, bitSet128)
    if not isTable(nil, bitSet128) then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object was not a Lua table.")
    end
    local l, h = table.unpack(getNumbersFromTable(
        nil,
        bitSet128,
        OBJECT_NAME,
        table.unpack(KEYS)
    ))
    if l == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: l")
    end
    if h == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: h")
    end
    return BitSet128(l, h)
end
--- Used to determine is the given table is a serialized `BitSet128` object created by the `deepCopy`
-- function.
function ____exports.isSerializedBitSet128(self, object)
    if not isTable(nil, object) then
        return false
    end
    return tableHasKeys(
        nil,
        object,
        table.unpack(KEYS)
    ) and object[SerializationBrand.BIT_SET_128] ~= nil
end
--- Helper function to convert a `BitSet128` object to a `SerializedBitSet128` object. (This is used
-- by the save data manager when writing data from the "save#.dat" file.)
function ____exports.serializeBitSet128(self, bitSet128)
    if not ____exports.isBitSet128(nil, bitSet128) then
        error(((("Failed to serialize a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
    end
    local bitSet128Table = {}
    copyUserdataValuesToTable(nil, bitSet128, KEYS, bitSet128Table)
    bitSet128Table[SerializationBrand.BIT_SET_128] = ""
    return bitSet128Table
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.color"] = function(...) 
local ____exports = {}
local OBJECT_NAME
local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.src.enums.SerializationBrand")
local SerializationBrand = ____SerializationBrand.SerializationBrand
local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass")
local isaacAPIClassEquals = ____isaacAPIClass.isaacAPIClassEquals
local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType
local ____random = require("lua_modules.isaacscript-common.dist.src.functions.random")
local getRandom = ____random.getRandom
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local isRNG = ____rng.isRNG
local newRNG = ____rng.newRNG
local ____table = require("lua_modules.isaacscript-common.dist.src.functions.table")
local copyUserdataValuesToTable = ____table.copyUserdataValuesToTable
local getNumbersFromTable = ____table.getNumbersFromTable
local tableHasKeys = ____table.tableHasKeys
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isTable = ____types.isTable
--- Helper function to check if something is an instantiated `Color` object.
function ____exports.isColor(self, object)
    return isIsaacAPIClassOfType(nil, object, OBJECT_NAME)
end
OBJECT_NAME = "Color"
local KEYS = {
    "R",
    "G",
    "B",
    "A",
    "RO",
    "GO",
    "BO"
}
function ____exports.colorEquals(self, color1, color2)
    return isaacAPIClassEquals(nil, color1, color2, KEYS)
end
--- Helper function to copy a `Color` Isaac API class.
function ____exports.copyColor(self, color)
    if not ____exports.isColor(nil, color) then
        error(((("Failed to copy a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
    end
    return Color(
        color.R,
        color.G,
        color.B,
        color.A,
        color.RO,
        color.GO,
        color.BO
    )
end
--- Helper function to convert a `SerializedColor` object to a normal `Color` object. (This is used
-- by the save data manager when reading data from the "save#.dat" file.)
function ____exports.deserializeColor(self, color)
    if not isTable(nil, color) then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object was not a Lua table.")
    end
    local r, g, b, a, ro, go, bo = table.unpack(getNumbersFromTable(
        nil,
        color,
        OBJECT_NAME,
        table.unpack(KEYS)
    ))
    if r == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: R")
    end
    if g == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: G")
    end
    if b == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: B")
    end
    return Color(
        r,
        g,
        b,
        a,
        ro,
        go,
        bo
    )
end
--- Helper function to get a random color.
-- 
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param alpha Optional. The alpha value to use. Default is 1.
function ____exports.getRandomColor(self, seedOrRNG, alpha)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if alpha == nil then
        alpha = 1
    end
    local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG)
    local r = getRandom(nil, rng)
    local g = getRandom(nil, rng)
    local b = getRandom(nil, rng)
    return Color(r, g, b, alpha)
end
--- Used to determine is the given table is a serialized `Color` object created by the `deepCopy`
-- function.
function ____exports.isSerializedColor(self, object)
    if not isTable(nil, object) then
        return false
    end
    return tableHasKeys(
        nil,
        object,
        table.unpack(KEYS)
    ) and object[SerializationBrand.COLOR] ~= nil
end
--- Helper function to convert a `Color` object to a `SerializedColor` object. (This is used by the
-- save data manager when writing data from the "save#.dat" file.)
function ____exports.serializeColor(self, color)
    if not ____exports.isColor(nil, color) then
        error(((("Failed to serialize a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
    end
    local colorTable = {}
    copyUserdataValuesToTable(nil, color, KEYS, colorTable)
    colorTable[SerializationBrand.COLOR] = ""
    return colorTable
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.kColor"] = function(...) 
local ____exports = {}
local OBJECT_NAME
local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.src.enums.SerializationBrand")
local SerializationBrand = ____SerializationBrand.SerializationBrand
local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass")
local isaacAPIClassEquals = ____isaacAPIClass.isaacAPIClassEquals
local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType
local ____random = require("lua_modules.isaacscript-common.dist.src.functions.random")
local getRandom = ____random.getRandom
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local isRNG = ____rng.isRNG
local newRNG = ____rng.newRNG
local ____table = require("lua_modules.isaacscript-common.dist.src.functions.table")
local copyUserdataValuesToTable = ____table.copyUserdataValuesToTable
local getNumbersFromTable = ____table.getNumbersFromTable
local tableHasKeys = ____table.tableHasKeys
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isTable = ____types.isTable
--- Helper function to check if something is an instantiated `KColor` object.
function ____exports.isKColor(self, object)
    return isIsaacAPIClassOfType(nil, object, OBJECT_NAME)
end
OBJECT_NAME = "KColor"
local KEYS = {"Red", "Green", "Blue", "Alpha"}
--- Helper function to copy a `KColor` Isaac API class.
function ____exports.copyKColor(self, kColor)
    if not ____exports.isKColor(nil, kColor) then
        error(((("Failed to copy a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
    end
    return KColor(kColor.Red, kColor.Green, kColor.Blue, kColor.Alpha)
end
--- Helper function to convert a `SerializedKColor` object to a normal `KColor` object. (This is used
-- by the save data manager when reading data from the "save#.dat" file.)
function ____exports.deserializeKColor(self, kColor)
    if not isTable(nil, kColor) then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object was not a Lua table.")
    end
    local r, g, b, a = table.unpack(getNumbersFromTable(
        nil,
        kColor,
        OBJECT_NAME,
        table.unpack(KEYS)
    ))
    if r == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Red")
    end
    if g == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Green")
    end
    if b == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Blue")
    end
    if a == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Alpha")
    end
    return KColor(r, g, b, a)
end
--- Helper function to get a random color.
-- 
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param alpha Optional. The alpha value to use. Default is 1.
function ____exports.getRandomKColor(self, seedOrRNG, alpha)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if alpha == nil then
        alpha = 1
    end
    local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG)
    local r = getRandom(nil, rng)
    local g = getRandom(nil, rng)
    local b = getRandom(nil, rng)
    return KColor(r, g, b, alpha)
end
--- Used to determine is the given table is a serialized `KColor` object created by the `deepCopy`
-- function.
function ____exports.isSerializedKColor(self, object)
    if not isTable(nil, object) then
        return false
    end
    return tableHasKeys(
        nil,
        object,
        table.unpack(KEYS)
    ) and object[SerializationBrand.K_COLOR] ~= nil
end
function ____exports.kColorEquals(self, kColor1, kColor2)
    return isaacAPIClassEquals(nil, kColor1, kColor2, KEYS)
end
--- Helper function to convert a `KColor` object to a `SerializedKColor` object. (This is used by the
-- save data manager when writing data from the "save#.dat" file.)
function ____exports.serializeKColor(self, kColor)
    if not ____exports.isKColor(nil, kColor) then
        error(((("Failed to serialize a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
    end
    local kColorTable = {}
    copyUserdataValuesToTable(nil, kColor, KEYS, kColorTable)
    kColorTable[SerializationBrand.K_COLOR] = ""
    return kColorTable
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.vector"] = function(...) 
local ____exports = {}
local OBJECT_NAME
local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.src.enums.SerializationBrand")
local SerializationBrand = ____SerializationBrand.SerializationBrand
local ____direction = require("lua_modules.isaacscript-common.dist.src.functions.direction")
local angleToDirection = ____direction.angleToDirection
local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass")
local isaacAPIClassEquals = ____isaacAPIClass.isaacAPIClassEquals
local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType
local ____random = require("lua_modules.isaacscript-common.dist.src.functions.random")
local getRandomFloat = ____random.getRandomFloat
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local isRNG = ____rng.isRNG
local newRNG = ____rng.newRNG
local ____table = require("lua_modules.isaacscript-common.dist.src.functions.table")
local copyUserdataValuesToTable = ____table.copyUserdataValuesToTable
local getNumbersFromTable = ____table.getNumbersFromTable
local tableHasKeys = ____table.tableHasKeys
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isTable = ____types.isTable
--- Helper function to check if something is an instantiated `Vector` object.
function ____exports.isVector(self, object)
    return isIsaacAPIClassOfType(nil, object, OBJECT_NAME)
end
OBJECT_NAME = "Vector"
local KEYS = {"X", "Y"}
--- Helper function to copy a `Vector` Isaac API class.
function ____exports.copyVector(self, vector)
    if not ____exports.isVector(nil, vector) then
        error(((("Failed to copy a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
    end
    return Vector(vector.X, vector.Y)
end
--- Helper function to convert a `SerializedVector` object to a normal `RNG` object. (This is used by
-- the save data manager when reading data from the "save#.dat" file.)
function ____exports.deserializeVector(self, vector)
    if not isTable(nil, vector) then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object was not a Lua table.")
    end
    local x, y = table.unpack(getNumbersFromTable(
        nil,
        vector,
        OBJECT_NAME,
        table.unpack(KEYS)
    ))
    if x == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: X")
    end
    if y == nil then
        error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Y")
    end
    return Vector(x, y)
end
--- Helper function to get a random vector between (-1, -1) and (1, 1).
-- 
-- To get random vectors with a bigger length, multiply this with a number.
-- 
-- Use this over the `RandomVector` function when you need the vector to be seeded.
-- 
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
function ____exports.getRandomVector(self, seedOrRNG)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG)
    local x = getRandomFloat(nil, -1, 1, rng)
    local y = getRandomFloat(nil, -1, 1, rng)
    return Vector(x, y)
end
--- Used to determine is the given table is a serialized `Vector` object created by the `deepCopy`
-- function.
function ____exports.isSerializedVector(self, object)
    if not isTable(nil, object) then
        return false
    end
    return tableHasKeys(
        nil,
        object,
        table.unpack(KEYS)
    ) and object[SerializationBrand.VECTOR] ~= nil
end
--- Helper function to convert a `Vector` object to a `SerializedVector` object. (This is used by the
-- save data manager when writing data from the "save#.dat" file.)
function ____exports.serializeVector(self, vector)
    if not ____exports.isVector(nil, vector) then
        error(((("Failed to serialize a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
    end
    local vectorTable = {}
    copyUserdataValuesToTable(nil, vector, KEYS, vectorTable)
    vectorTable[SerializationBrand.VECTOR] = ""
    return vectorTable
end
function ____exports.vectorEquals(self, vector1, vector2)
    return isaacAPIClassEquals(nil, vector1, vector2, KEYS)
end
--- Helper function for finding out which way a vector is pointing.
function ____exports.vectorToDirection(self, vector)
    local angleDegrees = vector:GetAngleDegrees()
    return angleToDirection(nil, angleDegrees)
end
function ____exports.vectorToString(self, vector, round)
    if round == nil then
        round = false
    end
    local x = round and math.floor(vector.X + 0.5) or vector.X
    local y = round and math.floor(vector.Y + 0.5) or vector.Y
    return ((("(" .. tostring(x)) .. ", ") .. tostring(y)) .. ")"
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.direction"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction
local ____directionNames = require("lua_modules.isaacscript-common.dist.src.objects.directionNames")
local DIRECTION_NAMES = ____directionNames.DIRECTION_NAMES
local ____directionToDegrees = require("lua_modules.isaacscript-common.dist.src.objects.directionToDegrees")
local DIRECTION_TO_DEGREES = ____directionToDegrees.DIRECTION_TO_DEGREES
local ____directionToVector = require("lua_modules.isaacscript-common.dist.src.objects.directionToVector")
local DIRECTION_TO_VECTOR = ____directionToVector.DIRECTION_TO_VECTOR
--- Helper function to convert the degrees of an angle to the `Direction` enum.
-- 
-- Note that this function considers 0 degrees to be pointing to the right, which is unusual because
-- 0 normally corresponds to up. (This corresponds to how the `Vector.GetAngleDegrees` method
-- works.)
function ____exports.angleToDirection(self, angleDegrees)
    local positiveDegrees = angleDegrees
    while positiveDegrees < 0 do
        positiveDegrees = positiveDegrees + 360
    end
    local normalizedDegrees = positiveDegrees % 360
    if normalizedDegrees < 45 then
        return Direction.RIGHT
    end
    if normalizedDegrees < 135 then
        return Direction.DOWN
    end
    if normalizedDegrees < 225 then
        return Direction.LEFT
    end
    if normalizedDegrees < 315 then
        return Direction.UP
    end
    return Direction.RIGHT
end
function ____exports.directionToDegrees(self, direction)
    return DIRECTION_TO_DEGREES[direction]
end
function ____exports.directionToVector(self, direction)
    return DIRECTION_TO_VECTOR[direction]
end
function ____exports.getDirectionName(self, direction)
    return DIRECTION_NAMES[direction]
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.directionNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction
____exports.DIRECTION_NAMES = {
    [Direction.NO_DIRECTION] = nil,
    [Direction.LEFT] = "left",
    [Direction.UP] = "up",
    [Direction.RIGHT] = "right",
    [Direction.DOWN] = "down"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.directionToDegrees"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction
____exports.DIRECTION_TO_DEGREES = {
    [Direction.NO_DIRECTION] = 0,
    [Direction.LEFT] = 180,
    [Direction.UP] = 270,
    [Direction.RIGHT] = 0,
    [Direction.DOWN] = 90
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.directionToVector"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
____exports.DIRECTION_TO_VECTOR = {
    [Direction.NO_DIRECTION] = VectorZero,
    [Direction.LEFT] = Vector(-1, 0),
    [Direction.UP] = Vector(0, -1),
    [Direction.RIGHT] = Vector(1, 0),
    [Direction.DOWN] = Vector(0, 1)
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.core.constants"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Dimension = ____isaac_2Dtypescript_2Ddefinitions.Dimension
local DisplayFlag = ____isaac_2Dtypescript_2Ddefinitions.DisplayFlag
local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType
local TrinketSlot = ____isaac_2Dtypescript_2Ddefinitions.TrinketSlot
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumLength = ____enums.getEnumLength
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local addFlag = ____flag.addFlag
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asCollectibleType = ____types.asCollectibleType
local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.src.core.constantsFirstLast")
local NUM_NORMAL_PILL_COLORS = ____constantsFirstLast.NUM_NORMAL_PILL_COLORS
--- The combination of the following flags:
-- - `DisplayFlag.VISIBLE` (1 << 0)
-- - `DisplayFlag.SHADOW` (1 << 1)
-- - `DisplayFlag.SHOW_ICON` (1 << 2)
____exports.ALL_DISPLAY_FLAGS = addFlag(nil, DisplayFlag.VISIBLE, DisplayFlag.SHADOW, DisplayFlag.SHOW_ICON)
--- The distance of the laser when Azazel does not have any range up items yet. For more info, see
-- the documentation for the `getAzazelBrimstoneDistance` function.
____exports.AZAZEL_DEFAULT_BRIMSTONE_DISTANCE = 75.125
--- The path to the png file for collectible items during Curse of the Blind, making them appear with
-- a red question mark.
____exports.BLIND_ITEM_PNG_PATH = "gfx/items/collectibles/questionmark.png"
--- Bombs explode when their frame count is equal to this value.
____exports.BOMB_EXPLODE_FRAME = 45
--- This is the initial value of the `EntityPickup.Wait` field after a collectible is spawned.
____exports.COLLECTIBLE_INITIAL_WAIT = 20
____exports.DEFAULT_ITEM_POOL_TYPE = ItemPoolType.TREASURE
--- This is also the distance that a player spawns from the door that they enter a room from.
____exports.DISTANCE_OF_GRID_TILE = 40
____exports.DOGMA_ROOM_GRID_INDEX = 109
____exports.DOOR_HITBOX_RADIUS = 11
--- When Eggies take fatal damage, they go into NpcState.STATE_SUICIDE and spawn 14 Swarm Spiders
-- while their StateFrame ticks upwards. The 14th spider appears when the StateFrame is at this
-- value.
____exports.EGGY_STATE_FRAME_OF_FINAL_SPIDER = 45
--- A non-existent or completely transparent PNG file for use in clearing sprites. For more
-- information, see the documentation for the `clearSprite` helper function.
____exports.EMPTY_PNG_PATH = "gfx/none.png"
--- The random items that appear when the player has TMTRAINER are generated on the fly as they are
-- encountered by the player. The first TMTRAINER item takes the final possible 32 bit number. The
-- second TMTRAINER item subtracts one from that, and so on.
-- 
-- This is equal to 4294967295.
____exports.FIRST_GLITCHED_COLLECTIBLE_TYPE = asCollectibleType(nil, (1 << 32) - 1)
--- Game frames are what is returned by the `Game.GetFrameCount` method.
____exports.GAME_FRAMES_PER_SECOND = 30
--- Render frames are what is returned by the `Isaac.GetFrameCount` method.
____exports.RENDER_FRAMES_PER_SECOND = 60
____exports.GRID_INDEX_CENTER_OF_1X1_ROOM = 67
--- The floor is represented by a 13x13 grid. Room indexes start at 0. The first column is
-- represented by grid indexes 0, 13, 26, and so on.
____exports.LEVEL_GRID_COLUMN_HEIGHT = 13
--- The floor is represented by a 13x13 grid. Room indexes start at 0. The first row is represented
-- by grid indexes from 0 to 12. The second row is represented by grid indexes from 13 to 25, and so
-- on.
____exports.LEVEL_GRID_ROW_WIDTH = 13
--- The floor is represented by a 13x13 grid. Room indexes start at 0. The first row is represented
-- by grid indexes from 0 to 12. The second row is represented by grid indexes from 13 to 25, and so
-- on. The maximum room index possible is 168. (It is not 169 because we start at 0 instead of 1.)
____exports.MAX_LEVEL_GRID_INDEX = 168
--- The game has a limit on the number of currently spawned familiars and will refuse to spawn any
-- more if it reaches the limit. Blue flies and blue spiders have a lower priority and will be
-- deleted to make room for other familiars.
____exports.MAX_NUM_FAMILIARS = 64
--- The game can only handle up to four different players.
____exports.MAX_NUM_INPUTS = 4
--- With Birthright, it is possible for Magdalene to have 18 heart containers.
____exports.MAX_PLAYER_HEART_CONTAINERS = 18
--- As the player continues to move in a direction, they will accelerate. When going from one wall to
-- another in a 2x2 room at 2.0 speed (the maximum that the speed stat can rise to), the amount of
-- units moved per update frame will climb to around 9.797 as they hit the opposite wall. The
-- constant specifies a value of 9.8 to be safe.
____exports.MAX_PLAYER_SPEED_IN_UNITS = 9.8
____exports.MAX_PLAYER_TRINKET_SLOTS = getEnumLength(nil, TrinketSlot)
--- If you set `EntityPlayer.ShotSpeed` lower than this value, it will have no effect.
____exports.MIN_PLAYER_SHOT_SPEED_STAT = 0.6
--- If you set `EntityPlayer.Speed` lower than this value, it will have no effect.
____exports.MIN_PLAYER_SPEED_STAT = 0.1
--- The maximum speed stat that a player can have. Any additional speed beyond this will not take
-- effect.
____exports.MAX_SPEED_STAT = 2
--- This is in the center of the room.
____exports.NEW_FLOOR_STARTING_POSITION_NORMAL_MODE = Vector(320, 280)
--- This is near the top door.
____exports.NEW_FLOOR_STARTING_POSITION_GREED_MODE = Vector(320, 280)
--- This is next to the bottom door. Presumably, the player does not start in the center of the room
-- (like they do when getting to a new stage) so that the controls graphic is more visible.
____exports.NEW_RUN_PLAYER_STARTING_POSITION = Vector(320, 380)
--- Corresponds to the maximum value for `EntityPlayer.SamsonBerserkCharge`.
____exports.MAX_TAINTED_SAMSON_BERSERK_CHARGE = 100000
____exports.NUM_DIMENSIONS = getEnumLength(nil, Dimension) - 1
--- The pill pool for each run is comprised of one effect for each unique pill color (minus gold and
-- horse pills.)
____exports.NUM_PILLS_IN_POOL = NUM_NORMAL_PILL_COLORS
____exports.SECOND_IN_MILLISECONDS = 1000
____exports.MINUTE_IN_MILLISECONDS = 60 * ____exports.SECOND_IN_MILLISECONDS
____exports.ONE_BY_ONE_ROOM_GRID_SIZE = 135
--- After taking damage, `EntityPlayer.SamsonBerserkCharge` is incremented by this amount.
____exports.TAINTED_SAMSON_BERSERK_CHARGE_FROM_TAKING_DAMAGE = 10000
--- For `GridEntityType.TELEPORTER` (23).
____exports.TELEPORTER_ACTIVATION_DISTANCE = ____exports.DISTANCE_OF_GRID_TILE / 2
--- This is the number of draw coordinates that each heart spans on the UI in the upper left hand
-- corner.
____exports.UI_HEART_WIDTH = 12
--- This is a safe version of the `Vector.One` constant. (Other mods can mutate `Vector.One`, so it
-- is not safe to use.)
____exports.VectorOne = Vector(1, 1)
--- This is a safe version of the `Vector.Zero` constant. (Other mods can mutate `Vector.Zero`, so it
-- is not safe to use.)
____exports.VectorZero = Vector(0, 0)
--- This is a safe version of the `Color.Default` constant. (Other mods can mutate `Color.Default`,
-- so it is not safe to use.)
-- 
-- If you need to mutate this, make a copy first with the `copyColor` helper function.
____exports.ColorDefault = Color(1, 1, 1)
--- Equal to `KColor(1, 1, 1, 1)`.
-- 
-- If you need to mutate this, make a copy first with the `copyKColor` helper function.
____exports.KColorDefault = KColor(1, 1, 1, 1)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.enums"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArraySort = ____lualib.__TS__ArraySort
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local getRandomArrayElement = ____array.getRandomArrayElement
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isString = ____types.isString
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local iRange = ____utils.iRange
--- TypeScriptToLua will transpile TypeScript enums to Lua tables that have a double mapping. Thus,
-- when you iterate over them, you will get both the names of the enums and the values of the enums,
-- in a random order. Use this helper function to get the entries of the enum with the reverse
-- mappings filtered out.
-- 
-- This function will return the enum values in a sorted order, which may not necessarily be the
-- same order as which they were declared in.
-- 
-- This function will work properly for both number enums and string enums. (Reverse mappings are
-- not created for string enums.)
-- 
-- Also see the `getEnumKeys` and `getEnumValues` helper functions.
-- 
-- For a more in depth explanation, see:
-- https://isaacscript.github.io/main/gotchas#iterating-over-enums
function ____exports.getEnumEntries(self, transpiledEnum)
    local enumEntries = {}
    for key, value in pairs(transpiledEnum) do
        if isString(nil, key) then
            enumEntries[#enumEntries + 1] = {key, value}
        end
    end
    __TS__ArraySort(
        enumEntries,
        function(____, ____bindingPattern0, ____bindingPattern1)
            local value1
            local _key1 = ____bindingPattern0[1]
            value1 = ____bindingPattern0[2]
            local value2
            local _key2 = ____bindingPattern1[1]
            value2 = ____bindingPattern1[2]
            return value1 < value2 and -1 or (value1 > value2 and 1 or 0)
        end
    )
    return enumEntries
end
--- TypeScriptToLua will transpile TypeScript enums to Lua tables that have a double mapping. Thus,
-- when you iterate over them, you will get both the names of the enums and the values of the enums,
-- in a random order. If all you need are the keys of an enum, use this helper function.
-- 
-- This function will return the enum keys in a sorted order, which may not necessarily be the same
-- order as which they were declared in.
-- 
-- This function will work properly for both number enums and string enums. (Reverse mappings are
-- not created for string enums.)
-- 
-- Also see the `getEnumEntries` and `getEnumValues` helper functions.
-- 
-- For a more in depth explanation, see:
-- https://isaacscript.github.io/main/gotchas#iterating-over-enums
function ____exports.getEnumKeys(self, transpiledEnum)
    local enumEntries = ____exports.getEnumEntries(nil, transpiledEnum)
    return __TS__ArrayMap(
        enumEntries,
        function(____, ____bindingPattern0)
            local key
            key = ____bindingPattern0[1]
            local _value = ____bindingPattern0[2]
            return key
        end
    )
end
--- Helper function to get the amount of entries inside of an enum.
function ____exports.getEnumLength(self, transpiledEnum)
    local enumEntries = ____exports.getEnumEntries(nil, transpiledEnum)
    return #enumEntries
end
--- TypeScriptToLua will transpile TypeScript enums to Lua tables that have a double mapping. Thus,
-- when you iterate over them, you will get both the names of the enums and the values of the enums,
-- in a random order. If all you need are the values of an enum, use this helper function.
-- 
-- This function will return the enum values in a sorted order, which may not necessarily be the
-- same order as which they were declared in.
-- 
-- This function will work properly for both number enums and string enums. (Reverse mappings are
-- not created for string enums.)
-- 
-- Also see the `getEnumEntries` and `getEnumKeys` helper functions.
-- 
-- For a more in depth explanation, see:
-- https://isaacscript.github.io/main/gotchas#iterating-over-enums
function ____exports.getEnumValues(self, transpiledEnum)
    local enumEntries = ____exports.getEnumEntries(nil, transpiledEnum)
    return __TS__ArrayMap(
        enumEntries,
        function(____, ____bindingPattern0)
            local value
            local _key = ____bindingPattern0[1]
            value = ____bindingPattern0[2]
            return value
        end
    )
end
--- Helper function to get the enum value with the highest value.
-- 
-- Note that this is not necessarily the enum value that is declared last, since there is no way to
-- infer that at run-time.
function ____exports.getLastEnumValue(self, transpiledEnum)
    local enumValues = ____exports.getEnumValues(nil, transpiledEnum)
    local lastElement = enumValues[#enumValues]
    if lastElement == nil then
        error("Failed to get the last value from an enum since the enum was empty.")
    end
    return lastElement
end
--- Helper function to get a random value from the provided enum.
-- 
-- @param transpiledEnum The enum to get the value from.
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param exceptions Optional. An array of elements to skip over if selected.
function ____exports.getRandomEnumValue(self, transpiledEnum, seedOrRNG, exceptions)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if exceptions == nil then
        exceptions = {}
    end
    local enumValues = ____exports.getEnumValues(nil, transpiledEnum)
    return getRandomArrayElement(nil, enumValues, seedOrRNG, exceptions)
end
--- Helper function to check every value of a custom enum for -1. Will throw an run-time error if any
-- -1 values are found. This is helpful because many methods of the Isaac class return -1 if they
-- fail.
-- 
-- For example:
-- 
-- ```ts
-- enum EntityTypeCustom {
--   FOO = Isaac.GetEntityTypeByName("Foo"),
-- }
-- 
-- validateCustomEnum("EntityTypeCustom", EntityTypeCustom);
-- ```
function ____exports.validateCustomEnum(self, transpiledEnumName, transpiledEnum)
    for ____, ____value in ipairs(____exports.getEnumEntries(nil, transpiledEnum)) do
        local key = ____value[1]
        local value = ____value[2]
        if value == -1 then
            error((("Failed to find the custom enum value: " .. transpiledEnumName) .. ".") .. key)
        end
    end
end
--- Helper function to validate if every value in an enum is contiguous, starting at 0.
-- 
-- This is useful to automate checking large enums for typos.
function ____exports.validateEnumContiguous(self, transpiledEnumName, transpiledEnum)
    local values = ____exports.getEnumValues(nil, transpiledEnum)
    local lastValue = values[#values]
    if lastValue == nil then
        error("Failed to validate that an enum was contiguous, since the last value was undefined.")
    end
    if type(lastValue) ~= "number" then
        error("Failed to validate that an enum was contiguous, since the last value was not a number.")
    end
    local valuesSet = __TS__New(Set, values)
    for ____, value in ipairs(iRange(nil, lastValue)) do
        if not valuesSet:has(value) then
            error((("Failed to find a custom enum value of " .. tostring(value)) .. " for: ") .. transpiledEnumName)
        end
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.flag"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag
--- Helper function to add a bit flag to an existing set of bit flags.
-- 
-- This is a variadic function, so pass as many flags as you want to add.
-- 
-- Example 1:
-- 
-- ```ts
-- // Give the player spectral tears
-- const player = Isaac.GetPlayer();
-- player.TearFlags = addFlag(player.TearFlags, TearFlags.TEAR_SPECTRAL);
-- ```
-- 
-- Example 2:
-- 
-- ```ts
-- // Give the player spectral and homing tears
-- const player = Isaac.GetPlayer();
-- player.TearFlags = addFlag(player.TearFlags, TearFlags.TEAR_SPECTRAL, TearFlags.TEAR_HOMING);
-- ```
-- 
-- @param flags The existing set of bit flags.
-- @param flagsToAdd One or more bit flags to add, each as a separate argument.
-- @returns The combined bit flags.
function ____exports.addFlag(self, flags, ...)
    local flagsToAdd = {...}
    local flagsAsInt = flags
    for ____, flagToAdd in ipairs(flagsToAdd) do
        flagsAsInt = flagsAsInt | flagToAdd
    end
    return flagsAsInt
end
--- Helper function for casting a flag enum value to a `BitFlags` object.
-- 
-- This is useful because the compiler will prevent you from assigning a specific flag to a
-- `BitFlags` field. (It does this to ensure type safety, since `BitFlags` can represent a zero
-- value or a composition of N flags.)
-- 
-- For example:
-- 
-- ```ts
-- player.TearFlags = bitFlags(TearFlag.SPECTRAL);
-- ```
function ____exports.bitFlags(self, flag)
    return flag
end
--- Helper function to get the key associated with a particular flag.
-- 
-- (Since bit flags are represented by custom objects instead of normal TypeScript enums, you cannot
-- use the reverse mapping to find the associated key of a given enum value. Use this helper
-- function instead of indexing the enum directly.)
function ____exports.getFlagName(self, flag, flagEnum)
    for key, value in pairs(flagEnum) do
        if value == flag then
            return key
        end
    end
    return nil
end
--- Helper function to determine if a particular bit flag is set to true.
-- 
-- This is a variadic function, so pass as many flags as you want to check for. If passed multiple
-- flags, it will only return true if all of the flags are set.
-- 
-- For example:
-- 
-- ```ts
-- const player = Isaac.GetPlayer();
-- if (hasFlag(player.TearFlags, TearFlags.TEAR_SPECTRAL) {
--   // The player currently has spectral tears
-- }
-- ```
-- 
-- @param flags The existing set of bit flags.
-- @param flagsToCheck One or more bit flags to check for, each as a separate argument.
function ____exports.hasFlag(self, flags, ...)
    local flagsToCheck = {...}
    local flagsAsInt = flags
    for ____, flagToCheck in ipairs(flagsToCheck) do
        if not (flagsAsInt & flagToCheck == flagToCheck) then
            return false
        end
    end
    return true
end
--- Helper function to check if every bit in the flag is turned off.
-- 
-- (This is equivalent to checking if the flag is equal to 0, but this is not possible without
-- casting the flag to a number.)
function ____exports.isEmptyFlag(self, flag)
    return flag == 0
end
--- Helper function to determine whether damage to a player in the `ENTITY_TAKE_DMG` callback was
-- self-inflicted. For example, damage from a Curse Room door, a Razor, or a Blood Donation Machine
-- would count as self-inflicted damage.
function ____exports.isSelfDamage(self, damageFlags)
    return ____exports.hasFlag(nil, damageFlags, DamageFlag.NO_PENALTIES) or ____exports.hasFlag(nil, damageFlags, DamageFlag.RED_HEARTS)
end
--- Helper function to remove a bit flag from an existing set of bit flags.
-- 
-- This is a variadic function, so pass as many flags as you want to remove.
-- 
-- For example:
-- 
-- ```ts
-- // Remove spectral tears from the player, if present
-- const player = Isaac.GetPlayer();
-- player.TearFlags = removeFlag(player.TearFlags, TearFlags.TEAR_SPECTRAL);
-- ```
-- 
-- @param flags The existing set of bit flags.
-- @param flagsToRemove One or more bit flags to remove, each as a separate argument.
-- @returns The combined bit flags.
function ____exports.removeFlag(self, flags, ...)
    local flagsToRemove = {...}
    local flagsAsInt = flags
    for ____, flagToRemove in ipairs(flagsToRemove) do
        flagsAsInt = flagsAsInt & ~flagToRemove
    end
    return flagsAsInt
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.core.constantsFirstLast"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor
local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumLength = ____enums.getEnumLength
local getLastEnumValue = ____enums.getLastEnumValue
--- Equal to `CollectibleType.SAD_ONION`.
____exports.FIRST_COLLECTIBLE_TYPE = CollectibleType.SAD_ONION
--- Calculated from the `CollectibleType` enum.
-- 
-- Note that this cannot be calculated from the length of the enum, because unlike all of the other
-- enums, collectible types are not contiguous.
____exports.LAST_VANILLA_COLLECTIBLE_TYPE = getLastEnumValue(nil, CollectibleType)
--- Calculated from the `CollectibleType` enum. (`CollectibleType.NULL` is not included.)
____exports.NUM_VANILLA_COLLECTIBLE_TYPES = getEnumLength(nil, CollectibleType) - 1
--- Equal to `TrinketType.SWALLOWED_PENNY`.
____exports.FIRST_TRINKET_TYPE = TrinketType.SWALLOWED_PENNY
--- Calculated from the `TrinketType` enum.
____exports.LAST_VANILLA_TRINKET_TYPE = getLastEnumValue(nil, TrinketType)
--- Calculated from the `TrinketType` enum. (`TrinketType.NULL` is not included.)
____exports.NUM_VANILLA_TRINKET_TYPES = getEnumLength(nil, TrinketType) - 1
--- Equal to `Card.FOOL`.
____exports.FIRST_CARD_TYPE = CardType.FOOL
--- Calculated from the `Card` enum.
____exports.LAST_VANILLA_CARD_TYPE = getLastEnumValue(nil, CardType)
--- Calculated from the `Card` enum. `Card.NULL` is not included.
____exports.NUM_VANILLA_CARD_TYPES = getEnumLength(nil, CardType) - 1
--- Equal to `PillEffect.BAD_GAS`.
____exports.FIRST_PILL_EFFECT = PillEffect.BAD_GAS
--- Calculated from the `PillEffect` enum.
____exports.LAST_VANILLA_PILL_EFFECT = getLastEnumValue(nil, PillEffect)
--- Calculated from the `PillEffect` enum.
-- 
-- (There is no `PillEffect.NULL` in the custom enum, so we do not have to subtract one here.)
____exports.NUM_VANILLA_PILL_EFFECTS = getEnumLength(nil, PillEffect)
--- Equal to `PillColor.BLUE_BLUE`.
____exports.FIRST_PILL_COLOR = PillColor.BLUE_BLUE
--- Equal to `PillColor.WHITE_YELLOW`.
-- 
-- Note that `PillColor.GOLD` is technically higher, but that is not considered for the purposes of
-- this constant.
____exports.LAST_NORMAL_PILL_COLOR = PillColor.WHITE_YELLOW
--- Equal to `PillColor.HORSE_BLUE_BLUE`.
____exports.FIRST_HORSE_PILL_COLOR = PillColor.HORSE_BLUE_BLUE
--- Equal to `PillColor.HORSE_WHITE_YELLOW`.
-- 
-- Note that `PillColor.HORSE_GOLD` is technically higher, but that is not considered for the
-- purposes of this constant.
____exports.LAST_HORSE_PILL_COLOR = PillColor.HORSE_WHITE_YELLOW
____exports.NUM_NORMAL_PILL_COLORS = ____exports.LAST_NORMAL_PILL_COLOR - ____exports.FIRST_PILL_COLOR
--- Equal to `PlayerType.ISAAC`.
____exports.FIRST_CHARACTER = PlayerType.ISAAC
--- Calculated from the `PlayerType` enum.
____exports.LAST_VANILLA_CHARACTER = getLastEnumValue(nil, PlayerType)
____exports.FIRST_ROOM_TYPE = RoomType.DEFAULT
____exports.LAST_ROOM_TYPE = getLastEnumValue(nil, RoomType)
____exports.FIRST_STAGE = LevelStage.BASEMENT_1
____exports.LAST_STAGE = getLastEnumValue(nil, LevelStage)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.tstlClass"] = function(...) 
local ____exports = {}
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isTable = ____types.isTable
--- Helper function to get the constructor from an instantiated TypeScriptToLua class, which is
-- located on the metatable.
-- 
-- Returns undefined if passed a non-table or if the provided table does not have a metatable.
function ____exports.getTSTLClassConstructor(self, object)
    if not isTable(nil, object) then
        return nil
    end
    local metatable = getmetatable(object)
    if metatable == nil then
        return nil
    end
    return metatable.constructor
end
--- Helper function to get the name of a TypeScriptToLua class from the instantiated class object.
-- 
-- TSTL classes are Lua tables created with the `__TS__Class` Lua function from the TSTL lualib.
-- Their name is contained within "constructor.name" metatable key.
-- 
-- For example, a `Map` class is has a name of "Map".
-- 
-- Returns undefined if passed a non-table or if the provided table does not have a metatable.
function ____exports.getTSTLClassName(self, object)
    local constructor = ____exports.getTSTLClassConstructor(nil, object)
    if constructor == nil then
        return nil
    end
    return constructor.name
end
--- Helper function to determine if a given object is a TypeScriptToLua `Map`.
-- 
-- It is not reliable to use the `instanceof` operator to determine this because each Lua module has
-- their own copies of the entire lualib and thus their own instantiated version of a `Map`.
function ____exports.isDefaultMap(self, object)
    local className = ____exports.getTSTLClassName(nil, object)
    return className == "DefaultMap"
end
--- Helper function to determine if a given object is a TypeScriptToLua `Map`.
-- 
-- It is not reliable to use the `instanceof` operator to determine this because each Lua module
-- might have their own copy of the entire lualib and thus their own instantiated version of a
-- `Map`.
function ____exports.isTSTLMap(self, object)
    local className = ____exports.getTSTLClassName(nil, object)
    return className == "Map"
end
--- Helper function to determine if a given object is a TypeScriptToLua `Set`.
-- 
-- It is not reliable to use the `instanceof` operator to determine this because each Lua module
-- might have their own copy of the entire lualib and thus their own instantiated version of a
-- `Set`.
function ____exports.isTSTLSet(self, object)
    local className = ____exports.getTSTLClassName(nil, object)
    return className == "Set"
end
--- TypeScriptToLua classes are Lua tables that have a metatable with a certain amount of keys.
function ____exports.isUserDefinedTSTLClass(self, object)
    local tstlClassName = ____exports.getTSTLClassName(nil, object)
    return tstlClassName ~= nil
end
--- Initializes a new TypeScriptToLua class in the situation where you do not know what kind of class
-- it is. This function requires that you provide an instantiated class of the same type, as it will
-- use the class constructor that is present on the other object's metatable to initialize the new
-- class.
function ____exports.newTSTLClass(self, oldClass)
    local constructor = ____exports.getTSTLClassConstructor(nil, oldClass)
    if constructor == nil then
        error("Failed to instantiate a new TypeScriptToLua class since the provided old class does not have a metatable/constructor.")
    end
    local newClass = {}
    local newClassMetatable = setmetatable(newClass, constructor.prototype)
    newClassMetatable:____constructor()
    return newClass
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.ModUpgradedBase"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__Spread = ____lualib.__TS__Spread
local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries
local __TS__ArrayIncludes = ____lualib.__TS__ArrayIncludes
local __TS__ArrayUnshift = ____lualib.__TS__ArrayUnshift
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local ____exports = {}
local getExportedMethodsFromFeature
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____callbacks = require("lua_modules.isaacscript-common.dist.src.callbacks")
local getCallbacks = ____callbacks.getCallbacks
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local EXPORTED_METHOD_NAMES_KEY = ____decorators.EXPORTED_METHOD_NAMES_KEY
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____features = require("lua_modules.isaacscript-common.dist.src.features")
local getFeatures = ____features.getFeatures
local ____debugFunctions = require("lua_modules.isaacscript-common.dist.src.functions.debugFunctions")
local getTime = ____debugFunctions.getTime
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local getParentFunctionDescription = ____log.getParentFunctionDescription
local log = ____log.log
local ____tstlClass = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
local getTSTLClassConstructor = ____tstlClass.getTSTLClassConstructor
local getTSTLClassName = ____tstlClass.getTSTLClassName
function getExportedMethodsFromFeature(self, featureClass)
    local constructor = getTSTLClassConstructor(nil, featureClass)
    local exportedMethodNames = constructor[EXPORTED_METHOD_NAMES_KEY]
    if exportedMethodNames == nil then
        return {}
    end
    return __TS__ArrayMap(
        exportedMethodNames,
        function(____, name)
            local featureClassRecord = featureClass
            if featureClassRecord[name] == nil then
                error("Failed to find a decorated exported method: " .. name)
            end
            local function wrappedMethod(____, ...)
                return featureClassRecord[name](featureClassRecord, ...)
            end
            return {name, wrappedMethod}
        end
    )
end
--- `isaacscript-common` has many custom callbacks that you can use in your mods. Instead of
-- hijacking the vanilla `Mod` object, we provide a `ModUpgraded` object for you to use, which
-- extends the base class and adds a new method of `AddCallbackCustom`.
-- 
-- To upgrade your mod, use the `upgradeMod` helper function.
-- 
-- `ModUpgradedBase` provides the core functionality of the `ModUpgraded` class. (It does not
-- include the methods for the individual ISC features.)
____exports.ModUpgradedBase = __TS__Class()
local ModUpgradedBase = ____exports.ModUpgradedBase
ModUpgradedBase.name = "ModUpgradedBase"
function ModUpgradedBase.prototype.____constructor(self, mod, ____debug, timeThreshold)
    self.Name = mod.Name
    self.mod = mod
    self.debug = ____debug
    self.timeThreshold = timeThreshold
    self.callbacks = getCallbacks(nil)
    self.features = getFeatures(nil, self, self.callbacks)
end
function ModUpgradedBase.prototype.AddCallback(self, modCallback, ...)
    local args = {...}
    if self.debug then
        local callback = args[1]
        local optionalArg = args[2]
        local parentFunctionDescription = getParentFunctionDescription(nil)
        local callbackName = "ModCallback." .. tostring(ModCallback[modCallback])
        local signature = parentFunctionDescription == nil and callbackName or (parentFunctionDescription .. " - ") .. callbackName
        --- We don't use the "log" helper function here since it will always show the same "unknown"
        -- prefix.
        local function callbackWithLogger(____, ...)
            local startTime = getTime(nil)
            Isaac.DebugString(signature .. " - START")
            local returnValue = callback(nil, ...)
            local endTime = getTime(nil)
            local elapsedTime = endTime - startTime
            if self.timeThreshold == nil or self.timeThreshold <= elapsedTime then
                Isaac.DebugString((signature .. " - END - time: ") .. tostring(elapsedTime))
            else
                Isaac.DebugString(signature .. " - END")
            end
            return returnValue
        end
        local newArgs = {callbackWithLogger, optionalArg}
        self.mod:AddCallback(
            modCallback,
            __TS__Spread(newArgs)
        )
    else
        self.mod:AddCallback(
            modCallback,
            __TS__Spread(args)
        )
    end
end
function ModUpgradedBase.prototype.HasData(self)
    return self.mod:HasData()
end
function ModUpgradedBase.prototype.LoadData(self)
    return self.mod:LoadData()
end
function ModUpgradedBase.prototype.RemoveCallback(self, modCallback, callback)
    self.mod:RemoveCallback(modCallback, callback)
end
function ModUpgradedBase.prototype.RemoveData(self)
    self.mod:RemoveData()
end
function ModUpgradedBase.prototype.SaveData(self, data)
    self.mod:SaveData(data)
end
function ModUpgradedBase.prototype.AddCallbackCustom(self, modCallbackCustom, ...)
    local callbackClass = self.callbacks[modCallbackCustom]
    callbackClass:addSubscriber(...)
    self:initFeature(callbackClass)
end
function ModUpgradedBase.prototype.RemoveCallbackCustom(self, modCallbackCustom, callback)
    local callbackClass = self.callbacks[modCallbackCustom]
    callbackClass:removeSubscriber(callback)
    self:uninitFeature(callbackClass)
end
function ModUpgradedBase.prototype.logUsedFeatures(self)
    for ____, ____value in ipairs(__TS__ObjectEntries(self.callbacks)) do
        local modCallbackCustomString = ____value[1]
        local callbackClass = ____value[2]
        do
            if callbackClass.numConsumers == 0 then
                goto __continue17
            end
            local modCallbackCustom = tonumber(modCallbackCustomString)
            if modCallbackCustom == nil then
                error("Failed to convert an index on the callbacks object to a number.")
            end
            log(
                nil,
                ((("- ModCallbackCustom." .. tostring(ModCallbackCustom[modCallbackCustom])) .. " (") .. tostring(modCallbackCustom)) .. ")"
            )
        end
        ::__continue17::
    end
    for ____, ____value in ipairs(__TS__ObjectEntries(self.features)) do
        local iscFeatureString = ____value[1]
        local featureClass = ____value[2]
        do
            if featureClass.numConsumers == 0 then
                goto __continue21
            end
            local iscFeature = tonumber(iscFeatureString)
            if iscFeature == nil then
                error("Failed to convert an index on the features object to a number.")
            end
            log(
                nil,
                ((("- ISCFeature." .. tostring(ISCFeature[iscFeature])) .. " (") .. tostring(iscFeature)) .. ")"
            )
        end
        ::__continue21::
    end
end
function ModUpgradedBase.prototype.initFeature(self, feature)
    feature.numConsumers = feature.numConsumers + 1
    if feature.initialized then
        return
    end
    feature.initialized = true
    if feature.v ~= nil then
        if feature.featuresUsed == nil then
            feature.featuresUsed = {}
        end
        if not __TS__ArrayIncludes(feature.featuresUsed, ISCFeature.SAVE_DATA_MANAGER) then
            __TS__ArrayUnshift(feature.featuresUsed, ISCFeature.SAVE_DATA_MANAGER)
        end
    end
    if feature.featuresUsed ~= nil then
        for ____, featureUsed in ipairs(feature.featuresUsed) do
            local featureClass = self.features[featureUsed]
            self:initFeature(featureClass)
        end
    end
    if feature.callbacksUsed ~= nil then
        for ____, callbackTuple in ipairs(feature.callbacksUsed) do
            local modCallback, callbackArgs = table.unpack(callbackTuple)
            self:AddCallback(
                modCallback,
                table.unpack(callbackArgs)
            )
        end
    end
    if feature.customCallbacksUsed ~= nil then
        for ____, callbackTuple in ipairs(feature.customCallbacksUsed) do
            local modCallback, callbackArgs = table.unpack(callbackTuple)
            self:AddCallbackCustom(
                modCallback,
                table.unpack(callbackArgs)
            )
        end
    end
    if feature.v ~= nil then
        local className = getTSTLClassName(nil, feature)
        if className == nil then
            error("Failed to get the name of a feature.")
        end
        local saveDataManagerClass = self.features[ISCFeature.SAVE_DATA_MANAGER]
        saveDataManagerClass:saveDataManager(className, feature.v, feature.vConditionalFunc)
    end
end
function ModUpgradedBase.prototype.uninitFeature(self, feature)
    if feature.numConsumers <= 0 then
        local className = getTSTLClassName(nil, feature) or "unknown"
        error(((("Failed to uninit feature \"" .. className) .. "\" since it has ") .. tostring(feature.numConsumers)) .. " consumers, which should never happen.")
    end
    if not feature.initialized then
        local className = getTSTLClassName(nil, feature) or "unknown"
        error(("Failed to uninit feature \"" .. className) .. "\" since it was not initialized, which should never happen.")
    end
    feature.numConsumers = feature.numConsumers - 1
    if feature.numConsumers > 0 then
        return
    end
    feature.initialized = false
    if feature.featuresUsed ~= nil then
        for ____, featureUsed in ipairs(feature.featuresUsed) do
            local featureClass = self.features[featureUsed]
            self:uninitFeature(featureClass)
        end
    end
    if feature.callbacksUsed ~= nil then
        for ____, callbackTuple in ipairs(feature.callbacksUsed) do
            local modCallback, callbackArgs = table.unpack(callbackTuple)
            local callback = callbackArgs[1]
            self:RemoveCallback(modCallback, callback)
        end
    end
    if feature.customCallbacksUsed ~= nil then
        for ____, callbackTuple in ipairs(feature.customCallbacksUsed) do
            local modCallback, callbackArgs = table.unpack(callbackTuple)
            local callback = callbackArgs[1]
            self:RemoveCallbackCustom(modCallback, callback)
        end
    end
    if feature.v ~= nil then
        local className = getTSTLClassName(nil, feature)
        if className == nil then
            error("Failed to get the name of a feature.")
        end
        local saveDataManagerClass = self.features[ISCFeature.SAVE_DATA_MANAGER]
        saveDataManagerClass:saveDataManagerRemove(className)
    end
end
function ModUpgradedBase.prototype.initOptionalFeature(self, feature)
    local featureClass = self.features[feature]
    self:initFeature(featureClass)
    return getExportedMethodsFromFeature(nil, featureClass)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.callbacks"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local cc = require("lua_modules.isaacscript-common.dist.src.callbackClasses")
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local newObjectWithEnumKeys = ____utils.newObjectWithEnumKeys
local MOD_CALLBACK_CUSTOM_TO_CLASS = newObjectWithEnumKeys(nil, ModCallbackCustom, {
    [ModCallbackCustom.ENTITY_TAKE_DMG_FILTER] = cc.EntityTakeDmgFilter,
    [ModCallbackCustom.POST_AMBUSH_FINISHED] = cc.PostAmbushFinished,
    [ModCallbackCustom.POST_AMBUSH_STARTED] = cc.PostAmbushStarted,
    [ModCallbackCustom.POST_BOMB_EXPLODED] = cc.PostBombExploded,
    [ModCallbackCustom.POST_BOMB_INIT_LATE] = cc.PostBombInitLate,
    [ModCallbackCustom.POST_BONE_SWING] = cc.PostBoneSwing,
    [ModCallbackCustom.POST_COLLECTIBLE_EMPTY] = cc.PostCollectibleEmpty,
    [ModCallbackCustom.POST_COLLECTIBLE_INIT_FIRST] = cc.PostCollectibleInitFirst,
    [ModCallbackCustom.POST_CURSED_TELEPORT] = cc.PostCursedTeleport,
    [ModCallbackCustom.POST_CUSTOM_REVIVE] = cc.PostCustomRevive,
    [ModCallbackCustom.POST_DICE_ROOM_ACTIVATED] = cc.PostDiceRoomActivated,
    [ModCallbackCustom.POST_DOOR_RENDER] = cc.PostDoorRender,
    [ModCallbackCustom.POST_DOOR_UPDATE] = cc.PostDoorUpdate,
    [ModCallbackCustom.POST_EFFECT_INIT_LATE] = cc.PostEffectInitLate,
    [ModCallbackCustom.POST_EFFECT_STATE_CHANGED] = cc.PostEffectStateChanged,
    [ModCallbackCustom.POST_ESAU_JR] = cc.PostEsauJr,
    [ModCallbackCustom.POST_FAMILIAR_INIT_LATE] = cc.PostFamiliarInitLate,
    [ModCallbackCustom.POST_FAMILIAR_STATE_CHANGED] = cc.PostFamiliarStateChanged,
    [ModCallbackCustom.POST_FIRST_FLIP] = cc.PostFirstFlip,
    [ModCallbackCustom.POST_FIRST_ESAU_JR] = cc.PostFirstEsauJr,
    [ModCallbackCustom.POST_FLIP] = cc.PostFlip,
    [ModCallbackCustom.POST_GAME_STARTED_REORDERED] = cc.PostGameStartedReordered,
    [ModCallbackCustom.POST_GAME_STARTED_REORDERED_LAST] = cc.PostGameStartedReorderedLast,
    [ModCallbackCustom.POST_GREED_MODE_WAVE] = cc.PostGreedModeWave,
    [ModCallbackCustom.POST_GRID_ENTITY_BROKEN] = cc.PostGridEntityBroken,
    [ModCallbackCustom.POST_GRID_ENTITY_COLLISION] = cc.PostGridEntityCollision,
    [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN] = cc.PostGridEntityCustomBroken,
    [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION] = cc.PostGridEntityCustomCollision,
    [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT] = cc.PostGridEntityCustomInit,
    [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE] = cc.PostGridEntityCustomRemove,
    [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER] = cc.PostGridEntityCustomRender,
    [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED] = cc.PostGridEntityCustomStateChanged,
    [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE] = cc.PostGridEntityCustomUpdate,
    [ModCallbackCustom.POST_GRID_ENTITY_INIT] = cc.PostGridEntityInit,
    [ModCallbackCustom.POST_GRID_ENTITY_REMOVE] = cc.PostGridEntityRemove,
    [ModCallbackCustom.POST_GRID_ENTITY_RENDER] = cc.PostGridEntityRender,
    [ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED] = cc.PostGridEntityStateChanged,
    [ModCallbackCustom.POST_GRID_ENTITY_UPDATE] = cc.PostGridEntityUpdate,
    [ModCallbackCustom.POST_HOLY_MANTLE_REMOVED] = cc.PostHolyMantleRemoved,
    [ModCallbackCustom.POST_ITEM_DISCHARGE] = cc.PostItemDischarge,
    [ModCallbackCustom.POST_ITEM_PICKUP] = cc.PostItemPickup,
    [ModCallbackCustom.POST_KNIFE_INIT_LATE] = cc.PostKnifeInitLate,
    [ModCallbackCustom.POST_LASER_INIT_LATE] = cc.PostLaserInitLate,
    [ModCallbackCustom.POST_NEW_LEVEL_REORDERED] = cc.PostNewLevelReordered,
    [ModCallbackCustom.POST_NEW_ROOM_EARLY] = cc.PostNewRoomEarly,
    [ModCallbackCustom.POST_NEW_ROOM_REORDERED] = cc.PostNewRoomReordered,
    [ModCallbackCustom.POST_NPC_DEATH_FILTER] = cc.PostNPCDeathFilter,
    [ModCallbackCustom.POST_NPC_INIT_FILTER] = cc.PostNPCInitFilter,
    [ModCallbackCustom.POST_NPC_INIT_LATE] = cc.PostNPCInitLate,
    [ModCallbackCustom.POST_NPC_RENDER_FILTER] = cc.PostNPCRenderFilter,
    [ModCallbackCustom.POST_NPC_STATE_CHANGED] = cc.PostNPCStateChanged,
    [ModCallbackCustom.POST_NPC_UPDATE_FILTER] = cc.PostNPCUpdateFilter,
    [ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED] = cc.PostPEffectUpdateReordered,
    [ModCallbackCustom.POST_PICKUP_COLLECT] = cc.PostPickupCollect,
    [ModCallbackCustom.POST_PICKUP_INIT_FIRST] = cc.PostPickupInitFirst,
    [ModCallbackCustom.POST_PICKUP_INIT_LATE] = cc.PostPickupInitLate,
    [ModCallbackCustom.POST_PICKUP_STATE_CHANGED] = cc.PostPickupStateChanged,
    [ModCallbackCustom.POST_PIT_RENDER] = cc.PostPitRender,
    [ModCallbackCustom.POST_PIT_UPDATE] = cc.PostPitUpdate,
    [ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH] = cc.PostPlayerChangeHealth,
    [ModCallbackCustom.POST_PLAYER_CHANGE_STAT] = cc.PostPlayerChangeStat,
    [ModCallbackCustom.POST_PLAYER_CHANGE_TYPE] = cc.PostPlayerChangeType,
    [ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED] = cc.PostPlayerCollectibleAdded,
    [ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED] = cc.PostPlayerCollectibleRemoved,
    [ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE] = cc.PostPlayerFatalDamage,
    [ModCallbackCustom.POST_PLAYER_INIT_FIRST] = cc.PostPlayerInitFirst,
    [ModCallbackCustom.POST_PLAYER_INIT_LATE] = cc.PostPlayerInitLate,
    [ModCallbackCustom.POST_PLAYER_RENDER_REORDERED] = cc.PostPlayerRenderReordered,
    [ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED] = cc.PostPlayerUpdateReordered,
    [ModCallbackCustom.POST_POOP_RENDER] = cc.PostPoopRender,
    [ModCallbackCustom.POST_POOP_UPDATE] = cc.PostPoopUpdate,
    [ModCallbackCustom.POST_PRESSURE_PLATE_RENDER] = cc.PostPressurePlateRender,
    [ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE] = cc.PostPressurePlateUpdate,
    [ModCallbackCustom.POST_PROJECTILE_INIT_LATE] = cc.PostProjectileInitLate,
    [ModCallbackCustom.POST_PURCHASE] = cc.PostPurchase,
    [ModCallbackCustom.POST_ROCK_RENDER] = cc.PostRockRender,
    [ModCallbackCustom.POST_ROCK_UPDATE] = cc.PostRockUpdate,
    [ModCallbackCustom.POST_ROOM_CLEAR_CHANGED] = cc.PostRoomClearChanged,
    [ModCallbackCustom.POST_SACRIFICE] = cc.PostSacrifice,
    [ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED] = cc.PostSlotAnimationChanged,
    [ModCallbackCustom.POST_SLOT_COLLISION] = cc.PostSlotCollision,
    [ModCallbackCustom.POST_SLOT_DESTROYED] = cc.PostSlotDestroyed,
    [ModCallbackCustom.POST_SLOT_INIT] = cc.PostSlotInit,
    [ModCallbackCustom.POST_SLOT_RENDER] = cc.PostSlotRender,
    [ModCallbackCustom.POST_SLOT_UPDATE] = cc.PostSlotUpdate,
    [ModCallbackCustom.POST_SPIKES_RENDER] = cc.PostSpikesRender,
    [ModCallbackCustom.POST_SPIKES_UPDATE] = cc.PostSpikesUpdate,
    [ModCallbackCustom.POST_TEAR_INIT_LATE] = cc.PostTearInitLate,
    [ModCallbackCustom.POST_TEAR_INIT_VERY_LATE] = cc.PostTearInitVeryLate,
    [ModCallbackCustom.POST_TNT_RENDER] = cc.PostTNTRender,
    [ModCallbackCustom.POST_TNT_UPDATE] = cc.PostTNTUpdate,
    [ModCallbackCustom.POST_TRANSFORMATION] = cc.PostTransformation,
    [ModCallbackCustom.POST_TRINKET_BREAK] = cc.PostTrinketBreak,
    [ModCallbackCustom.PRE_BERSERK_DEATH] = cc.PreBerserkDeath,
    [ModCallbackCustom.PRE_CUSTOM_REVIVE] = cc.PreCustomRevive,
    [ModCallbackCustom.PRE_GET_PEDESTAL] = cc.PreGetPedestal,
    [ModCallbackCustom.PRE_ITEM_PICKUP] = cc.PreItemPickup,
    [ModCallbackCustom.PRE_NEW_LEVEL] = cc.PreNewLevel,
    [ModCallbackCustom.PRE_NPC_COLLISION_FILTER] = cc.PreNPCCollisionFilter,
    [ModCallbackCustom.PRE_NPC_UPDATE_FILTER] = cc.PreNPCUpdateFilter
})
function ____exports.getCallbacks(self)
    local instantiatedClasses = {}
    for ____, modCallbackCustom in ipairs(getEnumValues(nil, ModCallbackCustom)) do
        local constructor = MOD_CALLBACK_CUSTOM_TO_CLASS[modCallbackCustom]
        instantiatedClasses[modCallbackCustom] = __TS__New(constructor)
    end
    return instantiatedClasses
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.callbackClasses"] = function(...) 
local ____exports = {}
do
    local ____EntityTakeDmgFilter = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.EntityTakeDmgFilter")
    local EntityTakeDmgFilter = ____EntityTakeDmgFilter.EntityTakeDmgFilter
    ____exports.EntityTakeDmgFilter = EntityTakeDmgFilter
end
do
    local ____PostAmbushFinished = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostAmbushFinished")
    local PostAmbushFinished = ____PostAmbushFinished.PostAmbushFinished
    ____exports.PostAmbushFinished = PostAmbushFinished
end
do
    local ____PostAmbushStarted = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostAmbushStarted")
    local PostAmbushStarted = ____PostAmbushStarted.PostAmbushStarted
    ____exports.PostAmbushStarted = PostAmbushStarted
end
do
    local ____PostBombExploded = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostBombExploded")
    local PostBombExploded = ____PostBombExploded.PostBombExploded
    ____exports.PostBombExploded = PostBombExploded
end
do
    local ____PostBombInitLate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostBombInitLate")
    local PostBombInitLate = ____PostBombInitLate.PostBombInitLate
    ____exports.PostBombInitLate = PostBombInitLate
end
do
    local ____PostBoneSwing = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostBoneSwing")
    local PostBoneSwing = ____PostBoneSwing.PostBoneSwing
    ____exports.PostBoneSwing = PostBoneSwing
end
do
    local ____PostCollectibleEmpty = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostCollectibleEmpty")
    local PostCollectibleEmpty = ____PostCollectibleEmpty.PostCollectibleEmpty
    ____exports.PostCollectibleEmpty = PostCollectibleEmpty
end
do
    local ____PostCollectibleInitFirst = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostCollectibleInitFirst")
    local PostCollectibleInitFirst = ____PostCollectibleInitFirst.PostCollectibleInitFirst
    ____exports.PostCollectibleInitFirst = PostCollectibleInitFirst
end
do
    local ____PostCursedTeleport = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostCursedTeleport")
    local PostCursedTeleport = ____PostCursedTeleport.PostCursedTeleport
    ____exports.PostCursedTeleport = PostCursedTeleport
end
do
    local ____PostCustomRevive = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostCustomRevive")
    local PostCustomRevive = ____PostCustomRevive.PostCustomRevive
    ____exports.PostCustomRevive = PostCustomRevive
end
do
    local ____PostDiceRoomActivated = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostDiceRoomActivated")
    local PostDiceRoomActivated = ____PostDiceRoomActivated.PostDiceRoomActivated
    ____exports.PostDiceRoomActivated = PostDiceRoomActivated
end
do
    local ____PostDoorRender = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostDoorRender")
    local PostDoorRender = ____PostDoorRender.PostDoorRender
    ____exports.PostDoorRender = PostDoorRender
end
do
    local ____PostDoorUpdate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostDoorUpdate")
    local PostDoorUpdate = ____PostDoorUpdate.PostDoorUpdate
    ____exports.PostDoorUpdate = PostDoorUpdate
end
do
    local ____PostEffectInitLate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostEffectInitLate")
    local PostEffectInitLate = ____PostEffectInitLate.PostEffectInitLate
    ____exports.PostEffectInitLate = PostEffectInitLate
end
do
    local ____PostEffectStateChanged = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostEffectStateChanged")
    local PostEffectStateChanged = ____PostEffectStateChanged.PostEffectStateChanged
    ____exports.PostEffectStateChanged = PostEffectStateChanged
end
do
    local ____PostEsauJr = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostEsauJr")
    local PostEsauJr = ____PostEsauJr.PostEsauJr
    ____exports.PostEsauJr = PostEsauJr
end
do
    local ____PostFamiliarInitLate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostFamiliarInitLate")
    local PostFamiliarInitLate = ____PostFamiliarInitLate.PostFamiliarInitLate
    ____exports.PostFamiliarInitLate = PostFamiliarInitLate
end
do
    local ____PostFamiliarStateChanged = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostFamiliarStateChanged")
    local PostFamiliarStateChanged = ____PostFamiliarStateChanged.PostFamiliarStateChanged
    ____exports.PostFamiliarStateChanged = PostFamiliarStateChanged
end
do
    local ____PostFirstEsauJr = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostFirstEsauJr")
    local PostFirstEsauJr = ____PostFirstEsauJr.PostFirstEsauJr
    ____exports.PostFirstEsauJr = PostFirstEsauJr
end
do
    local ____PostFirstFlip = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostFirstFlip")
    local PostFirstFlip = ____PostFirstFlip.PostFirstFlip
    ____exports.PostFirstFlip = PostFirstFlip
end
do
    local ____PostFlip = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostFlip")
    local PostFlip = ____PostFlip.PostFlip
    ____exports.PostFlip = PostFlip
end
do
    local ____PostGameStartedReordered = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGameStartedReordered")
    local PostGameStartedReordered = ____PostGameStartedReordered.PostGameStartedReordered
    ____exports.PostGameStartedReordered = PostGameStartedReordered
end
do
    local ____PostGameStartedReorderedLast = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGameStartedReorderedLast")
    local PostGameStartedReorderedLast = ____PostGameStartedReorderedLast.PostGameStartedReorderedLast
    ____exports.PostGameStartedReorderedLast = PostGameStartedReorderedLast
end
do
    local ____PostGreedModeWave = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGreedModeWave")
    local PostGreedModeWave = ____PostGreedModeWave.PostGreedModeWave
    ____exports.PostGreedModeWave = PostGreedModeWave
end
do
    local ____PostGridEntityBroken = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityBroken")
    local PostGridEntityBroken = ____PostGridEntityBroken.PostGridEntityBroken
    ____exports.PostGridEntityBroken = PostGridEntityBroken
end
do
    local ____PostGridEntityCollision = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCollision")
    local PostGridEntityCollision = ____PostGridEntityCollision.PostGridEntityCollision
    ____exports.PostGridEntityCollision = PostGridEntityCollision
end
do
    local ____PostGridEntityCustomBroken = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomBroken")
    local PostGridEntityCustomBroken = ____PostGridEntityCustomBroken.PostGridEntityCustomBroken
    ____exports.PostGridEntityCustomBroken = PostGridEntityCustomBroken
end
do
    local ____PostGridEntityCustomCollision = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomCollision")
    local PostGridEntityCustomCollision = ____PostGridEntityCustomCollision.PostGridEntityCustomCollision
    ____exports.PostGridEntityCustomCollision = PostGridEntityCustomCollision
end
do
    local ____PostGridEntityCustomInit = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomInit")
    local PostGridEntityCustomInit = ____PostGridEntityCustomInit.PostGridEntityCustomInit
    ____exports.PostGridEntityCustomInit = PostGridEntityCustomInit
end
do
    local ____PostGridEntityCustomRemove = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomRemove")
    local PostGridEntityCustomRemove = ____PostGridEntityCustomRemove.PostGridEntityCustomRemove
    ____exports.PostGridEntityCustomRemove = PostGridEntityCustomRemove
end
do
    local ____PostGridEntityCustomRender = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomRender")
    local PostGridEntityCustomRender = ____PostGridEntityCustomRender.PostGridEntityCustomRender
    ____exports.PostGridEntityCustomRender = PostGridEntityCustomRender
end
do
    local ____PostGridEntityCustomStateChanged = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomStateChanged")
    local PostGridEntityCustomStateChanged = ____PostGridEntityCustomStateChanged.PostGridEntityCustomStateChanged
    ____exports.PostGridEntityCustomStateChanged = PostGridEntityCustomStateChanged
end
do
    local ____PostGridEntityCustomUpdate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomUpdate")
    local PostGridEntityCustomUpdate = ____PostGridEntityCustomUpdate.PostGridEntityCustomUpdate
    ____exports.PostGridEntityCustomUpdate = PostGridEntityCustomUpdate
end
do
    local ____PostGridEntityInit = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityInit")
    local PostGridEntityInit = ____PostGridEntityInit.PostGridEntityInit
    ____exports.PostGridEntityInit = PostGridEntityInit
end
do
    local ____PostGridEntityRemove = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityRemove")
    local PostGridEntityRemove = ____PostGridEntityRemove.PostGridEntityRemove
    ____exports.PostGridEntityRemove = PostGridEntityRemove
end
do
    local ____PostGridEntityRender = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityRender")
    local PostGridEntityRender = ____PostGridEntityRender.PostGridEntityRender
    ____exports.PostGridEntityRender = PostGridEntityRender
end
do
    local ____PostGridEntityStateChanged = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityStateChanged")
    local PostGridEntityStateChanged = ____PostGridEntityStateChanged.PostGridEntityStateChanged
    ____exports.PostGridEntityStateChanged = PostGridEntityStateChanged
end
do
    local ____PostGridEntityUpdate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityUpdate")
    local PostGridEntityUpdate = ____PostGridEntityUpdate.PostGridEntityUpdate
    ____exports.PostGridEntityUpdate = PostGridEntityUpdate
end
do
    local ____PostHolyMantleRemoved = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostHolyMantleRemoved")
    local PostHolyMantleRemoved = ____PostHolyMantleRemoved.PostHolyMantleRemoved
    ____exports.PostHolyMantleRemoved = PostHolyMantleRemoved
end
do
    local ____PostItemDischarge = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostItemDischarge")
    local PostItemDischarge = ____PostItemDischarge.PostItemDischarge
    ____exports.PostItemDischarge = PostItemDischarge
end
do
    local ____PostItemPickup = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostItemPickup")
    local PostItemPickup = ____PostItemPickup.PostItemPickup
    ____exports.PostItemPickup = PostItemPickup
end
do
    local ____PostKnifeInitLate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostKnifeInitLate")
    local PostKnifeInitLate = ____PostKnifeInitLate.PostKnifeInitLate
    ____exports.PostKnifeInitLate = PostKnifeInitLate
end
do
    local ____PostLaserInitLate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostLaserInitLate")
    local PostLaserInitLate = ____PostLaserInitLate.PostLaserInitLate
    ____exports.PostLaserInitLate = PostLaserInitLate
end
do
    local ____PostNewLevelReordered = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNewLevelReordered")
    local PostNewLevelReordered = ____PostNewLevelReordered.PostNewLevelReordered
    ____exports.PostNewLevelReordered = PostNewLevelReordered
end
do
    local ____PostNewRoomEarly = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNewRoomEarly")
    local PostNewRoomEarly = ____PostNewRoomEarly.PostNewRoomEarly
    ____exports.PostNewRoomEarly = PostNewRoomEarly
end
do
    local ____PostNewRoomReordered = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNewRoomReordered")
    local PostNewRoomReordered = ____PostNewRoomReordered.PostNewRoomReordered
    ____exports.PostNewRoomReordered = PostNewRoomReordered
end
do
    local ____PostNPCDeathFilter = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCDeathFilter")
    local PostNPCDeathFilter = ____PostNPCDeathFilter.PostNPCDeathFilter
    ____exports.PostNPCDeathFilter = PostNPCDeathFilter
end
do
    local ____PostNPCInitFilter = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCInitFilter")
    local PostNPCInitFilter = ____PostNPCInitFilter.PostNPCInitFilter
    ____exports.PostNPCInitFilter = PostNPCInitFilter
end
do
    local ____PostNPCInitLate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCInitLate")
    local PostNPCInitLate = ____PostNPCInitLate.PostNPCInitLate
    ____exports.PostNPCInitLate = PostNPCInitLate
end
do
    local ____PostNPCRenderFilter = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCRenderFilter")
    local PostNPCRenderFilter = ____PostNPCRenderFilter.PostNPCRenderFilter
    ____exports.PostNPCRenderFilter = PostNPCRenderFilter
end
do
    local ____PostNPCStateChanged = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCStateChanged")
    local PostNPCStateChanged = ____PostNPCStateChanged.PostNPCStateChanged
    ____exports.PostNPCStateChanged = PostNPCStateChanged
end
do
    local ____PostNPCUpdateFilter = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCUpdateFilter")
    local PostNPCUpdateFilter = ____PostNPCUpdateFilter.PostNPCUpdateFilter
    ____exports.PostNPCUpdateFilter = PostNPCUpdateFilter
end
do
    local ____PostPEffectUpdateReordered = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPEffectUpdateReordered")
    local PostPEffectUpdateReordered = ____PostPEffectUpdateReordered.PostPEffectUpdateReordered
    ____exports.PostPEffectUpdateReordered = PostPEffectUpdateReordered
end
do
    local ____PostPickupCollect = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPickupCollect")
    local PostPickupCollect = ____PostPickupCollect.PostPickupCollect
    ____exports.PostPickupCollect = PostPickupCollect
end
do
    local ____PostPickupInitFirst = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPickupInitFirst")
    local PostPickupInitFirst = ____PostPickupInitFirst.PostPickupInitFirst
    ____exports.PostPickupInitFirst = PostPickupInitFirst
end
do
    local ____PostPickupInitLate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPickupInitLate")
    local PostPickupInitLate = ____PostPickupInitLate.PostPickupInitLate
    ____exports.PostPickupInitLate = PostPickupInitLate
end
do
    local ____PostPickupStateChanged = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPickupStateChanged")
    local PostPickupStateChanged = ____PostPickupStateChanged.PostPickupStateChanged
    ____exports.PostPickupStateChanged = PostPickupStateChanged
end
do
    local ____PostPitRender = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPitRender")
    local PostPitRender = ____PostPitRender.PostPitRender
    ____exports.PostPitRender = PostPitRender
end
do
    local ____PostPitUpdate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPitUpdate")
    local PostPitUpdate = ____PostPitUpdate.PostPitUpdate
    ____exports.PostPitUpdate = PostPitUpdate
end
do
    local ____PostPlayerChangeHealth = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerChangeHealth")
    local PostPlayerChangeHealth = ____PostPlayerChangeHealth.PostPlayerChangeHealth
    ____exports.PostPlayerChangeHealth = PostPlayerChangeHealth
end
do
    local ____PostPlayerChangeStat = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerChangeStat")
    local PostPlayerChangeStat = ____PostPlayerChangeStat.PostPlayerChangeStat
    ____exports.PostPlayerChangeStat = PostPlayerChangeStat
end
do
    local ____PostPlayerChangeType = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerChangeType")
    local PostPlayerChangeType = ____PostPlayerChangeType.PostPlayerChangeType
    ____exports.PostPlayerChangeType = PostPlayerChangeType
end
do
    local ____PostPlayerCollectibleAdded = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerCollectibleAdded")
    local PostPlayerCollectibleAdded = ____PostPlayerCollectibleAdded.PostPlayerCollectibleAdded
    ____exports.PostPlayerCollectibleAdded = PostPlayerCollectibleAdded
end
do
    local ____PostPlayerCollectibleRemoved = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerCollectibleRemoved")
    local PostPlayerCollectibleRemoved = ____PostPlayerCollectibleRemoved.PostPlayerCollectibleRemoved
    ____exports.PostPlayerCollectibleRemoved = PostPlayerCollectibleRemoved
end
do
    local ____PostPlayerFatalDamage = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerFatalDamage")
    local PostPlayerFatalDamage = ____PostPlayerFatalDamage.PostPlayerFatalDamage
    ____exports.PostPlayerFatalDamage = PostPlayerFatalDamage
end
do
    local ____PostPlayerInitFirst = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerInitFirst")
    local PostPlayerInitFirst = ____PostPlayerInitFirst.PostPlayerInitFirst
    ____exports.PostPlayerInitFirst = PostPlayerInitFirst
end
do
    local ____PostPlayerInitLate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerInitLate")
    local PostPlayerInitLate = ____PostPlayerInitLate.PostPlayerInitLate
    ____exports.PostPlayerInitLate = PostPlayerInitLate
end
do
    local ____PostPlayerRenderReordered = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerRenderReordered")
    local PostPlayerRenderReordered = ____PostPlayerRenderReordered.PostPlayerRenderReordered
    ____exports.PostPlayerRenderReordered = PostPlayerRenderReordered
end
do
    local ____PostPlayerUpdateReordered = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerUpdateReordered")
    local PostPlayerUpdateReordered = ____PostPlayerUpdateReordered.PostPlayerUpdateReordered
    ____exports.PostPlayerUpdateReordered = PostPlayerUpdateReordered
end
do
    local ____PostPoopRender = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPoopRender")
    local PostPoopRender = ____PostPoopRender.PostPoopRender
    ____exports.PostPoopRender = PostPoopRender
end
do
    local ____PostPoopUpdate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPoopUpdate")
    local PostPoopUpdate = ____PostPoopUpdate.PostPoopUpdate
    ____exports.PostPoopUpdate = PostPoopUpdate
end
do
    local ____PostPressurePlateRender = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPressurePlateRender")
    local PostPressurePlateRender = ____PostPressurePlateRender.PostPressurePlateRender
    ____exports.PostPressurePlateRender = PostPressurePlateRender
end
do
    local ____PostPressurePlateUpdate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPressurePlateUpdate")
    local PostPressurePlateUpdate = ____PostPressurePlateUpdate.PostPressurePlateUpdate
    ____exports.PostPressurePlateUpdate = PostPressurePlateUpdate
end
do
    local ____PostProjectileInitLate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostProjectileInitLate")
    local PostProjectileInitLate = ____PostProjectileInitLate.PostProjectileInitLate
    ____exports.PostProjectileInitLate = PostProjectileInitLate
end
do
    local ____PostPurchase = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPurchase")
    local PostPurchase = ____PostPurchase.PostPurchase
    ____exports.PostPurchase = PostPurchase
end
do
    local ____PostRockRender = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostRockRender")
    local PostRockRender = ____PostRockRender.PostRockRender
    ____exports.PostRockRender = PostRockRender
end
do
    local ____PostRockUpdate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostRockUpdate")
    local PostRockUpdate = ____PostRockUpdate.PostRockUpdate
    ____exports.PostRockUpdate = PostRockUpdate
end
do
    local ____PostRoomClearChanged = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostRoomClearChanged")
    local PostRoomClearChanged = ____PostRoomClearChanged.PostRoomClearChanged
    ____exports.PostRoomClearChanged = PostRoomClearChanged
end
do
    local ____PostSacrifice = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSacrifice")
    local PostSacrifice = ____PostSacrifice.PostSacrifice
    ____exports.PostSacrifice = PostSacrifice
end
do
    local ____PostSlotAnimationChanged = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotAnimationChanged")
    local PostSlotAnimationChanged = ____PostSlotAnimationChanged.PostSlotAnimationChanged
    ____exports.PostSlotAnimationChanged = PostSlotAnimationChanged
end
do
    local ____PostSlotCollision = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotCollision")
    local PostSlotCollision = ____PostSlotCollision.PostSlotCollision
    ____exports.PostSlotCollision = PostSlotCollision
end
do
    local ____PostSlotDestroyed = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotDestroyed")
    local PostSlotDestroyed = ____PostSlotDestroyed.PostSlotDestroyed
    ____exports.PostSlotDestroyed = PostSlotDestroyed
end
do
    local ____PostSlotInit = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotInit")
    local PostSlotInit = ____PostSlotInit.PostSlotInit
    ____exports.PostSlotInit = PostSlotInit
end
do
    local ____PostSlotRender = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotRender")
    local PostSlotRender = ____PostSlotRender.PostSlotRender
    ____exports.PostSlotRender = PostSlotRender
end
do
    local ____PostSlotUpdate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotUpdate")
    local PostSlotUpdate = ____PostSlotUpdate.PostSlotUpdate
    ____exports.PostSlotUpdate = PostSlotUpdate
end
do
    local ____PostSpikesRender = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSpikesRender")
    local PostSpikesRender = ____PostSpikesRender.PostSpikesRender
    ____exports.PostSpikesRender = PostSpikesRender
end
do
    local ____PostSpikesUpdate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSpikesUpdate")
    local PostSpikesUpdate = ____PostSpikesUpdate.PostSpikesUpdate
    ____exports.PostSpikesUpdate = PostSpikesUpdate
end
do
    local ____PostTearInitLate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTearInitLate")
    local PostTearInitLate = ____PostTearInitLate.PostTearInitLate
    ____exports.PostTearInitLate = PostTearInitLate
end
do
    local ____PostTearInitVeryLate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTearInitVeryLate")
    local PostTearInitVeryLate = ____PostTearInitVeryLate.PostTearInitVeryLate
    ____exports.PostTearInitVeryLate = PostTearInitVeryLate
end
do
    local ____PostTNTRender = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTNTRender")
    local PostTNTRender = ____PostTNTRender.PostTNTRender
    ____exports.PostTNTRender = PostTNTRender
end
do
    local ____PostTNTUpdate = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTNTUpdate")
    local PostTNTUpdate = ____PostTNTUpdate.PostTNTUpdate
    ____exports.PostTNTUpdate = PostTNTUpdate
end
do
    local ____PostTransformation = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTransformation")
    local PostTransformation = ____PostTransformation.PostTransformation
    ____exports.PostTransformation = PostTransformation
end
do
    local ____PostTrinketBreak = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTrinketBreak")
    local PostTrinketBreak = ____PostTrinketBreak.PostTrinketBreak
    ____exports.PostTrinketBreak = PostTrinketBreak
end
do
    local ____PreBerserkDeath = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PreBerserkDeath")
    local PreBerserkDeath = ____PreBerserkDeath.PreBerserkDeath
    ____exports.PreBerserkDeath = PreBerserkDeath
end
do
    local ____PreCustomRevive = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PreCustomRevive")
    local PreCustomRevive = ____PreCustomRevive.PreCustomRevive
    ____exports.PreCustomRevive = PreCustomRevive
end
do
    local ____PreGetPedestal = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PreGetPedestal")
    local PreGetPedestal = ____PreGetPedestal.PreGetPedestal
    ____exports.PreGetPedestal = PreGetPedestal
end
do
    local ____PreItemPickup = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PreItemPickup")
    local PreItemPickup = ____PreItemPickup.PreItemPickup
    ____exports.PreItemPickup = PreItemPickup
end
do
    local ____PreNewLevel = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PreNewLevel")
    local PreNewLevel = ____PreNewLevel.PreNewLevel
    ____exports.PreNewLevel = PreNewLevel
end
do
    local ____PreNPCCollisionFilter = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PreNPCCollisionFilter")
    local PreNPCCollisionFilter = ____PreNPCCollisionFilter.PreNPCCollisionFilter
    ____exports.PreNPCCollisionFilter = PreNPCCollisionFilter
end
do
    local ____PreNPCUpdateFilter = require("lua_modules.isaacscript-common.dist.src.classes.callbacks.PreNPCUpdateFilter")
    local PreNPCUpdateFilter = ____PreNPCUpdateFilter.PreNPCUpdateFilter
    ____exports.PreNPCUpdateFilter = PreNPCUpdateFilter
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.EntityTakeDmgFilter"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireEntity = ____shouldFire.shouldFireEntity
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.EntityTakeDmgFilter = __TS__Class()
local EntityTakeDmgFilter = ____exports.EntityTakeDmgFilter
EntityTakeDmgFilter.name = "EntityTakeDmgFilter"
__TS__ClassExtends(EntityTakeDmgFilter, CustomCallback)
function EntityTakeDmgFilter.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireEntity
    self.entityTakeDmg = function(____, entity, amount, damageFlags, source, countdownFrames) return self:fire(
        entity,
        amount,
        damageFlags,
        source,
        countdownFrames
    ) end
    self.callbacksUsed = {{ModCallback.ENTITY_TAKE_DMG, {self.entityTakeDmg}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.shouldFire"] = function(...) 
local ____exports = {}
function ____exports.shouldFireAmbush(self, fireArgs, optionalArgs)
    local ambushType = table.unpack(fireArgs)
    local callbackAmbushType = table.unpack(optionalArgs)
    return callbackAmbushType == nil or callbackAmbushType == ambushType
end
function ____exports.shouldFireBomb(self, fireArgs, optionalArgs)
    local bomb = table.unpack(fireArgs)
    local callbackBombVariant, callbackSubType = table.unpack(optionalArgs)
    return (callbackBombVariant == nil or callbackBombVariant == bomb.Variant) and (callbackSubType == nil or callbackSubType == bomb.SubType)
end
function ____exports.shouldFireCollectible(self, fireArgs, optionalArgs)
    local collectible = table.unpack(fireArgs)
    local callbackCollectibleType = table.unpack(optionalArgs)
    return callbackCollectibleType == nil or callbackCollectibleType == collectible.SubType
end
function ____exports.shouldFireCollectibleType(self, fireArgs, optionalArgs)
    local _player, collectibleType = table.unpack(fireArgs)
    local callbackCollectibleType = table.unpack(optionalArgs)
    return callbackCollectibleType == nil or callbackCollectibleType == collectibleType
end
function ____exports.shouldFireDoor(self, fireArgs, optionalArgs)
    local door = table.unpack(fireArgs)
    local callbackDoorVariant = table.unpack(optionalArgs)
    local doorVariant = door:GetVariant()
    return callbackDoorVariant == nil or callbackDoorVariant == doorVariant
end
function ____exports.shouldFireEffect(self, fireArgs, optionalArgs)
    local effect = table.unpack(fireArgs)
    local callbackEffectVariant, callbackSubType = table.unpack(optionalArgs)
    return (callbackEffectVariant == nil or callbackEffectVariant == effect.Variant) and (callbackSubType == nil or callbackSubType == effect.SubType)
end
function ____exports.shouldFireEntity(self, fireArgs, optionalArgs)
    local entity = table.unpack(fireArgs)
    local callbackEntityType, callbackVariant, callbackSubType = table.unpack(optionalArgs)
    return (callbackEntityType == nil or callbackEntityType == entity.Type) and (callbackVariant == nil or callbackVariant == entity.Variant) and (callbackSubType == nil or callbackSubType == entity.SubType)
end
function ____exports.shouldFireFamiliar(self, fireArgs, optionalArgs)
    local familiar = table.unpack(fireArgs)
    local callbackFamiliarVariant, callbackSubType = table.unpack(optionalArgs)
    return (callbackFamiliarVariant == nil or callbackFamiliarVariant == familiar.Variant) and (callbackSubType == nil or callbackSubType == familiar.SubType)
end
function ____exports.shouldFireGridEntity(self, fireArgs, optionalArgs)
    local gridEntity = table.unpack(fireArgs)
    local callbackGridEntityType, callbackVariant = table.unpack(optionalArgs)
    local gridEntityType = gridEntity:GetType()
    local variant = gridEntity:GetVariant()
    return (callbackGridEntityType == nil or callbackGridEntityType == gridEntityType) and (callbackVariant == nil or callbackVariant == variant)
end
function ____exports.shouldFireGridEntityCustom(self, fireArgs, optionalArgs)
    local _gridEntity, gridEntityTypeCustom = table.unpack(fireArgs)
    local callbackGridEntityTypeCustom = table.unpack(optionalArgs)
    return callbackGridEntityTypeCustom == nil or callbackGridEntityTypeCustom == gridEntityTypeCustom
end
function ____exports.shouldFireItemPickup(self, fireArgs, optionalArgs)
    local _player, pickingUpItem = table.unpack(fireArgs)
    local callbackItemType, callbackSubtype = table.unpack(optionalArgs)
    return (callbackItemType == nil or callbackItemType == pickingUpItem.itemType) and (callbackSubtype == nil or callbackSubtype == pickingUpItem.subType)
end
function ____exports.shouldFireKnife(self, fireArgs, optionalArgs)
    local knife = table.unpack(fireArgs)
    local callbackKnifeVariant, callbackSubType = table.unpack(optionalArgs)
    return (callbackKnifeVariant == nil or callbackKnifeVariant == knife.Variant) and (callbackSubType == nil or callbackSubType == knife.SubType)
end
function ____exports.shouldFireLaser(self, fireArgs, optionalArgs)
    local laser = table.unpack(fireArgs)
    local callbackLaserVariant, callbackSubType = table.unpack(optionalArgs)
    return (callbackLaserVariant == nil or callbackLaserVariant == laser.Variant) and (callbackSubType == nil or callbackSubType == laser.SubType)
end
function ____exports.shouldFireNPC(self, fireArgs, optionalArgs)
    local npc = table.unpack(fireArgs)
    local callbackEntityType, callbackVariant, callbackSubType = table.unpack(optionalArgs)
    return (callbackEntityType == nil or callbackEntityType == npc.Type) and (callbackVariant == nil or callbackVariant == npc.Variant) and (callbackSubType == nil or callbackSubType == npc.SubType)
end
function ____exports.shouldFirePickup(self, fireArgs, optionalArgs)
    local pickup = table.unpack(fireArgs)
    local callbackPickupVariant, callbackPickupSubType = table.unpack(optionalArgs)
    return (callbackPickupVariant == nil or callbackPickupVariant == pickup.Variant) and (callbackPickupSubType == nil or callbackPickupSubType == pickup.SubType)
end
function ____exports.shouldFirePit(self, fireArgs, optionalArgs)
    local pit = table.unpack(fireArgs)
    local callbackPitVariant = table.unpack(optionalArgs)
    local pitVariant = pit:GetVariant()
    return callbackPitVariant == nil or callbackPitVariant == pitVariant
end
function ____exports.shouldFirePlayer(self, fireArgs, optionalArgs)
    local player = table.unpack(fireArgs)
    local callbackPlayerVariant, callbackCharacter = table.unpack(optionalArgs)
    local character = player:GetPlayerType()
    return (callbackPlayerVariant == nil or callbackPlayerVariant == player.Variant) and (callbackCharacter == nil or callbackCharacter == character)
end
function ____exports.shouldFirePoop(self, fireArgs, optionalArgs)
    local poop = table.unpack(fireArgs)
    local callbackPoopGridEntityVariant = table.unpack(optionalArgs)
    local poopGridEntityVariant = poop:GetVariant()
    return callbackPoopGridEntityVariant == nil or callbackPoopGridEntityVariant == poopGridEntityVariant
end
function ____exports.shouldFirePressurePlate(self, fireArgs, optionalArgs)
    local pressurePlate = table.unpack(fireArgs)
    local callbackPressurePlateVariant = table.unpack(optionalArgs)
    local pressurePlateVariant = pressurePlate:GetVariant()
    return callbackPressurePlateVariant == nil or callbackPressurePlateVariant == pressurePlateVariant
end
function ____exports.shouldFireProjectile(self, fireArgs, optionalArgs)
    local projectile = table.unpack(fireArgs)
    local callbackProjectileVariant, callbackSubType = table.unpack(optionalArgs)
    return (callbackProjectileVariant == nil or callbackProjectileVariant == projectile.Variant) and (callbackSubType == nil or callbackSubType == projectile.SubType)
end
function ____exports.shouldFireRock(self, fireArgs, optionalArgs)
    local rock = table.unpack(fireArgs)
    local callbackGridEntity, callbackVariant = table.unpack(optionalArgs)
    local gridEntityType = rock:GetType()
    local variant = rock:GetVariant()
    return (callbackGridEntity == nil or callbackGridEntity == gridEntityType) and (callbackVariant == nil or callbackVariant == variant)
end
function ____exports.shouldFireSlot(self, fireArgs, optionalArgs)
    local slot = table.unpack(fireArgs)
    local callbackSlotVariant, callbackSubType = table.unpack(optionalArgs)
    return (callbackSlotVariant == nil or callbackSlotVariant == slot.Variant) and (callbackSubType == nil or callbackSubType == slot.SubType)
end
function ____exports.shouldFireSpikes(self, fireArgs, optionalArgs)
    local spikes = table.unpack(fireArgs)
    local callbackVariant = table.unpack(optionalArgs)
    local variant = spikes:GetVariant()
    return callbackVariant == nil or callbackVariant == variant
end
function ____exports.shouldFireTNT(self, fireArgs, optionalArgs)
    local tnt = table.unpack(fireArgs)
    local callbackVariant = table.unpack(optionalArgs)
    local variant = tnt:GetVariant()
    return callbackVariant == nil or callbackVariant == variant
end
function ____exports.shouldFireTear(self, fireArgs, optionalArgs)
    local tear = table.unpack(fireArgs)
    local callbackTearVariant, callbackSubType = table.unpack(optionalArgs)
    return (callbackTearVariant == nil or callbackTearVariant == tear.Variant) and (callbackSubType == nil or callbackSubType == tear.SubType)
end
function ____exports.shouldFireTrinketType(self, fireArgs, optionalArgs)
    local _player, trinketType = table.unpack(fireArgs)
    local callbackTrinketType = table.unpack(optionalArgs)
    return callbackTrinketType == nil or callbackTrinketType == trinketType
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Spread = ____lualib.__TS__Spread
local __TS__ArraySlice = ____lualib.__TS__ArraySlice
local __TS__ArrayFindIndex = ____lualib.__TS__ArrayFindIndex
local __TS__ArraySplice = ____lualib.__TS__ArraySplice
local ____exports = {}
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
--- The base class for a custom callback. Individual custom callbacks (and validation callbacks) will
-- extend from this class.
____exports.CustomCallback = __TS__Class()
local CustomCallback = ____exports.CustomCallback
CustomCallback.name = "CustomCallback"
__TS__ClassExtends(CustomCallback, Feature)
function CustomCallback.prototype.____constructor(self, ...)
    Feature.prototype.____constructor(self, ...)
    self.subscriptions = {}
    self.fire = function(____, ...)
        local fireArgs = {...}
        for ____, ____value in ipairs(self.subscriptions) do
            local callback = ____value[1]
            local optionalArgsArray = __TS__ArraySlice(____value, 1)
            local optionalArgs = optionalArgsArray
            if self:shouldFire(fireArgs, optionalArgs) then
                local callbackCasted = callback
                local value = callbackCasted(
                    nil,
                    __TS__Spread(fireArgs)
                )
                if value ~= nil then
                    return value
                end
            end
        end
        return nil
    end
    self.shouldFire = function() return true end
end
function CustomCallback.prototype.addSubscriber(self, ...)
    local args = {...}
    local ____self_subscriptions_0 = self.subscriptions
    ____self_subscriptions_0[#____self_subscriptions_0 + 1] = args
end
function CustomCallback.prototype.removeSubscriber(self, callback)
    local subscriptionIndexMatchingCallback = __TS__ArrayFindIndex(
        self.subscriptions,
        function(____, subscription)
            local subscriptionCallback = subscription[1]
            return callback == subscriptionCallback
        end
    )
    if subscriptionIndexMatchingCallback ~= -1 then
        __TS__ArraySplice(self.subscriptions, subscriptionIndexMatchingCallback, 1)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.private.Feature"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
--- The IsaacScript standard library contains many optional features, such as the ability to create
-- custom pickups. All features are optional and are only initialized when needed. This class
-- contains elements to facilitate that.
-- 
-- Additionally, all custom callbacks extend from this class.
____exports.Feature = __TS__Class()
local Feature = ____exports.Feature
Feature.name = "Feature"
function Feature.prototype.____constructor(self)
    self.initialized = false
    self.numConsumers = 0
    if ____exports.Feature.constructedClassNames:has(self.constructor.name) then
        error(("Failed to instantiate feature class \"" .. self.constructor.name) .. "\" because it has already been instantiated once.")
    end
    ____exports.Feature.constructedClassNames:add(self.constructor.name)
end
Feature.constructedClassNames = __TS__New(Set)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostAmbushFinished"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____ambush = require("lua_modules.isaacscript-common.dist.src.functions.ambush")
local getAmbushType = ____ambush.getAmbushType
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireAmbush = ____shouldFire.shouldFireAmbush
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostAmbushFinished = __TS__Class()
local PostAmbushFinished = ____exports.PostAmbushFinished
PostAmbushFinished.name = "PostAmbushFinished"
__TS__ClassExtends(PostAmbushFinished, CustomCallback)
function PostAmbushFinished.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {ambushDone = false}}
    self.shouldFire = shouldFireAmbush
    self.postUpdate = function()
        if self.v.room.ambushDone then
            return
        end
        local room = game:GetRoom()
        local ambushDone = room:IsAmbushDone()
        if not ambushDone then
            return
        end
        self.v.room.ambushDone = true
        local ambushType = getAmbushType(nil)
        if ambushType ~= nil then
            self:fire(ambushType)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.ambush"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____AmbushType = require("lua_modules.isaacscript-common.dist.src.enums.AmbushType")
local AmbushType = ____AmbushType.AmbushType
--- Helper function to get the corresponding ambush type for the current room. Returns undefined if
-- the current room does not correspond to any particular ambush type.
function ____exports.getAmbushType(self)
    local room = game:GetRoom()
    local roomType = room:GetType()
    repeat
        local ____switch3 = roomType
        local ____cond3 = ____switch3 == RoomType.BOSS_RUSH
        if ____cond3 then
            do
                return AmbushType.BOSS_RUSH
            end
        end
        ____cond3 = ____cond3 or ____switch3 == RoomType.CHALLENGE
        if ____cond3 then
            do
                return AmbushType.CHALLENGE_ROOM
            end
        end
        do
            do
                return nil
            end
        end
    until true
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.AmbushType"] = function(...) 
local ____exports = {}
--- This is used by the `POST_AMBUSH_STARTED` and `POST_AMBUSH_FINISHED` custom callbacks.
____exports.AmbushType = {}
____exports.AmbushType.CHALLENGE_ROOM = 0
____exports.AmbushType[____exports.AmbushType.CHALLENGE_ROOM] = "CHALLENGE_ROOM"
____exports.AmbushType.BOSS_RUSH = 1
____exports.AmbushType[____exports.AmbushType.BOSS_RUSH] = "BOSS_RUSH"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostAmbushStarted"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____ambush = require("lua_modules.isaacscript-common.dist.src.functions.ambush")
local getAmbushType = ____ambush.getAmbushType
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireAmbush = ____shouldFire.shouldFireAmbush
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostAmbushStarted = __TS__Class()
local PostAmbushStarted = ____exports.PostAmbushStarted
PostAmbushStarted.name = "PostAmbushStarted"
__TS__ClassExtends(PostAmbushStarted, CustomCallback)
function PostAmbushStarted.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {ambushActive = false}}
    self.shouldFire = shouldFireAmbush
    self.postUpdate = function()
        if self.v.room.ambushActive then
            return
        end
        local room = game:GetRoom()
        local ambushActive = room:IsAmbushActive()
        if not ambushActive then
            return
        end
        self.v.room.ambushActive = true
        local ambushType = getAmbushType(nil)
        if ambushType ~= nil then
            self:fire(ambushType)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostBombExploded"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local BOMB_EXPLODE_FRAME = ____constants.BOMB_EXPLODE_FRAME
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireBomb = ____shouldFire.shouldFireBomb
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostBombExploded = __TS__Class()
local PostBombExploded = ____exports.PostBombExploded
PostBombExploded.name = "PostBombExploded"
__TS__ClassExtends(PostBombExploded, CustomCallback)
function PostBombExploded.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireBomb
    self.postBombUpdate = function(____, bomb)
        if bomb.FrameCount == BOMB_EXPLODE_FRAME then
            self:fire(bomb)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_BOMB_UPDATE, {self.postBombUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostBombInitLate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireBomb = ____shouldFire.shouldFireBomb
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostBombInitLate = __TS__Class()
local PostBombInitLate = ____exports.PostBombInitLate
PostBombInitLate.name = "PostBombInitLate"
__TS__ClassExtends(PostBombInitLate, CustomCallback)
function PostBombInitLate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFireBomb
    self.postBombUpdate = function(____, bomb)
        local ptrHash = GetPtrHash(bomb)
        if not self.v.room.firedSet:has(ptrHash) then
            self.v.room.firedSet:add(ptrHash)
            self:fire(bomb)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_BOMB_UPDATE, {self.postBombUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostBoneSwing"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local KnifeVariant = ____isaac_2Dtypescript_2Ddefinitions.KnifeVariant
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
local BONE_SWING_ANIMATIONS = __TS__New(Set, {"Swing", "Swing2", "Spin"})
____exports.PostBoneSwing = __TS__Class()
local PostBoneSwing = ____exports.PostBoneSwing
PostBoneSwing.name = "PostBoneSwing"
__TS__ClassExtends(PostBoneSwing, CustomCallback)
function PostBoneSwing.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {boneClubAnimations = __TS__New(Map)}}
    self.postKnifeRender = function(____, knife)
        if knife.Variant == KnifeVariant.BONE_CLUB then
            self:postKnifeRenderBoneClub(knife)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_KNIFE_RENDER, {self.postKnifeRender}}}
end
function PostBoneSwing.prototype.postKnifeRenderBoneClub(self, knife)
    local sprite = knife:GetSprite()
    local animation = sprite:GetAnimation()
    local ptrHash = GetPtrHash(knife)
    local animationOnLastFrame = self.v.room.boneClubAnimations:get(ptrHash)
    self.v.room.boneClubAnimations:set(ptrHash, animation)
    if animationOnLastFrame ~= nil and animation ~= animationOnLastFrame then
        self:boneClubAnimationChanged(knife, animation)
    end
end
function PostBoneSwing.prototype.boneClubAnimationChanged(self, knife, animation)
    if BONE_SWING_ANIMATIONS:has(animation) then
        self:fire(knife)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostCollectibleEmpty"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostCollectibleEmpty = __TS__Class()
local PostCollectibleEmpty = ____exports.PostCollectibleEmpty
PostCollectibleEmpty.name = "PostCollectibleEmpty"
__TS__ClassExtends(PostCollectibleEmpty, CustomCallback)
function PostCollectibleEmpty.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {collectibleTypeMap = __TS__New(Map)}}
    self.shouldFire = function(____, fireArgs, optionalArgs)
        local _collectible, oldCollectibleType = table.unpack(fireArgs)
        local callbackCollectibleType = table.unpack(optionalArgs)
        return callbackCollectibleType == nil or callbackCollectibleType == oldCollectibleType
    end
    self.postPickupUpdateCollectible = function(____, pickup)
        local collectible = pickup
        local ptrHash = GetPtrHash(collectible)
        local oldCollectibleType = self.v.room.collectibleTypeMap:get(ptrHash)
        if oldCollectibleType == nil then
            oldCollectibleType = collectible.SubType
        end
        self.v.room.collectibleTypeMap:set(ptrHash, collectible.SubType)
        if oldCollectibleType ~= collectible.SubType then
            self:collectibleTypeChanged(collectible, oldCollectibleType)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_PICKUP_UPDATE, {self.postPickupUpdateCollectible, PickupVariant.COLLECTIBLE}}}
end
function PostCollectibleEmpty.prototype.collectibleTypeChanged(self, collectible, oldCollectibleType)
    if collectible.SubType == CollectibleType.NULL then
        self:fire(collectible, oldCollectibleType)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostCollectibleInitFirst"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local ____collectibles = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
local getCollectibleIndex = ____collectibles.getCollectibleIndex
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireCollectible = ____shouldFire.shouldFireCollectible
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostCollectibleInitFirst = __TS__Class()
local PostCollectibleInitFirst = ____exports.PostCollectibleInitFirst
PostCollectibleInitFirst.name = "PostCollectibleInitFirst"
__TS__ClassExtends(PostCollectibleInitFirst, CustomCallback)
function PostCollectibleInitFirst.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {seenCollectibles = __TS__New(Set)}}
    self.shouldFire = shouldFireCollectible
    self.postPickupInitCollectible = function(____, pickup)
        local collectible = pickup
        local collectibleIndex = getCollectibleIndex(nil, collectible)
        if self.v.run.seenCollectibles:has(collectibleIndex) then
            return
        end
        self.v.run.seenCollectibles:add(collectibleIndex)
        self:fire(collectible)
    end
    self.callbacksUsed = {{ModCallback.POST_PICKUP_INIT, {self.postPickupInitCollectible, PickupVariant.COLLECTIBLE}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.collectibles"] = function(...) 
local ____exports = {}
local initQuestionMarkSprite
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleSpriteLayer = ____isaac_2Dtypescript_2Ddefinitions.CollectibleSpriteLayer
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ItemConfigChargeType = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigChargeType
local ItemConfigTagZero = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigTagZero
local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType
local PickupPrice = ____isaac_2Dtypescript_2Ddefinitions.PickupPrice
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local RenderMode = ____isaac_2Dtypescript_2Ddefinitions.RenderMode
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local itemConfig = ____cachedClasses.itemConfig
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local BLIND_ITEM_PNG_PATH = ____constants.BLIND_ITEM_PNG_PATH
local DEFAULT_ITEM_POOL_TYPE = ____constants.DEFAULT_ITEM_POOL_TYPE
local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.src.core.constantsFirstLast")
local FIRST_COLLECTIBLE_TYPE = ____constantsFirstLast.FIRST_COLLECTIBLE_TYPE
local LAST_VANILLA_COLLECTIBLE_TYPE = ____constantsFirstLast.LAST_VANILLA_COLLECTIBLE_TYPE
local ____collectibleDescriptionMap = require("lua_modules.isaacscript-common.dist.src.maps.collectibleDescriptionMap")
local COLLECTIBLE_DESCRIPTION_MAP = ____collectibleDescriptionMap.COLLECTIBLE_DESCRIPTION_MAP
local DEFAULT_COLLECTIBLE_DESCRIPTION = ____collectibleDescriptionMap.DEFAULT_COLLECTIBLE_DESCRIPTION
local ____collectibleTypeToNameMap = require("lua_modules.isaacscript-common.dist.src.maps.collectibleTypeToNameMap")
local COLLECTIBLE_TYPE_TO_NAME_MAP = ____collectibleTypeToNameMap.COLLECTIBLE_TYPE_TO_NAME_MAP
local DEFAULT_COLLECTIBLE_NAME = ____collectibleTypeToNameMap.DEFAULT_COLLECTIBLE_NAME
local ____singleUseActiveCollectibleTypesSet = require("lua_modules.isaacscript-common.dist.src.sets.singleUseActiveCollectibleTypesSet")
local SINGLE_USE_ACTIVE_COLLECTIBLE_TYPES_SET = ____singleUseActiveCollectibleTypesSet.SINGLE_USE_ACTIVE_COLLECTIBLE_TYPES_SET
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntityID = ____entities.getEntityID
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
local ____pickupVariants = require("lua_modules.isaacscript-common.dist.src.functions.pickupVariants")
local isCollectible = ____pickupVariants.isCollectible
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomListIndex = ____roomData.getRoomListIndex
local ____sprites = require("lua_modules.isaacscript-common.dist.src.functions.sprites")
local clearSprite = ____sprites.clearSprite
local spriteEquals = ____sprites.spriteEquals
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local iRange = ____utils.iRange
function initQuestionMarkSprite(self)
    local sprite = Sprite()
    sprite:Load("gfx/005.100_collectible.anm2", false)
    sprite:ReplaceSpritesheet(1, "gfx/items/collectibles/questionmark.png")
    sprite:LoadGraphics()
    return sprite
end
function ____exports.clearCollectibleSprite(self, collectible)
    ____exports.setCollectibleSprite(nil, collectible, nil)
end
function ____exports.isVanillaCollectibleType(self, collectibleType)
    return collectibleType <= LAST_VANILLA_COLLECTIBLE_TYPE
end
--- Helper function to remove the collectible from a collectible pedestal and make it appear as if a
-- player has already taken the item. This is accomplished by changing the sub-type to
-- `CollectibleType.NULL` and then setting the sprite to an empty/missing PNG file.
-- 
-- For more information, see the documentation for the "clearSprite" helper function.
function ____exports.setCollectibleEmpty(self, collectible)
    if not isCollectible(nil, collectible) then
        local entityID = getEntityID(nil, collectible)
        error("The \"setCollectibleEmpty\" function was given a non-collectible: " .. entityID)
    end
    collectible.SubType = CollectibleType.NULL
    ____exports.clearCollectibleSprite(nil, collectible)
end
--- Helper function to change the sprite of a collectible pedestal entity.
-- 
-- For more information about removing the collectible sprite, see the documentation for the
-- "clearSprite" helper function.
-- 
-- @param collectible The collectible whose sprite you want to modify.
-- @param pngPath Equal to either the spritesheet path to load (e.g.
-- "gfx/items/collectibles/collectibles_001_thesadonion.png") or undefined. If
-- undefined, the sprite will be removed, making it appear like the collectible has
-- already been taken by the player.
function ____exports.setCollectibleSprite(self, collectible, pngPath)
    if not isCollectible(nil, collectible) then
        local entityID = getEntityID(nil, collectible)
        error("The \"setCollectibleSprite\" function was given a non-collectible: " .. entityID)
    end
    local sprite = collectible:GetSprite()
    if pngPath == nil then
        clearSprite(nil, sprite, CollectibleSpriteLayer.HEAD, CollectibleSpriteLayer.ITEM_SHADOW)
    else
        sprite:ReplaceSpritesheet(CollectibleSpriteLayer.HEAD, pngPath)
        sprite:LoadGraphics()
    end
end
--- Helper function to change the collectible on a pedestal. Simply updating the `SubType` field is
-- not sufficient because the sprite will not change.
function ____exports.setCollectibleSubType(self, collectible, newCollectibleType)
    if not isCollectible(nil, collectible) then
        local entityID = getEntityID(nil, collectible)
        error("The \"setCollectibleSubType\" function was given a non-collectible: " .. entityID)
    end
    if newCollectibleType == CollectibleType.NULL then
        ____exports.setCollectibleEmpty(nil, collectible)
        return
    end
    collectible:Morph(
        EntityType.PICKUP,
        PickupVariant.COLLECTIBLE,
        newCollectibleType,
        true,
        true,
        true
    )
end
local COLLECTIBLE_ANM2_PATH = "gfx/005.100_collectible.anm2"
local GLITCHED_ITEM_THRESHOLD = 4000000000
local questionMarkSprite = initQuestionMarkSprite(nil)
--- Helper function to check in the item config if a given collectible has a given cache flag.
function ____exports.collectibleHasCacheFlag(self, collectibleType, cacheFlag)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return false
    end
    return hasFlag(nil, itemConfigItem.CacheFlags, cacheFlag)
end
--- Helper function to check if two collectible sprites have the same sprite sheet loaded.
function ____exports.collectibleSpriteEquals(self, sprite1, sprite2)
    local xStart = -1
    local xFinish = 1
    local xIncrement = 1
    local yStart = -40
    local yFinish = 10
    local yIncrement = 3
    return spriteEquals(
        nil,
        sprite1,
        sprite2,
        CollectibleSpriteLayer.HEAD,
        xStart,
        xFinish,
        xIncrement,
        yStart,
        yFinish,
        yIncrement
    )
end
--- Helper function to get the charge type that a collectible has. Returns
-- `ItemConfigChargeType.NORMAL` if the provided collectible type was not valid.
function ____exports.getCollectibleChargeType(self, collectibleType)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return ItemConfigChargeType.NORMAL
    end
    return itemConfigItem.ChargeType
end
--- Helper function to get the in-game description for a collectible. Returns "Unknown" if the
-- provided collectible type was not valid.
-- 
-- This function works for both vanilla and modded collectibles.
function ____exports.getCollectibleDescription(self, collectibleType)
    local collectibleDescription = COLLECTIBLE_DESCRIPTION_MAP:get(collectibleType)
    if collectibleDescription ~= nil then
        return collectibleDescription
    end
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem ~= nil then
        return itemConfigItem.Description
    end
    return DEFAULT_COLLECTIBLE_DESCRIPTION
end
--- Helper function to get the coin cost that a collectible item would be if it were being offered in
-- a Devil Room deal. Returns 0 if passed `CollectibleType.NULL`.
function ____exports.getCollectibleDevilCoinPrice(self, collectibleType)
    if collectibleType == CollectibleType.NULL then
        return 0
    end
    local defaultCollectiblePrice = 15
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return defaultCollectiblePrice
    end
    return itemConfigItem.DevilPrice * defaultCollectiblePrice
end
--- Helper function to get the heart cost that a collectible item would be if it were being offered
-- in a Devil Room deal. Returns 0 if passed `CollectibleType.NULL`.
function ____exports.getCollectibleDevilHeartPrice(self, collectibleType, player)
    local maxHearts = player:GetMaxHearts()
    if collectibleType == CollectibleType.NULL then
        return 0
    end
    if maxHearts == 0 then
        return PickupPrice.THREE_SOUL_HEARTS
    end
    local defaultCollectiblePrice = PickupPrice.ONE_HEART
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return defaultCollectiblePrice
    end
    local twoHeartPrice = maxHearts == 2 and PickupPrice.ONE_HEART_AND_TWO_SOUL_HEARTS or PickupPrice.TWO_HEARTS
    return itemConfigItem.DevilPrice == 2 and twoHeartPrice or PickupPrice.ONE_HEART
end
--- Helper function to get the path to a collectible PNG file. Returns the path to the question mark
-- sprite (i.e. from Curse of the Blind) if the provided collectible type was not valid.
-- 
-- Note that this does not return the file name, but the full path to the collectible's PNG file.
-- The function is named "GfxFilename" to correspond to the associated `ItemConfigItem.GfxFileName`
-- field.
function ____exports.getCollectibleGfxFilename(self, collectibleType)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return BLIND_ITEM_PNG_PATH
    end
    return itemConfigItem.GfxFileName
end
--- Mods may have to keep track of data relating to a collectible. Finding an index for these kinds
-- of data structures is difficult, since collectibles are respawned every time a player re-enters a
-- room (like all other pickups), so the `PtrHash` will change.
-- 
-- Use this function to get a unique index for a collectible to use in these data structures.
-- 
-- If your mod is upgraded, then you should use the `getPickupIndex` function instead, as it is more
-- general purpose and less prone to error (but relies on stateful tracking of pickups as the run
-- progresses).
-- 
-- Collectibles are a special case of pickups: they cannot be pushed around. (They actually can be
-- pushed, but usually will stay on the same grid index.) Thus, it is possible to generate a
-- somewhat reliable non-stateful index for collectibles. We use a 4-tuple of the room list index,
-- the grid index of the collectible in the room, the collectible's `SubType`, and the collectible's
-- `InitSeed`.
-- 
-- Collectibles that are shifted by Tainted Isaac's mechanic will have unique collectible indexes
-- because the `SubType` is different. (The collectible entities share the same `InitSeed` and
-- `PtrHash`.)
-- 
-- Collectibles that are rolled (with e.g. a D6) will have unique collectible indexes because the
-- `SubType` and `InitSeed` are different. If you want to track collectibles independently of any
-- rerolls, then you can use the `PtrHash` as an index instead. (The `PtrHash` will not persist
-- between rooms, however.)
-- 
-- Note that:
-- - The grid index is a necessary part of the collectible index because Diplopia and Crooked Penny
--   can cause two or more collectibles with the same `SubType` and `InitSeed` to exist in the same
--   room.
-- - This index will fail in the case where the player uses Diplopia or a successful Crooked Penny
--   seven or more times in the same room, since that will cause two or more collectibles with the
--   same grid index, `SubType`, and `InitSeed` to exist. (More than seven is required in non-1x1
--   rooms.)
-- - The `SubType` is a necessary part of the collectible index because Tainted Isaac will
--   continuously cause collectibles to morph into new sub-types with the same `InitSeed`.
-- - Using a collectible's position as part of the index is problematic, since players can push a
--   pedestal. (Even using the grid index does not solve this problem, since it is possible in
--   certain cases for collectibles to be spawned at a position that is not aligned with the grid,
--   and the pedestal pushed to an adjacent tile, but this case should be extremely rare.)
-- - Mega Chests spawn two collectibles on the exact same position. However, both of them will have
--   a different `InitSeed`, so this is not a problem for this indexing scheme.
-- - The indexing scheme used is different for collectibles that are inside of a Treasure Room or
--   Boss Room, in order to handle the case of the player seeing the same collectible again in a
--   post-Ascent Treasure Room or Boss Room. A 5-tuple of stage, stage type, grid index, `SubType`,
--   and `InitSeed` is used in this case. (Using the room list index or the room grid index is not
--   suitable for this purpose, since both of these values can change in the post-Ascent rooms.)
--   Even though Treasure Rooms and Boss Rooms are grouped together in this scheme, there probably
--   will not be collectibles with the same grid index, SubType, and InitSeed.
function ____exports.getCollectibleIndex(self, collectible)
    if not isCollectible(nil, collectible) then
        local entityID = getEntityID(nil, collectible)
        error("The \"getCollectibleIndex\" function was given a non-collectible: " .. entityID)
    end
    local level = game:GetLevel()
    local stage = level:GetStage()
    local stageType = level:GetStageType()
    local room = game:GetRoom()
    local roomType = room:GetType()
    local gridIndex = room:GetGridIndex(collectible.Position)
    local roomListIndex = getRoomListIndex(nil)
    if roomType == RoomType.TREASURE or roomType == RoomType.BOSS then
        return (((((((tostring(stage) .. ",") .. tostring(stageType)) .. ",") .. tostring(gridIndex)) .. ",") .. tostring(collectible.SubType)) .. ",") .. tostring(collectible.InitSeed)
    end
    return (((((tostring(roomListIndex) .. ",") .. tostring(gridIndex)) .. ",") .. tostring(collectible.SubType)) .. ",") .. tostring(collectible.InitSeed)
end
--- Helper function to get the initial amount of charges that a collectible has. Returns 0 if the
-- provided collectible type was not valid.
function ____exports.getCollectibleInitCharge(self, collectibleType)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return 0
    end
    return itemConfigItem.InitCharge
end
--- Helper function to get the `ItemType` of a collectible. Returns `ItemType.ITEM_NULL` if the
-- provided collectible type was not valid.
function ____exports.getCollectibleItemType(self, collectibleType)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return ItemType.NULL
    end
    return itemConfigItem.Type
end
--- Helper function to get the maximum amount of charges that a collectible has. Returns 0 if the
-- provided collectible type was not valid.
function ____exports.getCollectibleMaxCharges(self, collectibleType)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return 0
    end
    return itemConfigItem.MaxCharges
end
--- Helper function to get the name of a collectible. Returns "Unknown" if the provided collectible
-- type is not valid.
-- 
-- For example, `getCollectibleName(CollectibleType.SAD_ONION)` would return "Sad Onion".
-- 
-- This function works for both vanilla and modded collectibles.
function ____exports.getCollectibleName(self, collectibleType)
    local collectibleName = COLLECTIBLE_TYPE_TO_NAME_MAP:get(collectibleType)
    if collectibleName ~= nil then
        return collectibleName
    end
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem ~= nil then
        return itemConfigItem.Name
    end
    return DEFAULT_COLLECTIBLE_NAME
end
--- Helper function to get the "pedestal type" of a collectible. For example, it might be sitting on
-- top of a broken Blood Donation Machine, or it might be sitting on top of an opened Spiked Chest.
function ____exports.getCollectiblePedestalType(self, collectible)
    if not isCollectible(nil, collectible) then
        local entityID = getEntityID(nil, collectible)
        error("The \"getCollectiblePedestalType\" function was given a non-collectible: " .. entityID)
    end
    local sprite = collectible:GetSprite()
    return sprite:GetOverlayFrame()
end
--- Helper function to get a collectible's quality. For example, Mom's Knife has a quality of 4.
-- Returns 0 if the provided collectible type was not valid.
function ____exports.getCollectibleQuality(self, collectibleType)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return 0
    end
    return itemConfigItem.Quality
end
--- Helper function to get the tags of a collectible (which is the composition of zero or more
-- `ItemConfigTag`). Returns 0 if the provided collectible type is not valid.
-- 
-- For example:
-- 
-- ```ts
-- const collectibleType = CollectibleType.SAD_ONION;
-- const itemConfigTags = getCollectibleTags(collectibleType); // itemConfigTags is "18350080"
-- ```
function ____exports.getCollectibleTags(self, collectibleType)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    return itemConfigItem == nil and ItemConfigTagZero or itemConfigItem.Tags
end
--- Helper function to get an array that represents the range from the first collectible type to the
-- last vanilla collectible type. This will include integers that do not represent any valid
-- collectible types.
-- 
-- This function is only useful when building collectible type objects. For most purposes, you
-- should use the `getVanillaCollectibleArray` or `getVanillaCollectibleSet` helper functions
-- instead.
function ____exports.getVanillaCollectibleTypeRange(self)
    return iRange(nil, FIRST_COLLECTIBLE_TYPE, LAST_VANILLA_COLLECTIBLE_TYPE)
end
--- Returns true if the item type in the item config is equal to `ItemType.ITEM_ACTIVE`.
function ____exports.isActiveCollectible(self, collectibleType)
    local itemType = ____exports.getCollectibleItemType(nil, collectibleType)
    return itemType == ItemType.ACTIVE
end
--- Returns true if the collectible has a red question mark sprite.
-- 
-- Note that this function will not work properly in a render callback with the `RenderMode` set to
-- `RenderMode.WATER_REFLECT`. If this is detected, this function will throw a run-time error.
function ____exports.isBlindCollectible(self, collectible)
    if not isCollectible(nil, collectible) then
        local entityID = getEntityID(nil, collectible)
        error("The \"isBlindCollectible\" function was given a non-collectible: " .. entityID)
    end
    local room = game:GetRoom()
    local renderMode = room:GetRenderMode()
    if renderMode == RenderMode.WATER_REFLECT then
        error("The \"isBlindCollectible\" function will not work properly in a render callback with the render mode equal to \"RenderMode.WATER_REFLECT\". Make sure that you properly account for this case if you are calling this function in a render callback.")
    end
    local sprite = collectible:GetSprite()
    local animation = sprite:GetAnimation()
    local frame = sprite:GetFrame()
    questionMarkSprite:SetFrame(animation, frame)
    return ____exports.collectibleSpriteEquals(nil, sprite, questionMarkSprite)
end
--- Returns whether or not the given collectible is a "glitched" item. All items are replaced by
-- glitched items once a player has TMTRAINER. However, glitched items can also "naturally" appear
-- in secret rooms and I AM ERROR rooms if the "Corrupted Data" achievement is unlocked.
function ____exports.isGlitchedCollectible(self, pickup)
    return pickup.Variant == PickupVariant.COLLECTIBLE and pickup.SubType > GLITCHED_ITEM_THRESHOLD
end
--- Returns true if the collectible has the "Hidden" attribute in the item config.
-- 
-- Hidden collectibles will not show up in any pools and Eden will not start with them.
function ____exports.isHiddenCollectible(self, collectibleType)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    return itemConfigItem ~= nil and itemConfigItem.Hidden
end
function ____exports.isModdedCollectibleType(self, collectibleType)
    return not ____exports.isVanillaCollectibleType(nil, collectibleType)
end
--- Returns true if the item type in the item config is equal to `ItemType.ITEM_PASSIVE` or
-- `ItemType.ITEM_FAMILIAR`.
function ____exports.isPassiveCollectible(self, collectibleType)
    local itemType = ____exports.getCollectibleItemType(nil, collectibleType)
    return itemType == ItemType.PASSIVE or itemType == ItemType.FAMILIAR
end
--- Helper function to determine if a particular collectible will disappear from the player's
-- inventory upon use. Note that this will not work will modded items, as there is no way to
-- dynamically know if a modded item will disappear.
function ____exports.isSingleUseCollectible(self, collectibleType)
    return SINGLE_USE_ACTIVE_COLLECTIBLE_TYPES_SET:has(collectibleType)
end
function ____exports.isValidCollectibleType(self, collectibleType)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    return itemConfigItem ~= nil
end
--- Helper function to generate a new sprite based on a collectible. If the provided collectible type
-- is invalid, a sprite with a Curse of the Blind question mark will be returned.
function ____exports.newCollectibleSprite(self, collectibleType)
    local sprite = Sprite()
    sprite:Load(COLLECTIBLE_ANM2_PATH, false)
    clearSprite(nil, sprite)
    local gfxFileName = ____exports.getCollectibleGfxFilename(nil, collectibleType)
    sprite:ReplaceSpritesheet(CollectibleSpriteLayer.HEAD, gfxFileName)
    sprite:LoadGraphics()
    return sprite
end
--- Helper function to put a message in the log.txt file to let the Rebirth Item Tracker know that it
-- should remove an item.
-- 
-- The "item tracker" in this function does not refer to the in-game item tracker, but rather to the
-- Python program located at: https://github.com/Rchardon/RebirthItemTracker
-- 
-- This function is useful when you need to add a "fake" collectible to a player. Note that calling
-- this function is not necessary when removing items from players. For example, when you remove a
-- collectible with the `EntityPlayer.RemoveCollectible` method, a proper message is sent to the log
-- the item tracker will automatically remove it.
function ____exports.removeCollectibleFromItemTracker(self, collectibleType)
    local collectibleName = ____exports.getCollectibleName(nil, collectibleType)
    Isaac.DebugString(((("Removing collectible " .. tostring(collectibleType)) .. " (") .. collectibleName) .. ") on player 0 (Player)")
end
--- Helper function to remove all pickup delay on a collectible. By default, collectibles have a 20
-- frame delay before they can be picked up by a player.
function ____exports.removeCollectiblePickupDelay(self, collectible)
    if not isCollectible(nil, collectible) then
        local entityID = getEntityID(nil, collectible)
        error("The \"removeCollectiblePickupDelay\" function was given a non-collectible: " .. entityID)
    end
    collectible.Wait = 0
end
--- Helper function to set a collectible sprite to a question mark (i.e. how collectibles look when
-- the player has Curse of the Blind).
function ____exports.setCollectibleBlind(self, collectible)
    if not isCollectible(nil, collectible) then
        local entityID = getEntityID(nil, collectible)
        error("The \"setCollectibleBlind\" function was given a non-collectible: " .. entityID)
    end
    ____exports.setCollectibleSprite(nil, collectible, BLIND_ITEM_PNG_PATH)
end
--- Helper function to change a collectible into a "glitched" item (like the ones that appear when
-- the player has TMTRAINER).
function ____exports.setCollectibleGlitched(self, collectible)
    if not isCollectible(nil, collectible) then
        local entityID = getEntityID(nil, collectible)
        error("The \"setCollectibleGlitched\" function was given a non-collectible: " .. entityID)
    end
    local player = Isaac.GetPlayer()
    local hasTMTRAINER = player:HasCollectible(CollectibleType.TMTRAINER)
    if not hasTMTRAINER then
        player:AddCollectible(CollectibleType.TMTRAINER, 0, false)
    end
    local itemPool = game:GetItemPool()
    local collectibleType = itemPool:GetCollectible(DEFAULT_ITEM_POOL_TYPE)
    ____exports.setCollectibleSubType(nil, collectible, collectibleType)
    if not hasTMTRAINER then
        player:RemoveCollectible(CollectibleType.TMTRAINER)
    end
end
--- Helper function to put a message in the log.txt file to let the Rebirth Item Tracker know that
-- the build has been rerolled.
function ____exports.setCollectiblesRerolledForItemTracker(self)
    Isaac.DebugString("Added 3 Collectibles")
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.collectibleDescriptionMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
____exports.DEFAULT_COLLECTIBLE_DESCRIPTION = "Unknown"
--- Maps collectible types to the real English descriptions from the "stringtable.sta" file.
-- 
-- This is a temporary map due to missing features in the vanilla API. (Otherwise, this would be
-- converted to a type-safe object.)
____exports.COLLECTIBLE_DESCRIPTION_MAP = __TS__New(Map, {
    {1, "Tears up"},
    {2, "Triple shot"},
    {3, "Homing shots"},
    {4, "DMG up"},
    {5, "Boomerang tears"},
    {6, "Tears up + range down"},
    {7, "DMG up"},
    {8, "Friends 'till the end"},
    {9, "Fly love"},
    {10, "Projectile protection"},
    {11, "Extra life"},
    {12, "All stats up!"},
    {13, "Poison touch + speed up"},
    {14, "Speed and range up"},
    {15, "HP up"},
    {16, "HP up"},
    {17, "99 keys"},
    {18, "$$$"},
    {19, "10 bombs"},
    {20, "We all float down here..."},
    {21, "The end is near"},
    {22, "HP up"},
    {23, "HP up"},
    {24, "HP up"},
    {25, "HP up"},
    {26, "HP up"},
    {27, "Speed up"},
    {28, "Speed up"},
    {29, "Range up"},
    {30, "Range up"},
    {31, "Range up"},
    {32, "Tears up"},
    {33, "Temporary flight"},
    {34, "Temporary DMG up"},
    {35, "Mass room damage"},
    {36, "Plop!"},
    {37, "Reusable bomb buddy"},
    {38, "Reusable tear burst"},
    {39, "Mass paralysis"},
    {40, "Become the bomb!"},
    {41, "Mass fear"},
    {42, "Reusable ranged bomb"},
    {44, "Teleport!"},
    {45, "Reusable regeneration"},
    {46, "Luck up"},
    {47, "Reusable air strike"},
    {48, "Piercing shots"},
    {49, "BLLLARRRRGGG!"},
    {50, "DMG up"},
    {51, "DMG up"},
    {52, "???"},
    {53, "Item snatcher"},
    {54, "Full visible map"},
    {55, "Eye in the back of your head"},
    {56, "Oops..."},
    {57, "Attack fly"},
    {58, "Temporary invincibility"},
    {60, "Building bridges"},
    {62, "Kills heal"},
    {63, "Stores energy"},
    {64, "50% off"},
    {65, "Summon bombs"},
    {66, "Temporary enemy slowdown"},
    {67, "Friends 'till the end"},
    {68, "Laser tears"},
    {69, "Charge shots"},
    {70, "Speed + DMG up"},
    {71, "Speed + range up"},
    {72, "Tears + faith up"},
    {73, "Gotta meat 'em all"},
    {74, "+25 coins"},
    {75, "Better pills"},
    {76, "I've seen everything"},
    {77, "Temporary badass"},
    {78, "Reusable soul protection"},
    {79, "DMG + speed up"},
    {80, "DMG + tears up"},
    {81, "9 lives"},
    {82, "Demon wings"},
    {83, "Temporary demon form"},
    {84, "Reusable level skip"},
    {85, "Reusable card generator "},
    {86, "Summon Monstro"},
    {87, "Cross tears"},
    {88, "Attack buddy"},
    {89, "Slow effect"},
    {90, "DMG up"},
    {91, "See-through doors"},
    {92, "+2 hearts"},
    {93, "Temporary Man-Pac"},
    {94, "Gives money"},
    {95, "Friends 'till the bbbbzzzt"},
    {96, "Gives kisses"},
    {97, "Reusable item generator"},
    {98, "Soul generator"},
    {99, "Sticky friend"},
    {100, "Psychic friend"},
    {101, "All stats up"},
    {102, "Reusable pill generator"},
    {103, "Poison damage"},
    {104, "Split shot"},
    {105, "Reroll your destiny"},
    {106, "Bigger boom"},
    {107, "Cut and run"},
    {108, "Damage resistance"},
    {109, "$$$ = DMG"},
    {110, "Freeze effect"},
    {111, "Toot on command"},
    {112, "Extra protection"},
    {113, "Auto-turret friend"},
    {114, "Stab stab stab"},
    {115, "Spectral tears"},
    {116, "Quicker charge"},
    {117, "Protective buddy"},
    {118, "Blood laser barrage"},
    {119, "HP up"},
    {120, "Tears + speed up, DMG down"},
    {121, "HP + DMG up, speed down"},
    {122, "Curse up"},
    {123, "Temporary buddy generator"},
    {124, "It's a mystery"},
    {125, "Homing bombs"},
    {126, "Feel my pain"},
    {127, "I don't remember..."},
    {128, "Attack fly"},
    {129, "HP up"},
    {130, "Flight + dash attack"},
    {131, "Gives bombs"},
    {132, "My Xmas present"},
    {133, "Soul converter"},
    {134, "Cursed?"},
    {135, "Portable blood bank"},
    {136, "Friends 'till the end"},
    {137, "Remote bomb detonation"},
    {138, "DMG + HP up"},
    {139, "More trinket room"},
    {140, "+5 poison bombs"},
    {141, "Ultimate grand supreme"},
    {142, "Pray for a miracle"},
    {143, "Speed + shot speed up"},
    {144, "He's greedy"},
    {145, "Reusable fly hive"},
    {146, "Reusable eternity "},
    {147, "Rocks don't stand a chance"},
    {148, "Fly revenge"},
    {149, "Explosive shots"},
    {150, "Tooth shot"},
    {151, "They grow inside"},
    {152, "Extra laser"},
    {153, "Quad shot"},
    {154, "DMG up"},
    {155, "Plop!"},
    {156, "Item martyr"},
    {157, "RAGE!"},
    {158, "I see my future"},
    {159, "Scary"},
    {160, "Holy white death"},
    {161, "Eternal life?"},
    {162, "Blessing of protection"},
    {163, "Spectral buddy"},
    {164, "Reusable flames"},
    {165, "Shot speed + damage up"},
    {166, "Reroll the basics"},
    {167, "Double shot buddy"},
    {168, "On-demand air strike"},
    {169, "Mega tears"},
    {170, "Daddy's love"},
    {171, "Mass enemy slowdown + damage"},
    {172, "My fate protects me"},
    {173, "Blessing of purity"},
    {174, "Random buddy"},
    {175, "Opens all doors..."},
    {176, "HP + shot speed up"},
    {177, "Gamble 24/7"},
    {178, "Splash!"},
    {179, "Flight eternal"},
    {180, "Toot on touch"},
    {181, "Flight + holy death"},
    {182, "Homing shots + DMG up"},
    {183, "Tears + shot speed up"},
    {184, "Flight + HP up"},
    {185, "Flight + spectral tears"},
    {186, "Mass enemy damage at a cost"},
    {187, "Swing it"},
    {188, "Mirrored buddy"},
    {189, "All stats up"},
    {190, "99 bombs"},
    {191, "Rainbow tears"},
    {192, "Temporary psychic shot"},
    {193, "DMG + HP up"},
    {194, "Shot speed up"},
    {195, "What's all this...?"},
    {196, "Tears up"},
    {197, "Damage + range up"},
    {198, "Stuff"},
    {199, "Better chest loot +2 keys"},
    {200, "Charm tears"},
    {201, "DMG up + concussive tears"},
    {202, "Golden touch"},
    {203, "1+1 free 4Evar"},
    {204, "Filled with goodies"},
    {205, "Infinite charge... at a cost"},
    {206, "DMG + tears up. An out-of-body experience!"},
    {207, "Gotta lick 'em all!"},
    {208, "DMG + challenge up"},
    {209, "Toxic blast +5 bombs"},
    {210, "Unbreakable"},
    {211, "Spider revenge"},
    {212, "Eternal life?"},
    {213, "Shielded tears"},
    {214, "Toxic blood"},
    {215, "He accepts your offering"},
    {216, "DMG + evil up"},
    {217, "You feel itchy..."},
    {218, "Regeneration + HP up"},
    {219, "HP up"},
    {220, "Tear blasts +5 bombs"},
    {221, "Bouncing tears"},
    {222, "Anti-gravity tears + tears up"},
    {223, "It hurts so good +5 bombs"},
    {224, "Bursting shots + tears up"},
    {225, "Sweet suffering"},
    {226, "HP up x3"},
    {227, "My life savings"},
    {228, "Fear shot + tears up"},
    {229, "Charged burst attack"},
    {230, "Evil + DMG up + fear shot"},
    {231, "Sticky feet..."},
    {232, "Let's slow this down a bit..."},
    {233, "Orbiting tears + range up"},
    {234, "Infestation shot"},
    {236, "Turdy touch"},
    {237, "Piercing shots + DMG up"},
    {238, "???"},
    {239, "???"},
    {240, "Some stats up, some stats down"},
    {241, "Wealth... but at what cost?"},
    {242, "Blocks damage... sometimes"},
    {243, "You feel guarded"},
    {244, "It's still being tested..."},
    {245, "Double shot"},
    {246, "Secrets"},
    {247, "Your friends rule"},
    {248, "Giant spiders and flies"},
    {249, "More options"},
    {250, "1+1 BOOM!"},
    {251, "Extra card room"},
    {252, "Extra pill room"},
    {253, "HP + luck up"},
    {254, "DMG + range up"},
    {255, "Tears + shot speed up"},
    {256, "Burning blast +5 bombs"},
    {257, "Flaming tears"},
    {258, "Syntax error"},
    {259, "DMG up + fear shot"},
    {260, "Curse immunity + evil up"},
    {261, "Short range mega tears"},
    {262, "Evil up. Your enemies will pay!"},
    {263, "Rune mimic"},
    {264, "Revenge fly"},
    {265, "Immortal friend"},
    {266, "Sticky babies"},
    {267, "We worked out all the kinks"},
    {268, "Infested friend"},
    {269, "Bloody friend"},
    {270, "Blood sucker"},
    {271, "?"},
    {272, "Big Beautiful Fly"},
    {273, "Explosive thoughts"},
    {274, "Sworn protector"},
    {275, "Evil friend"},
    {276, "Protect it"},
    {277, "Fear him"},
    {278, "He wants to take your life"},
    {279, "Fat protector"},
    {280, "She loves you"},
    {281, "Scape goat"},
    {282, "It's time you learned how"},
    {283, "REEROLLLLL!"},
    {284, "Reroll into something else"},
    {285, "Reroll enemies"},
    {286, "Card mimic"},
    {287, "Tome of knowledge"},
    {288, "It's a box of spiders"},
    {289, "Flame on"},
    {290, "Save your life"},
    {291, "..."},
    {292, "Reusable evil... but at what cost?"},
    {293, "Krampus rage"},
    {294, "Reusable knock-back"},
    {295, "Pay to win"},
    {296, "Convert your soul"},
    {297, "? ?"},
    {298, "You feel stumped"},
    {299, "Speed down + rage is building"},
    {300, "Ramming speed"},
    {301, "HP up + you feel protected"},
    {302, "Stompy"},
    {303, "You feel refreshed and protected"},
    {304, "You feel balanced"},
    {305, "Poison tears"},
    {306, "Piercing shots + speed up"},
    {307, "All stats up"},
    {308, "Trail of tears"},
    {309, "Tears up + knock-back shot"},
    {310, "DMG up, tears + shot speed down"},
    {311, "Sweet revenge"},
    {312, "HP up + you feel healthy"},
    {313, "Holy shield"},
    {314, "HP up + speed down + you feel stompy"},
    {315, "Magnetic tears"},
    {316, "Cursed charge shot"},
    {317, "Toxic splash damage"},
    {318, "Conjoined friend"},
    {319, "Near-sighted friend"},
    {320, "Controlled friend"},
    {321, "The ol' ball and chain"},
    {322, "Mongo friend"},
    {323, "Collected tears"},
    {324, "Undefined"},
    {325, "Lose your head"},
    {326, "Invincibility at a cost"},
    {327, "Fate chosen"},
    {328, "Fate chosen"},
    {329, "Controlled tears"},
    {330, "DMG down + tears way up"},
    {331, "God tears"},
    {332, "Eternal life?"},
    {333, "I know all"},
    {334, "I feel all"},
    {335, "I am all"},
    {336, "Toxic aura tears"},
    {337, "I think it's broken"},
    {338, "It will never leave you"},
    {339, "Evil + range + shot speed up"},
    {340, "Speed up + size down"},
    {341, "Tears + shot speed up"},
    {342, "HP + tears up + shot speed down"},
    {343, "Luck up"},
    {344, "Evil up"},
    {345, "DMG + range up"},
    {346, "HP up"},
    {347, "Double item vision"},
    {348, "Pill mimic"},
    {349, "Flip a coin"},
    {350, "Mass poison"},
    {351, "Giga fart!"},
    {352, "Be gentle..."},
    {353, "Cross blast + 5 bombs"},
    {354, "HP up. Don't swallow the prize!"},
    {355, "Range + luck up"},
    {356, "Active power up"},
    {357, "Double your friends"},
    {358, "Double wiz shot!"},
    {359, "Stick it to 'em!"},
    {360, "Dark friend"},
    {361, "Your fate beside you"},
    {362, "What's in the box?"},
    {363, "Protective friend"},
    {364, "Friendly fly"},
    {365, "Lost protector"},
    {366, "We put bombs in your bombs!"},
    {367, "Egg sack bombs!"},
    {368, "Intensifying tears"},
    {369, "Transcendent tears"},
    {370, "Range + tears up"},
    {371, "Embrace chaos"},
    {372, "Bbbzzzzzt! "},
    {373, "Accuracy brings power"},
    {374, "Holy death shot"},
    {375, "Blast resistance"},
    {376, "Never ending stores!"},
    {377, "Spider love"},
    {378, "Uh oh..."},
    {379, "Wide shot"},
    {380, "Money talks"},
    {381, "Tears up + your future shines brighter"},
    {382, "Gotta fetch 'em all!"},
    {383, "Remote tear detonation"},
    {384, "A gurd of your own!"},
    {385, "Bumbo want coin!"},
    {386, "Rerolls rocks"},
    {387, "Peace be with you"},
    {388, "He wants your keys!"},
    {389, "Rune generator"},
    {390, "Sworn friend"},
    {391, "Turn your enemy"},
    {392, "The heavens will change you"},
    {393, "The kiss of death"},
    {394, "Directed tears"},
    {395, "Laser ring tears"},
    {396, "Short cutter"},
    {397, "Controlled tears"},
    {398, "Shrink shot!"},
    {399, "Consume thy enemy!"},
    {400, "Your destiny"},
    {401, "Sticky bomb shot"},
    {402, "!!!"},
    {403, "Mod buddy"},
    {404, "He farts"},
    {405, "Double tap glitch"},
    {406, "Reroll stats"},
    {407, "Aura stat boost"},
    {408, "Call to the void"},
    {409, "I reward an empty vessel"},
    {410, "Eye shot"},
    {411, "Their blood brings rage!"},
    {412, "Feed them hate"},
    {413, "Feed them love"},
    {414, "There's options"},
    {415, "The untainted gain power"},
    {416, "More money!"},
    {417, "Damage booster"},
    {418, "Rainbow effects!"},
    {419, "I-Teleport!"},
    {420, "Spin the black circle!"},
    {421, "Love toots"},
    {422, "Turn back time"},
    {423, "Protect me from myself"},
    {424, "More sacks!"},
    {425, "Scared of the dark?"},
    {426, "Follows my every move..."},
    {427, "Booom!"},
    {428, "You feel cozy"},
    {429, "Penny tears"},
    {430, "Turret follower"},
    {431, "ydduB Buddy"},
    {432, "Prize bombs"},
    {433, "Me! And my shaaaadow!"},
    {434, "Bug catcher"},
    {435, "4-way buddy!"},
    {436, "Don't cry over it..."},
    {437, "Roll again"},
    {438, "Tears up"},
    {439, "What's inside?"},
    {440, "Matt's kidney stone"},
    {441, "Laser breath"},
    {442, "Loss is power"},
    {443, "Trick or treat?"},
    {444, "He's a bleeder!"},
    {445, "Bark at the moon!"},
    {446, "Toxic breath"},
    {447, "Crying makes me toot"},
    {448, "Blood and guts!"},
    {449, "It itches..."},
    {450, "Gold tears!"},
    {451, "I see the future"},
    {452, "I'm leaking..."},
    {453, "Bone tears!"},
    {454, "Hold me!"},
    {455, "I remember this..."},
    {456, "HP up"},
    {457, "Hard headed!"},
    {458, "What's in there?"},
    {459, "Booger tears!"},
    {460, "Blind tears!"},
    {461, "Egg tears!"},
    {462, "Possessed tears!"},
    {463, "Acid tears!"},
    {464, "A gift from above"},
    {465, "360 tears!"},
    {466, "Outbreak!"},
    {467, "Watch where you point that!"},
    {468, "It follows"},
    {469, ":("},
    {470, "Lil hush!"},
    {471, "Ain't he cute?"},
    {472, "Hail to the king baby"},
    {473, "Chub chub"},
    {474, "You broke it!"},
    {475, "My last resort"},
    {476, "What will it be?"},
    {477, "Consume"},
    {478, "Stop!"},
    {479, "Trinket melter!"},
    {480, "Gain more friends!"},
    {481, "109"},
    {482, "Change"},
    {483, "BOOOOOOOOOM!"},
    {484, "I can't believe it's not butter bean!"},
    {485, "50/50"},
    {486, "I feel numb..."},
    {487, "A pound of flesh..."},
    {488, "Waggles a finger"},
    {489, "Reroll forever"},
    {490, "..."},
    {491, "Pills pills pills!"},
    {492, "Yo listen!"},
    {493, "Panic = power"},
    {494, "Electric tears"},
    {495, "Flame tears"},
    {496, "Needle shot"},
    {497, "Camo kid"},
    {498, "You feel very balanced"},
    {499, "Peace be with you"},
    {500, "Gives sacks"},
    {501, "Money = health!"},
    {502, "Creep shots"},
    {503, "Big brother is watching"},
    {504, "Friendly fly"},
    {505, "Gotta catch em..."},
    {506, "Watch your back!"},
    {507, "More blood!"},
    {508, "It's sharp!"},
    {509, "Bloody friend"},
    {510, "Unleash the power!"},
    {511, "He's violent"},
    {512, "Nothing can escape"},
    {513, "Party time!"},
    {514, "Lag!"},
    {515, "Wrapped up nice for you!"},
    {516, "Sprinkles."},
    {517, "Rapid bomb drops"},
    {518, "What could it be?!"},
    {519, "Delirious friend"},
    {520, "Bloody recharge"},
    {521, "Allow 6 weeks for delivery"},
    {522, "Power of the mind"},
    {523, "Pack and unpack"},
    {524, "Static tears"},
    {525, "You're tearing me apart!"},
    {526, "Lil harbingers!"},
    {527, "Caaan do!"},
    {528, "Eclipsed by the moon"},
    {529, "Eyeball tears"},
    {530, "Just hope you're not next..."},
    {531, "I'm seeing red..."},
    {532, "Feed them!"},
    {533, "Smite thy enemy"},
    {534, "Extra active item room"},
    {535, "You feel safe"},
    {536, "He demands a sacrifice"},
    {537, "Puking buddy"},
    {538, "Choking hazard"},
    {539, "Sacrificial insemination"},
    {540, "Skipping tears"},
    {541, "HP up?"},
    {542, "Projectile shield"},
    {543, "Portable sanctuary"},
    {544, "Stabbing time"},
    {545, "Rise from the grave"},
    {546, "Father's blessing"},
    {547, "Tears up + you feel empty"},
    {548, "Fetch!"},
    {549, "Everything hurts"},
    {550, "It feels cursed"},
    {551, "It feels cursed"},
    {552, "Lost but not forgotten"},
    {553, "Spore shot"},
    {554, "4me"},
    {555, "Pain from gain"},
    {556, "Temporary demon form"},
    {557, "Reusable fortunes"},
    {558, "More eyes"},
    {559, "Zap!"},
    {560, "No it doesn't..."},
    {561, "DMG down + tears up + you feel nutty"},
    {562, "It's only up from there"},
    {563, "Random blast +5 bombs"},
    {564, "Tears + shot speed up"},
    {565, "What a cute little thing!"},
    {566, "Sweet dreams"},
    {567, "Keep the flame burning"},
    {568, "Double tap shield"},
    {569, "Bleed me dry"},
    {570, "Tasty rainbow"},
    {571, "Speed up + your feet feel stronger"},
    {572, "DMG up + range up + controlled tears"},
    {573, "Halo of tears"},
    {574, "Purifying light"},
    {575, "Invasive friend"},
    {576, "Filthy friends"},
    {577, "A king's fortune... but at what cost?"},
    {578, "Party time!"},
    {579, "Divine blade"},
    {580, "Explore the other side"},
    {581, "Flamboyant protector"},
    {582, "Tears up. A mind changing experience!"},
    {583, "Rocket propulsion +5 bombs"},
    {584, "Spiritual companionship"},
    {585, "A sacred offering"},
    {586, "May you get what you came for"},
    {588, "Radiant victory"},
    {589, "The moon's blessing shines upon you"},
    {590, "Speed up + you feel elusive"},
    {591, "HP up + you feel pretty"},
    {592, "Born to rock"},
    {593, "Double tap dash"},
    {594, "You're a gas giant!"},
    {595, "Ring of tears"},
    {596, "Ice tears"},
    {597, "Open the floodgates"},
    {598, "Size down"},
    {599, "Extra curse rooms"},
    {600, "Tears up"},
    {601, "Tears up, you feel forgiven"},
    {602, "Exclusive access!"},
    {603, "Instant energy!"},
    {604, "Mother's strength"},
    {605, "Plop!"},
    {606, "Stare into the abyss"},
    {607, "Messy friend"},
    {608, "Iced iced baby"},
    {609, "???"},
    {610, "Fat buddy"},
    {611, "Hear my pain"},
    {612, "Protect him"},
    {614, "Bloody blast + HP up"},
    {615, "Puffy buddy"},
    {616, "It burns"},
    {617, "Magnetizing tears"},
    {618, "Delicious!"},
    {619, "???"},
    {621, "Full HP + temporary DMG up"},
    {622, "In the beginning"},
    {623, "Open your enemies"},
    {624, "Collect them all!"},
    {625, "I'm a big boy now!"},
    {626, "???"},
    {627, "???"},
    {628, "Where am I?"},
    {629, "Defense drone"},
    {631, "Slice but no dice"},
    {632, "Luck up + you feel protected"},
    {633, "Ascended"},
    {634, "Help from beyond"},
    {635, "Bait and switch"},
    {636, "Time to start over"},
    {637, "They pack a punch!"},
    {638, "Erase thy enemy"},
    {639, "Gross!"},
    {640, "Unleash their sorrow"},
    {641, "Spill your guts"},
    {642, "All your desires fulfilled"},
    {643, "Awaken your faith"},
    {644, "+1 to lowest stat"},
    {645, "Itching for revenge"},
    {646, "Demon blast +5 bombs"},
    {647, "Beat the juice out of them!"},
    {649, "Bouncy friend"},
    {650, "Play time!"},
    {651, "Follow the light"},
    {652, "Kick it!"},
    {653, "Begone!"},
    {654, "Worse pills + evil up"},
    {655, "Let it rip!"},
    {656, "A king's fortune... but at what cost?"},
    {657, "Clogged enemies"},
    {658, "Micro friends"},
    {659, "Tear size + range up"},
    {660, "A link to your future"},
    {661, "They lurk inside"},
    {663, "You feel prickly"},
    {664, "All you can eat"},
    {665, "An eye for secrets"},
    {667, "A helping hand"},
    {668, "..."},
    {669, "All stats up"},
    {670, "There might be options"},
    {671, "Power of love"},
    {672, "Blood money"},
    {673, "Deliver me from evil"},
    {674, "Unfinished business"},
    {675, "Shards of knowledge"},
    {676, "It multiplies"},
    {677, "The true out-of-body experience!"},
    {678, "Fetus shots"},
    {679, "Abyssal friend"},
    {680, "Oh no..."},
    {681, "It hungers"},
    {682, "Clingy buddy"},
    {683, "Break your enemies"},
    {684, "Out for blood"},
    {685, "Your faith grows"},
    {686, "Power of faith"},
    {687, "Best friends forever!"},
    {688, "Let him free"},
    {689, "?????"},
    {690, "Bounce away!"},
    {691, "Destined for greatness"},
    {692, "He awaits your offering"},
    {693, "Infest"},
    {694, "Eternal sorrow"},
    {695, "May your rage bring haste"},
    {696, "Divine protection"},
    {697, "He wants revenge"},
    {698, "Double trouble!"},
    {699, "Ancient power"},
    {700, "I can see see the future future future"},
    {701, "Buried memories"},
    {702, "Hot blooded"},
    {703, "Lost brother"},
    {704, "Rip and tear"},
    {705, "One with the shadows"},
    {706, "Come forth from the depths"},
    {707, "HP up"},
    {708, "DMG up"},
    {709, "Angel breaker"},
    {710, "Make your destiny"},
    {711, "Life and death"},
    {712, "Item summoner"},
    {713, "Return"},
    {714, "Come back"},
    {715, "Saved for later"},
    {716, "Spending power"},
    {717, "Under a rock"},
    {719, "Portable shop"},
    {720, "Anything is possible"},
    {721, "Isaac and his mother lived alone in a small house on a hill"},
    {722, "Repent"},
    {723, "-1"},
    {724, "Thick blooded"},
    {725, "Your stomach rumbles"},
    {726, "Double tap sneeze"},
    {727, "Spooky blast +5 bombs"},
    {728, "Demonic gestation"},
    {729, "Chuck away!"},
    {730, "DMG + luck up"},
    {731, "DMG + range up"},
    {732, "DMG up"}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.collectibleTypeToNameMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
____exports.DEFAULT_COLLECTIBLE_NAME = "Unknown"
--- Maps collectible types to the real English names from the "stringtable.sta" file.
-- 
-- This is a temporary map due to missing features in the vanilla API. (Otherwise, this would be
-- converted to a type-safe object.)
-- 
-- For a mapping of name to `CollectibleType`, see `COLLECTIBLE_NAME_TO_TYPE_MAP`.
____exports.COLLECTIBLE_TYPE_TO_NAME_MAP = __TS__New(Map, {
    {1, "The Sad Onion"},
    {2, "The Inner Eye"},
    {3, "Spoon Bender"},
    {4, "Cricket's Head"},
    {5, "My Reflection"},
    {6, "Number One"},
    {7, "Blood of the Martyr"},
    {8, "Brother Bobby"},
    {9, "Skatole"},
    {10, "Halo of Flies"},
    {11, "1up!"},
    {12, "Magic Mushroom"},
    {13, "The Virus"},
    {14, "Roid Rage"},
    {15, "<3"},
    {16, "Raw Liver"},
    {17, "Skeleton Key"},
    {18, "A Dollar"},
    {19, "Boom!"},
    {20, "Transcendence"},
    {21, "The Compass"},
    {22, "Lunch"},
    {23, "Dinner"},
    {24, "Dessert"},
    {25, "Breakfast"},
    {26, "Rotten Meat"},
    {27, "Wooden Spoon"},
    {28, "The Belt"},
    {29, "Mom's Underwear"},
    {30, "Mom's Heels"},
    {31, "Mom's Lipstick"},
    {32, "Wire Coat Hanger"},
    {33, "The Bible"},
    {34, "The Book of Belial"},
    {35, "The Necronomicon"},
    {36, "The Poop"},
    {37, "Mr. Boom"},
    {38, "Tammy's Head"},
    {39, "Mom's Bra"},
    {40, "Kamikaze!"},
    {41, "Mom's Pad"},
    {42, "Bob's Rotten Head"},
    {44, "Teleport!"},
    {45, "Yum Heart"},
    {46, "Lucky Foot"},
    {47, "Doctor's Remote"},
    {48, "Cupid's Arrow"},
    {49, "Shoop da Whoop!"},
    {50, "Steven"},
    {51, "Pentagram"},
    {52, "Dr. Fetus"},
    {53, "Magneto"},
    {54, "Treasure Map"},
    {55, "Mom's Eye"},
    {56, "Lemon Mishap"},
    {57, "Distant Admiration"},
    {58, "Book of Shadows"},
    {60, "The Ladder"},
    {62, "Charm of the Vampire"},
    {63, "The Battery"},
    {64, "Steam Sale"},
    {65, "Anarchist Cookbook"},
    {66, "The Hourglass"},
    {67, "Sister Maggy"},
    {68, "Technology"},
    {69, "Chocolate Milk"},
    {70, "Growth Hormones"},
    {71, "Mini Mush"},
    {72, "Rosary"},
    {73, "Cube of Meat"},
    {74, "A Quarter"},
    {75, "PHD"},
    {76, "X-Ray Vision"},
    {77, "My Little Unicorn"},
    {78, "Book of Revelations"},
    {79, "The Mark"},
    {80, "The Pact"},
    {81, "Dead Cat"},
    {82, "Lord of the Pit"},
    {83, "The Nail"},
    {84, "We Need To Go Deeper!"},
    {85, "Deck of Cards"},
    {86, "Monstro's Tooth"},
    {87, "Loki's Horns"},
    {88, "Little Chubby"},
    {89, "Spider Bite"},
    {90, "The Small Rock"},
    {91, "Spelunker Hat"},
    {92, "Super Bandage"},
    {93, "The Gamekid"},
    {94, "Sack of Pennies"},
    {95, "Robo-Baby"},
    {96, "Little C.H.A.D."},
    {97, "The Book of Sin"},
    {98, "The Relic"},
    {99, "Little Gish"},
    {100, "Little Steven"},
    {101, "The Halo"},
    {102, "Mom's Bottle of Pills"},
    {103, "The Common Cold"},
    {104, "The Parasite"},
    {105, "The D6"},
    {106, "Mr. Mega"},
    {107, "The Pinking Shears"},
    {108, "The Wafer"},
    {109, "Money = Power"},
    {110, "Mom's Contacts"},
    {111, "The Bean"},
    {112, "Guardian Angel"},
    {113, "Demon Baby"},
    {114, "Mom's Knife"},
    {115, "Ouija Board"},
    {116, "9 Volt"},
    {117, "Dead Bird"},
    {118, "Brimstone"},
    {119, "Blood Bag"},
    {120, "Odd Mushroom"},
    {121, "Odd Mushroom"},
    {122, "Whore of Babylon"},
    {123, "Monster Manual"},
    {124, "Dead Sea Scrolls"},
    {125, "Bobby-Bomb"},
    {126, "Razor Blade"},
    {127, "Forget Me Now"},
    {128, "Forever Alone"},
    {129, "Bucket of Lard"},
    {130, "A Pony"},
    {131, "Bomb Bag"},
    {132, "A Lump of Coal"},
    {133, "Guppy's Paw"},
    {134, "Guppy's Tail"},
    {135, "IV Bag"},
    {136, "Best Friend"},
    {137, "Remote Detonator"},
    {138, "Stigmata"},
    {139, "Mom's Purse"},
    {140, "Bob's Curse"},
    {141, "Pageant Boy"},
    {142, "Scapular"},
    {143, "Speed Ball"},
    {144, "Bum Friend"},
    {145, "Guppy's Head"},
    {146, "Prayer Card"},
    {147, "Notched Axe"},
    {148, "Infestation"},
    {149, "Ipecac"},
    {150, "Tough Love"},
    {151, "The Mulligan"},
    {152, "Technology 2"},
    {153, "Mutant Spider"},
    {154, "Chemical Peel"},
    {155, "The Peeper"},
    {156, "Habit"},
    {157, "Bloody Lust"},
    {158, "Crystal Ball"},
    {159, "Spirit of the Night"},
    {160, "Crack the Sky"},
    {161, "Ankh"},
    {162, "Celtic Cross"},
    {163, "Ghost Baby"},
    {164, "The Candle"},
    {165, "Cat-o-nine-tails"},
    {166, "D20"},
    {167, "Harlequin Baby"},
    {168, "Epic Fetus"},
    {169, "Polyphemus"},
    {170, "Daddy Longlegs"},
    {171, "Spider Butt"},
    {172, "Sacrificial Dagger"},
    {173, "Mitre"},
    {174, "Rainbow Baby"},
    {175, "Dad's Key"},
    {176, "Stem Cells"},
    {177, "Portable Slot"},
    {178, "Holy Water"},
    {179, "Fate"},
    {180, "The Black Bean"},
    {181, "White Pony"},
    {182, "Sacred Heart"},
    {183, "Tooth Picks"},
    {184, "Holy Grail"},
    {185, "Dead Dove"},
    {186, "Blood Rights"},
    {187, "Guppy's Hairball"},
    {188, "Abel"},
    {189, "SMB Super Fan"},
    {190, "Pyro"},
    {191, "3 Dollar Bill"},
    {192, "Telepathy For Dummies"},
    {193, "MEAT!"},
    {194, "Magic 8 Ball"},
    {195, "Mom's Coin Purse"},
    {196, "Squeezy"},
    {197, "Jesus Juice"},
    {198, "Box"},
    {199, "Mom's Key"},
    {200, "Mom's Eyeshadow"},
    {201, "Iron Bar"},
    {202, "Midas' Touch"},
    {203, "Humbleing Bundle"},
    {204, "Fanny Pack"},
    {205, "Sharp Plug"},
    {206, "Guillotine"},
    {207, "Ball of Bandages"},
    {208, "Champion Belt"},
    {209, "Butt Bombs"},
    {210, "Gnawed Leaf"},
    {211, "Spiderbaby"},
    {212, "Guppy's Collar"},
    {213, "Lost Contact"},
    {214, "Anemic"},
    {215, "Goat Head"},
    {216, "Ceremonial Robes"},
    {217, "Mom's Wig"},
    {218, "Placenta"},
    {219, "Old Bandage"},
    {220, "Sad Bombs"},
    {221, "Rubber Cement"},
    {222, "Anti-Gravity"},
    {223, "Pyromaniac"},
    {224, "Cricket's Body"},
    {225, "Gimpy"},
    {226, "Black Lotus"},
    {227, "Piggy Bank"},
    {228, "Mom's Perfume"},
    {229, "Monstro's Lung"},
    {230, "Abaddon"},
    {231, "Ball of Tar"},
    {232, "Stop Watch"},
    {233, "Tiny Planet"},
    {234, "Infestation 2"},
    {236, "E. Coli"},
    {237, "Death's Touch"},
    {238, "Key Piece 1"},
    {239, "Key Piece 2"},
    {240, "Experimental Treatment"},
    {241, "Contract from Below"},
    {242, "Infamy"},
    {243, "Trinity Shield"},
    {244, "Tech.5"},
    {245, "20/20"},
    {246, "Blue Map"},
    {247, "BFFS!"},
    {248, "Hive Mind"},
    {249, "There's Options"},
    {250, "BOGO Bombs"},
    {251, "Starter Deck"},
    {252, "Little Baggy"},
    {253, "Magic Scab"},
    {254, "Blood Clot"},
    {255, "Screw"},
    {256, "Hot Bombs"},
    {257, "Fire Mind"},
    {258, "Missing No."},
    {259, "Dark Matter"},
    {260, "Black Candle"},
    {261, "Proptosis"},
    {262, "Missing Page 2"},
    {263, "Clear Rune"},
    {264, "Smart Fly"},
    {265, "Dry Baby"},
    {266, "Juicy Sack"},
    {267, "Robo-Baby 2.0"},
    {268, "Rotten Baby"},
    {269, "Headless Baby"},
    {270, "Leech"},
    {271, "Mystery Sack"},
    {272, "BBF"},
    {273, "Bob's Brain"},
    {274, "Best Bud"},
    {275, "Lil Brimstone"},
    {276, "Isaac's Heart"},
    {277, "Lil Haunt"},
    {278, "Dark Bum"},
    {279, "Big Fan"},
    {280, "Sissy Longlegs"},
    {281, "Punching Bag"},
    {282, "How to Jump"},
    {283, "D100"},
    {284, "D4"},
    {285, "D10"},
    {286, "Blank Card"},
    {287, "Book of Secrets"},
    {288, "Box of Spiders"},
    {289, "Red Candle"},
    {290, "The Jar"},
    {291, "Flush!"},
    {292, "Satanic Bible"},
    {293, "Head of Krampus"},
    {294, "Butter Bean"},
    {295, "Magic Fingers"},
    {296, "Converter"},
    {297, "Pandora's Box"},
    {298, "Unicorn Stump"},
    {299, "Taurus"},
    {300, "Aries"},
    {301, "Cancer"},
    {302, "Leo"},
    {303, "Virgo"},
    {304, "Libra"},
    {305, "Scorpio"},
    {306, "Sagittarius"},
    {307, "Capricorn"},
    {308, "Aquarius"},
    {309, "Pisces"},
    {310, "Eve's Mascara"},
    {311, "Judas' Shadow"},
    {312, "Maggy's Bow"},
    {313, "Holy Mantle"},
    {314, "Thunder Thighs"},
    {315, "Strange Attractor"},
    {316, "Cursed Eye"},
    {317, "Mysterious Liquid"},
    {318, "Gemini"},
    {319, "Cain's Other Eye"},
    {320, "???'s Only Friend"},
    {321, "Samson's Chains"},
    {322, "Mongo Baby"},
    {323, "Isaac's Tears"},
    {324, "Undefined"},
    {325, "Scissors"},
    {326, "Breath of Life"},
    {327, "The Polaroid"},
    {328, "The Negative"},
    {329, "The Ludovico Technique"},
    {330, "Soy Milk"},
    {331, "Godhead"},
    {332, "Lazarus' Rags"},
    {333, "The Mind"},
    {334, "The Body"},
    {335, "The Soul"},
    {336, "Dead Onion"},
    {337, "Broken Watch"},
    {338, "The Boomerang"},
    {339, "Safety Pin"},
    {340, "Caffeine Pill"},
    {341, "Torn Photo"},
    {342, "Blue Cap"},
    {343, "Latch Key"},
    {344, "Match Book"},
    {345, "Synthoil"},
    {346, "A Snack"},
    {347, "Diplopia"},
    {348, "Placebo"},
    {349, "Wooden Nickel"},
    {350, "Toxic Shock"},
    {351, "Mega Bean"},
    {352, "Glass Cannon"},
    {353, "Bomber Boy"},
    {354, "Crack Jacks"},
    {355, "Mom's Pearls"},
    {356, "Car Battery"},
    {357, "Box of Friends"},
    {358, "The Wiz"},
    {359, "8 Inch Nails"},
    {360, "Incubus"},
    {361, "Fate's Reward"},
    {362, "Lil Chest"},
    {363, "Sworn Protector"},
    {364, "Friend Zone"},
    {365, "Lost Fly"},
    {366, "Scatter Bombs"},
    {367, "Sticky Bombs"},
    {368, "Epiphora"},
    {369, "Continuum"},
    {370, "Mr. Dolly"},
    {371, "Curse of the Tower"},
    {372, "Charged Baby"},
    {373, "Dead Eye"},
    {374, "Holy Light"},
    {375, "Host Hat"},
    {376, "Restock"},
    {377, "Bursting Sack"},
    {378, "Number Two"},
    {379, "Pupula Duplex"},
    {380, "Pay To Play"},
    {381, "Eden's Blessing"},
    {382, "Friendly Ball"},
    {383, "Tear Detonator"},
    {384, "Lil Gurdy"},
    {385, "Bumbo"},
    {386, "D12"},
    {387, "Censer"},
    {388, "Key Bum"},
    {389, "Rune Bag"},
    {390, "Seraphim"},
    {391, "Betrayal"},
    {392, "Zodiac"},
    {393, "Serpent's Kiss"},
    {394, "Marked"},
    {395, "Tech X"},
    {396, "Ventricle Razor"},
    {397, "Tractor Beam"},
    {398, "God's Flesh"},
    {399, "Maw of the Void"},
    {400, "Spear of Destiny"},
    {401, "Explosivo"},
    {402, "Chaos"},
    {403, "Spider Mod"},
    {404, "Farting Baby"},
    {405, "GB Bug"},
    {406, "D8"},
    {407, "Purity"},
    {408, "Athame"},
    {409, "Empty Vessel"},
    {410, "Evil Eye"},
    {411, "Lusty Blood"},
    {412, "Cambion Conception"},
    {413, "Immaculate Conception"},
    {414, "More Options"},
    {415, "Crown of Light"},
    {416, "Deep Pockets"},
    {417, "Succubus"},
    {418, "Fruit Cake"},
    {419, "Teleport 2.0"},
    {420, "Black Powder"},
    {421, "Kidney Bean"},
    {422, "Glowing Hour Glass"},
    {423, "Circle of Protection"},
    {424, "Sack Head"},
    {425, "Night Light"},
    {426, "Obsessed Fan"},
    {427, "Mine Crafter"},
    {428, "PJs"},
    {429, "Head of the Keeper"},
    {430, "Papa Fly"},
    {431, "Multidimensional Baby"},
    {432, "Glitter Bombs"},
    {433, "My Shadow"},
    {434, "Jar of Flies"},
    {435, "Lil Loki"},
    {436, "Milk!"},
    {437, "D7"},
    {438, "Binky"},
    {439, "Mom's Box"},
    {440, "Kidney Stone"},
    {441, "Mega Blast"},
    {442, "Dark Prince's Crown"},
    {443, "Apple!"},
    {444, "Lead Pencil"},
    {445, "Dog Tooth"},
    {446, "Dead Tooth"},
    {447, "Linger Bean"},
    {448, "Shard of Glass"},
    {449, "Metal Plate"},
    {450, "Eye of Greed"},
    {451, "Tarot Cloth"},
    {452, "Varicose Veins"},
    {453, "Compound Fracture"},
    {454, "Polydactyly"},
    {455, "Dad's Lost Coin"},
    {456, "Midnight Snack"},
    {457, "Cone Head"},
    {458, "Belly Button"},
    {459, "Sinus Infection"},
    {460, "Glaucoma"},
    {461, "Parasitoid"},
    {462, "Eye of Belial"},
    {463, "Sulfuric Acid"},
    {464, "Glyph of Balance"},
    {465, "Analog Stick"},
    {466, "Contagion"},
    {467, "Finger!"},
    {468, "Shade"},
    {469, "Depression"},
    {470, "Hushy"},
    {471, "Lil Monstro"},
    {472, "King Baby"},
    {473, "Big Chubby"},
    {474, "Broken Glass Cannon"},
    {475, "Plan C"},
    {476, "D1"},
    {477, "Void"},
    {478, "Pause"},
    {479, "Smelter"},
    {480, "Compost"},
    {481, "Dataminer"},
    {482, "Clicker"},
    {483, "Mama Mega!"},
    {484, "Wait What?"},
    {485, "Crooked Penny"},
    {486, "Dull Razor"},
    {487, "Potato Peeler"},
    {488, "Metronome"},
    {489, "D infinity"},
    {490, "Eden's Soul"},
    {491, "Acid Baby"},
    {492, "YO LISTEN!"},
    {493, "Adrenaline"},
    {494, "Jacob's Ladder"},
    {495, "Ghost Pepper"},
    {496, "Euthanasia"},
    {497, "Camo Undies"},
    {498, "Duality"},
    {499, "Eucharist"},
    {500, "Sack of Sacks"},
    {501, "Greed's Gullet"},
    {502, "Large Zit"},
    {503, "Little Horn"},
    {504, "Brown Nugget"},
    {505, "Poke Go"},
    {506, "Backstabber"},
    {507, "Sharp Straw"},
    {508, "Mom's Razor"},
    {509, "Bloodshot Eye"},
    {510, "Delirious"},
    {511, "Angry Fly"},
    {512, "Black Hole"},
    {513, "Bozo"},
    {514, "Broken Modem"},
    {515, "Mystery Gift"},
    {516, "Sprinkler"},
    {517, "Fast Bombs"},
    {518, "Buddy in a Box"},
    {519, "Lil Delirium"},
    {520, "Jumper Cables"},
    {521, "Coupon"},
    {522, "Telekinesis"},
    {523, "Moving Box"},
    {524, "Technology Zero"},
    {525, "Leprosy"},
    {526, "7 Seals"},
    {527, "Mr. ME!"},
    {528, "Angelic Prism"},
    {529, "Pop!"},
    {530, "Death's List"},
    {531, "Haemolacria"},
    {532, "Lachryphagy"},
    {533, "Trisagion"},
    {534, "Schoolbag"},
    {535, "Blanket"},
    {536, "Sacrificial Altar"},
    {537, "Lil Spewer"},
    {538, "Marbles"},
    {539, "Mystery Egg"},
    {540, "Flat Stone"},
    {541, "Marrow"},
    {542, "Slipped Rib"},
    {543, "Hallowed Ground"},
    {544, "Pointy Rib"},
    {545, "Book of the Dead"},
    {546, "Dad's Ring"},
    {547, "Divorce Papers"},
    {548, "Jaw Bone"},
    {549, "Brittle Bones"},
    {550, "Broken Shovel"},
    {551, "Broken Shovel"},
    {552, "Mom's Shovel"},
    {553, "Mucormycosis"},
    {554, "2Spooky"},
    {555, "Golden Razor"},
    {556, "Sulfur"},
    {557, "Fortune Cookie"},
    {558, "Eye Sore"},
    {559, "120 Volt"},
    {560, "It Hurts"},
    {561, "Almond Milk"},
    {562, "Rock Bottom"},
    {563, "Nancy Bombs"},
    {564, "A Bar of Soap"},
    {565, "Blood Puppy"},
    {566, "Dream Catcher"},
    {567, "Paschal Candle"},
    {568, "Divine Intervention"},
    {569, "Blood Oath"},
    {570, "Playdough Cookie"},
    {571, "Orphan Socks"},
    {572, "Eye of the Occult"},
    {573, "Immaculate Heart"},
    {574, "Monstrance"},
    {575, "The Intruder"},
    {576, "Dirty Mind"},
    {577, "Damocles"},
    {578, "Free Lemonade"},
    {579, "Spirit Sword"},
    {580, "Red Key"},
    {581, "Psy Fly"},
    {582, "Wavy Cap"},
    {583, "Rocket in a Jar"},
    {584, "Book of Virtues"},
    {585, "Alabaster Box"},
    {586, "The Stairway"},
    {588, "Sol"},
    {589, "Luna"},
    {590, "Mercurius"},
    {591, "Venus"},
    {592, "Terra"},
    {593, "Mars"},
    {594, "Jupiter"},
    {595, "Saturnus"},
    {596, "Uranus"},
    {597, "Neptunus"},
    {598, "Pluto"},
    {599, "Voodoo Head"},
    {600, "Eye Drops"},
    {601, "Act of Contrition"},
    {602, "Member Card"},
    {603, "Battery Pack"},
    {604, "Mom's Bracelet"},
    {605, "The Scooper"},
    {606, "Ocular Rift"},
    {607, "Boiled Baby"},
    {608, "Freezer Baby"},
    {609, "Eternal D6"},
    {610, "Bird Cage"},
    {611, "Larynx"},
    {612, "Lost Soul"},
    {614, "Blood Bombs"},
    {615, "Lil Dumpy"},
    {616, "Bird's Eye"},
    {617, "Lodestone"},
    {618, "Rotten Tomato"},
    {619, "Birthright"},
    {621, "Red Stew"},
    {622, "Genesis"},
    {623, "Sharp Key"},
    {624, "Booster Pack"},
    {625, "Mega Mush"},
    {626, "Knife Piece 1"},
    {627, "Knife Piece 2"},
    {628, "Death Certificate"},
    {629, "Bot Fly"},
    {631, "Meat Cleaver"},
    {632, "Evil Charm"},
    {633, "Dogma"},
    {634, "Purgatory"},
    {635, "Stitches"},
    {636, "R Key"},
    {637, "Knockout Drops"},
    {638, "Eraser"},
    {639, "Yuck Heart"},
    {640, "Urn of Souls"},
    {641, "Akeldama"},
    {642, "Magic Skin"},
    {643, "Revelation"},
    {644, "Consolation Prize"},
    {645, "Tinytoma"},
    {646, "Brimstone Bombs"},
    {647, "4.5 Volt"},
    {649, "Fruity Plum"},
    {650, "Plum Flute"},
    {651, "Star of Bethlehem"},
    {652, "Cube Baby"},
    {653, "Vade Retro"},
    {654, "False PHD"},
    {655, "Spin to Win"},
    {656, "Damocles"},
    {657, "Vasculitis"},
    {658, "Giant Cell"},
    {659, "Tropicamide"},
    {660, "Card Reading"},
    {661, "Quints"},
    {663, "Tooth and Nail"},
    {664, "Binge Eater"},
    {665, "Guppy's Eye"},
    {667, "Strawman"},
    {668, "Dad's Note"},
    {669, "Sausage"},
    {670, "Options?"},
    {671, "Candy Heart"},
    {672, "A Pound of Flesh"},
    {673, "Redemption"},
    {674, "Spirit Shackles"},
    {675, "Cracked Orb"},
    {676, "Empty Heart"},
    {677, "Astral Projection"},
    {678, "C Section"},
    {679, "Lil Abaddon"},
    {680, "Montezuma's Revenge"},
    {681, "Lil Portal"},
    {682, "Worm Friend"},
    {683, "Bone Spurs"},
    {684, "Hungry Soul"},
    {685, "Jar of Wisps"},
    {686, "Soul Locket"},
    {687, "Friend Finder"},
    {688, "Inner Child"},
    {689, "Glitched Crown"},
    {690, "Belly Jelly"},
    {691, "Sacred Orb"},
    {692, "Sanguine Bond"},
    {693, "The Swarm"},
    {694, "Heartbreak"},
    {695, "Bloody Gust"},
    {696, "Salvation"},
    {697, "Vanishing Twin"},
    {698, "Twisted Pair"},
    {699, "Azazel's Rage"},
    {700, "Echo Chamber"},
    {701, "Isaac's Tomb"},
    {702, "Vengeful Spirit"},
    {703, "Esau Jr."},
    {704, "Berserk!"},
    {705, "Dark Arts"},
    {706, "Abyss"},
    {707, "Supper"},
    {708, "Stapler"},
    {709, "Suplex!"},
    {710, "Bag of Crafting"},
    {711, "Flip"},
    {712, "Lemegeton"},
    {713, "Sumptorium"},
    {714, "Recall"},
    {715, "Hold"},
    {716, "Keeper's Sack"},
    {717, "Keeper's Kin"},
    {719, "Keeper's Box"},
    {720, "Everything Jar"},
    {721, "TMTRAINER"},
    {722, "Anima Sola"},
    {723, "Spindown Dice"},
    {724, "Hypercoagulation"},
    {725, "IBS"},
    {726, "Hemoptysis"},
    {727, "Ghost Bombs"},
    {728, "Gello"},
    {729, "Decap Attack"},
    {730, "Glass Eye"},
    {731, "Stye"},
    {732, "Mom's Ring"}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.singleUseActiveCollectibleTypesSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
____exports.SINGLE_USE_ACTIVE_COLLECTIBLE_TYPES_SET = __TS__New(Set, {
    CollectibleType.FORGET_ME_NOW,
    CollectibleType.EDENS_SOUL,
    CollectibleType.ALABASTER_BOX,
    CollectibleType.PLAN_C,
    CollectibleType.MAMA_MEGA,
    CollectibleType.SACRIFICIAL_ALTAR,
    CollectibleType.DEATH_CERTIFICATE,
    CollectibleType.R_KEY
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.entities"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__StringSplit = ____lualib.__TS__StringSplit
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
local __TS__New = ____lualib.__TS__New
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local ____exports = {}
local setPrimitiveEntityFields
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
local ____entitiesWithArmorSet = require("lua_modules.isaacscript-common.dist.src.sets.entitiesWithArmorSet")
local ENTITIES_WITH_ARMOR_SET = ____entitiesWithArmorSet.ENTITIES_WITH_ARMOR_SET
local ____storyBossesSet = require("lua_modules.isaacscript-common.dist.src.sets.storyBossesSet")
local STORY_BOSSES_SET = ____storyBossesSet.STORY_BOSSES_SET
local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass")
local getIsaacAPIClassName = ____isaacAPIClass.getIsaacAPIClassName
local ____random = require("lua_modules.isaacscript-common.dist.src.functions.random")
local getRandom = ____random.getRandom
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local isRNG = ____rng.isRNG
local newRNG = ____rng.newRNG
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
local isPrimitive = ____types.isPrimitive
local ____vector = require("lua_modules.isaacscript-common.dist.src.functions.vector")
local isVector = ____vector.isVector
local vectorToString = ____vector.vectorToString
function setPrimitiveEntityFields(self, entity, metatable, entityFields)
    local propGetTable = metatable.__propget
    if propGetTable == nil then
        error("Failed to get the \"__propget\" table for an entity.")
    end
    for key in pairs(propGetTable) do
        local indexKey = key
        local value = entity[indexKey]
        if isPrimitive(nil, value) then
            entityFields[indexKey] = value
        elseif isVector(nil, value) then
            entityFields[indexKey] = vectorToString(nil, value)
        end
    end
end
--- Helper function to remove all of the entities in the supplied array.
-- 
-- @param entities The array of entities to remove.
-- @param cap Optional. If specified, will only remove the given amount of entities.
-- @returns An array of the entities that were removed.
function ____exports.removeEntities(self, entities, cap)
    if #entities == 0 then
        return {}
    end
    local entitiesRemoved = {}
    for ____, entity in ipairs(entities) do
        entity:Remove()
        entitiesRemoved[#entitiesRemoved + 1] = entity
        if cap ~= nil and #entitiesRemoved >= cap then
            break
        end
    end
    return entitiesRemoved
end
--- From DeadInfinity.
local DAMAGE_FLASH_COLOR = Color(
    0.5,
    0.5,
    0.5,
    1,
    200 / 255,
    0 / 255,
    0 / 255
)
--- Helper function to count the number of entities in room. Use this over the vanilla
-- `Isaac.CountEntities` method to avoid having to specify a spawner and to handle ignoring charmed
-- enemies.
-- 
-- @param entityType Optional. Default is -1, which matches every entity type.
-- @param variant Optional. Default is -1, which matches every variant.
-- @param subType Optional. Default is -1, which matches every sub-type.
-- @param ignoreFriendly Optional. Default is false.
function ____exports.countEntities(self, entityType, variant, subType, ignoreFriendly)
    if entityType == nil then
        entityType = -1
    end
    if variant == nil then
        variant = -1
    end
    if subType == nil then
        subType = -1
    end
    if ignoreFriendly == nil then
        ignoreFriendly = false
    end
    if not ignoreFriendly then
        return Isaac.CountEntities(nil, entityType, variant, subType)
    end
    local entities = Isaac.FindByType(
        entityType,
        variant,
        subType,
        false,
        ignoreFriendly
    )
    return #entities
end
--- Helper function to check if one or more of a specific kind of entity is present in the current
-- room. It uses the `countEntities` helper function to determine this.
-- 
-- @param entityType Optional. Default is -1, which matches every entity type.
-- @param variant Optional. Default is -1, which matches every variant.
-- @param subType Optional. Default is -1, which matches every sub-type.
-- @param ignoreFriendly Optional. Default is false.
function ____exports.doesEntityExist(self, entityType, variant, subType, ignoreFriendly)
    if entityType == nil then
        entityType = -1
    end
    if variant == nil then
        variant = -1
    end
    if subType == nil then
        subType = -1
    end
    if ignoreFriendly == nil then
        ignoreFriendly = false
    end
    local count = ____exports.countEntities(
        nil,
        entityType,
        variant,
        subType,
        ignoreFriendly
    )
    return count > 0
end
--- Given an array of entities, this helper function returns the closest one to a provided reference
-- entity.
-- 
-- For example:
-- 
-- ```ts
-- const player = Isaac.GetPlayer();
-- const gapers = getEntities(EntityType.GAPER);
-- const closestGaper = getClosestEntityTo(player, gapers);
-- ```
function ____exports.getClosestEntityTo(self, referenceEntity, entities)
    local closestEntity
    local closestDistance = math.huge
    for ____, entity in ipairs(entities) do
        local distance = referenceEntity.Position:Distance(entity.Position)
        if distance < closestDistance then
            closestEntity = entity
            closestDistance = distance
        end
    end
    return closestEntity
end
--- Helper function to get the entity type, variant, and sub-type from an `EntityID`.
function ____exports.getConstituentsFromEntityID(self, entityID)
    local parts = __TS__StringSplit(entityID, ".")
    if #parts ~= 3 then
        error("Failed to get the constituents from entity ID: " .. entityID)
    end
    local entityTypeString, variantString, subTypeString = table.unpack(parts)
    local entityType = tonumber(entityTypeString)
    if entityType == nil then
        error("Failed to convert the entity type to a number: " .. tostring(entityTypeString))
    end
    local variant = tonumber(variantString)
    if variant == nil then
        error("Failed to convert the entity variant to a number: " .. tostring(variantString))
    end
    local subType = tonumber(subTypeString)
    if subType == nil then
        error("Failed to convert the entity sub-type to a number: " .. tostring(subTypeString))
    end
    return {entityType, variant, subType}
end
--- Helper function to get all of the entities in the room or all of the entities that match a
-- specific entity type / variant / sub-type.
-- 
-- Due to bugs with `Isaac.FindInRadius`, this function uses `Isaac.GetRoomEntities`, which is more
-- expensive but also more robust. (If a matching entity type is provided, then `Isaac.FindByType`
-- will be used instead.)
-- 
-- For example:
-- 
-- ```ts
-- // Make all of the entities in the room invisible.
-- for (const entity of getEntities()) {
--   entity.Visible = false;
-- }
-- ```
-- 
-- @param entityType Optional. If specified, will only get the entities that match the type. Default
-- is -1, which matches every type.
-- @param variant Optional. If specified, will only get the entities that match the variant. Default
-- is -1, which matches every variant.
-- @param subType Optional. If specified, will only get the entities that match the sub-type.
-- Default is -1, which matches every sub-type.
-- @param ignoreFriendly Optional. If set to true, it will exclude friendly NPCs from being
-- returned. Default is false. Will only be taken into account if the
-- `entityType` is specified.
function ____exports.getEntities(self, entityType, variant, subType, ignoreFriendly)
    if entityType == nil then
        entityType = -1
    end
    if variant == nil then
        variant = -1
    end
    if subType == nil then
        subType = -1
    end
    if ignoreFriendly == nil then
        ignoreFriendly = false
    end
    if asNumber(nil, entityType) == -1 then
        return Isaac.GetRoomEntities()
    end
    return Isaac.FindByType(entityType, variant, subType, ignoreFriendly)
end
--- Helper function to get all the fields on an entity. For example, this is useful for comparing it
-- to another entity later. (One option is to use the `logTableDifferences` function for this.)
-- 
-- This function will only get fields that are equal to booleans, numbers, or strings, or Vectors,
-- as comparing other types is non-trivial.
function ____exports.getEntityFields(self, entity)
    local entityFields = {}
    local metatable = getmetatable(entity)
    if metatable == nil then
        error("Failed to get the metatable for an entity.")
    end
    setPrimitiveEntityFields(nil, entity, metatable, entityFields)
    local className = getIsaacAPIClassName(nil, entity)
    if className == "Entity" then
        return entityFields
    end
    local parentTable = metatable.__parent
    if parentTable == nil then
        error("Failed to get the \"__parent\" table for an entity.")
    end
    setPrimitiveEntityFields(nil, entity, parentTable, entityFields)
    return entityFields
end
--- Helper function to get an entity from a `PtrHash`. Note that doing this is very expensive, so you
-- should only use this function when debugging. (Normally, if you need to work backwards from a
-- reference, you would use an `EntityPtr` instead of a `PtrHash`.
function ____exports.getEntityFromPtrHash(self, ptrHash)
    local entities = ____exports.getEntities(nil)
    return __TS__ArrayFind(
        entities,
        function(____, entity) return GetPtrHash(entity) == ptrHash end
    )
end
--- Helper function to get a string containing the entity's type, variant, and sub-type.
function ____exports.getEntityID(self, entity)
    return (((tostring(entity.Type) .. ".") .. tostring(entity.Variant)) .. ".") .. tostring(entity.SubType)
end
--- Helper function to get a formatted string in the format returned by the `getEntityID` function.
function ____exports.getEntityIDFromConstituents(self, entityType, variant, subType)
    return (((tostring(entityType) .. ".") .. tostring(variant)) .. ".") .. tostring(subType)
end
--- Helper function to compare two different arrays of entities. Returns the entities that are in the
-- second array but not in the first array.
function ____exports.getFilteredNewEntities(self, oldEntities, newEntities)
    local oldEntitiesSet = __TS__New(Set)
    for ____, entity in ipairs(oldEntities) do
        local ptrHash = GetPtrHash(entity)
        oldEntitiesSet:add(ptrHash)
    end
    return __TS__ArrayFilter(
        newEntities,
        function(____, entity)
            local ptrHash = GetPtrHash(entity)
            return not oldEntitiesSet:has(ptrHash)
        end
    )
end
--- Helper function to see if a particular entity has armor. In this context, armor refers to the
-- damage scaling mechanic. For example, Ultra Greed has armor, but a Gaper does not.
-- 
-- For more on armor, see the wiki: https://bindingofisaacrebirth.fandom.com/wiki/Damage_Scaling
function ____exports.hasArmor(self, entity)
    local typeVariantString = (tostring(entity.Type) .. ".") .. tostring(entity.Variant)
    return ENTITIES_WITH_ARMOR_SET:has(typeVariantString)
end
--- Helper function to measure an entity's velocity to see if it is moving.
-- 
-- Use this helper function over checking if the velocity length is equal to 0 because entities can
-- look like they are completely immobile but yet still have a non zero velocity. Thus, using a
-- threshold is needed.
-- 
-- @param entity The entity whose velocity to measure.
-- @param threshold Optional. The threshold from 0 to consider to be moving. Default is 0.01.
function ____exports.isEntityMoving(self, entity, threshold)
    if threshold == nil then
        threshold = 0.01
    end
    return entity.Velocity:Length() >= threshold
end
--- Helper function to determine if the specified entity type is an end-game story boss, like Isaac,
-- Blue Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only
-- apply to non-story bosses, like Vanishing Twin. Also see the `STORY_BOSSES` constant.
function ____exports.isStoryBoss(self, entityType)
    return STORY_BOSSES_SET:has(entityType)
end
--- Helper function to parse a string that contains an entity type, a variant, and a sub-type,
-- separated by periods.
-- 
-- For example, passing "45.0.1" would return an array of [45, 0, 1].
-- 
-- Returns undefined if the string cannot be parsed.
function ____exports.parseEntityID(self, entityID)
    local entityIDArray = __TS__StringSplit(entityID, ".")
    if #entityIDArray ~= 3 then
        return nil
    end
    local entityTypeString, variantString, subTypeString = table.unpack(entityIDArray)
    local entityType = tonumber(entityTypeString)
    if entityType == nil then
        return nil
    end
    local variant = tonumber(variantString)
    if variant == nil then
        return nil
    end
    local subType = tonumber(subTypeString)
    if subType == nil then
        return nil
    end
    return {entityType, variant, subType}
end
--- Helper function to parse a string that contains an entity type and a variant separated by a
-- period.
-- 
-- For example, passing "45.0" would return an array of [45, 0].
-- 
-- Returns undefined if the string cannot be parsed.
function ____exports.parseEntityTypeVariantString(self, entityTypeVariantString)
    local entityTypeVariantArray = __TS__StringSplit(entityTypeVariantString, ".")
    if #entityTypeVariantArray ~= 2 then
        return nil
    end
    local entityTypeString, variantString = table.unpack(entityTypeVariantArray)
    local entityType = tonumber(entityTypeString)
    if entityType == nil then
        return nil
    end
    local variant = tonumber(variantString)
    if variant == nil then
        return nil
    end
    return {entityType, variant}
end
--- Helper function to remove all of the matching entities in the room.
-- 
-- @param entityType The entity type to match.
-- @param entityVariant Optional. The variant to match. Default is -1, which matches every variant.
-- @param entitySubType Optional. The sub-type to match. Default is -1, which matches every
-- sub-type.
-- @param cap Optional. If specified, will only remove the given amount of collectibles.
-- @returns An array of the entities that were removed.
function ____exports.removeAllMatchingEntities(self, entityType, entityVariant, entitySubType, cap)
    if entityVariant == nil then
        entityVariant = -1
    end
    if entitySubType == nil then
        entitySubType = -1
    end
    if cap == nil then
        cap = nil
    end
    local entities = ____exports.getEntities(nil, entityType, entityVariant, entitySubType)
    return ____exports.removeEntities(nil, entities, cap)
end
--- Helper function to reroll an enemy. Use this instead of the vanilla "Game.RerollEnemy" function
-- if you want the rerolled enemy to be returned.
-- 
-- @param entity The entity to reroll.
-- @returns If the game failed to reroll the enemy, returns undefined. Otherwise, returns the
-- rerolled entity.
function ____exports.rerollEnemy(self, entity)
    local oldEntities = ____exports.getEntities(nil)
    local wasRerolled = game:RerollEnemy(entity)
    if not wasRerolled then
        return nil
    end
    local newEntities = ____exports.getEntities(nil)
    local filteredNewEntities = ____exports.getFilteredNewEntities(nil, oldEntities, newEntities)
    if #filteredNewEntities == 0 then
        error("Failed to find the new entity generated by the \"Game.RerollEnemy\" method.")
    end
    return filteredNewEntities[1]
end
--- Helper function to make an entity flash red like it is taking damage. This is useful when you
-- want to make it appear as if an entity is taking damage without actually dealing any damage to
-- it.
function ____exports.setEntityDamageFlash(self, entity)
    entity:SetColor(DAMAGE_FLASH_COLOR, 2, 0)
end
function ____exports.setEntityRandomColor(self, entity)
    local rng = newRNG(nil, entity.InitSeed)
    local r = getRandom(nil, rng)
    local g = getRandom(nil, rng)
    local b = getRandom(nil, rng)
    local color = Color(r, g, b)
    entity:SetColor(
        color,
        100000,
        100000,
        false,
        false
    )
end
--- Helper function to spawn an entity. Use this instead of the `Isaac.Spawn` method if you do not
-- need to specify the velocity or spawner.
-- 
-- Also see the `spawnWithSeed` helper function.
-- 
-- @param entityType The `EntityType` of the entity to spawn.
-- @param variant The variant of the entity to spawn.
-- @param subType The sub-type of the entity to spawn.
-- @param position The position of the entity to spawn.
-- @param velocity Optional. The velocity of the entity to spawn. Default is `VectorZero`.
-- @param spawner Optional. The entity that will be the `SpawnerEntity`. Default is undefined.
-- @param seedOrRNG Optional. The seed or RNG object to use to generate the `InitSeed` of the
-- entity. Default is undefined, which will make the entity spawn with a random
-- seed using the `Isaac.Spawn` method.
function ____exports.spawn(self, entityType, variant, subType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    if position == nil then
        local entityID = ____exports.getEntityIDFromConstituents(nil, entityType, variant, subType)
        error(("Failed to spawn entity " .. entityID) .. " since an undefined position was passed to the \"spawn\" function.")
    end
    if velocity == nil then
        local entityID = ____exports.getEntityIDFromConstituents(nil, entityType, variant, subType)
        error(("Failed to spawn entity " .. entityID) .. " since an undefined velocity was passed to the \"spawn\" function.")
    end
    if seedOrRNG == nil then
        return Isaac.Spawn(
            entityType,
            variant,
            subType,
            position,
            velocity,
            spawner
        )
    end
    local seed = isRNG(nil, seedOrRNG) and seedOrRNG:Next() or seedOrRNG
    return game:Spawn(
        entityType,
        variant,
        position,
        velocity,
        spawner,
        subType,
        seed
    )
end
--- Helper function to spawn the entity corresponding to an `EntityID`.
-- 
-- @param entityID The `EntityID` of the entity to spawn.
-- @param position The position of the entity to spawn.
-- @param velocity Optional. The velocity of the entity to spawn. Default is `VectorZero`.
-- @param spawner Optional. The entity that will be the `SpawnerEntity`. Default is undefined.
-- @param seedOrRNG Optional. The seed or RNG object to use to generate the `InitSeed` of the
-- entity. Default is undefined, which will make the entity spawn with a random
-- seed using the `Isaac.Spawn` method.
function ____exports.spawnEntityID(self, entityID, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    local entityType, variant, subType = table.unpack(____exports.getConstituentsFromEntityID(nil, entityID))
    return ____exports.spawn(
        nil,
        entityType,
        variant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn an entity. Use this instead of the `Game.Spawn` method if you do not
-- need to specify the velocity or spawner.
function ____exports.spawnWithSeed(self, entityType, variant, subType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawn(
        nil,
        entityType,
        variant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.entitiesWithArmorSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local BeastVariant = ____isaac_2Dtypescript_2Ddefinitions.BeastVariant
local BloodPuppyVariant = ____isaac_2Dtypescript_2Ddefinitions.BloodPuppyVariant
local BoomFlyVariant = ____isaac_2Dtypescript_2Ddefinitions.BoomFlyVariant
local Charger2Variant = ____isaac_2Dtypescript_2Ddefinitions.Charger2Variant
local DogmaVariant = ____isaac_2Dtypescript_2Ddefinitions.DogmaVariant
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local FacelessVariant = ____isaac_2Dtypescript_2Ddefinitions.FacelessVariant
local Gaper2Variant = ____isaac_2Dtypescript_2Ddefinitions.Gaper2Variant
local GuttyFattyVariant = ____isaac_2Dtypescript_2Ddefinitions.GuttyFattyVariant
local HiveVariant = ____isaac_2Dtypescript_2Ddefinitions.HiveVariant
local HopperVariant = ____isaac_2Dtypescript_2Ddefinitions.HopperVariant
local IsaacVariant = ____isaac_2Dtypescript_2Ddefinitions.IsaacVariant
local MegaSatanVariant = ____isaac_2Dtypescript_2Ddefinitions.MegaSatanVariant
local MoleVariant = ____isaac_2Dtypescript_2Ddefinitions.MoleVariant
local MotherVariant = ____isaac_2Dtypescript_2Ddefinitions.MotherVariant
local PooterVariant = ____isaac_2Dtypescript_2Ddefinitions.PooterVariant
local RoundWormVariant = ____isaac_2Dtypescript_2Ddefinitions.RoundWormVariant
local SubHorfVariant = ____isaac_2Dtypescript_2Ddefinitions.SubHorfVariant
local SuckerVariant = ____isaac_2Dtypescript_2Ddefinitions.SuckerVariant
local UltraGreedVariant = ____isaac_2Dtypescript_2Ddefinitions.UltraGreedVariant
local WallCreepVariant = ____isaac_2Dtypescript_2Ddefinitions.WallCreepVariant
--- "Armor" refers to the damage scaling mechanic. The following list corresponds to the entities
-- that have the "shieldStrength" field in the "entities2.xml" file, with some exceptions.
-- (Invulnerable enemies are not included. Furthermore, Ultra Greed, Ultra Greedier, and Delirium
-- all have damage scaling, but do not have a corresponding "shieldStrength" field.)
-- 
-- Also see:
-- https://bindingofisaacrebirth.fandom.com/wiki/Damage_Scaling#Entities_with_Armor_Values
-- 
-- We use strings instead of a type + variant tuple so that we can have O(1) lookups.
____exports.ENTITIES_WITH_ARMOR_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.POOTER) .. ".") .. tostring(PooterVariant.TAINTED_POOTER),
        (tostring(EntityType.HIVE) .. ".") .. tostring(HiveVariant.TAINTED_MULLIGAN),
        (tostring(EntityType.BOOM_FLY) .. ".") .. tostring(BoomFlyVariant.TAINTED_BOOM_FLY),
        (tostring(EntityType.HOPPER) .. ".") .. tostring(HopperVariant.TAINTED_HOPPER),
        tostring(EntityType.SPITTY),
        (tostring(EntityType.SUCKER) .. ".") .. tostring(SuckerVariant.TAINTED_SUCKER),
        (tostring(EntityType.ISAAC) .. ".") .. tostring(IsaacVariant.BLUE_BABY_HUSH),
        (tostring(EntityType.WALL_CREEP) .. ".") .. tostring(WallCreepVariant.TAINTED_SOY_CREEP),
        (tostring(EntityType.ROUND_WORM) .. ".") .. tostring(RoundWormVariant.TAINTED_ROUND_WORM),
        (tostring(EntityType.ROUND_WORM) .. ".") .. tostring(RoundWormVariant.TAINTED_TUBE_WORM),
        (tostring(EntityType.MEGA_SATAN) .. ".") .. tostring(MegaSatanVariant.MEGA_SATAN),
        (tostring(EntityType.MEGA_SATAN) .. ".") .. tostring(MegaSatanVariant.MEGA_SATAN_RIGHT_HAND),
        (tostring(EntityType.MEGA_SATAN) .. ".") .. tostring(MegaSatanVariant.MEGA_SATAN_LEFT_HAND),
        (tostring(EntityType.MEGA_SATAN_2) .. ".") .. tostring(MegaSatanVariant.MEGA_SATAN),
        (tostring(EntityType.MEGA_SATAN_2) .. ".") .. tostring(MegaSatanVariant.MEGA_SATAN_RIGHT_HAND),
        (tostring(EntityType.MEGA_SATAN_2) .. ".") .. tostring(MegaSatanVariant.MEGA_SATAN_LEFT_HAND),
        (tostring(EntityType.ULTRA_GREED) .. ".") .. tostring(UltraGreedVariant.ULTRA_GREED),
        (tostring(EntityType.ULTRA_GREED) .. ".") .. tostring(UltraGreedVariant.ULTRA_GREEDIER),
        tostring(EntityType.HUSH) .. ".0",
        tostring(EntityType.DELIRIUM) .. ".0",
        (tostring(EntityType.BLOOD_PUPPY) .. ".") .. tostring(BloodPuppyVariant.SMALL),
        (tostring(EntityType.BLOOD_PUPPY) .. ".") .. tostring(BloodPuppyVariant.LARGE),
        (tostring(EntityType.SUB_HORF) .. ".") .. tostring(SubHorfVariant.TAINTED_SUB_HORF),
        (tostring(EntityType.FACELESS) .. ".") .. tostring(FacelessVariant.TAINTED_FACELESS),
        (tostring(EntityType.MOLE) .. ".") .. tostring(MoleVariant.TAINTED_MOLE),
        (tostring(EntityType.GUTTED_FATTY) .. ".") .. tostring(GuttyFattyVariant.GUTTED_FATTY),
        (tostring(EntityType.GAPER_L2) .. ".") .. tostring(Gaper2Variant.GAPER),
        (tostring(EntityType.GAPER_L2) .. ".") .. tostring(Gaper2Variant.HORF),
        (tostring(EntityType.GAPER_L2) .. ".") .. tostring(Gaper2Variant.GUSHER),
        (tostring(EntityType.CHARGER_L2) .. ".") .. tostring(Charger2Variant.CHARGER),
        (tostring(EntityType.CHARGER_L2) .. ".") .. tostring(Charger2Variant.ELLEECH),
        tostring(EntityType.SHADY) .. ".0",
        (tostring(EntityType.MOTHER) .. ".") .. tostring(MotherVariant.MOTHER_1),
        (tostring(EntityType.MOTHER) .. ".") .. tostring(MotherVariant.MOTHER_2),
        (tostring(EntityType.DOGMA) .. ".") .. tostring(DogmaVariant.TV),
        (tostring(EntityType.DOGMA) .. ".") .. tostring(DogmaVariant.ANGEL_PHASE_2),
        (tostring(EntityType.BEAST) .. ".") .. tostring(BeastVariant.BEAST),
        (tostring(EntityType.BEAST) .. ".") .. tostring(BeastVariant.ULTRA_FAMINE),
        (tostring(EntityType.BEAST) .. ".") .. tostring(BeastVariant.ULTRA_PESTILENCE),
        (tostring(EntityType.BEAST) .. ".") .. tostring(BeastVariant.ULTRA_WAR),
        (tostring(EntityType.BEAST) .. ".") .. tostring(BeastVariant.ULTRA_DEATH)
    }
)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.storyBossesSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
____exports.STORY_BOSSES_SET = __TS__New(Set, {
    EntityType.MOM,
    EntityType.MOMS_HEART,
    EntityType.SATAN,
    EntityType.ISAAC,
    EntityType.THE_LAMB,
    EntityType.MEGA_SATAN,
    EntityType.MEGA_SATAN_2,
    EntityType.ULTRA_GREED,
    EntityType.HUSH,
    EntityType.DELIRIUM,
    EntityType.MOTHER,
    EntityType.DOGMA,
    EntityType.BEAST
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.pickupVariants"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
--- For `PickupVariant.HEART` (10).
function ____exports.isHeart(self, pickup)
    return pickup.Variant == PickupVariant.HEART
end
--- For `PickupVariant.COIN` (20).
function ____exports.isCoin(self, pickup)
    return pickup.Variant == PickupVariant.COIN
end
--- For `PickupVariant.KEY` (30).
function ____exports.isKey(self, pickup)
    return pickup.Variant == PickupVariant.KEY
end
--- For `PickupVariant.BOMB` (40).
function ____exports.isBombPickup(self, pickup)
    return pickup.Variant == PickupVariant.BOMB
end
--- For `PickupVariant.POOP` (42).
function ____exports.isPoopPickup(self, pickup)
    return pickup.Variant == PickupVariant.POOP
end
--- For `PickupVariant.SACK` (69).
function ____exports.isSack(self, pickup)
    return pickup.Variant == PickupVariant.SACK
end
--- For `PickupVariant.PILL` (70).
function ____exports.isPill(self, pickup)
    return pickup.Variant == PickupVariant.PILL
end
--- For `PickupVariant.LIL_BATTERY` (90).
function ____exports.isBattery(self, pickup)
    return pickup.Variant == PickupVariant.LIL_BATTERY
end
--- For `PickupVariant.COLLECTIBLE` (100).
function ____exports.isCollectible(self, pickup)
    return pickup.Variant == PickupVariant.COLLECTIBLE
end
--- For `PickupVariant.TAROT_CARD` (300).
function ____exports.isCardPickup(self, pickup)
    return pickup.Variant == PickupVariant.TAROT_CARD
end
--- For `PickupVariant.TRINKET` (350).
function ____exports.isTrinket(self, pickup)
    return pickup.Variant == PickupVariant.TRINKET
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.roomData"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DoorSlotFlag = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlag
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____doors = require("lua_modules.isaacscript-common.dist.src.functions.doors")
local doorSlotFlagToDoorSlot = ____doors.doorSlotFlagToDoorSlot
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
--- Helper function to get the room data for the provided room.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
function ____exports.getRoomData(self, roomGridIndex)
    local roomDescriptor = ____exports.getRoomDescriptor(nil, roomGridIndex)
    return roomDescriptor.Data
end
--- Helper function to get the descriptor for a room.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
function ____exports.getRoomDescriptor(self, roomGridIndex)
    local level = game:GetLevel()
    if roomGridIndex == nil then
        roomGridIndex = ____exports.getRoomGridIndex(nil)
    end
    return level:GetRoomByIdx(roomGridIndex)
end
--- Alias for the `Level.GetCurrentRoomDesc` method. Use this to make it more clear what type of
-- `RoomDescriptor` object that you are retrieving.
function ____exports.getRoomDescriptorReadOnly(self)
    local level = game:GetLevel()
    return level:GetCurrentRoomDesc()
end
--- Helper function to get the grid index of the current room.
-- 
-- - If the current room is inside of the grid, this function will return the `SafeGridIndex` from
--   the room descriptor. (The safe grid index is defined as the top-left 1x1 section that the room
--   overlaps with, or the top-right 1x1 section of a `RoomType.SHAPE_LTL` room.)
-- - If the current room is outside of the grid, it will return the index from the
--   `Level.GetCurrentRoomIndex` method (since `SafeGridIndex` is bugged for these cases).
-- 
-- Use this function instead of the `Level.GetCurrentRoomIndex` method directly because the latter
-- will return the specific 1x1 quadrant that the player entered the room at. For most situations,
-- using the safe grid index is more reliable than this.
-- 
-- Data structures that store data per room should use the room's `ListIndex` instead of
-- `SafeGridIndex`, since the former is unique across different dimensions.
function ____exports.getRoomGridIndex(self)
    local level = game:GetLevel()
    local currentRoomIndex = level:GetCurrentRoomIndex()
    if currentRoomIndex < 0 then
        return currentRoomIndex
    end
    local roomDescriptor = ____exports.getRoomDescriptorReadOnly(nil)
    return roomDescriptor.SafeGridIndex
end
--- Helper function to get the set of allowed door slots for the room at the supplied grid index.
-- This corresponds to the doors that are enabled in the STB/XML file for the room.
function ____exports.getRoomAllowedDoors(self, roomGridIndex)
    local allowedDoors = __TS__New(Set)
    local roomData = ____exports.getRoomData(nil, roomGridIndex)
    if roomData == nil then
        return allowedDoors
    end
    local doorSlotFlags = getEnumValues(nil, DoorSlotFlag)
    for ____, doorSlotFlag in ipairs(doorSlotFlags) do
        if hasFlag(nil, roomData.Doors, doorSlotFlag) then
            local doorSlot = doorSlotFlagToDoorSlot(nil, doorSlotFlag)
            allowedDoors:add(doorSlot)
        end
    end
    return allowedDoors
end
--- Helper function to get the list grid index of the provided room, which is equal to the index in
-- the `RoomList.Get` method. In other words, this is equal to the order that the room was created
-- by the floor generation algorithm.
-- 
-- Use this as an index for data structures that store data per room, since it is unique across
-- different dimensions.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
function ____exports.getRoomListIndex(self, roomGridIndex)
    local roomDescriptor = ____exports.getRoomDescriptor(nil, roomGridIndex)
    return roomDescriptor.ListIndex
end
--- Helper function to get the name of the room as it appears in the STB/XML data.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
-- @returns The room name. Returns "Unknown" if the type was not found.
function ____exports.getRoomName(self, roomGridIndex)
    local roomData = ____exports.getRoomData(nil, roomGridIndex)
    return roomData == nil and "Unknown" or roomData.Name
end
--- Helper function to get the name of the room as it appears in the STB/XML data.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
-- @returns The room name. Returns "Unknown" if the type was not found.
function ____exports.getRoomShape(self, roomGridIndex)
    local roomData = ____exports.getRoomData(nil, roomGridIndex)
    local ____temp_0
    if roomData == nil then
        ____temp_0 = nil
    else
        ____temp_0 = roomData.Shape
    end
    return ____temp_0
end
--- Helper function to get the stage ID for a room from the XML/STB data. The room stage ID will
-- correspond to the first number in the filename of the XML/STB file. For example, a Depths room
-- would have a stage ID of 7.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
-- @returns The room stage ID. Returns -1 if the stage ID was not found.
function ____exports.getRoomStageID(self, roomGridIndex)
    local roomData = ____exports.getRoomData(nil, roomGridIndex)
    return roomData == nil and -1 or roomData.StageID
end
--- Helper function to get the sub-type for a room from the XML/STB data. The room sub-type will
-- correspond to different things depending on what XML/STB file it draws from. For example, in the
-- "00.special rooms.stb" file, an Angel Room with a sub-type of 0 will correspond to a normal Angel
-- Room and a sub-type of 1 will correspond to an Angel Room shop for The Stairway.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
-- @returns The room sub-type. Returns -1 if the sub-type was not found.
function ____exports.getRoomSubType(self, roomGridIndex)
    local roomData = ____exports.getRoomData(nil, roomGridIndex)
    return roomData == nil and -1 or roomData.Subtype
end
--- Helper function for getting the type of the room with the given grid index.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
-- @returns The room data type. Returns -1 if the type was not found.
function ____exports.getRoomType(self, roomGridIndex)
    local roomData = ____exports.getRoomData(nil, roomGridIndex)
    return roomData == nil and -1 or roomData.Type
end
--- Helper function to get the variant for a room from the XML/STB data. You can think of a room
-- variant as its identifier. For example, to go to Basement room #123, you would use a console
-- command of `goto d.123` while on the Basement.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
-- @returns The room variant. Returns -1 if the variant was not found.
function ____exports.getRoomVariant(self, roomGridIndex)
    local roomData = ____exports.getRoomData(nil, roomGridIndex)
    return roomData == nil and -1 or roomData.Variant
end
--- Note that the room visited count will be inaccurate during the period before the `POST_NEW_ROOM`
-- callback has fired (i.e. when entities are initializing and performing their first update). This
-- is because the variable is only incremented immediately before the `POST_NEW_ROOM` callback
-- fires.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
function ____exports.getRoomVisitedCount(self, roomGridIndex)
    local roomDescriptor = ____exports.getRoomDescriptor(nil, roomGridIndex)
    return roomDescriptor.VisitedCount
end
--- Helper function to set the data for a given room. This will change the room type, contents, and
-- so on.
function ____exports.setRoomData(self, roomGridIndex, roomData)
    local roomDescriptor = ____exports.getRoomDescriptor(nil, roomGridIndex)
    roomDescriptor.Data = roomData
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.doors"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__Spread = ____lualib.__TS__Spread
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
local __TS__New = ____lualib.__TS__New
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
local DoorSlotFlag = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlag
local DoorState = ____isaac_2Dtypescript_2Ddefinitions.DoorState
local DoorVariant = ____isaac_2Dtypescript_2Ddefinitions.DoorVariant
local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local DISTANCE_OF_GRID_TILE = ____constants.DISTANCE_OF_GRID_TILE
local ____doorSlotFlagToDoorSlot = require("lua_modules.isaacscript-common.dist.src.objects.doorSlotFlagToDoorSlot")
local DEFAULT_DOOR_SLOT = ____doorSlotFlagToDoorSlot.DEFAULT_DOOR_SLOT
local DOOR_SLOT_FLAG_TO_DOOR_SLOT = ____doorSlotFlagToDoorSlot.DOOR_SLOT_FLAG_TO_DOOR_SLOT
local ____doorSlotToDirection = require("lua_modules.isaacscript-common.dist.src.objects.doorSlotToDirection")
local DOOR_SLOT_TO_DIRECTION = ____doorSlotToDirection.DOOR_SLOT_TO_DIRECTION
local ____doorSlotToDoorSlotFlag = require("lua_modules.isaacscript-common.dist.src.objects.doorSlotToDoorSlotFlag")
local DOOR_SLOT_TO_DOOR_SLOT_FLAG = ____doorSlotToDoorSlotFlag.DOOR_SLOT_TO_DOOR_SLOT_FLAG
local ____oppositeDoorSlots = require("lua_modules.isaacscript-common.dist.src.objects.oppositeDoorSlots")
local OPPOSITE_DOOR_SLOTS = ____oppositeDoorSlots.OPPOSITE_DOOR_SLOTS
local ____roomShapeToDoorSlotCoordinates = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeToDoorSlotCoordinates")
local ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES = ____roomShapeToDoorSlotCoordinates.ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES
local ____roomShapeToDoorSlots = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeToDoorSlots")
local ROOM_SHAPE_TO_DOOR_SLOTS = ____roomShapeToDoorSlots.ROOM_SHAPE_TO_DOOR_SLOTS
local ____bitwise = require("lua_modules.isaacscript-common.dist.src.functions.bitwise")
local arrayToBitFlags = ____bitwise.arrayToBitFlags
local ____direction = require("lua_modules.isaacscript-common.dist.src.functions.direction")
local directionToVector = ____direction.directionToVector
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
local ____tstlClass = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
local isTSTLSet = ____tstlClass.isTSTLSet
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
function ____exports.doorSlotToDirection(self, doorSlot)
    return DOOR_SLOT_TO_DIRECTION[doorSlot]
end
--- Helper function to get the offset from a door position that a player will enter a room at.
-- 
-- When players enter a room, they do not appear exactly on the location of the door, because then
-- they would immediately collide with the loading zone. Instead, they appear on the grid tile next
-- to the door.
function ____exports.getDoorSlotEnterPositionOffset(self, doorSlot)
    local direction = ____exports.doorSlotToDirection(nil, doorSlot)
    local vector = directionToVector(nil, direction)
    local oppositeVector = vector * -1
    return oppositeVector * DISTANCE_OF_GRID_TILE
end
--- Helper function to get all of the doors in the room. By default, it will return every door. You
-- can optionally specify one or more room types to return only the doors that match the specified
-- room types.
function ____exports.getDoors(self, ...)
    local roomTypes = {...}
    local room = game:GetRoom()
    local roomTypesSet = __TS__New(Set, roomTypes)
    local doorSlots = getEnumValues(nil, DoorSlot)
    local doors = {}
    for ____, doorSlot in ipairs(doorSlots) do
        do
            local door = room:GetDoor(doorSlot)
            if door == nil then
                goto __continue25
            end
            if roomTypesSet.size == 0 or roomTypesSet:has(door.TargetRoomType) then
                doors[#doors + 1] = door
            end
        end
        ::__continue25::
    end
    return doors
end
function ____exports.isBlueWombDoor(self, door)
    return door.TargetRoomIndex == asNumber(nil, GridRoom.BLUE_WOMB)
end
--- Helper function to check if the provided door leads to the "secret exit" off-grid room that takes
-- you to the Repentance floor.
function ____exports.isRepentanceDoor(self, door)
    return door.TargetRoomIndex == asNumber(nil, GridRoom.SECRET_EXIT)
end
--- This refers to the hole in the wall that appears after bombing the entrance to a secret room.
-- Note that the door still exists before it has been bombed open. It has a sprite filename of
-- "gfx/grid/door_08_holeinwall.anm2".
function ____exports.isSecretRoomDoor(self, door)
    local sprite = door:GetSprite()
    local fileName = sprite:GetFilename()
    return string.lower(fileName) == "gfx/grid/door_08_holeinwall.anm2"
end
--- Helper function to remove a single door.
function ____exports.removeDoor(self, door)
    local room = game:GetRoom()
    room:RemoveDoor(door.Slot)
end
--- Helper function to remove the doors provided.
-- 
-- This function is variadic, meaning that you can specify as many doors as you want to remove.
function ____exports.removeDoors(self, ...)
    local doors = {...}
    for ____, door in ipairs(doors) do
        ____exports.removeDoor(nil, door)
    end
end
function ____exports.closeAllDoors(self)
    for ____, door in ipairs(____exports.getDoors(nil)) do
        door:Close(true)
    end
end
--- Use this instead of the `GridEntityDoor.Close` method if you want the door to immediately close
-- without an animation.
function ____exports.closeDoorFast(self, door)
    door.State = DoorState.CLOSED
    local sprite = door:GetSprite()
    sprite:Play("Closed", true)
end
function ____exports.doorSlotFlagToDoorSlot(self, doorSlotFlag)
    local doorSlot = DOOR_SLOT_FLAG_TO_DOOR_SLOT[doorSlotFlag]
    return doorSlot == nil and DEFAULT_DOOR_SLOT or doorSlot
end
function ____exports.doorSlotFlagsToDoorSlots(self, doorSlotFlags)
    local doorSlots = {}
    for ____, doorSlotFlag in ipairs(getEnumValues(nil, DoorSlotFlag)) do
        if hasFlag(nil, doorSlotFlags, doorSlotFlag) then
            local doorSlot = ____exports.doorSlotFlagToDoorSlot(nil, doorSlotFlag)
            doorSlots[#doorSlots + 1] = doorSlot
        end
    end
    return doorSlots
end
function ____exports.doorSlotToDoorSlotFlag(self, doorSlot)
    return DOOR_SLOT_TO_DOOR_SLOT_FLAG[doorSlot]
end
--- Helper function to convert an array of door slots or a set of door slots to the resulting bit
-- flag number.
function ____exports.doorSlotsToDoorSlotFlags(self, doorSlots)
    local doorSlotArray = isTSTLSet(nil, doorSlots) and ({__TS__Spread(doorSlots:values())}) or doorSlots
    local doorSlotFlagArray = __TS__ArrayMap(
        doorSlotArray,
        function(____, doorSlot) return ____exports.doorSlotToDoorSlotFlag(nil, doorSlot) end
    )
    return arrayToBitFlags(nil, doorSlotFlagArray)
end
function ____exports.getAngelRoomDoor(self)
    local angelRoomDoors = ____exports.getDoors(nil, RoomType.ANGEL)
    local ____temp_0
    if #angelRoomDoors == 0 then
        ____temp_0 = nil
    else
        ____temp_0 = angelRoomDoors[1]
    end
    return ____temp_0
end
--- Helper function to get the door that leads to the off-grid room that contains the hole to the
-- Blue Womb.
-- 
-- Returns undefined if the room has no Blue Womb doors.
function ____exports.getBlueWombDoor(self)
    local doors = ____exports.getDoors(nil)
    return __TS__ArrayFind(
        doors,
        function(____, door) return ____exports.isBlueWombDoor(nil, door) end
    )
end
function ____exports.getDevilRoomDoor(self)
    local devilRoomDoors = ____exports.getDoors(nil, RoomType.DEVIL)
    local ____temp_1
    if #devilRoomDoors == 0 then
        ____temp_1 = nil
    else
        ____temp_1 = devilRoomDoors[1]
    end
    return ____temp_1
end
--- If there is both a Devil Room and an Angel Room door, this function will return door with the
-- lowest slot number.
function ____exports.getDevilRoomOrAngelRoomDoor(self)
    local devilRoomOrAngelRoomDoors = ____exports.getDoors(nil, RoomType.DEVIL, RoomType.ANGEL)
    local ____temp_2
    if #devilRoomOrAngelRoomDoors == 0 then
        ____temp_2 = nil
    else
        ____temp_2 = devilRoomOrAngelRoomDoors[1]
    end
    return ____temp_2
end
--- Helper function to get the position that a player will enter a room at corresponding to a door.
-- 
-- When players enter a room, they do not appear exactly on the location of the door, because then
-- they would immediately collide with the loading zone. Instead, they appear on the grid tile next
-- to the door.
function ____exports.getDoorEnterPosition(self, door)
    local offset = ____exports.getDoorSlotEnterPositionOffset(nil, door.Slot)
    return door.Position + offset
end
--- Helper function to get the position that a player will enter a room at corresponding to a door
-- slot.
-- 
-- When players enter a room, they do not appear exactly on the location of the door, because then
-- they would immediately collide with the loading zone. Instead, they appear on the grid tile next
-- to the door.
function ____exports.getDoorSlotEnterPosition(self, doorSlot)
    local room = game:GetRoom()
    local position = room:GetDoorSlotPosition(doorSlot)
    local offset = ____exports.getDoorSlotEnterPositionOffset(nil, doorSlot)
    return position + offset
end
--- Helper function to get the possible door slots that can exist for a given room shape.
function ____exports.getDoorSlotsForRoomShape(self, roomShape)
    return ROOM_SHAPE_TO_DOOR_SLOTS[roomShape]
end
--- Helper function to get all of the doors in the room that lead to the provided room index.
-- 
-- This function is variadic, meaning that you can specify N arguments to return all of the doors
-- that match any of the N room grid indexes.
function ____exports.getDoorsToRoomIndex(self, ...)
    local roomGridIndex = {...}
    local roomGridIndexesSet = __TS__New(Set, roomGridIndex)
    local doors = ____exports.getDoors(nil)
    return __TS__ArrayFilter(
        doors,
        function(____, door) return roomGridIndexesSet:has(door.TargetRoomIndex) end
    )
end
function ____exports.getOppositeDoorSlot(self, doorSlot)
    return OPPOSITE_DOOR_SLOTS[doorSlot]
end
--- Helper function to get the door that leads to the "secret exit" off-grid room that takes you to
-- the Repentance floor.
-- 
-- Returns undefined if the room has no Repentance doors.
function ____exports.getRepentanceDoor(self)
    local doors = ____exports.getDoors(nil)
    return __TS__ArrayFind(
        doors,
        function(____, door) return ____exports.isRepentanceDoor(nil, door) end
    )
end
--- Helper function to get the corresponding door slot for a given room shape and grid coordinates.
function ____exports.getRoomShapeDoorSlot(self, roomShape, x, y)
    local coordinatesMap = ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES[roomShape]
    for ____, ____value in __TS__Iterator(coordinatesMap:entries()) do
        local doorSlot = ____value[1]
        local doorX = ____value[2][1]
        local doorY = ____value[2][2]
        if x == doorX and y == doorY then
            return doorSlot
        end
    end
    return nil
end
--- Helper function to get the room grid coordinates for a specific room shape and door slot
-- combination.
function ____exports.getRoomShapeDoorSlotCoordinates(self, roomShape, doorSlot)
    local coordinatesMap = ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES[roomShape]
    return coordinatesMap:get(doorSlot)
end
--- Helper function to find unused door slots in the current room that can be used to make custom
-- doors.
function ____exports.getUnusedDoorSlots(self)
    local room = game:GetRoom()
    local doorSlots = getEnumValues(nil, DoorSlot)
    return __TS__ArrayFilter(
        doorSlots,
        function(____, doorSlot) return doorSlot ~= DoorSlot.NO_DOOR_SLOT and room:IsDoorSlotAllowed(doorSlot) and room:GetDoor(doorSlot) == nil end
    )
end
--- Helper function to check if the current room has one or more open door slots that can be used to
-- make custom doors.
function ____exports.hasUnusedDoorSlot(self)
    local unusedDoorSlots = ____exports.getUnusedDoorSlots(nil)
    return #unusedDoorSlots > 0
end
function ____exports.isAngelRoomDoor(self, door)
    return door.TargetRoomType == RoomType.ANGEL
end
function ____exports.isDevilRoomDoor(self, door)
    return door.TargetRoomType == RoomType.DEVIL
end
--- Helper function to see if a door slot could exist for a given room shape.
function ____exports.isDoorSlotInRoomShape(self, doorSlot, roomShape)
    local doorSlots = ____exports.getDoorSlotsForRoomShape(nil, roomShape)
    return doorSlots:has(doorSlot)
end
--- This refers to the Repentance door that spawns in a boss room after defeating the boss. You have
-- to spend one key to open it. It has a sprite filename of "gfx/grid/door_downpour.anm2".
function ____exports.isDoorToDownpour(self, door)
    if not ____exports.isRepentanceDoor(nil, door) then
        return false
    end
    local sprite = door:GetSprite()
    local fileName = sprite:GetFilename()
    return string.lower(fileName) == "gfx/grid/door_downpour.anm2"
end
--- This refers to the Repentance door that spawns in a boss room after defeating the boss. You have
-- to spend two hearts to open it. It has a sprite filename of "gfx/grid/door_mausoleum.anm2".
function ____exports.isDoorToMausoleum(self, door)
    if not ____exports.isRepentanceDoor(nil, door) then
        return false
    end
    local sprite = door:GetSprite()
    local fileName = sprite:GetFilename()
    return string.lower(fileName) == "gfx/grid/door_mausoleum.anm2"
end
--- This refers to the "strange door" located on the first room of Depths 2. You open it with either
-- a Polaroid or a Negative. It has a sprite filename of "gfx/grid/door_mausoleum_alt.anm2".
function ____exports.isDoorToMausoleumAscent(self, door)
    if not ____exports.isRepentanceDoor(nil, door) then
        return false
    end
    local sprite = door:GetSprite()
    local fileName = sprite:GetFilename()
    return string.lower(fileName) == "gfx/grid/door_mausoleum_alt.anm2"
end
--- This refers to the Repentance door that spawns in a boss room after defeating the boss. You have
-- to spend two bombs to open it. It has a sprite filename of "gfx/grid/door_mines.anm2".
function ____exports.isDoorToMines(self, door)
    if not ____exports.isRepentanceDoor(nil, door) then
        return false
    end
    local sprite = door:GetSprite()
    local fileName = sprite:GetFilename()
    return string.lower(fileName) == "gfx/grid/door_mines.anm2"
end
--- This refers to the Repentance door that spawns after defeating Mom. You open it with the
-- completed knife. It has a sprite filename of "gfx/grid/door_momsheart.anm2".
function ____exports.isDoorToMomsHeart(self, door)
    if not ____exports.isRepentanceDoor(nil, door) then
        return false
    end
    local sprite = door:GetSprite()
    local fileName = sprite:GetFilename()
    return string.lower(fileName) == "gfx/grid/door_momsheart.anm2"
end
function ____exports.isHiddenSecretRoomDoor(self, door)
    local sprite = door:GetSprite()
    local animation = sprite:GetAnimation()
    return ____exports.isSecretRoomDoor(nil, door) and animation == "Hidden"
end
--- Helper function to reset an unlocked door back to a locked state. Doing this is non-trivial
-- because in addition to calling the `GridEntityDoor.SetLocked` method, you must also:
-- 
-- - Set the `VisitedCount` of the room's `RoomDescription` to 0.
-- - Set the variant to `DoorVariant.DOOR_LOCKED`.
-- - Close the door.
function ____exports.lockDoor(self, door)
    local level = game:GetLevel()
    local roomDescriptor = level:GetRoomByIdx(door.TargetRoomIndex)
    roomDescriptor.VisitedCount = 0
    door:SetVariant(DoorVariant.LOCKED)
    door:SetLocked(true)
    door:Close(true)
end
--- For the purposes of this function, doors to Secret Rooms or Super Secret Rooms that have not been
-- discovered yet will not be opened.
function ____exports.openAllDoors(self)
    for ____, door in ipairs(____exports.getDoors(nil)) do
        door:Open()
    end
end
--- Use this instead of the `GridEntityDoor.Open` method if you want the door to immediately open
-- without an animation.
function ____exports.openDoorFast(self, door)
    door.State = DoorState.OPEN
    local sprite = door:GetSprite()
    sprite:Play("Opened", true)
end
--- Helper function to remove all of the doors in the room. By default, it will remove every door.
-- You can optionally specify one or more room types to remove only the doors that match the
-- specified room types.
-- 
-- @returns The number of doors removed.
function ____exports.removeAllDoors(self, ...)
    local doors = ____exports.getDoors(nil, ...)
    ____exports.removeDoors(
        nil,
        table.unpack(doors)
    )
    return #doors
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.doorSlotFlagToDoorSlot"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
local DoorSlotFlag = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlag
____exports.DEFAULT_DOOR_SLOT = DoorSlot.NO_DOOR_SLOT
____exports.DOOR_SLOT_FLAG_TO_DOOR_SLOT = {
    [DoorSlotFlag.LEFT_0] = DoorSlot.LEFT_0,
    [DoorSlotFlag.UP_0] = DoorSlot.UP_0,
    [DoorSlotFlag.RIGHT_0] = DoorSlot.RIGHT_0,
    [DoorSlotFlag.DOWN_0] = DoorSlot.DOWN_0,
    [DoorSlotFlag.LEFT_1] = DoorSlot.LEFT_1,
    [DoorSlotFlag.UP_1] = DoorSlot.UP_1,
    [DoorSlotFlag.RIGHT_1] = DoorSlot.RIGHT_1,
    [DoorSlotFlag.DOWN_1] = DoorSlot.DOWN_1
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.doorSlotToDirection"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
____exports.DOOR_SLOT_TO_DIRECTION = {
    [DoorSlot.NO_DOOR_SLOT] = Direction.NO_DIRECTION,
    [DoorSlot.LEFT_0] = Direction.LEFT,
    [DoorSlot.UP_0] = Direction.UP,
    [DoorSlot.RIGHT_0] = Direction.RIGHT,
    [DoorSlot.DOWN_0] = Direction.DOWN,
    [DoorSlot.LEFT_1] = Direction.LEFT,
    [DoorSlot.UP_1] = Direction.UP,
    [DoorSlot.RIGHT_1] = Direction.RIGHT,
    [DoorSlot.DOWN_1] = Direction.DOWN
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.doorSlotToDoorSlotFlag"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
local DoorSlotFlag = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlag
local DoorSlotFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlagZero
____exports.DOOR_SLOT_TO_DOOR_SLOT_FLAG = {
    [DoorSlot.NO_DOOR_SLOT] = DoorSlotFlagZero,
    [DoorSlot.LEFT_0] = DoorSlotFlag.LEFT_0,
    [DoorSlot.UP_0] = DoorSlotFlag.UP_0,
    [DoorSlot.RIGHT_0] = DoorSlotFlag.RIGHT_0,
    [DoorSlot.DOWN_0] = DoorSlotFlag.DOWN_0,
    [DoorSlot.LEFT_1] = DoorSlotFlag.LEFT_1,
    [DoorSlot.UP_1] = DoorSlotFlag.UP_1,
    [DoorSlot.RIGHT_1] = DoorSlotFlag.RIGHT_1,
    [DoorSlot.DOWN_1] = DoorSlotFlag.DOWN_1
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.oppositeDoorSlots"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
____exports.OPPOSITE_DOOR_SLOTS = {
    [DoorSlot.NO_DOOR_SLOT] = nil,
    [DoorSlot.LEFT_0] = DoorSlot.RIGHT_0,
    [DoorSlot.UP_0] = DoorSlot.DOWN_0,
    [DoorSlot.RIGHT_0] = DoorSlot.LEFT_0,
    [DoorSlot.DOWN_0] = DoorSlot.UP_0,
    [DoorSlot.LEFT_1] = DoorSlot.RIGHT_1,
    [DoorSlot.UP_1] = DoorSlot.DOWN_1,
    [DoorSlot.RIGHT_1] = DoorSlot.LEFT_1,
    [DoorSlot.DOWN_1] = DoorSlot.UP_1
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomShapeToDoorSlotCoordinates"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
--- The coordinates correspond to the x and y values that are present in a room's XML file.
-- 
-- e.g. `<door exists="False" x="-1" y="3" />`
____exports.ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES = {
    [RoomShape.SHAPE_1x1] = __TS__New(Map, {{DoorSlot.LEFT_0, {-1, 3}}, {DoorSlot.UP_0, {6, -1}}, {DoorSlot.RIGHT_0, {13, 3}}, {DoorSlot.DOWN_0, {6, 7}}}),
    [RoomShape.IH] = __TS__New(Map, {{DoorSlot.LEFT_0, {-1, 3}}, {DoorSlot.RIGHT_0, {13, 3}}}),
    [RoomShape.IV] = __TS__New(Map, {{DoorSlot.UP_0, {6, -1}}, {DoorSlot.DOWN_0, {6, 7}}}),
    [RoomShape.SHAPE_1x2] = __TS__New(Map, {
        {DoorSlot.LEFT_0, {-1, 3}},
        {DoorSlot.UP_0, {6, -1}},
        {DoorSlot.RIGHT_0, {13, 3}},
        {DoorSlot.DOWN_0, {6, 14}},
        {DoorSlot.LEFT_1, {-1, 10}},
        {DoorSlot.RIGHT_1, {13, 10}}
    }),
    [RoomShape.IIV] = __TS__New(Map, {{DoorSlot.UP_0, {6, -1}}, {DoorSlot.DOWN_0, {6, 14}}}),
    [RoomShape.SHAPE_2x1] = __TS__New(Map, {
        {DoorSlot.LEFT_0, {-1, 3}},
        {DoorSlot.UP_0, {6, -1}},
        {DoorSlot.RIGHT_0, {26, 3}},
        {DoorSlot.DOWN_0, {6, 7}},
        {DoorSlot.UP_1, {19, -1}},
        {DoorSlot.DOWN_1, {19, 7}}
    }),
    [RoomShape.IIH] = __TS__New(Map, {{DoorSlot.LEFT_0, {-1, 3}}, {DoorSlot.RIGHT_0, {26, 3}}}),
    [RoomShape.SHAPE_2x2] = __TS__New(Map, {
        {DoorSlot.LEFT_0, {-1, 3}},
        {DoorSlot.UP_0, {6, -1}},
        {DoorSlot.RIGHT_0, {26, 3}},
        {DoorSlot.DOWN_0, {6, 14}},
        {DoorSlot.LEFT_1, {-1, 10}},
        {DoorSlot.UP_1, {19, -1}},
        {DoorSlot.RIGHT_1, {26, 10}},
        {DoorSlot.DOWN_1, {19, 14}}
    }),
    [RoomShape.LTL] = __TS__New(Map, {
        {DoorSlot.LEFT_0, {12, 3}},
        {DoorSlot.UP_0, {6, 6}},
        {DoorSlot.RIGHT_0, {26, 3}},
        {DoorSlot.DOWN_0, {6, 14}},
        {DoorSlot.LEFT_1, {-1, 10}},
        {DoorSlot.UP_1, {19, -1}},
        {DoorSlot.RIGHT_1, {26, 10}},
        {DoorSlot.DOWN_1, {19, 14}}
    }),
    [RoomShape.LTR] = __TS__New(Map, {
        {DoorSlot.LEFT_0, {-1, 3}},
        {DoorSlot.UP_0, {6, -1}},
        {DoorSlot.RIGHT_0, {13, 3}},
        {DoorSlot.DOWN_0, {6, 14}},
        {DoorSlot.LEFT_1, {-1, 10}},
        {DoorSlot.UP_1, {19, 6}},
        {DoorSlot.RIGHT_1, {26, 10}},
        {DoorSlot.DOWN_1, {19, 14}}
    }),
    [RoomShape.LBL] = __TS__New(Map, {
        {DoorSlot.LEFT_0, {-1, 3}},
        {DoorSlot.UP_0, {6, -1}},
        {DoorSlot.RIGHT_0, {26, 3}},
        {DoorSlot.DOWN_0, {6, 7}},
        {DoorSlot.LEFT_1, {12, 10}},
        {DoorSlot.UP_1, {19, -1}},
        {DoorSlot.RIGHT_1, {26, 10}},
        {DoorSlot.DOWN_1, {19, 14}}
    }),
    [RoomShape.LBR] = __TS__New(Map, {
        {DoorSlot.LEFT_0, {-1, 3}},
        {DoorSlot.UP_0, {6, -1}},
        {DoorSlot.RIGHT_0, {26, 3}},
        {DoorSlot.DOWN_0, {6, 14}},
        {DoorSlot.LEFT_1, {-1, 10}},
        {DoorSlot.UP_1, {19, -1}},
        {DoorSlot.RIGHT_1, {13, 10}},
        {DoorSlot.DOWN_1, {19, 7}}
    })
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomShapeToDoorSlots"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ALL_DOOR_SLOTS_SET = __TS__New(Set, {
    DoorSlot.LEFT_0,
    DoorSlot.UP_0,
    DoorSlot.RIGHT_0,
    DoorSlot.DOWN_0,
    DoorSlot.LEFT_1,
    DoorSlot.UP_1,
    DoorSlot.RIGHT_1,
    DoorSlot.DOWN_1
})
____exports.ROOM_SHAPE_TO_DOOR_SLOTS = {
    [RoomShape.SHAPE_1x1] = __TS__New(Set, {DoorSlot.LEFT_0, DoorSlot.UP_0, DoorSlot.RIGHT_0, DoorSlot.DOWN_0}),
    [RoomShape.IH] = __TS__New(Set, {DoorSlot.LEFT_0, DoorSlot.RIGHT_0}),
    [RoomShape.IV] = __TS__New(Set, {DoorSlot.UP_0, DoorSlot.DOWN_0}),
    [RoomShape.SHAPE_1x2] = __TS__New(Set, {
        DoorSlot.LEFT_0,
        DoorSlot.UP_0,
        DoorSlot.RIGHT_0,
        DoorSlot.DOWN_0,
        DoorSlot.LEFT_1,
        DoorSlot.RIGHT_1
    }),
    [RoomShape.IIV] = __TS__New(Set, {DoorSlot.UP_0, DoorSlot.DOWN_0}),
    [RoomShape.SHAPE_2x1] = __TS__New(Set, {
        DoorSlot.LEFT_0,
        DoorSlot.UP_0,
        DoorSlot.RIGHT_0,
        DoorSlot.DOWN_0,
        DoorSlot.UP_1,
        DoorSlot.DOWN_1
    }),
    [RoomShape.IIH] = __TS__New(Set, {DoorSlot.LEFT_0, DoorSlot.RIGHT_0}),
    [RoomShape.SHAPE_2x2] = ALL_DOOR_SLOTS_SET,
    [RoomShape.LTL] = ALL_DOOR_SLOTS_SET,
    [RoomShape.LTR] = ALL_DOOR_SLOTS_SET,
    [RoomShape.LBL] = ALL_DOOR_SLOTS_SET,
    [RoomShape.LBR] = ALL_DOOR_SLOTS_SET
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.bitwise"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ParseInt = ____lualib.__TS__ParseInt
local __TS__NumberToString = ____lualib.__TS__NumberToString
local __TS__Iterator = ____lualib.__TS__Iterator
local __TS__ArrayUnshift = ____lualib.__TS__ArrayUnshift
local ____exports = {}
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local addFlag = ____flag.addFlag
--- Helper function to convert a set of flags to a single `BitFlags` object.
function ____exports.arrayToBitFlags(self, array)
    local flags = 0
    for ____, flag in ipairs(array) do
        flags = addFlag(nil, flags, flag)
    end
    return flags
end
--- Helper function to convert an array of bits to the resulting decimal number.
function ____exports.convertBinaryToDecimal(self, bits)
    local bitsString = table.concat(bits, "")
    return __TS__ParseInt(bitsString, 2)
end
--- Helper function to convert a number to an array of bits.
-- 
-- @param number The number to convert.
-- @param minLength Optional. Equal to the minimum amount of bits that should be returned. If the
-- converted number of bits is below this number, 0's will be padded to the left
-- side until the minimum length is met. Default is undefined (which will not cause
-- any padding).
function ____exports.convertDecimalToBinary(self, number, minLength)
    local bits = {}
    local bitsString = __TS__NumberToString(number, 2)
    for ____, bitString in __TS__Iterator(bitsString) do
        local bit = tonumber(bitString)
        if bit == nil then
            error("Failed to convert the following number to binary: " .. tostring(number))
        end
        bits[#bits + 1] = bit
    end
    if minLength ~= nil then
        while #bits < minLength do
            __TS__ArrayUnshift(bits, 0)
        end
    end
    return bits
end
--- Helper function to count the number of bits that are set to 1 in a binary representation of a
-- number.
function ____exports.countSetBits(self, n)
    local count = 0
    while n > 0 do
        n = n & n - 1
        count = count + 1
    end
    return count
end
--- Helper function to get the value of a specific but in a binary representation of a number.
function ____exports.getKBitOfN(self, k, n)
    return n >> k & 1
end
--- Helper function to get the number of bits in a binary representation of a number.
function ____exports.getNumBitsOfN(self, n)
    local numBits = 0
    while n > 0 do
        numBits = numBits + 1
        n = n >> 1
    end
    return numBits
end
--- Helper function to convert a set of flags to a single `BitFlags` object.
function ____exports.setToBitFlags(self, set)
    local flags = 0
    for ____, flag in __TS__Iterator(set:values()) do
        flags = addFlag(nil, flags, flag)
    end
    return flags
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.sprites"] = function(...) 
local ____exports = {}
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local EMPTY_PNG_PATH = ____constants.EMPTY_PNG_PATH
local VectorZero = ____constants.VectorZero
local ____kColor = require("lua_modules.isaacscript-common.dist.src.functions.kColor")
local kColorEquals = ____kColor.kColorEquals
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local eRange = ____utils.eRange
--- Helper function to check if two texels on a sprite are equivalent to each other.
function ____exports.texelEquals(self, sprite1, sprite2, position, layerID)
    local kColor1 = sprite1:GetTexel(position, VectorZero, 1, layerID)
    local kColor2 = sprite2:GetTexel(position, VectorZero, 1, layerID)
    return kColorEquals(nil, kColor1, kColor2)
end
--- Helper function to clear all layers or specific layers from a sprite.
-- 
-- This function is variadic, so pass as many layer IDs as you want to clear. If no specific layers
-- are passed, it will clear every layer.
-- 
-- Since there is no official API method to "clear" a sprite, we can work around it by setting the
-- spritesheet to a non-existent or completely transparent file. If the path to the spritesheet does
-- not exist, then this function might cause spurious errors to appear in the "log.txt file". To
-- silence these errors, create a transparent 1 pixel PNG file in your mod's resources folder at the
-- path corresponding to the "EMPTY_PNG_PATH" constant.
function ____exports.clearSprite(self, sprite, ...)
    local layerIDs = {...}
    if #layerIDs == 0 then
        local numLayers = sprite:GetLayerCount()
        layerIDs = eRange(nil, numLayers)
    end
    for ____, layerID in ipairs(layerIDs) do
        sprite:ReplaceSpritesheet(layerID, EMPTY_PNG_PATH)
    end
    sprite:LoadGraphics()
end
--- Helper function that returns the number of the final frame in a particular animation for a
-- sprite. By default, it will use the currently playing animation, but you can also specify a
-- specific animation to check.
-- 
-- Note that this function is bugged with the Stop Watch or the Broken Watch, since using the
-- `Sprite.SetFrame` method will reset the internal accumulator used to slow down the playback speed
-- of the animation. (The `PlaybackSpeed` field of the sprite is not used.) Thus, it is only safe to
-- use this function on animations that are not slowed down by Stop Watch or Broken Watch, such as
-- player animations.
function ____exports.getLastFrameOfAnimation(self, sprite, animation)
    local currentAnimation = sprite:GetAnimation()
    local currentFrame = sprite:GetFrame()
    if animation ~= nil and animation ~= currentAnimation then
        sprite:SetAnimation(animation)
    end
    sprite:SetLastFrame()
    local finalFrame = sprite:GetFrame()
    if animation ~= nil and animation ~= currentAnimation then
        sprite:Play(currentAnimation, true)
    end
    sprite:SetFrame(currentFrame)
    return finalFrame
end
--- Helper function to check if two sprite layers have the same sprite sheet by using the
-- `Sprite.GetTexel` method.
-- 
-- Since checking every single texel in the entire sprite is very expensive, this function requires
-- that you provide a range of specific texels to check.
function ____exports.spriteEquals(self, sprite1, sprite2, layerID, xStart, xFinish, xIncrement, yStart, yFinish, yIncrement)
    do
        local x = xStart
        while x <= xFinish do
            do
                local y = yStart
                while y <= yFinish do
                    local position = Vector(x, y)
                    if not ____exports.texelEquals(
                        nil,
                        sprite1,
                        sprite2,
                        position,
                        layerID
                    ) then
                        return false
                    end
                    y = y + yIncrement
                end
            end
            x = x + xIncrement
        end
    end
    return true
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostCursedTeleport"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local playerIsTeleportingFromCursedTeleport
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PlayerVariant = ____isaac_2Dtypescript_2Ddefinitions.PlayerVariant
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local mapGetPlayer = ____playerDataStructures.mapGetPlayer
local mapSetPlayer = ____playerDataStructures.mapSetPlayer
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getPlayerNumHitsRemaining = ____players.getPlayerNumHitsRemaining
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
function playerIsTeleportingFromCursedTeleport(self, player, lastDamageFrame)
    local gameFrameCount = game:GetFrameCount()
    if gameFrameCount ~= lastDamageFrame then
        return false
    end
    local sprite = player:GetSprite()
    if not sprite:IsPlaying("TeleportUp") or sprite:GetFrame() ~= 1 then
        return false
    end
    if player:HasCollectible(CollectibleType.CURSED_EYE) then
        return true
    end
    local numHitsRemaining = getPlayerNumHitsRemaining(nil, player)
    if player:HasTrinket(TrinketType.CURSED_SKULL) and numHitsRemaining == 1 then
        return true
    end
    return false
end
____exports.PostCursedTeleport = __TS__Class()
local PostCursedTeleport = ____exports.PostCursedTeleport
PostCursedTeleport.name = "PostCursedTeleport"
__TS__ClassExtends(PostCursedTeleport, CustomCallback)
function PostCursedTeleport.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {
        run = {playersDamageFrameMap = __TS__New(Map)},
        level = {numSacrifices = 0}
    }
    self.shouldFire = shouldFirePlayer
    self.entityTakeDmgPlayer = function(____, entity, _amount, damageFlags, _source, _countdownFrames)
        self:incrementNumSacrifices(damageFlags)
        self:setDamageFrame(entity, damageFlags)
        return nil
    end
    self.postPlayerRenderPlayer = function(____, player, _renderOffset)
        local trackingArray = mapGetPlayer(nil, self.v.run.playersDamageFrameMap, player)
        if trackingArray == nil then
            return
        end
        local lastDamageFrame, callbackActivatedOnThisFrame = table.unpack(trackingArray)
        if not playerIsTeleportingFromCursedTeleport(nil, player, lastDamageFrame) then
            return
        end
        if callbackActivatedOnThisFrame then
            return
        end
        local gameFrameCount = game:GetFrameCount()
        local newTrackingArray = {gameFrameCount, true}
        mapSetPlayer(nil, self.v.run.playersDamageFrameMap, player, newTrackingArray)
        self:fire(player)
    end
    self.callbacksUsed = {{ModCallback.ENTITY_TAKE_DMG, {self.entityTakeDmgPlayer, EntityType.PLAYER}}, {ModCallback.POST_PLAYER_RENDER, {self.postPlayerRenderPlayer, PlayerVariant.PLAYER}}}
end
function PostCursedTeleport.prototype.setDamageFrame(self, entity, damageFlags)
    local gameFrameCount = game:GetFrameCount()
    local player = entity:ToPlayer()
    if player == nil then
        return
    end
    local trackingArray = mapGetPlayer(nil, self.v.run.playersDamageFrameMap, player)
    if trackingArray ~= nil then
        local lastDamageFrame, callbackFiredOnThisFrame = table.unpack(trackingArray)
        if lastDamageFrame == gameFrameCount and callbackFiredOnThisFrame then
            return
        end
    end
    if self:isPotentialNaturalTeleportFromSacrificeRoom(damageFlags) then
        return
    end
    local newTrackingArray = {gameFrameCount, false}
    mapSetPlayer(nil, self.v.run.playersDamageFrameMap, player, newTrackingArray)
end
function PostCursedTeleport.prototype.isPotentialNaturalTeleportFromSacrificeRoom(self, damageFlags)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local isSpikeDamage = hasFlag(nil, damageFlags, DamageFlag.SPIKES)
    return roomType == RoomType.SACRIFICE and isSpikeDamage and (self.v.level.numSacrifices == 6 or self.v.level.numSacrifices >= 12)
end
function PostCursedTeleport.prototype.incrementNumSacrifices(self, damageFlags)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local isSpikeDamage = hasFlag(nil, damageFlags, DamageFlag.SPIKES)
    if roomType == RoomType.SACRIFICE and isSpikeDamage then
        local ____self_v_level_0, ____numSacrifices_1 = self.v.level, "numSacrifices"
        ____self_v_level_0[____numSacrifices_1] = ____self_v_level_0[____numSacrifices_1] + 1
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.playerDataStructures"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local Set = ____lualib.Set
local ____exports = {}
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getPlayerIndex = ____playerIndex.getPlayerIndex
--- Helper function to make using maps with an index of `PlayerIndex` easier. Use this instead of the
-- `Map.set` method if you have a map of this type.
-- 
-- For example:
-- 
-- ```ts
-- const v = {
--   run: {
--     playersSpeedBoost: new Map<PlayerIndex, int>(),
--   },
-- };
-- 
-- function incrementSpeedBoost(player: EntityPlayer) {
--   const oldSpeedBoost = mapGetPlayer(v.run.playersSpeedBoost, player);
--   const newSpeedBoost = oldSpeedBoost + 0.1;
--   mapSetPlayer(v.run.playersSpeedBoost, player);
-- }
-- ```
function ____exports.mapSetPlayer(self, map, player, value)
    local playerIndex = getPlayerIndex(nil, player)
    map:set(playerIndex, value)
end
--- Helper function to make using default maps with an index of `PlayerIndex` easier. Use this
-- instead of the `DefaultMap.getAndSetDefault` method if you have a default map of this type.
-- 
-- For example:
-- 
-- ```ts
-- const v = {
--   run: {
--     playersSpeedBoost: new DefaultMap<PlayerIndex, int>(0),
--   },
-- };
-- 
-- function evaluateCacheSpeed(player: EntityPlayer) {
--   player.MoveSpeed = defaultMapGetPlayer(v.run.playersSpeedBoost, player);
-- }
-- ```
function ____exports.defaultMapGetPlayer(self, map, player, ...)
    local playerIndex = getPlayerIndex(nil, player)
    return map:getAndSetDefault(playerIndex, ...)
end
--- Helper function to make using maps with an index of `PlayerIndex` easier. Use this instead of the
-- `Map.set` method if you have a map of this type.
-- 
-- Since `Map` and `DefaultMap` set values in the same way, this function is simply an alias for the
-- `mapSetPlayer` helper function.
function ____exports.defaultMapSetPlayer(self, map, player, value)
    ____exports.mapSetPlayer(nil, map, player, value)
end
--- Helper function to make using maps with an index of `PlayerIndex` easier. Use this instead of the
-- `Map.get` method if you have a map of this type.
-- 
-- For example:
-- 
-- ```ts
-- const v = {
--   run: {
--     playersSpeedBoost: new Map<PlayerIndex, int>(),
--   },
-- };
-- 
-- function incrementSpeedBoost(player: EntityPlayer) {
--   const oldSpeedBoost = mapGetPlayer(v.run.playersSpeedBoost, player);
--   const newSpeedBoost = oldSpeedBoost + 0.1;
--   mapSetPlayer(v.run.playersSpeedBoost, player);
-- }
-- ```
function ____exports.mapGetPlayer(self, map, player)
    local playerIndex = getPlayerIndex(nil, player)
    return map:get(playerIndex)
end
--- Helper function to make using maps with an index of `PlayerIndex` easier. Use this instead of the
-- `Map.has` method if you have a map of this type.
function ____exports.mapHasPlayer(self, map, player)
    local playerIndex = getPlayerIndex(nil, player)
    return map:has(playerIndex)
end
--- Helper function to make using sets with an type of `PlayerIndex` easier. Use this instead of the
-- `Set.add` method if you have a set of this type.
function ____exports.setAddPlayer(self, set, player)
    local playerIndex = getPlayerIndex(nil, player)
    return set:add(playerIndex)
end
--- Helper function to make using sets with an type of `PlayerIndex` easier. Use this instead of the
-- `Set.delete` method if you have a set of this type.
function ____exports.setDeletePlayer(self, set, player)
    local playerIndex = getPlayerIndex(nil, player)
    return set:delete(playerIndex)
end
--- Helper function to make using sets with an type of `PlayerIndex` easier. Use this instead of the
-- `Set.has` method if you have a set of this type.
function ____exports.setHasPlayer(self, set, player)
    local playerIndex = getPlayerIndex(nil, player)
    return set:has(playerIndex)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.playerIndex"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
local ____exports = {}
local getPlayerIndexCollectibleType, DEFAULT_COLLECTIBLE_TYPE, EXCLUDED_CHARACTERS
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
--- Helper function to get every player with no restrictions, by using `Game.GetNumPlayers` and
-- `Isaac.GetPlayer`.
-- 
-- This function is almost never what you want to use. For most purposes, use the `getPlayers`
-- helper function instead to get a filtered list of players.
function ____exports.getAllPlayers(self)
    local numPlayers = game:GetNumPlayers()
    local players = {}
    do
        local i = 0
        while i < numPlayers do
            local player = Isaac.GetPlayer(i)
            players[#players + 1] = player
            i = i + 1
        end
    end
    return players
end
--- Mods often have to track variables relating to the player. In naive mods, information will only
-- be stored about the first player. However, in order to be robust, mods must handle up to 4
-- players playing at the same time. This means that information must be stored on a map data
-- structure. Finding a good index for these types of map data structures is difficult:
-- 
-- - We cannot use the index from `Isaac.GetPlayer(i)` since this fails in the case where there are
--   two players and the first player leaves the run.
-- - We cannot use `EntityPlayer.ControllerIndex` as an index because it fails in the case of Jacob
--   & Esau or Tainted Forgotten. It also fails in the case of a player changing their controls
--   mid-run.
-- - We cannot use `EntityPlayer.GetData().index` because it does not persist across saving and
--   continuing.
-- - We cannot use `GetPtrHash()` as an index because it does not persist across exiting and
--   relaunching the game.
-- - We cannot use `EntityPlayer.InitSeed` because it is not consistent with additional players
--   beyond the first.
-- 
-- Instead, we use the `EntityPlayer.GetCollectibleRNG` method with an arbitrary value of Sad Onion
-- (1). This works even if the player does not have any Sad Onions.
-- 
-- Note that by default, this returns the same index for both The Forgotten and The Soul. (Even
-- though they are technically different characters, they share the same inventory and InitSeed.) If
-- this is not desired, pass true for the `differentiateForgottenAndSoul` argument, and the RNG of
-- Spoon Bender (3) will be used for The Soul.
-- 
-- Also note that this index does not work in the `POST_PLAYER_INIT` function for players 2 through
-- 4. With that said, in almost all cases, you should be lazy-initializing your data structures in
-- other callbacks, so this should not be an issue.
function ____exports.getPlayerIndex(self, player, differentiateForgottenAndSoul)
    if differentiateForgottenAndSoul == nil then
        differentiateForgottenAndSoul = false
    end
    local playerToUse = player
    local isSubPlayer = player:IsSubPlayer()
    if isSubPlayer then
        local subPlayer = player
        local playerParent = ____exports.getSubPlayerParent(nil, subPlayer)
        if playerParent ~= nil then
            playerToUse = playerParent
        end
    end
    local collectibleType = getPlayerIndexCollectibleType(nil, player, differentiateForgottenAndSoul)
    local collectibleRNG = playerToUse:GetCollectibleRNG(collectibleType)
    local seed = collectibleRNG:GetSeed()
    return seed
end
function getPlayerIndexCollectibleType(self, player, differentiateForgottenAndSoul)
    local character = player:GetPlayerType()
    if character == PlayerType.SOUL then
        return differentiateForgottenAndSoul and CollectibleType.INNER_EYE or DEFAULT_COLLECTIBLE_TYPE
    end
    return DEFAULT_COLLECTIBLE_TYPE
end
--- This function always excludes players with a non-undefined parent, since they are not real
-- players (e.g. the Strawman Keeper).
-- 
-- If this is not desired, use the `getAllPlayers` helper function instead.
-- 
-- @param performCharacterExclusions Whether or not to exclude characters that are not directly
-- controlled by the player (i.e. Esau & Tainted Soul). Default is
-- false.
function ____exports.getPlayers(self, performCharacterExclusions)
    if performCharacterExclusions == nil then
        performCharacterExclusions = false
    end
    local players = ____exports.getAllPlayers(nil)
    local nonChildPlayers = __TS__ArrayFilter(
        players,
        function(____, player) return not ____exports.isChildPlayer(nil, player) end
    )
    local nonChildPlayersFiltered = __TS__ArrayFilter(
        nonChildPlayers,
        function(____, player)
            local character = player:GetPlayerType()
            return not EXCLUDED_CHARACTERS:has(character)
        end
    )
    return performCharacterExclusions and nonChildPlayersFiltered or nonChildPlayers
end
--- Helper function to get a parent `EntityPlayer` object for a given `EntitySubPlayer` object. This
-- is useful because calling the `EntityPlayer.GetSubPlayer` method on a sub-player object will
-- return undefined.
function ____exports.getSubPlayerParent(self, subPlayer)
    local subPlayerPtrHash = GetPtrHash(subPlayer)
    local players = ____exports.getPlayers(nil)
    return __TS__ArrayFind(
        players,
        function(____, player)
            local thisPlayerSubPlayer = player:GetSubPlayer()
            if thisPlayerSubPlayer == nil then
                return false
            end
            local thisPlayerSubPlayerPtrHash = GetPtrHash(thisPlayerSubPlayer)
            return thisPlayerSubPlayerPtrHash == subPlayerPtrHash
        end
    )
end
--- Helper function to detect if a particular player is a "child" player, meaning that they have a
-- non-undefined `EntityPlayer.Parent` field. (For example, the Strawman Keeper.)
function ____exports.isChildPlayer(self, player)
    return player.Parent ~= nil
end
DEFAULT_COLLECTIBLE_TYPE = CollectibleType.SAD_ONION
EXCLUDED_CHARACTERS = __TS__New(Set, {PlayerType.ESAU, PlayerType.SOUL_B})
--- Helper function to get all of the other players in the room besides the one provided. (This
-- includes "child" players.)
function ____exports.getOtherPlayers(self, player)
    local playerPtrHash = GetPtrHash(player)
    local players = ____exports.getAllPlayers(nil)
    return __TS__ArrayFilter(
        players,
        function(____, otherPlayer) return GetPtrHash(otherPlayer) ~= playerPtrHash end
    )
end
--- Helper function to get the corresponding `EntityPlayer` object that corresponds to a
-- `PlayerIndex`.
function ____exports.getPlayerFromIndex(self, playerIndex)
    local players = ____exports.getAllPlayers(nil)
    return __TS__ArrayFind(
        players,
        function(____, player) return ____exports.getPlayerIndex(nil, player) == playerIndex end
    )
end
--- Helper function to return the index of this player with respect to the output of the
-- `Isaac.GetPlayer` method.
-- 
-- Note that if you storing information about a player in a data structure, you never want to use
-- this index; use the `getPlayerIndex` function instead.
function ____exports.getPlayerIndexVanilla(self, playerToFind)
    local numPlayers = game:GetNumPlayers()
    local playerToFindHash = GetPtrHash(playerToFind)
    do
        local i = 0
        while i < numPlayers do
            local player = Isaac.GetPlayer(i)
            local playerHash = GetPtrHash(player)
            if playerHash == playerToFindHash then
                return i
            end
            i = i + 1
        end
    end
    return nil
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.players"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArraySome = ____lualib.__TS__ArraySome
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery
local ____exports = {}
local isTaintedModded
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot
local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ControllerIndex = ____isaac_2Dtypescript_2Ddefinitions.ControllerIndex
local NullItemID = ____isaac_2Dtypescript_2Ddefinitions.NullItemID
local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local TrinketSlot = ____isaac_2Dtypescript_2Ddefinitions.TrinketSlot
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local itemConfig = ____cachedClasses.itemConfig
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local getLastElement = ____array.getLastElement
local sumArray = ____array.sumArray
local ____characters = require("lua_modules.isaacscript-common.dist.src.functions.characters")
local getCharacterName = ____characters.getCharacterName
local isVanillaCharacter = ____characters.isVanillaCharacter
local ____collectibles = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
local getCollectibleMaxCharges = ____collectibles.getCollectibleMaxCharges
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getAllPlayers = ____playerIndex.getAllPlayers
local getPlayerIndexVanilla = ____playerIndex.getPlayerIndexVanilla
local getPlayers = ____playerIndex.getPlayers
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isNumber = ____types.isNumber
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local ____repeat = ____utils["repeat"]
--- Helper function to get an array containing the characters of all of the current players.
function ____exports.getCharacters(self)
    local players = getPlayers(nil)
    return __TS__ArrayMap(
        players,
        function(____, player) return player:GetPlayerType() end
    )
end
--- Helper function to check if a player is a specific character (i.e. `PlayerType`).
-- 
-- This function is variadic, meaning that you can supply as many characters as you want to check
-- for. Returns true if the player is any of the supplied characters.
function ____exports.isCharacter(self, player, ...)
    local characters = {...}
    local characterSet = __TS__New(Set, characters)
    local character = player:GetPlayerType()
    return characterSet:has(character)
end
function ____exports.isModdedPlayer(self, player)
    return not ____exports.isVanillaPlayer(nil, player)
end
function isTaintedModded(self, player)
    local character = player:GetPlayerType()
    local name = player:GetName()
    local taintedCharacter = Isaac.GetPlayerTypeByName(name, true)
    return character == taintedCharacter
end
function ____exports.isVanillaPlayer(self, player)
    local character = player:GetPlayerType()
    return isVanillaCharacter(nil, character)
end
function ____exports.addCollectibleCostume(self, player, collectibleType)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return
    end
    player:AddCostume(itemConfigItem, false)
end
function ____exports.addTrinketCostume(self, player, trinketType)
    local itemConfigTrinket = itemConfig:GetTrinket(trinketType)
    if itemConfigTrinket == nil then
        return
    end
    player:AddCostume(itemConfigTrinket, false)
end
function ____exports.anyPlayerHasCollectible(self, collectibleType)
    local players = getAllPlayers(nil)
    return __TS__ArraySome(
        players,
        function(____, player) return player:HasCollectible(collectibleType) end
    )
end
function ____exports.anyPlayerHasTrinket(self, trinketType)
    local players = getAllPlayers(nil)
    return __TS__ArraySome(
        players,
        function(____, player) return player:HasTrinket(trinketType) end
    )
end
--- Helper function to determine if the given character is present.
-- 
-- This function is variadic, meaning that you can supply as many characters as you want to check
-- for. Returns true if any of the characters supplied are present.
function ____exports.anyPlayerIs(self, ...)
    local matchingCharacters = {...}
    local matchingCharacterSet = __TS__New(Set, matchingCharacters)
    local characters = ____exports.getCharacters(nil)
    return __TS__ArraySome(
        characters,
        function(____, character) return matchingCharacterSet:has(character) end
    )
end
--- Helper function to determine if a player will destroy a rock/pot/skull if they walk over it.
-- 
-- The following situations allow for this to be true:
-- - the player has Leo (collectible 302)
-- - the player has Thunder Thighs (collectible 314)
-- - the player is under the effects of Mega Mush (collectible 625)
-- - the player has Stompy (transformation 13)
function ____exports.canPlayerCrushRocks(self, player)
    local effects = player:GetEffects()
    return player:HasCollectible(CollectibleType.LEO) or player:HasCollectible(CollectibleType.THUNDER_THIGHS) or effects:HasCollectibleEffect(CollectibleType.MEGA_MUSH) or player:HasPlayerForm(PlayerForm.STOMPY)
end
--- Helper function to find the active slot that the player has the corresponding collectible type
-- in. Returns undefined if the player does not have the collectible in any active slot.
function ____exports.getActiveItemSlot(self, player, collectibleType)
    local activeSlots = getEnumValues(nil, ActiveSlot)
    return __TS__ArrayFind(
        activeSlots,
        function(____, activeSlot)
            local activeItem = player:GetActiveItem(activeSlot)
            return activeItem == collectibleType
        end
    )
end
--- Helper function to get how long Azazel's Brimstone laser should be. You can pass either an
-- `EntityPlayer` object or a tear height stat.
-- 
-- The formula for calculating it is: 32 - 2.5 * tearHeight
function ____exports.getAzazelBrimstoneDistance(self, playerOrTearHeight)
    local tearHeight = isNumber(nil, playerOrTearHeight) and playerOrTearHeight or playerOrTearHeight.TearHeight
    return 32 - 2.5 * tearHeight
end
function ____exports.getClosestPlayer(self, position)
    local closestPlayer
    local closestDistance = math.huge
    for ____, player in ipairs(getPlayers(nil)) do
        local distance = position:Distance(player.Position)
        if distance < closestDistance then
            closestPlayer = player
            closestDistance = distance
        end
    end
    if closestPlayer == nil then
        error("Failed to find the closest player.")
    end
    return closestPlayer
end
--- Helper function to get an array of temporary effects for a player. This is helpful so that you
-- don't have to manually create an array from an `EffectsList` object.
function ____exports.getEffectsList(self, player)
    local effects = player:GetEffects()
    local effectsList = effects:GetEffectsList()
    local effectArray = {}
    do
        local i = 0
        while i < effectsList.Size do
            local effect = effectsList:Get(i)
            if effect ~= nil then
                effectArray[#effectArray + 1] = effect
            end
            i = i + 1
        end
    end
    return effectArray
end
--- Helper function to return the player with the highest ID, according to the `Isaac.GetPlayer`
-- method.
function ____exports.getFinalPlayer(self)
    local players = getPlayers(nil)
    local lastPlayer = getLastElement(nil, players)
    if lastPlayer == nil then
        error("Failed to get the final player since there were 0 players.")
    end
    return lastPlayer
end
--- Helper function to get the first player with the lowest frame count. Useful to find a freshly
-- spawned player after using items like Esau Jr. Don't use this function if two or more players
-- will be spawned on the same frame.
function ____exports.getNewestPlayer(self)
    local newestPlayer = nil
    local lowestFrame = math.huge
    for ____, player in ipairs(getPlayers(nil)) do
        if player.FrameCount < lowestFrame then
            newestPlayer = player
            lowestFrame = player.FrameCount
        end
    end
    if newestPlayer == nil then
        error("Failed to find the newest player.")
    end
    return newestPlayer
end
--- Iterates over all players and checks if any are close enough to the specified position.
-- 
-- @returns The first player found when iterating upwards from index 0.
function ____exports.getPlayerCloserThan(self, position, distance)
    local players = getPlayers(nil)
    return __TS__ArrayFind(
        players,
        function(____, player) return player.Position:Distance(position) <= distance end
    )
end
--- Helper function to return the total amount of collectibles that a player has that match the
-- collectible type(s) provided.
-- 
-- This function is variadic, meaning that you can specify N collectible types.
-- 
-- Note that this will filter out non-real collectibles like Lilith's Incubus.
function ____exports.getPlayerCollectibleCount(self, player, ...)
    local collectibleTypes = {...}
    local numCollectibles = 0
    for ____, collectibleType in ipairs(collectibleTypes) do
        numCollectibles = numCollectibles + player:GetCollectibleNum(collectibleType, true)
    end
    return numCollectibles
end
--- Helper function to get the player from a tear, laser, bomb, etc. Returns undefined if the entity
-- does not correspond to any particular player.
-- 
-- This function works by looking at the `Parent` and the `SpawnerEntity` fields (in that order). As
-- a last resort, it will attempt to use the `Entity.ToPlayer` method on the entity itself.
function ____exports.getPlayerFromEntity(self, entity)
    if entity.Parent ~= nil then
        local player = entity.Parent:ToPlayer()
        if player ~= nil then
            return player
        end
        local familiar = entity.Parent:ToFamiliar()
        if familiar ~= nil then
            return familiar.Player
        end
    end
    if entity.SpawnerEntity ~= nil then
        local player = entity.SpawnerEntity:ToPlayer()
        if player ~= nil then
            return player
        end
        local familiar = entity.SpawnerEntity:ToFamiliar()
        if familiar ~= nil then
            return familiar.Player
        end
    end
    return entity:ToPlayer()
end
--- Helper function to get an `EntityPlayer` object from an `EntityPtr`. Returns undefined if the
-- entity has gone out of scope or if the associated entity is not a player.
function ____exports.getPlayerFromPtr(self, entityPtr)
    local entity = entityPtr.Ref
    if entity == nil then
        return nil
    end
    return entity:ToPlayer()
end
--- Helper function to get the proper name of the player. Use this instead of the
-- `EntityPlayer.GetName` method because it accounts for Blue Baby, Lazarus II, and Tainted
-- characters.
function ____exports.getPlayerName(self, player)
    local character = player:GetPlayerType()
    return ____exports.isModdedPlayer(nil, player) and player:GetName() or getCharacterName(nil, character)
end
--- Returns the combined value of all of the player's red hearts, soul/black hearts, and bone hearts,
-- minus the value of the player's rotten hearts.
-- 
-- This is equivalent to the number of hits that the player can currently take, but does not take
-- into account double damage from champion enemies and/or being on later floors. (For example, on
-- Womb 1, players who have 1 soul heart remaining would die in 1 hit to anything, even though this
-- function would report that they have 2 hits remaining.)
function ____exports.getPlayerNumHitsRemaining(self, player)
    local hearts = player:GetHearts()
    local soulHearts = player:GetSoulHearts()
    local boneHearts = player:GetBoneHearts()
    local eternalHearts = player:GetEternalHearts()
    local rottenHearts = player:GetRottenHearts()
    return hearts + soulHearts + boneHearts + eternalHearts - rottenHearts
end
--- Helper function to get all of the players that are a certain character.
-- 
-- This function is variadic, meaning that you can supply as many characters as you want to check
-- for. Returns true if any of the characters supplied are present.
function ____exports.getPlayersOfType(self, ...)
    local characters = {...}
    local charactersSet = __TS__New(Set, characters)
    local players = getPlayers(nil)
    return __TS__ArrayFilter(
        players,
        function(____, player)
            local character = player:GetPlayerType()
            return charactersSet:has(character)
        end
    )
end
--- Helper function to get all of the players that match the provided controller index. This function
-- returns an array of players because it is possible that there is more than one player with the
-- same controller index (e.g. Jacob & Esau).
-- 
-- Note that this function includes players with a non-undefined parent like e.g. the Strawman
-- Keeper.
function ____exports.getPlayersOnKeyboard(self)
    local players = getAllPlayers(nil)
    return __TS__ArrayFilter(
        players,
        function(____, player) return player.ControllerIndex == ControllerIndex.KEYBOARD end
    )
end
--- Helper function to get only the players that have a certain collectible.
-- 
-- This function is variadic, meaning that you can supply as many collectible types as you want to
-- check for. It only returns the players that have all of the collectibles.
function ____exports.getPlayersWithCollectible(self, ...)
    local collectibleTypes = {...}
    local players = getPlayers(nil)
    return __TS__ArrayFilter(
        players,
        function(____, player) return __TS__ArrayEvery(
            collectibleTypes,
            function(____, collectibleType) return player:HasCollectible(collectibleType) end
        ) end
    )
end
--- Helper function to get all of the players that match the provided controller index. This function
-- returns an array of players because it is possible that there is more than one player with the
-- same controller index (e.g. Jacob & Esau).
-- 
-- Note that this function includes players with a non-undefined parent like e.g. the Strawman
-- Keeper.
function ____exports.getPlayersWithControllerIndex(self, controllerIndex)
    local players = getAllPlayers(nil)
    return __TS__ArrayFilter(
        players,
        function(____, player) return player.ControllerIndex == controllerIndex end
    )
end
--- Helper function to get only the players that have a certain trinket.
-- 
-- This function is variadic, meaning that you can supply as many trinket types as you want to check
-- for. It only returns the players that have all of the trinkets.
function ____exports.getPlayersWithTrinket(self, ...)
    local trinketTypes = {...}
    local players = getPlayers(nil)
    return __TS__ArrayFilter(
        players,
        function(____, player) return __TS__ArrayEvery(
            trinketTypes,
            function(____, trinketType) return player:HasTrinket(trinketType) end
        ) end
    )
end
--- Returns the total number of collectibles amongst all players. For example, if player 1 has 1 Sad
-- Onion and player 2 has 2 Sad Onions, then this function would return 3.
-- 
-- Note that this will filter out non-real collectibles like Lilith's Incubus.
function ____exports.getTotalPlayerCollectibles(self, collectibleType)
    local players = getPlayers(nil)
    local numCollectiblesArray = __TS__ArrayMap(
        players,
        function(____, player) return player:GetCollectibleNum(collectibleType, true) end
    )
    return sumArray(nil, numCollectiblesArray)
end
--- After touching a white fire, a player will turn into The Lost until they clear a room.
function ____exports.hasLostCurse(self, player)
    local effects = player:GetEffects()
    return effects:HasNullEffect(NullItemID.LOST_CURSE)
end
--- Returns whether or not the player can hold an additional active item, beyond what they are
-- currently carrying. This takes the Schoolbag into account.
-- 
-- If the player is the Tainted Soul, this always returns false, since that character cannot pick up
-- items. (Only Tainted Forgotten can pick up items.)
function ____exports.hasOpenActiveItemSlot(self, player)
    if ____exports.isCharacter(nil, player, PlayerType.SOUL_B) then
        return false
    end
    local activeItemPrimary = player:GetActiveItem(ActiveSlot.PRIMARY)
    local activeItemSecondary = player:GetActiveItem(ActiveSlot.SECONDARY)
    local hasSchoolbag = player:HasCollectible(CollectibleType.SCHOOLBAG)
    if hasSchoolbag then
        return activeItemPrimary == CollectibleType.NULL or activeItemSecondary == CollectibleType.NULL
    end
    return activeItemPrimary == CollectibleType.NULL
end
--- Helper function to check if the active slot of a particular player is empty.
-- 
-- @param player The player to check.
-- @param activeSlot Optional. The active slot to check. Default is `ActiveSlot.PRIMARY`.
function ____exports.isActiveSlotEmpty(self, player, activeSlot)
    if activeSlot == nil then
        activeSlot = ActiveSlot.PRIMARY
    end
    local activeCollectibleType = player:GetActiveItem(activeSlot)
    return activeCollectibleType == CollectibleType.NULL
end
--- Helper function for detecting when a player is Bethany or Tainted Bethany. This is useful if you
-- need to adjust UI elements to account for Bethany's soul charges or Tainted Bethany's blood
-- charges.
function ____exports.isBethany(self, player)
    local character = player:GetPlayerType()
    return character == PlayerType.BETHANY or character == PlayerType.BETHANY_B
end
--- Helper function to see if a damage source is from a player. Use this instead of comparing to the
-- entity directly because it takes familiars into account.
function ____exports.isDamageFromPlayer(self, damageSource)
    local player = damageSource:ToPlayer()
    if player ~= nil then
        return true
    end
    local indirectPlayer = ____exports.getPlayerFromEntity(nil, damageSource)
    return indirectPlayer ~= nil
end
--- Helper function for detecting when a player is Eden or Tainted Eden. Useful for situations where
-- you want to know if the starting stats were randomized, for example.
function ____exports.isEden(self, player)
    local character = player:GetPlayerType()
    return character == PlayerType.EDEN or character == PlayerType.EDEN_B
end
function ____exports.isFirstPlayer(self, player)
    return getPlayerIndexVanilla(nil, player) == 0
end
--- Helper function for detecting when a player is Jacob or Esau. This will only match the
-- non-tainted versions of these characters.
function ____exports.isJacobOrEsau(self, player)
    local character = player:GetPlayerType()
    return character == PlayerType.JACOB or character == PlayerType.ESAU
end
--- Helper function for detecting when a player is Keeper or Tainted Keeper. Useful for situations
-- where you want to know if the health is coin hearts, for example.
function ____exports.isKeeper(self, player)
    local character = player:GetPlayerType()
    return character == PlayerType.KEEPER or character == PlayerType.KEEPER_B
end
--- Helper function for detecting when a player is The Lost or Tainted Lost.
function ____exports.isLost(self, player)
    local character = player:GetPlayerType()
    return character == PlayerType.LOST or character == PlayerType.LOST_B
end
--- Helper function for determining if a player is able to turn their head by pressing the shooting
-- buttons.
-- 
-- Under the hood, this function uses the `EntityPlayer.IsExtraAnimationFinished` method.
function ____exports.isPlayerAbleToAim(self, player)
    return player:IsExtraAnimationFinished()
end
--- Helper function for detecting if a player is one of the Tainted characters.
function ____exports.isTainted(self, player)
    local character = player:GetPlayerType()
    local ____isVanillaPlayer_result_0
    if ____exports.isVanillaPlayer(nil, player) then
        ____isVanillaPlayer_result_0 = character >= PlayerType.ISAAC_B
    else
        ____isVanillaPlayer_result_0 = isTaintedModded(nil, player)
    end
    return ____isVanillaPlayer_result_0
end
--- Helper function for detecting when a player is Tainted Lazarus or Dead Tainted Lazarus.
function ____exports.isTaintedLazarus(self, player)
    local character = player:GetPlayerType()
    return character == PlayerType.LAZARUS_B or character == PlayerType.LAZARUS_2_B
end
--- Helper function to add one or more collectibles to a player.
-- 
-- This function is variadic, meaning that you can supply as many collectible types as you want to
-- add.
function ____exports.playerAddCollectible(self, player, ...)
    local collectibleTypes = {...}
    for ____, collectibleType in ipairs(collectibleTypes) do
        player:AddCollectible(collectibleType)
    end
end
--- Helper function to check to see if a player has one or more collectibles.
-- 
-- This function is variadic, meaning that you can supply as many collectible types as you want to
-- check for. Returns true if the player has any of the supplied collectible types.
function ____exports.playerHasCollectible(self, player, ...)
    local collectibleTypes = {...}
    return __TS__ArraySome(
        collectibleTypes,
        function(____, collectibleType) return player:HasCollectible(collectibleType) end
    )
end
--- Helper function to remove all of the active items from a player. This includes the Schoolbag item
-- and any pocket actives.
function ____exports.removeAllActiveItems(self, player)
    for ____, activeSlot in ipairs(getEnumValues(nil, ActiveSlot)) do
        do
            local collectibleType = player:GetActiveItem(activeSlot)
            if collectibleType == CollectibleType.NULL then
                goto __continue89
            end
            local hasCollectible
            repeat
                do
                    player:RemoveCollectible(collectibleType)
                    hasCollectible = player:HasCollectible(collectibleType)
                end
            until not hasCollectible
        end
        ::__continue89::
    end
end
--- Helper function to remove all of the held trinkets from a player.
-- 
-- This will not remove any smelted trinkets, unless the player happens to be holding a trinket that
-- they also have smelted. (In that case, both the held and the smelted trinket will be removed.)
function ____exports.removeAllPlayerTrinkets(self, player)
    for ____, trinketSlot in ipairs(getEnumValues(nil, TrinketSlot)) do
        do
            local trinketType = player:GetTrinket(trinketSlot)
            if trinketType == TrinketType.NULL then
                goto __continue94
            end
            local hasTrinket
            repeat
                do
                    player:TryRemoveTrinket(trinketType)
                    hasTrinket = player:HasTrinket(trinketType)
                end
            until not hasTrinket
        end
        ::__continue94::
    end
end
--- Helper function to remove a collectible costume from a player. Use this helper function to avoid
-- having to request the collectible from the item config.
function ____exports.removeCollectibleCostume(self, player, collectibleType)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return
    end
    player:RemoveCostume(itemConfigItem)
end
--- Helper function to remove the Dead Eye multiplier from a player.
-- 
-- Note that each time the `EntityPlayer.ClearDeadEyeCharge` method is called, it only has a chance
-- of working, so this function calls it 100 times to be safe.
function ____exports.removeDeadEyeMultiplier(self, player)
    ____repeat(
        nil,
        100,
        function()
            player:ClearDeadEyeCharge()
        end
    )
end
--- Helper function to remove a trinket costume from a player. Use this helper function to avoid
-- having to request the trinket from the item config.
function ____exports.removeTrinketCostume(self, player, trinketType)
    local itemConfigTrinket = itemConfig:GetTrinket(trinketType)
    if itemConfigTrinket == nil then
        return
    end
    player:RemoveCostume(itemConfigTrinket)
end
--- Helper function to set an active collectible to a particular slot. This has different behavior
-- than calling the `player.AddCollectible` method with the `activeSlot` argument, because this
-- function will not shift existing items into the Schoolbag and it handles
-- `ActiveSlot.SLOT_POCKET2`.
-- 
-- Note that if an item is set to `ActiveSlot.SLOT_POCKET2`, it will disappear after being used and
-- will be automatically removed upon entering a new room.
-- 
-- @param player The player to give the item to.
-- @param collectibleType The collectible type of the item to give.
-- @param activeSlot Optional. The slot to set. Default is `ActiveSlot.PRIMARY`.
-- @param charge Optional. The argument of charges to set. If not specified, the item will be set
-- with maximum charges.
-- @param keepInPools Optional. Whether or not to remove the item from pools. Default is false.
function ____exports.setActiveItem(self, player, collectibleType, activeSlot, charge, keepInPools)
    if activeSlot == nil then
        activeSlot = ActiveSlot.PRIMARY
    end
    if keepInPools == nil then
        keepInPools = false
    end
    local itemPool = game:GetItemPool()
    local primaryCollectibleType = player:GetActiveItem(ActiveSlot.PRIMARY)
    local primaryCharge = player:GetActiveCharge(ActiveSlot.PRIMARY)
    local secondaryCollectibleType = player:GetActiveItem(ActiveSlot.SECONDARY)
    if charge == nil then
        charge = getCollectibleMaxCharges(nil, collectibleType)
    end
    if not keepInPools then
        itemPool:RemoveCollectible(collectibleType)
    end
    repeat
        local ____switch107 = activeSlot
        local ____cond107 = ____switch107 == ActiveSlot.PRIMARY
        if ____cond107 then
            do
                if primaryCollectibleType ~= CollectibleType.NULL then
                    player:RemoveCollectible(primaryCollectibleType)
                end
                player:AddCollectible(collectibleType, charge, false)
                break
            end
        end
        ____cond107 = ____cond107 or ____switch107 == ActiveSlot.SECONDARY
        if ____cond107 then
            do
                if primaryCollectibleType ~= CollectibleType.NULL then
                    player:RemoveCollectible(primaryCollectibleType)
                end
                if secondaryCollectibleType ~= CollectibleType.NULL then
                    player:RemoveCollectible(secondaryCollectibleType)
                end
                player:AddCollectible(secondaryCollectibleType, charge, false)
                if primaryCollectibleType ~= CollectibleType.NULL then
                    player:AddCollectible(primaryCollectibleType, primaryCharge, false)
                end
                break
            end
        end
        ____cond107 = ____cond107 or ____switch107 == ActiveSlot.POCKET
        if ____cond107 then
            do
                player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
                player:SetActiveCharge(charge, activeSlot)
                break
            end
        end
        ____cond107 = ____cond107 or ____switch107 == ActiveSlot.POCKET_SINGLE_USE
        if ____cond107 then
            do
                player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
                break
            end
        end
    until true
end
--- Helper function to blindfold the player by using a hack with the challenge variable.
-- 
-- The method used in this function was discovered by im_tem.
-- 
-- @param player The player to apply or remove the blindfold state from.
-- @param enabled Whether or not to apply or remove the blindfold.
-- @param modifyCostume Optional. Whether to add or remove the blindfold costume. Default is true.
function ____exports.setBlindfold(self, player, enabled, modifyCostume)
    if modifyCostume == nil then
        modifyCostume = true
    end
    local character = player:GetPlayerType()
    local challenge = Isaac.GetChallenge()
    if enabled then
        game.Challenge = Challenge.SOLAR_SYSTEM
        player:ChangePlayerType(character)
        game.Challenge = challenge
        if not modifyCostume then
            player:TryRemoveNullCostume(NullItemID.BLINDFOLD)
        end
    else
        game.Challenge = Challenge.NULL
        player:ChangePlayerType(character)
        game.Challenge = challenge
        if modifyCostume then
            player:TryRemoveNullCostume(NullItemID.BLINDFOLD)
        end
    end
end
--- Helper function to use an active item without showing an animation, keeping the item, or adding
-- any costumes.
function ____exports.useActiveItemTemp(self, player, collectibleType)
    player:UseActiveItem(
        collectibleType,
        false,
        false,
        true,
        false,
        -1
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.characters"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.src.core.constantsFirstLast")
local LAST_VANILLA_CHARACTER = ____constantsFirstLast.LAST_VANILLA_CHARACTER
local ____characterDamageMultipliers = require("lua_modules.isaacscript-common.dist.src.objects.characterDamageMultipliers")
local CHARACTER_DAMAGE_MULTIPLIERS = ____characterDamageMultipliers.CHARACTER_DAMAGE_MULTIPLIERS
local ____characterNames = require("lua_modules.isaacscript-common.dist.src.objects.characterNames")
local CHARACTER_NAMES = ____characterNames.CHARACTER_NAMES
local ____charactersThatStartWithAnActiveItemSet = require("lua_modules.isaacscript-common.dist.src.sets.charactersThatStartWithAnActiveItemSet")
local CHARACTERS_THAT_START_WITH_AN_ACTIVE_ITEM_SET = ____charactersThatStartWithAnActiveItemSet.CHARACTERS_THAT_START_WITH_AN_ACTIVE_ITEM_SET
local ____charactersWithBlackHeartFromEternalHeartSet = require("lua_modules.isaacscript-common.dist.src.sets.charactersWithBlackHeartFromEternalHeartSet")
local CHARACTERS_WITH_BLACK_HEART_FROM_ETERNAL_HEART_SET = ____charactersWithBlackHeartFromEternalHeartSet.CHARACTERS_WITH_BLACK_HEART_FROM_ETERNAL_HEART_SET
local ____charactersWithFreeDevilDealsSet = require("lua_modules.isaacscript-common.dist.src.sets.charactersWithFreeDevilDealsSet")
local CHARACTERS_WITH_FREE_DEVIL_DEALS_SET = ____charactersWithFreeDevilDealsSet.CHARACTERS_WITH_FREE_DEVIL_DEALS_SET
local ____charactersWithNoRedHeartsSet = require("lua_modules.isaacscript-common.dist.src.sets.charactersWithNoRedHeartsSet")
local CHARACTERS_WITH_NO_RED_HEARTS_SET = ____charactersWithNoRedHeartsSet.CHARACTERS_WITH_NO_RED_HEARTS_SET
local ____charactersWithNoSoulHeartsSet = require("lua_modules.isaacscript-common.dist.src.sets.charactersWithNoSoulHeartsSet")
local CHARACTERS_WITH_NO_SOUL_HEARTS_SET = ____charactersWithNoSoulHeartsSet.CHARACTERS_WITH_NO_SOUL_HEARTS_SET
local ____lostStyleCharactersSet = require("lua_modules.isaacscript-common.dist.src.sets.lostStyleCharactersSet")
local LOST_STYLE_CHARACTERS_SET = ____lostStyleCharactersSet.LOST_STYLE_CHARACTERS_SET
function ____exports.isModdedCharacter(self, character)
    return not ____exports.isVanillaCharacter(nil, character)
end
function ____exports.isVanillaCharacter(self, character)
    return character <= LAST_VANILLA_CHARACTER
end
local FLYING_CHARACTERS = __TS__New(Set, {
    PlayerType.AZAZEL,
    PlayerType.LOST,
    PlayerType.SOUL,
    PlayerType.LOST_B,
    PlayerType.JACOB_2_B,
    PlayerType.SOUL_B
})
--- Helper function to determine if the given character can have red heart containers. Returns true
-- for characters like Isaac, Magdalene, or Cain. Returns true for Keeper and Tainted Keeper, even
-- though coin containers are not technically the same as red heart containers. Returns false for
-- characters like Blue Baby. Returns false for The Lost and Tainted Lost.
function ____exports.characterCanHaveRedHearts(self, character)
    return not CHARACTERS_WITH_NO_RED_HEARTS_SET:has(character)
end
--- Helper function to determine if the given character can have soul hearts. Returns true for
-- characters like Isaac, Magdalene, or Cain. Returns false for characters like Bethany. Returns
-- false for The Lost and Tainted Lost.
function ____exports.characterCanHaveSoulHearts(self, character)
    return not CHARACTERS_WITH_NO_SOUL_HEARTS_SET:has(character)
end
--- Helper function for determining whether the given character can take free Devil Deals. (e.g. The
-- Lost, Tainted Lost, etc.)
function ____exports.characterCanTakeFreeDevilDeals(self, character)
    return CHARACTERS_WITH_FREE_DEVIL_DEALS_SET:has(character)
end
--- Normally, characters get a red heart container upon reaching a new floor with an eternal heart,
-- but some characters grant a black heart instead. Returns true for Dark Judas and Tainted Judas.
-- Otherwise, returns false.
function ____exports.characterGetsBlackHeartFromEternalHeart(self, character)
    return CHARACTERS_WITH_BLACK_HEART_FROM_ETERNAL_HEART_SET:has(character)
end
--- Helper function to determine if the specified character starts with an active item.
-- 
-- For the purposes of this function, the save file is considered to be fully unlocked (e.g. Isaac
-- is considered to starts with the D6, but this is not the case on a brand new save file).
function ____exports.characterStartsWithActiveItem(self, character)
    return CHARACTERS_THAT_START_WITH_AN_ACTIVE_ITEM_SET:has(character)
end
--- Helper function to get the numerical damage multiplier for a character.
function ____exports.getCharacterDamageMultiplier(self, character, hasWhoreOfBabylon)
    if hasWhoreOfBabylon == nil then
        hasWhoreOfBabylon = false
    end
    if character == PlayerType.EVE and hasWhoreOfBabylon then
        return 1
    end
    return CHARACTER_DAMAGE_MULTIPLIERS[character]
end
--- - Most characters have a 56 frame death animation (i.e. the "Death" animation).
-- - The Lost and Tainted Lost have a 38 frame death animation (i.e. the "LostDeath" animation).
-- - Tainted Forgotten have a 20 frame death animation (i.e. the "ForgottenDeath" animation).
function ____exports.getCharacterDeathAnimationName(self, character)
    if LOST_STYLE_CHARACTERS_SET:has(character) then
        return "LostDeath"
    end
    if character == PlayerType.FORGOTTEN_B then
        return "ForgottenDeath"
    end
    return "Death"
end
--- Returns the maximum heart containers that the provided character can have. Normally, this is 12,
-- but with Keeper it is 3, and with Tainted Keeper it is 2. This does not account for Birthright or
-- Mother's Kiss; use the `getPlayerMaxHeartContainers` helper function for that.
function ____exports.getCharacterMaxHeartContainers(self, character)
    if character == PlayerType.KEEPER then
        return 3
    end
    if character == PlayerType.FORGOTTEN then
        return 6
    end
    if character == PlayerType.SOUL then
        return 6
    end
    if character == PlayerType.KEEPER_B then
        return 2
    end
    return 12
end
--- Helper function to get the name of a character. Returns "Unknown" for modded characters.
function ____exports.getCharacterName(self, character)
    if ____exports.isModdedCharacter(nil, character) then
        return "Unknown"
    end
    return CHARACTER_NAMES[character]
end
function ____exports.isFlyingCharacter(self, player)
    local character = player:GetPlayerType()
    return FLYING_CHARACTERS:has(character)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.characterDamageMultipliers"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
--- From: https://bindingofisaacrebirth.fandom.com/wiki/Characters#Regular_Characters
____exports.CHARACTER_DAMAGE_MULTIPLIERS = {
    [PlayerType.POSSESSOR] = 1,
    [PlayerType.ISAAC] = 1,
    [PlayerType.MAGDALENE] = 1,
    [PlayerType.CAIN] = 1.2,
    [PlayerType.JUDAS] = 1.35,
    [PlayerType.BLUE_BABY] = 1.05,
    [PlayerType.EVE] = 0.75,
    [PlayerType.SAMSON] = 1,
    [PlayerType.AZAZEL] = 1.5,
    [PlayerType.LAZARUS] = 1,
    [PlayerType.EDEN] = 1,
    [PlayerType.LOST] = 1,
    [PlayerType.LAZARUS_2] = 1.4,
    [PlayerType.DARK_JUDAS] = 2,
    [PlayerType.LILITH] = 1,
    [PlayerType.KEEPER] = 1.2,
    [PlayerType.APOLLYON] = 1,
    [PlayerType.FORGOTTEN] = 1.5,
    [PlayerType.SOUL] = 1,
    [PlayerType.BETHANY] = 1,
    [PlayerType.JACOB] = 1,
    [PlayerType.ESAU] = 1,
    [PlayerType.ISAAC_B] = 1,
    [PlayerType.MAGDALENE_B] = 0.75,
    [PlayerType.CAIN_B] = 1,
    [PlayerType.JUDAS_B] = 1,
    [PlayerType.BLUE_BABY_B] = 1,
    [PlayerType.EVE_B] = 1.2,
    [PlayerType.SAMSON_B] = 1,
    [PlayerType.AZAZEL_B] = 1.5,
    [PlayerType.LAZARUS_B] = 1,
    [PlayerType.EDEN_B] = 1,
    [PlayerType.LOST_B] = 1.3,
    [PlayerType.LILITH_B] = 1,
    [PlayerType.KEEPER_B] = 1,
    [PlayerType.APOLLYON_B] = 1,
    [PlayerType.FORGOTTEN_B] = 1.5,
    [PlayerType.BETHANY_B] = 1,
    [PlayerType.JACOB_B] = 1,
    [PlayerType.LAZARUS_2_B] = 1.5,
    [PlayerType.JACOB_2_B] = 1,
    [PlayerType.SOUL_B] = 1
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.characterNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
____exports.CHARACTER_NAMES = {
    [PlayerType.POSSESSOR] = "Possessor",
    [PlayerType.ISAAC] = "Isaac",
    [PlayerType.MAGDALENE] = "Magdalene",
    [PlayerType.CAIN] = "Cain",
    [PlayerType.JUDAS] = "Judas",
    [PlayerType.BLUE_BABY] = "Blue Baby",
    [PlayerType.EVE] = "Eve",
    [PlayerType.SAMSON] = "Samson",
    [PlayerType.AZAZEL] = "Azazel",
    [PlayerType.LAZARUS] = "Lazarus",
    [PlayerType.EDEN] = "Eden",
    [PlayerType.LOST] = "The Lost",
    [PlayerType.LAZARUS_2] = "Lazarus II",
    [PlayerType.DARK_JUDAS] = "Dark Judas",
    [PlayerType.LILITH] = "Lilith",
    [PlayerType.KEEPER] = "Keeper",
    [PlayerType.APOLLYON] = "Apollyon",
    [PlayerType.FORGOTTEN] = "The Forgotten",
    [PlayerType.SOUL] = "The Soul",
    [PlayerType.BETHANY] = "Bethany",
    [PlayerType.JACOB] = "Jacob",
    [PlayerType.ESAU] = "Esau",
    [PlayerType.ISAAC_B] = "Tainted Isaac",
    [PlayerType.MAGDALENE_B] = "Tainted Magdalene",
    [PlayerType.CAIN_B] = "Tainted Cain",
    [PlayerType.JUDAS_B] = "Tainted Judas",
    [PlayerType.BLUE_BABY_B] = "Tainted Blue Baby",
    [PlayerType.EVE_B] = "Tainted Eve",
    [PlayerType.SAMSON_B] = "Tainted Samson",
    [PlayerType.AZAZEL_B] = "Tainted Azazel",
    [PlayerType.LAZARUS_B] = "Tainted Lazarus",
    [PlayerType.EDEN_B] = "Tainted Eden",
    [PlayerType.LOST_B] = "Tainted Lost",
    [PlayerType.LILITH_B] = "Tainted Lilith",
    [PlayerType.KEEPER_B] = "Tainted Keeper",
    [PlayerType.APOLLYON_B] = "Tainted Apollyon",
    [PlayerType.FORGOTTEN_B] = "Tainted Forgotten",
    [PlayerType.BETHANY_B] = "Tainted Bethany",
    [PlayerType.JACOB_B] = "Tainted Jacob",
    [PlayerType.LAZARUS_2_B] = "Dead Tainted Lazarus",
    [PlayerType.JACOB_2_B] = "Dead Tainted Jacob",
    [PlayerType.SOUL_B] = "Tainted Soul"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.charactersThatStartWithAnActiveItemSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
____exports.CHARACTERS_THAT_START_WITH_AN_ACTIVE_ITEM_SET = __TS__New(Set, {
    PlayerType.ISAAC,
    PlayerType.MAGDALENE,
    PlayerType.JUDAS,
    PlayerType.BLUE_BABY,
    PlayerType.EVE,
    PlayerType.EDEN,
    PlayerType.LOST,
    PlayerType.LILITH,
    PlayerType.KEEPER,
    PlayerType.APOLLYON,
    PlayerType.EDEN_B
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.charactersWithBlackHeartFromEternalHeartSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
____exports.CHARACTERS_WITH_BLACK_HEART_FROM_ETERNAL_HEART_SET = __TS__New(Set, {PlayerType.DARK_JUDAS, PlayerType.JUDAS_B})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.charactersWithFreeDevilDealsSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
____exports.CHARACTERS_WITH_FREE_DEVIL_DEALS_SET = __TS__New(Set, {PlayerType.LOST, PlayerType.LOST_B, PlayerType.JACOB_2_B})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.charactersWithNoRedHeartsSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
--- The set of characters where red heart containers will be turned into soul hearts (e.g. Blue
-- Baby). This includes The Lost and Tainted Lost. This does not include Keeper or Tainted Keeper.
____exports.CHARACTERS_WITH_NO_RED_HEARTS_SET = __TS__New(Set, {
    PlayerType.BLUE_BABY,
    PlayerType.LOST,
    PlayerType.DARK_JUDAS,
    PlayerType.JUDAS_B,
    PlayerType.BLUE_BABY_B,
    PlayerType.LOST_B,
    PlayerType.FORGOTTEN_B,
    PlayerType.BETHANY_B
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.charactersWithNoSoulHeartsSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
--- The set of characters where soul hearts will be automatically stripped away (e.g. Bethany). This
-- includes The Lost and Tainted Lost.
____exports.CHARACTERS_WITH_NO_SOUL_HEARTS_SET = __TS__New(Set, {
    PlayerType.LOST,
    PlayerType.KEEPER,
    PlayerType.BETHANY,
    PlayerType.LOST_B,
    PlayerType.KEEPER_B
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.lostStyleCharactersSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
--- This is the set of characters that look like The Lost and play the "LostDeath" animation when
-- they die.
____exports.LOST_STYLE_CHARACTERS_SET = __TS__New(Set, {
    PlayerType.LOST,
    PlayerType.SOUL,
    PlayerType.LOST_B,
    PlayerType.JACOB_2_B,
    PlayerType.SOUL_B
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostCustomRevive"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostCustomRevive = __TS__Class()
local PostCustomRevive = ____exports.PostCustomRevive
PostCustomRevive.name = "PostCustomRevive"
__TS__ClassExtends(PostCustomRevive, CustomCallback)
function PostCustomRevive.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = function(____, fireArgs, optionalArgs)
        local _player, revivalType = table.unpack(fireArgs)
        local callbackRevivalType = table.unpack(optionalArgs)
        return callbackRevivalType == nil or revivalType == callbackRevivalType
    end
    self.featuresUsed = {ISCFeature.CUSTOM_REVIVE}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.ISCFeature"] = function(...) 
local ____exports = {}
____exports.ISCFeature = {}
____exports.ISCFeature.CUSTOM_REVIVE = 0
____exports.ISCFeature[____exports.ISCFeature.CUSTOM_REVIVE] = "CUSTOM_REVIVE"
____exports.ISCFeature.ESAU_JR_DETECTION = 1
____exports.ISCFeature[____exports.ISCFeature.ESAU_JR_DETECTION] = "ESAU_JR_DETECTION"
____exports.ISCFeature.FLIP_DETECTION = 2
____exports.ISCFeature[____exports.ISCFeature.FLIP_DETECTION] = "FLIP_DETECTION"
____exports.ISCFeature.GRID_ENTITY_COLLISION_DETECTION = 3
____exports.ISCFeature[____exports.ISCFeature.GRID_ENTITY_COLLISION_DETECTION] = "GRID_ENTITY_COLLISION_DETECTION"
____exports.ISCFeature.GRID_ENTITY_RENDER_DETECTION = 4
____exports.ISCFeature[____exports.ISCFeature.GRID_ENTITY_RENDER_DETECTION] = "GRID_ENTITY_RENDER_DETECTION"
____exports.ISCFeature.GRID_ENTITY_UPDATE_DETECTION = 5
____exports.ISCFeature[____exports.ISCFeature.GRID_ENTITY_UPDATE_DETECTION] = "GRID_ENTITY_UPDATE_DETECTION"
____exports.ISCFeature.GAME_REORDERED_CALLBACKS = 6
____exports.ISCFeature[____exports.ISCFeature.GAME_REORDERED_CALLBACKS] = "GAME_REORDERED_CALLBACKS"
____exports.ISCFeature.ITEM_PICKUP_DETECTION = 7
____exports.ISCFeature[____exports.ISCFeature.ITEM_PICKUP_DETECTION] = "ITEM_PICKUP_DETECTION"
____exports.ISCFeature.PLAYER_COLLECTIBLE_DETECTION = 8
____exports.ISCFeature[____exports.ISCFeature.PLAYER_COLLECTIBLE_DETECTION] = "PLAYER_COLLECTIBLE_DETECTION"
____exports.ISCFeature.PLAYER_REORDERED_CALLBACKS = 9
____exports.ISCFeature[____exports.ISCFeature.PLAYER_REORDERED_CALLBACKS] = "PLAYER_REORDERED_CALLBACKS"
____exports.ISCFeature.SLOT_RENDER_DETECTION = 10
____exports.ISCFeature[____exports.ISCFeature.SLOT_RENDER_DETECTION] = "SLOT_RENDER_DETECTION"
____exports.ISCFeature.SLOT_UPDATE_DETECTION = 11
____exports.ISCFeature[____exports.ISCFeature.SLOT_UPDATE_DETECTION] = "SLOT_UPDATE_DETECTION"
____exports.ISCFeature.CHARACTER_HEALTH_CONVERSION = 12
____exports.ISCFeature[____exports.ISCFeature.CHARACTER_HEALTH_CONVERSION] = "CHARACTER_HEALTH_CONVERSION"
____exports.ISCFeature.CHARACTER_STATS = 13
____exports.ISCFeature[____exports.ISCFeature.CHARACTER_STATS] = "CHARACTER_STATS"
____exports.ISCFeature.COLLECTIBLE_ITEM_POOL_TYPE = 14
____exports.ISCFeature[____exports.ISCFeature.COLLECTIBLE_ITEM_POOL_TYPE] = "COLLECTIBLE_ITEM_POOL_TYPE"
____exports.ISCFeature.CUSTOM_GRID_ENTITIES = 15
____exports.ISCFeature[____exports.ISCFeature.CUSTOM_GRID_ENTITIES] = "CUSTOM_GRID_ENTITIES"
____exports.ISCFeature.CUSTOM_ITEM_POOLS = 16
____exports.ISCFeature[____exports.ISCFeature.CUSTOM_ITEM_POOLS] = "CUSTOM_ITEM_POOLS"
____exports.ISCFeature.CUSTOM_HOTKEYS = 17
____exports.ISCFeature[____exports.ISCFeature.CUSTOM_HOTKEYS] = "CUSTOM_HOTKEYS"
____exports.ISCFeature.CUSTOM_PICKUPS = 18
____exports.ISCFeature[____exports.ISCFeature.CUSTOM_PICKUPS] = "CUSTOM_PICKUPS"
____exports.ISCFeature.CUSTOM_STAGES = 19
____exports.ISCFeature[____exports.ISCFeature.CUSTOM_STAGES] = "CUSTOM_STAGES"
____exports.ISCFeature.CUSTOM_TRAPDOORS = 20
____exports.ISCFeature[____exports.ISCFeature.CUSTOM_TRAPDOORS] = "CUSTOM_TRAPDOORS"
____exports.ISCFeature.DEBUG_DISPLAY = 21
____exports.ISCFeature[____exports.ISCFeature.DEBUG_DISPLAY] = "DEBUG_DISPLAY"
____exports.ISCFeature.DEPLOY_JSON_ROOM = 22
____exports.ISCFeature[____exports.ISCFeature.DEPLOY_JSON_ROOM] = "DEPLOY_JSON_ROOM"
____exports.ISCFeature.DISABLE_ALL_SOUND = 23
____exports.ISCFeature[____exports.ISCFeature.DISABLE_ALL_SOUND] = "DISABLE_ALL_SOUND"
____exports.ISCFeature.DISABLE_INPUTS = 24
____exports.ISCFeature[____exports.ISCFeature.DISABLE_INPUTS] = "DISABLE_INPUTS"
____exports.ISCFeature.FADE_IN_REMOVER = 25
____exports.ISCFeature[____exports.ISCFeature.FADE_IN_REMOVER] = "FADE_IN_REMOVER"
____exports.ISCFeature.FAST_RESET = 26
____exports.ISCFeature[____exports.ISCFeature.FAST_RESET] = "FAST_RESET"
____exports.ISCFeature.FLYING_DETECTION = 27
____exports.ISCFeature[____exports.ISCFeature.FLYING_DETECTION] = "FLYING_DETECTION"
____exports.ISCFeature.FORGOTTEN_SWITCH = 28
____exports.ISCFeature[____exports.ISCFeature.FORGOTTEN_SWITCH] = "FORGOTTEN_SWITCH"
____exports.ISCFeature.EXTRA_CONSOLE_COMMANDS = 29
____exports.ISCFeature[____exports.ISCFeature.EXTRA_CONSOLE_COMMANDS] = "EXTRA_CONSOLE_COMMANDS"
____exports.ISCFeature.ITEM_POOL_DETECTION = 30
____exports.ISCFeature[____exports.ISCFeature.ITEM_POOL_DETECTION] = "ITEM_POOL_DETECTION"
____exports.ISCFeature.MODDED_ELEMENT_DETECTION = 31
____exports.ISCFeature[____exports.ISCFeature.MODDED_ELEMENT_DETECTION] = "MODDED_ELEMENT_DETECTION"
____exports.ISCFeature.MODDED_ELEMENT_SETS = 32
____exports.ISCFeature[____exports.ISCFeature.MODDED_ELEMENT_SETS] = "MODDED_ELEMENT_SETS"
____exports.ISCFeature.NO_SIREN_STEAL = 33
____exports.ISCFeature[____exports.ISCFeature.NO_SIREN_STEAL] = "NO_SIREN_STEAL"
____exports.ISCFeature.PAUSE = 34
____exports.ISCFeature[____exports.ISCFeature.PAUSE] = "PAUSE"
____exports.ISCFeature.PERSISTENT_ENTITIES = 35
____exports.ISCFeature[____exports.ISCFeature.PERSISTENT_ENTITIES] = "PERSISTENT_ENTITIES"
____exports.ISCFeature.PICKUP_INDEX_CREATION = 36
____exports.ISCFeature[____exports.ISCFeature.PICKUP_INDEX_CREATION] = "PICKUP_INDEX_CREATION"
____exports.ISCFeature.PLAYER_INVENTORY = 37
____exports.ISCFeature[____exports.ISCFeature.PLAYER_INVENTORY] = "PLAYER_INVENTORY"
____exports.ISCFeature.PONY_DETECTION = 38
____exports.ISCFeature[____exports.ISCFeature.PONY_DETECTION] = "PONY_DETECTION"
____exports.ISCFeature.PREVENT_CHILD_ENTITIES = 39
____exports.ISCFeature[____exports.ISCFeature.PREVENT_CHILD_ENTITIES] = "PREVENT_CHILD_ENTITIES"
____exports.ISCFeature.PREVENT_COLLECTIBLE_ROTATION = 40
____exports.ISCFeature[____exports.ISCFeature.PREVENT_COLLECTIBLE_ROTATION] = "PREVENT_COLLECTIBLE_ROTATION"
____exports.ISCFeature.PREVENT_GRID_ENTITY_RESPAWN = 41
____exports.ISCFeature[____exports.ISCFeature.PREVENT_GRID_ENTITY_RESPAWN] = "PREVENT_GRID_ENTITY_RESPAWN"
____exports.ISCFeature.ROOM_CLEAR_FRAME = 42
____exports.ISCFeature[____exports.ISCFeature.ROOM_CLEAR_FRAME] = "ROOM_CLEAR_FRAME"
____exports.ISCFeature.ROOM_HISTORY = 43
____exports.ISCFeature[____exports.ISCFeature.ROOM_HISTORY] = "ROOM_HISTORY"
____exports.ISCFeature.RUN_IN_N_FRAMES = 44
____exports.ISCFeature[____exports.ISCFeature.RUN_IN_N_FRAMES] = "RUN_IN_N_FRAMES"
____exports.ISCFeature.RUN_NEXT_ROOM = 45
____exports.ISCFeature[____exports.ISCFeature.RUN_NEXT_ROOM] = "RUN_NEXT_ROOM"
____exports.ISCFeature.SAVE_DATA_MANAGER = 46
____exports.ISCFeature[____exports.ISCFeature.SAVE_DATA_MANAGER] = "SAVE_DATA_MANAGER"
____exports.ISCFeature.SPAWN_ALT_ROCK_REWARDS = 47
____exports.ISCFeature[____exports.ISCFeature.SPAWN_ALT_ROCK_REWARDS] = "SPAWN_ALT_ROCK_REWARDS"
____exports.ISCFeature.SPAWN_COLLECTIBLE = 48
____exports.ISCFeature[____exports.ISCFeature.SPAWN_COLLECTIBLE] = "SPAWN_COLLECTIBLE"
____exports.ISCFeature.STAGE_HISTORY = 49
____exports.ISCFeature[____exports.ISCFeature.STAGE_HISTORY] = "STAGE_HISTORY"
____exports.ISCFeature.START_AMBUSH = 50
____exports.ISCFeature[____exports.ISCFeature.START_AMBUSH] = "START_AMBUSH"
____exports.ISCFeature.TAINTED_LAZARUS_PLAYERS = 51
____exports.ISCFeature[____exports.ISCFeature.TAINTED_LAZARUS_PLAYERS] = "TAINTED_LAZARUS_PLAYERS"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostDiceRoomActivated"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____effects = require("lua_modules.isaacscript-common.dist.src.functions.effects")
local isCloseEnoughToTriggerDiceFloor = ____effects.isCloseEnoughToTriggerDiceFloor
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getClosestPlayer = ____players.getClosestPlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostDiceRoomActivated = __TS__Class()
local PostDiceRoomActivated = ____exports.PostDiceRoomActivated
PostDiceRoomActivated.name = "PostDiceRoomActivated"
__TS__ClassExtends(PostDiceRoomActivated, CustomCallback)
function PostDiceRoomActivated.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {diceRoomActivated = false}}
    self.shouldFire = function(____, fireArgs, optionalArgs)
        local _player, diceFloorSubType = table.unpack(fireArgs)
        local callbackDiceFloorSubType = table.unpack(optionalArgs)
        return callbackDiceFloorSubType == nil or diceFloorSubType == callbackDiceFloorSubType
    end
    self.postEffectUpdateDiceFloor = function(____, effect)
        if self.v.room.diceRoomActivated then
            return
        end
        if effect.FrameCount == 0 then
            return
        end
        local closestPlayer = getClosestPlayer(nil, effect.Position)
        if isCloseEnoughToTriggerDiceFloor(nil, closestPlayer, effect) then
            self.v.room.diceRoomActivated = true
            self:fire(closestPlayer, effect.SubType)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_EFFECT_UPDATE, {self.postEffectUpdateDiceFloor, EffectVariant.DICE_FLOOR}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.effects"] = function(...) 
local ____exports = {}
local ____math = require("lua_modules.isaacscript-common.dist.src.functions.math")
local inRectangle = ____math.inRectangle
--- For `EntityType.EFFECT` (1000), `EffectVariant.DICE_FLOOR` (76).
____exports.DICE_FLOOR_TRIGGER_SQUARE_SIZE = 75
--- Helper function to see if a player is close enough to activate a Dice Room floor.
function ____exports.isCloseEnoughToTriggerDiceFloor(self, player, diceFloor)
    local topLeft = diceFloor.Position + Vector(-____exports.DICE_FLOOR_TRIGGER_SQUARE_SIZE, -____exports.DICE_FLOOR_TRIGGER_SQUARE_SIZE)
    local bottomRight = diceFloor.Position + Vector(____exports.DICE_FLOOR_TRIGGER_SQUARE_SIZE, ____exports.DICE_FLOOR_TRIGGER_SQUARE_SIZE)
    return inRectangle(nil, player.Position, topLeft, bottomRight)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.math"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction
local ____direction = require("lua_modules.isaacscript-common.dist.src.functions.direction")
local directionToVector = ____direction.directionToVector
--- Helper function to normalize an integer.
-- 
-- - If `x` is less than `min`, then it will be clamped to `min`.
-- - If `x` is greater than `max`, then it will be clamped to `max`.
function ____exports.clamp(self, x, min, max)
    return math.max(
        min,
        math.min(x, max)
    )
end
function ____exports.getAngleDifference(self, angle1, angle2)
    local subtractedAngle = angle1 - angle2
    return (subtractedAngle + 180) % 360 - 180
end
--- Helper function to get an array of equidistant points on the circumference around a circle.
-- Useful for equally distributing things in a circle pattern.
-- 
-- @param centerPos A position that represents the center of the center to get the points from.
-- @param radius The radius of the circle.
-- @param numPoints The number of points on the circumference of the circle to get.
-- @param xMultiplier An optional multiplier to get the points around an oval. Default is 1.
-- @param yMultiplier An optional multiplier to get the points around an oval. Default is 1.
-- @param initialDirection By default, the first point on the circle will be on the top center, but
-- this can be optionally changed by specifying this argument.
function ____exports.getCircleDiscretizedPoints(self, centerPos, radius, numPoints, xMultiplier, yMultiplier, initialDirection)
    if xMultiplier == nil then
        xMultiplier = 1
    end
    if yMultiplier == nil then
        yMultiplier = 1
    end
    if initialDirection == nil then
        initialDirection = Direction.UP
    end
    local vector = directionToVector(nil, initialDirection)
    local initialPosition = vector * radius
    local positions = {}
    do
        local i = 0
        while i < numPoints do
            local rotatedPosition = initialPosition:Rotated(i * 360 / numPoints)
            rotatedPosition.X = rotatedPosition.X * xMultiplier
            rotatedPosition.Y = rotatedPosition.Y * yMultiplier
            local positionFromCenter = centerPos + rotatedPosition
            positions[#positions + 1] = positionFromCenter
            i = i + 1
        end
    end
    return positions
end
--- Helper function to check if a given position is within a given rectangle.
-- 
-- This is an inclusive check, meaning that it will return true if the position is on the border of
-- the rectangle.
function ____exports.inRectangle(self, position, topLeft, bottomRight)
    return position.X >= topLeft.X and position.X <= bottomRight.X and position.Y >= topLeft.Y and position.Y <= bottomRight.Y
end
--- From: https://www.geeksforgeeks.org/check-if-any-point-overlaps-the-given-circle-and-rectangle/
function ____exports.isCircleIntersectingRectangle(self, circleCenter, circleRadius, rectangleTopLeft, rectangleBottomRight)
    local nearestX = math.max(
        rectangleTopLeft.X,
        math.min(circleCenter.X, rectangleBottomRight.X)
    )
    local nearestY = math.max(
        rectangleTopLeft.Y,
        math.min(circleCenter.Y, rectangleBottomRight.Y)
    )
    local nearestPointToCircleOnRectangle = Vector(nearestX, nearestY)
    local distanceToCenterOfCircle = nearestPointToCircleOnRectangle:Distance(circleCenter)
    return distanceToCenterOfCircle <= circleRadius
end
function ____exports.isEven(self, num)
    return num & 1 == 0
end
function ____exports.isOdd(self, num)
    return num & 1 == 1
end
function ____exports.lerp(self, a, b, pos)
    return a + (b - a) * pos
end
function ____exports.lerpAngleDegrees(self, aStart, aEnd, percent)
    return aStart + ____exports.getAngleDifference(nil, aStart, aEnd) * percent
end
--- If rounding fails, this function returns 0.
-- From: http://lua-users.org/wiki/SimpleRound
-- 
-- @param num The number to round.
-- @param numDecimalPlaces Optional. Default is 0.
function ____exports.round(self, num, numDecimalPlaces)
    if numDecimalPlaces == nil then
        numDecimalPlaces = 0
    end
    local roundedNum = tonumber(string.format(
        ("%." .. tostring(numDecimalPlaces)) .. "f",
        num
    ))
    return roundedNum == nil and 0 or roundedNum
end
---
-- @returns 1 if n is positive, -1 if n is negative, or 0 if n is 0.
function ____exports.sign(self, n)
    if n > 0 then
        return 1
    end
    if n < 0 then
        return -1
    end
    return 0
end
function ____exports.tanh(self, x)
    return (math.exp(x) - math.exp(-x)) / (math.exp(x) + math.exp(-x))
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostDoorRender"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____doors = require("lua_modules.isaacscript-common.dist.src.functions.doors")
local getDoors = ____doors.getDoors
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireDoor = ____shouldFire.shouldFireDoor
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostDoorRender = __TS__Class()
local PostDoorRender = ____exports.PostDoorRender
PostDoorRender.name = "PostDoorRender"
__TS__ClassExtends(PostDoorRender, CustomCallback)
function PostDoorRender.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireDoor
    self.postRender = function()
        for ____, door in ipairs(getDoors(nil)) do
            self:fire(door)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostDoorUpdate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____doors = require("lua_modules.isaacscript-common.dist.src.functions.doors")
local getDoors = ____doors.getDoors
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireDoor = ____shouldFire.shouldFireDoor
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostDoorUpdate = __TS__Class()
local PostDoorUpdate = ____exports.PostDoorUpdate
PostDoorUpdate.name = "PostDoorUpdate"
__TS__ClassExtends(PostDoorUpdate, CustomCallback)
function PostDoorUpdate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireDoor
    self.postUpdate = function()
        for ____, door in ipairs(getDoors(nil)) do
            self:fire(door)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostEffectInitLate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireEffect = ____shouldFire.shouldFireEffect
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostEffectInitLate = __TS__Class()
local PostEffectInitLate = ____exports.PostEffectInitLate
PostEffectInitLate.name = "PostEffectInitLate"
__TS__ClassExtends(PostEffectInitLate, CustomCallback)
function PostEffectInitLate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFireEffect
    self.postEffectUpdate = function(____, effect)
        local index = GetPtrHash(effect)
        if not self.v.room.firedSet:has(index) then
            self.v.room.firedSet:add(index)
            self:fire(effect)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_EFFECT_UPDATE, {self.postEffectUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostEffectStateChanged"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireEffect = ____shouldFire.shouldFireEffect
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostEffectStateChanged = __TS__Class()
local PostEffectStateChanged = ____exports.PostEffectStateChanged
PostEffectStateChanged.name = "PostEffectStateChanged"
__TS__ClassExtends(PostEffectStateChanged, CustomCallback)
function PostEffectStateChanged.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {stateMap = __TS__New(
        DefaultMap,
        function(____, state) return state end
    )}}
    self.shouldFire = shouldFireEffect
    self.postEffectUpdate = function(____, effect)
        local ptrHash = GetPtrHash(effect)
        local previousState = self.v.run.stateMap:getAndSetDefault(ptrHash, effect.State)
        local currentState = effect.State
        self.v.run.stateMap:set(ptrHash, currentState)
        if previousState ~= currentState then
            self:fire(effect, previousState, currentState)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_EFFECT_UPDATE, {self.postEffectUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostEsauJr"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostEsauJr = __TS__Class()
local PostEsauJr = ____exports.PostEsauJr
PostEsauJr.name = "PostEsauJr"
__TS__ClassExtends(PostEsauJr, CustomCallback)
function PostEsauJr.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.ESAU_JR_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostFamiliarInitLate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireFamiliar = ____shouldFire.shouldFireFamiliar
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostFamiliarInitLate = __TS__Class()
local PostFamiliarInitLate = ____exports.PostFamiliarInitLate
PostFamiliarInitLate.name = "PostFamiliarInitLate"
__TS__ClassExtends(PostFamiliarInitLate, CustomCallback)
function PostFamiliarInitLate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFireFamiliar
    self.postFamiliarUpdate = function(____, familiar)
        local index = GetPtrHash(familiar)
        if not self.v.room.firedSet:has(index) then
            self.v.room.firedSet:add(index)
            self:fire(familiar)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_FAMILIAR_UPDATE, {self.postFamiliarUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostFamiliarStateChanged"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireFamiliar = ____shouldFire.shouldFireFamiliar
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostFamiliarStateChanged = __TS__Class()
local PostFamiliarStateChanged = ____exports.PostFamiliarStateChanged
PostFamiliarStateChanged.name = "PostFamiliarStateChanged"
__TS__ClassExtends(PostFamiliarStateChanged, CustomCallback)
function PostFamiliarStateChanged.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {stateMap = __TS__New(
        DefaultMap,
        function(____, state) return state end
    )}}
    self.shouldFire = shouldFireFamiliar
    self.postFamiliarUpdate = function(____, familiar)
        local ptrHash = GetPtrHash(familiar)
        local previousState = self.v.run.stateMap:getAndSetDefault(ptrHash, familiar.State)
        local currentState = familiar.State
        self.v.run.stateMap:set(ptrHash, currentState)
        if previousState ~= currentState then
            self:fire(familiar, previousState, currentState)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_FAMILIAR_UPDATE, {self.postFamiliarUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostFirstEsauJr"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostFirstEsauJr = __TS__Class()
local PostFirstEsauJr = ____exports.PostFirstEsauJr
PostFirstEsauJr.name = "PostFirstEsauJr"
__TS__ClassExtends(PostFirstEsauJr, CustomCallback)
function PostFirstEsauJr.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.ESAU_JR_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostFirstFlip"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostFirstFlip = __TS__Class()
local PostFirstFlip = ____exports.PostFirstFlip
PostFirstFlip.name = "PostFirstFlip"
__TS__ClassExtends(PostFirstFlip, CustomCallback)
function PostFirstFlip.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.FLIP_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostFlip"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostFlip = __TS__Class()
local PostFlip = ____exports.PostFlip
PostFlip.name = "PostFlip"
__TS__ClassExtends(PostFlip, CustomCallback)
function PostFlip.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.FLIP_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGameStartedReordered"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGameStartedReordered = __TS__Class()
local PostGameStartedReordered = ____exports.PostGameStartedReordered
PostGameStartedReordered.name = "PostGameStartedReordered"
__TS__ClassExtends(PostGameStartedReordered, CustomCallback)
function PostGameStartedReordered.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.GAME_REORDERED_CALLBACKS}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGameStartedReorderedLast"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGameStartedReorderedLast = __TS__Class()
local PostGameStartedReorderedLast = ____exports.PostGameStartedReorderedLast
PostGameStartedReorderedLast.name = "PostGameStartedReorderedLast"
__TS__ClassExtends(PostGameStartedReorderedLast, CustomCallback)
function PostGameStartedReorderedLast.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.GAME_REORDERED_CALLBACKS}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGreedModeWave"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____run = require("lua_modules.isaacscript-common.dist.src.functions.run")
local isGreedMode = ____run.isGreedMode
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGreedModeWave = __TS__Class()
local PostGreedModeWave = ____exports.PostGreedModeWave
PostGreedModeWave.name = "PostGreedModeWave"
__TS__ClassExtends(PostGreedModeWave, CustomCallback)
function PostGreedModeWave.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {currentGreedWave = 0}}
    self.postUpdate = function()
        if not isGreedMode(nil) then
            return
        end
        local level = game:GetLevel()
        local newWave = level.GreedModeWave
        local oldWave = self.v.run.currentGreedWave
        self.v.run.currentGreedWave = newWave
        if newWave > oldWave then
            self:fire(oldWave, newWave)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.run"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge
local Difficulty = ____isaac_2Dtypescript_2Ddefinitions.Difficulty
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local SlotVariant = ____isaac_2Dtypescript_2Ddefinitions.SlotVariant
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.src.core.constantsFirstLast")
local FIRST_CHARACTER = ____constantsFirstLast.FIRST_CHARACTER
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local spawnSlot = ____entitiesSpecific.spawnSlot
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
--- Helper function to see if the current run can unlock achievements. For example, if playing on a
-- set seed or in a victory lap, achievements are disabled.
function ____exports.canRunUnlockAchievements(self)
    local greedDonationMachine = spawnSlot(nil, SlotVariant.GREED_DONATION_MACHINE, 0, VectorZero)
    local canUnlockAchievements = greedDonationMachine:Exists()
    greedDonationMachine:Remove()
    return canUnlockAchievements
end
--- Helper function to check if the difficulty of the current run is equal to `Difficulty.GREED` or
-- `Difficulty.GREEDIER`.
function ____exports.isGreedMode(self)
    return game.Difficulty == Difficulty.GREED or game.Difficulty == Difficulty.GREEDIER
end
--- Whether or not the player is playing on a set seed (i.e. that they entered in a specific seed by
-- pressing tab on the character selection screen). When the player resets the game on a set seed,
-- the game will not switch to a different seed.
function ____exports.onSetSeed(self)
    local seeds = game:GetSeeds()
    local customRun = seeds:IsCustomRun()
    local challenge = Isaac.GetChallenge()
    return challenge == Challenge.NULL and customRun
end
--- Helper function to restart the run using the console command of "restart". If the player is
-- playing a seeded run, then it will restart the game to the beginning of the seed. Otherwise, it
-- will put the player on a run with an entirely new seed.
-- 
-- You can optionally specify a `PlayerType` to restart the game as that character.
function ____exports.restart(self, character)
    if character == nil then
        local command = "restart"
        log(nil, "Restarting the run with a console command of: " .. command)
        Isaac.ExecuteCommand(command)
        return
    end
    if character < FIRST_CHARACTER then
        error(("Restarting as a character of " .. tostring(character)) .. " would crash the game.")
    end
    local command = "restart " .. tostring(character)
    log(
        nil,
        (((("Restarting the run as PlayerType." .. tostring(PlayerType[character])) .. " (") .. tostring(character)) .. ") with a console command of: ") .. command
    )
    Isaac.ExecuteCommand(command)
end
--- Helper function to change the run status to that of an unseeded run with a new random seed.
-- 
-- This is useful to revert the behavior where playing on a set and restarting the game will not
-- take you to a new seed.
function ____exports.setUnseeded(self)
    local seeds = game:GetSeeds()
    seeds:Reset()
    seeds:Restart(Challenge.NULL)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntities = ____entities.getEntities
local removeEntities = ____entities.removeEntities
local spawn = ____entities.spawn
--- Helper function to get all of the bombs in the room. (Specifically, this refers to the
-- `EntityBomb` class, not bomb pickups.)
-- 
-- For example:
-- 
-- ```ts
-- // Make all of the bombs in the room invisible.
-- for (const bomb of getBombs()) {
--   bomb.Visible = false;
-- }
-- ```
-- 
-- @param bombVariant Optional. If specified, will only get the bombs that match the variant.
-- Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only get the bombs that match the sub-type. Default
-- is -1, which matches every sub-type.
function ____exports.getBombs(self, bombVariant, subType)
    if bombVariant == nil then
        bombVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local entities = getEntities(nil, EntityType.BOMB, bombVariant, subType)
    local bombs = {}
    for ____, entity in ipairs(entities) do
        local bomb = entity:ToBomb()
        if bomb ~= nil then
            bombs[#bombs + 1] = bomb
        end
    end
    return bombs
end
--- Helper function to get all of the effects in the room.
-- 
-- For example:
-- 
-- ```ts
-- // Make all of the effects in the room invisible.
-- for (const effect of getEffects()) {
--   effect.Visible = false;
-- }
-- ```
-- 
-- @param effectVariant Optional. If specified, will only get the effects that match the variant.
-- Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only get the effects that match the sub-type. Default
-- is -1, which matches every sub-type.
function ____exports.getEffects(self, effectVariant, subType)
    if effectVariant == nil then
        effectVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local entities = getEntities(nil, EntityType.EFFECT, effectVariant, subType)
    local effects = {}
    for ____, entity in ipairs(entities) do
        local effect = entity:ToEffect()
        if effect ~= nil then
            effects[#effects + 1] = effect
        end
    end
    return effects
end
--- Helper function to get all of the familiars in the room.
-- 
-- For example:
-- 
-- ```ts
-- // Make all of the familiars in the room invisible.
-- for (const familiar of getFamiliars()) {
--   familiar.Visible = false;
-- }
-- ```
-- 
-- @param familiarVariant Optional. If specified, will only get the familiars that match the
-- variant. Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only get the familiars that match the sub-type.
-- Default is -1, which matches every sub-type.
function ____exports.getFamiliars(self, familiarVariant, subType)
    if familiarVariant == nil then
        familiarVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local entities = getEntities(nil, EntityType.FAMILIAR, familiarVariant, subType)
    local familiars = {}
    for ____, entity in ipairs(entities) do
        local familiar = entity:ToFamiliar()
        if familiar ~= nil then
            familiars[#familiars + 1] = familiar
        end
    end
    return familiars
end
--- Helper function to get all of the knives in the room.
-- 
-- For example:
-- 
-- ```ts
-- // Make all of the knives in the room invisible.
-- for (const knife of getKnives()) {
--   knife.Visible = false;
-- }
-- ```
-- 
-- @param knifeVariant Optional. If specified, will only get the knives that match the variant.
-- Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only get the knives that match the sub-type. Default
-- is -1, which matches every sub-type.
function ____exports.getKnives(self, knifeVariant, subType)
    if knifeVariant == nil then
        knifeVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local entities = getEntities(nil, EntityType.KNIFE, knifeVariant, subType)
    local knives = {}
    for ____, entity in ipairs(entities) do
        local knife = entity:ToKnife()
        if knife ~= nil then
            knives[#knives + 1] = knife
        end
    end
    return knives
end
--- Helper function to get all of the lasers in the room.
-- 
-- For example:
-- 
-- ```ts
-- // Make all of the lasers in the room invisible.
-- for (const laser of getLasers()) {
--   laser.Visible = false;
-- }
-- ```
-- 
-- @param laserVariant Optional. If specified, will only get the lasers that match the variant.
-- Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only get the lasers that match the sub-type. Default
-- is -1, which matches every sub-type.
function ____exports.getLasers(self, laserVariant, subType)
    if laserVariant == nil then
        laserVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local entities = getEntities(nil, EntityType.LASER, laserVariant, subType)
    local lasers = {}
    for ____, entity in ipairs(entities) do
        local laser = entity:ToLaser()
        if laser ~= nil then
            lasers[#lasers + 1] = laser
        end
    end
    return lasers
end
--- Helper function to get all of the NPCs in the room.
-- 
-- @param entityType Optional. If specified, will only get the NPCs that match the type. Default is
-- -1, which matches every entity type.
-- @param variant Optional. If specified, will only get the NPCs that match the variant. Default is
-- -1, which matches every entity type.
-- @param subType Optional. If specified, will only get the bombs that match the sub-type. Default
-- is -1, which matches every sub-type.
-- @param ignoreFriendly Optional. If set to true, it will exclude friendly NPCs from being
-- returned. Default is false. Will only be taken into account if the
-- `entityType` is specified.
function ____exports.getNPCs(self, entityType, variant, subType, ignoreFriendly)
    if entityType == nil then
        entityType = -1
    end
    if variant == nil then
        variant = -1
    end
    if subType == nil then
        subType = -1
    end
    if ignoreFriendly == nil then
        ignoreFriendly = false
    end
    local entities = getEntities(
        nil,
        entityType,
        variant,
        subType,
        ignoreFriendly
    )
    local npcs = {}
    for ____, entity in ipairs(entities) do
        local npc = entity:ToNPC()
        if npc ~= nil then
            npcs[#npcs + 1] = npc
        end
    end
    return npcs
end
--- Helper function to get all of the pickups in the room.
-- 
-- For example:
-- 
-- ```ts
-- // Make all of the pickups in the room invisible.
-- for (const pickup of getPickups()) {
--   pickup.Visible = false;
-- }
-- ```
-- 
-- @param pickupVariant Optional. If specified, will only get the pickups that match the variant.
-- Default is -1, which matches every entity type.
-- @param subType Optional. If specified, will only get the pickups that match the sub-type. Default
-- is -1, which matches every sub-type.
function ____exports.getPickups(self, pickupVariant, subType)
    if pickupVariant == nil then
        pickupVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local entities = getEntities(nil, EntityType.PICKUP, pickupVariant, subType)
    local pickups = {}
    for ____, entity in ipairs(entities) do
        local pickup = entity:ToPickup()
        if pickup ~= nil then
            pickups[#pickups + 1] = pickup
        end
    end
    return pickups
end
--- Helper function to get all of the projectiles in the room.
-- 
-- For example:
-- 
-- ```ts
-- // Make all of the projectiles in the room invisible.
-- for (const projectile of getProjectiles()) {
--   projectile.Visible = false;
-- }
-- ```
-- 
-- @param projectileVariant Optional. If specified, will only get the projectiles that match the
-- variant. Default is -1, which matches every entity type.
-- @param subType Optional. If specified, will only get the projectiles that match the sub-type.
-- Default is -1, which matches every sub-type.
function ____exports.getProjectiles(self, projectileVariant, subType)
    if projectileVariant == nil then
        projectileVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local entities = getEntities(nil, EntityType.PROJECTILE, projectileVariant, subType)
    local projectiles = {}
    for ____, entity in ipairs(entities) do
        local projectile = entity:ToProjectile()
        if projectile ~= nil then
            projectiles[#projectiles + 1] = projectile
        end
    end
    return projectiles
end
--- Helper function to get all of the slots in the room.
-- 
-- For example:
-- 
-- ```ts
-- // Make all of the slots in the room invisible.
-- for (const slot of getSlots()) {
--   slot.Visible = false;
-- }
-- ```
-- 
-- @param slotVariant Optional. If specified, will only get the slots that match the variant.
-- Default is -1, which matches every entity type.
-- @param subType Optional. If specified, will only get the slots that match the sub-type. Default
-- is -1, which matches every sub-type.
function ____exports.getSlots(self, slotVariant, subType)
    if slotVariant == nil then
        slotVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local slots = getEntities(nil, EntityType.SLOT, slotVariant, subType)
    return slots
end
--- Helper function to get all of the tears in the room.
-- 
-- For example:
-- 
-- ```ts
-- // Make all of the tears in the room invisible.
-- for (const tear of getTears()) {
--   tear.Visible = false;
-- }
-- ```
-- 
-- @param tearVariant Optional. If specified, will only get the tears that match the variant.
-- Default is -1, which matches every entity type.
-- @param subType Optional. If specified, will only get the tears that match the sub-type. Default
-- is -1, which matches every sub-type.
function ____exports.getTears(self, tearVariant, subType)
    if tearVariant == nil then
        tearVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local entities = getEntities(nil, EntityType.TEAR, tearVariant, subType)
    local tears = {}
    for ____, entity in ipairs(entities) do
        local tear = entity:ToTear()
        if tear ~= nil then
            tears[#tears + 1] = tear
        end
    end
    return tears
end
--- Helper function to remove all of the bombs in the room. (Specifically, this refers to the
-- `EntityBomb` class, not bomb pickups.)
-- 
-- @param bombVariant Optional. If specified, will only remove the bombs that match the variant.
-- Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only remove the bombs that match the sub-type.
-- Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of bombs.
-- @returns An array of the bombs that were removed.
function ____exports.removeAllBombs(self, bombVariant, subType, cap)
    if bombVariant == nil then
        bombVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local bombs = ____exports.getBombs(nil, bombVariant, subType)
    return removeEntities(nil, bombs, cap)
end
--- Helper function to remove all of the effects in the room.
-- 
-- @param effectVariant Optional. If specified, will only remove the effects that match the variant.
-- Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only remove the effects that match the sub-type.
-- Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of effects.
-- @returns An array of the effects that were removed.
function ____exports.removeAllEffects(self, effectVariant, subType, cap)
    if effectVariant == nil then
        effectVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local effects = ____exports.getEffects(nil, effectVariant, subType)
    return removeEntities(nil, effects, cap)
end
--- Helper function to remove all of the familiars in the room.
-- 
-- @param familiarVariant Optional. If specified, will only remove the familiars that match the
-- variant. Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only remove the familiars that match the sub-type.
-- Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of familiars.
-- @returns An array of the familiars that were removed.
function ____exports.removeAllFamiliars(self, familiarVariant, subType, cap)
    if familiarVariant == nil then
        familiarVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local familiars = ____exports.getFamiliars(nil, familiarVariant, subType)
    return removeEntities(nil, familiars, cap)
end
--- Helper function to remove all of the knives in the room.
-- 
-- @param knifeVariant Optional. If specified, will only remove the knives that match the variant.
-- Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only remove the knives that match the sub-type.
-- Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of knives.
-- @returns An array of the knives that were removed.
function ____exports.removeAllKnives(self, knifeVariant, subType, cap)
    if knifeVariant == nil then
        knifeVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local knives = ____exports.getKnives(nil, knifeVariant, subType)
    return removeEntities(nil, knives, cap)
end
--- Helper function to remove all of the lasers in the room.
-- 
-- @param laserVariant Optional. If specified, will only remove the lasers that match the variant.
-- Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only remove the lasers that match the sub-type.
-- Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of lasers.
-- @returns An array of the lasers that were removed.
function ____exports.removeAllLasers(self, laserVariant, subType, cap)
    if laserVariant == nil then
        laserVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local lasers = ____exports.getLasers(nil, laserVariant, subType)
    return removeEntities(nil, lasers, cap)
end
--- Helper function to remove all of the NPCs in the room.
-- 
-- @param entityType Optional. If specified, will only remove the NPCs that match the type. Default
-- is -1, which matches every type.
-- @param variant Optional. If specified, will only remove the NPCs that match the variant. Default
-- is -1, which matches every variant.
-- @param subType Optional. If specified, will only remove the NPCs that match the sub-type. Default
-- is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of NPCs.
-- @returns An array of the NPCs that were removed.
function ____exports.removeAllNPCs(self, entityType, variant, subType, cap)
    if entityType == nil then
        entityType = -1
    end
    if variant == nil then
        variant = -1
    end
    if subType == nil then
        subType = -1
    end
    local npcs = ____exports.getNPCs(nil, entityType, variant, subType)
    return removeEntities(nil, npcs, cap)
end
--- Helper function to remove all of the pickups in the room.
-- 
-- @param pickupVariant Optional. If specified, will only remove pickups that match this variant.
-- Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only remove pickups that match this sub-type. Default
-- is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of pickups.
-- @returns An array of the pickups that were removed.
function ____exports.removeAllPickups(self, pickupVariant, subType, cap)
    if pickupVariant == nil then
        pickupVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local pickups = ____exports.getPickups(nil, pickupVariant, subType)
    return removeEntities(nil, pickups, cap)
end
--- Helper function to remove all of the projectiles in the room.
-- 
-- @param projectileVariant Optional. If specified, will only remove projectiles that match this
-- variant. Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only remove projectiles that match this sub-type.
-- Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of projectiles.
-- @returns An array of the projectiles that were removed.
function ____exports.removeAllProjectiles(self, projectileVariant, subType, cap)
    if projectileVariant == nil then
        projectileVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local projectiles = ____exports.getProjectiles(nil, projectileVariant, subType)
    return removeEntities(nil, projectiles, cap)
end
--- Helper function to remove all of the slots in the room.
-- 
-- @param slotVariant Optional. If specified, will only remove slots that match this variant.
-- Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only remove slots that match this sub-type. Default
-- is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of slots.
-- @returns An array of the slots that were removed.
function ____exports.removeAllSlots(self, slotVariant, subType, cap)
    if slotVariant == nil then
        slotVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local slots = ____exports.getSlots(nil, slotVariant, subType)
    return removeEntities(nil, slots, cap)
end
--- Helper function to remove all of the tears in the room.
-- 
-- @param tearVariant Optional. If specified, will only remove tears that match this variant.
-- Default is -1, which matches every variant.
-- @param subType Optional. If specified, will only remove tears that match this sub-type. Default
-- is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of tears.
-- @returns An array of the tears that were removed.
function ____exports.removeAllTears(self, tearVariant, subType, cap)
    if tearVariant == nil then
        tearVariant = -1
    end
    if subType == nil then
        subType = -1
    end
    local tears = ____exports.getTears(nil, tearVariant, subType)
    return removeEntities(nil, tears, cap)
end
--- Helper function to spawn a `EntityType.BOMB` (4).
function ____exports.spawnBomb(self, bombVariant, subType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    local entity = spawn(
        nil,
        EntityType.BOMB,
        bombVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
    local bomb = entity:ToBomb()
    if bomb == nil then
        error("Failed to spawn a bomb.")
    end
    return bomb
end
--- Helper function to spawn a `EntityType.BOMB` (4) with a specific seed.
function ____exports.spawnBombWithSeed(self, bombVariant, subType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnBomb(
        nil,
        bombVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.EFFECT` (1000).
function ____exports.spawnEffect(self, effectVariant, subType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    local entity = spawn(
        nil,
        EntityType.EFFECT,
        effectVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
    local effect = entity:ToEffect()
    if effect == nil then
        error("Failed to spawn an effect.")
    end
    return effect
end
--- Helper function to spawn a `EntityType.EFFECT` (1000) with a specific seed.
function ____exports.spawnEffectWithSeed(self, effectVariant, subType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnEffect(
        nil,
        effectVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.FAMILIAR` (3).
-- 
-- If you are trying to implement a custom familiar, you probably want to use the
-- `checkFamiliarFromCollectibles` helper function instead.
function ____exports.spawnFamiliar(self, familiarVariant, subType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    local entity = spawn(
        nil,
        EntityType.FAMILIAR,
        familiarVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
    local familiar = entity:ToFamiliar()
    if familiar == nil then
        error("Failed to spawn a familiar.")
    end
    return familiar
end
--- Helper function to spawn a `EntityType.FAMILIAR` (3) with a specific seed.
function ____exports.spawnFamiliarWithSeed(self, familiarVariant, subType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnFamiliar(
        nil,
        familiarVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.KNIFE` (8).
function ____exports.spawnKnife(self, knifeVariant, subType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    local entity = spawn(
        nil,
        EntityType.KNIFE,
        knifeVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
    local knife = entity:ToKnife()
    if knife == nil then
        error("Failed to spawn a knife.")
    end
    return knife
end
--- Helper function to spawn a `EntityType.KNIFE` (8) with a specific seed.
function ____exports.spawnKnifeWithSeed(self, knifeVariant, subType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnKnife(
        nil,
        knifeVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.LASER` (7).
function ____exports.spawnLaser(self, laserVariant, subType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    local entity = spawn(
        nil,
        EntityType.LASER,
        laserVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
    local laser = entity:ToLaser()
    if laser == nil then
        error("Failed to spawn a laser.")
    end
    return laser
end
--- Helper function to spawn a `EntityType.LASER` (7) with a specific seed.
function ____exports.spawnLaserWithSeed(self, laserVariant, subType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnLaser(
        nil,
        laserVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn an NPC.
-- 
-- Note that if you pass a non-NPC `EntityType` to this function, it will cause a run-time error,
-- since the `Entity.ToNPC` method will return undefined.
function ____exports.spawnNPC(self, entityType, variant, subType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    local entity = spawn(
        nil,
        entityType,
        variant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
    local npc = entity:ToNPC()
    if npc == nil then
        error("Failed to spawn an NPC.")
    end
    return npc
end
--- Helper function to spawn an NPC with a specific seed.
-- 
-- Note that if you pass a non-NPC `EntityType` to this function, it will cause a run-time error,
-- since the `Entity.ToNPC` method will return undefined.
function ____exports.spawnNPCWithSeed(self, entityType, variant, subType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnNPC(
        nil,
        entityType,
        variant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5).
function ____exports.spawnPickup(self, pickupVariant, subType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    local entity = spawn(
        nil,
        EntityType.PICKUP,
        pickupVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
    local pickup = entity:ToPickup()
    if pickup == nil then
        error("Failed to spawn a pickup.")
    end
    return pickup
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with a specific seed.
function ____exports.spawnPickupWithSeed(self, pickupVariant, subType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnPickup(
        nil,
        pickupVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PROJECTILE` (9).
function ____exports.spawnProjectile(self, projectileVariant, subType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    local entity = spawn(
        nil,
        EntityType.PROJECTILE,
        projectileVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
    local projectile = entity:ToProjectile()
    if projectile == nil then
        error("Failed to spawn a projectile.")
    end
    return projectile
end
--- Helper function to spawn a `EntityType.PROJECTILE` (9) with a specific seed.
function ____exports.spawnProjectileWithSeed(self, projectileVariant, subType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnProjectile(
        nil,
        projectileVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.SLOT` (6).
function ____exports.spawnSlot(self, slotVariant, subType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    return spawn(
        nil,
        EntityType.SLOT,
        slotVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.SLOT` (6) with a specific seed.
function ____exports.spawnSlotWithSeed(self, slotVariant, subType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnSlot(
        nil,
        slotVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.TEAR` (2).
function ____exports.spawnTear(self, tearVariant, subType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    local entity = spawn(
        nil,
        EntityType.TEAR,
        tearVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
    local tear = entity:ToTear()
    if tear == nil then
        error("Failed to spawn a tear.")
    end
    return tear
end
--- Helper function to spawn a `EntityType.EntityType` (2) with a specific seed.
function ____exports.spawnTearWithSeed(self, tearVariant, subType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnTear(
        nil,
        tearVariant,
        subType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityBroken"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireGridEntity = ____shouldFire.shouldFireGridEntity
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityBroken = __TS__Class()
local PostGridEntityBroken = ____exports.PostGridEntityBroken
PostGridEntityBroken.name = "PostGridEntityBroken"
__TS__ClassExtends(PostGridEntityBroken, CustomCallback)
function PostGridEntityBroken.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireGridEntity
    self.featuresUsed = {ISCFeature.GRID_ENTITY_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCollision"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityCollision = __TS__Class()
local PostGridEntityCollision = ____exports.PostGridEntityCollision
PostGridEntityCollision.name = "PostGridEntityCollision"
__TS__ClassExtends(PostGridEntityCollision, CustomCallback)
function PostGridEntityCollision.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = function(____, fireArgs, optionalArgs)
        local gridEntity, entity = table.unpack(fireArgs)
        local callbackGridEntityType, callbackGridEntityVariant, callbackEntityType, callbackEntityVariant, callbackEntitySubType = table.unpack(optionalArgs)
        local gridEntityType = gridEntity:GetType()
        local gridEntityVariant = gridEntity:GetVariant()
        return (callbackGridEntityType == nil or callbackGridEntityType == gridEntityType) and (callbackGridEntityVariant == nil or callbackGridEntityVariant == gridEntityVariant) and (callbackEntityType == nil or callbackEntityType == entity.Type) and (callbackEntityVariant == nil or callbackEntityVariant == entity.Variant) and (callbackEntitySubType == nil or callbackEntitySubType == entity.SubType)
    end
    self.featuresUsed = {ISCFeature.GRID_ENTITY_COLLISION_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomBroken"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireGridEntityCustom = ____shouldFire.shouldFireGridEntityCustom
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityCustomBroken = __TS__Class()
local PostGridEntityCustomBroken = ____exports.PostGridEntityCustomBroken
PostGridEntityCustomBroken.name = "PostGridEntityCustomBroken"
__TS__ClassExtends(PostGridEntityCustomBroken, CustomCallback)
function PostGridEntityCustomBroken.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireGridEntityCustom
    self.featuresUsed = {ISCFeature.GRID_ENTITY_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomCollision"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityCustomCollision = __TS__Class()
local PostGridEntityCustomCollision = ____exports.PostGridEntityCustomCollision
PostGridEntityCustomCollision.name = "PostGridEntityCustomCollision"
__TS__ClassExtends(PostGridEntityCustomCollision, CustomCallback)
function PostGridEntityCustomCollision.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = function(____, fireArgs, optionalArgs)
        local _gridEntity, gridEntityTypeCustom, entity = table.unpack(fireArgs)
        local callbackGridEntityTypeCustom, callbackEntityType, callbackEntityVariant, callbackEntitySubType = table.unpack(optionalArgs)
        return (callbackGridEntityTypeCustom == nil or callbackGridEntityTypeCustom == gridEntityTypeCustom) and (callbackEntityType == nil or callbackEntityType == entity.Type) and (callbackEntityVariant == nil or callbackEntityVariant == entity.Variant) and (callbackEntitySubType == nil or callbackEntitySubType == entity.SubType)
    end
    self.featuresUsed = {ISCFeature.GRID_ENTITY_COLLISION_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomInit"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireGridEntityCustom = ____shouldFire.shouldFireGridEntityCustom
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityCustomInit = __TS__Class()
local PostGridEntityCustomInit = ____exports.PostGridEntityCustomInit
PostGridEntityCustomInit.name = "PostGridEntityCustomInit"
__TS__ClassExtends(PostGridEntityCustomInit, CustomCallback)
function PostGridEntityCustomInit.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireGridEntityCustom
    self.featuresUsed = {ISCFeature.GRID_ENTITY_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomRemove"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityCustomRemove = __TS__Class()
local PostGridEntityCustomRemove = ____exports.PostGridEntityCustomRemove
PostGridEntityCustomRemove.name = "PostGridEntityCustomRemove"
__TS__ClassExtends(PostGridEntityCustomRemove, CustomCallback)
function PostGridEntityCustomRemove.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = function(____, fireArgs, optionalArgs)
        local _gridIndex, gridEntityTypeCustom = table.unpack(fireArgs)
        local callbackGridEntityTypeCustom = table.unpack(optionalArgs)
        return callbackGridEntityTypeCustom == nil or callbackGridEntityTypeCustom == gridEntityTypeCustom
    end
    self.featuresUsed = {ISCFeature.GRID_ENTITY_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomRender"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireGridEntityCustom = ____shouldFire.shouldFireGridEntityCustom
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityCustomRender = __TS__Class()
local PostGridEntityCustomRender = ____exports.PostGridEntityCustomRender
PostGridEntityCustomRender.name = "PostGridEntityCustomRender"
__TS__ClassExtends(PostGridEntityCustomRender, CustomCallback)
function PostGridEntityCustomRender.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireGridEntityCustom
    self.featuresUsed = {ISCFeature.GRID_ENTITY_RENDER_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomStateChanged"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireGridEntityCustom = ____shouldFire.shouldFireGridEntityCustom
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityCustomStateChanged = __TS__Class()
local PostGridEntityCustomStateChanged = ____exports.PostGridEntityCustomStateChanged
PostGridEntityCustomStateChanged.name = "PostGridEntityCustomStateChanged"
__TS__ClassExtends(PostGridEntityCustomStateChanged, CustomCallback)
function PostGridEntityCustomStateChanged.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireGridEntityCustom
    self.featuresUsed = {ISCFeature.GRID_ENTITY_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityCustomUpdate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireGridEntityCustom = ____shouldFire.shouldFireGridEntityCustom
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityCustomUpdate = __TS__Class()
local PostGridEntityCustomUpdate = ____exports.PostGridEntityCustomUpdate
PostGridEntityCustomUpdate.name = "PostGridEntityCustomUpdate"
__TS__ClassExtends(PostGridEntityCustomUpdate, CustomCallback)
function PostGridEntityCustomUpdate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireGridEntityCustom
    self.featuresUsed = {ISCFeature.GRID_ENTITY_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityInit"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireGridEntity = ____shouldFire.shouldFireGridEntity
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityInit = __TS__Class()
local PostGridEntityInit = ____exports.PostGridEntityInit
PostGridEntityInit.name = "PostGridEntityInit"
__TS__ClassExtends(PostGridEntityInit, CustomCallback)
function PostGridEntityInit.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireGridEntity
    self.featuresUsed = {ISCFeature.GRID_ENTITY_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityRemove"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityRemove = __TS__Class()
local PostGridEntityRemove = ____exports.PostGridEntityRemove
PostGridEntityRemove.name = "PostGridEntityRemove"
__TS__ClassExtends(PostGridEntityRemove, CustomCallback)
function PostGridEntityRemove.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = function(____, fireArgs, optionalArgs)
        local _gridIndex, gridEntityType, variant = table.unpack(fireArgs)
        local callbackGridEntityType, callbackVariant = table.unpack(optionalArgs)
        return (callbackGridEntityType == nil or callbackGridEntityType == gridEntityType) and (callbackVariant == nil or callbackVariant == variant)
    end
    self.featuresUsed = {ISCFeature.GRID_ENTITY_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityRender"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireGridEntity = ____shouldFire.shouldFireGridEntity
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityRender = __TS__Class()
local PostGridEntityRender = ____exports.PostGridEntityRender
PostGridEntityRender.name = "PostGridEntityRender"
__TS__ClassExtends(PostGridEntityRender, CustomCallback)
function PostGridEntityRender.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireGridEntity
    self.featuresUsed = {ISCFeature.GRID_ENTITY_RENDER_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityStateChanged"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireGridEntity = ____shouldFire.shouldFireGridEntity
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityStateChanged = __TS__Class()
local PostGridEntityStateChanged = ____exports.PostGridEntityStateChanged
PostGridEntityStateChanged.name = "PostGridEntityStateChanged"
__TS__ClassExtends(PostGridEntityStateChanged, CustomCallback)
function PostGridEntityStateChanged.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireGridEntity
    self.featuresUsed = {ISCFeature.GRID_ENTITY_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostGridEntityUpdate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireGridEntity = ____shouldFire.shouldFireGridEntity
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostGridEntityUpdate = __TS__Class()
local PostGridEntityUpdate = ____exports.PostGridEntityUpdate
PostGridEntityUpdate.name = "PostGridEntityUpdate"
__TS__ClassExtends(PostGridEntityUpdate, CustomCallback)
function PostGridEntityUpdate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireGridEntity
    self.featuresUsed = {ISCFeature.GRID_ENTITY_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostHolyMantleRemoved"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer
local mapSetPlayer = ____playerDataStructures.mapSetPlayer
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostHolyMantleRemoved = __TS__Class()
local PostHolyMantleRemoved = ____exports.PostHolyMantleRemoved
PostHolyMantleRemoved.name = "PostHolyMantleRemoved"
__TS__ClassExtends(PostHolyMantleRemoved, CustomCallback)
function PostHolyMantleRemoved.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {playersHolyMantleMap = __TS__New(DefaultMap, 0)}}
    self.shouldFire = shouldFirePlayer
    self.postPEffectUpdateReordered = function(____, player)
        local effects = player:GetEffects()
        local newNumHolyMantles = effects:GetCollectibleEffectNum(CollectibleType.HOLY_MANTLE)
        local oldNumHolyMantles = defaultMapGetPlayer(nil, self.v.run.playersHolyMantleMap, player)
        mapSetPlayer(nil, self.v.run.playersHolyMantleMap, player, newNumHolyMantles)
        if newNumHolyMantles < oldNumHolyMantles then
            self:fire(player, oldNumHolyMantles, newNumHolyMantles)
        end
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectUpdateReordered}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom"] = function(...) 
local ____exports = {}
--- - The Isaac API offers a lot of callbacks, but a lot of times there isn't one for the specific
--   thing that you are looking to do. So, `isaacscript-common` adds a bunch of new callbacks that
--   you can use.
-- - The extra callbacks are efficient such that no code is executed until there is one or more
--   subscriptions.
-- - You must upgrade your mod with the `upgradeMod` helper function before using a custom callback.
____exports.ModCallbackCustom = {}
____exports.ModCallbackCustom.ENTITY_TAKE_DMG_FILTER = 0
____exports.ModCallbackCustom[____exports.ModCallbackCustom.ENTITY_TAKE_DMG_FILTER] = "ENTITY_TAKE_DMG_FILTER"
____exports.ModCallbackCustom.POST_AMBUSH_FINISHED = 1
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_AMBUSH_FINISHED] = "POST_AMBUSH_FINISHED"
____exports.ModCallbackCustom.POST_AMBUSH_STARTED = 2
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_AMBUSH_STARTED] = "POST_AMBUSH_STARTED"
____exports.ModCallbackCustom.POST_BOMB_EXPLODED = 3
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_BOMB_EXPLODED] = "POST_BOMB_EXPLODED"
____exports.ModCallbackCustom.POST_BOMB_INIT_LATE = 4
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_BOMB_INIT_LATE] = "POST_BOMB_INIT_LATE"
____exports.ModCallbackCustom.POST_BONE_SWING = 5
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_BONE_SWING] = "POST_BONE_SWING"
____exports.ModCallbackCustom.POST_COLLECTIBLE_EMPTY = 6
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_COLLECTIBLE_EMPTY] = "POST_COLLECTIBLE_EMPTY"
____exports.ModCallbackCustom.POST_COLLECTIBLE_INIT_FIRST = 7
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_COLLECTIBLE_INIT_FIRST] = "POST_COLLECTIBLE_INIT_FIRST"
____exports.ModCallbackCustom.POST_CURSED_TELEPORT = 8
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_CURSED_TELEPORT] = "POST_CURSED_TELEPORT"
____exports.ModCallbackCustom.POST_CUSTOM_REVIVE = 9
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_CUSTOM_REVIVE] = "POST_CUSTOM_REVIVE"
____exports.ModCallbackCustom.POST_DICE_ROOM_ACTIVATED = 10
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_DICE_ROOM_ACTIVATED] = "POST_DICE_ROOM_ACTIVATED"
____exports.ModCallbackCustom.POST_DOOR_RENDER = 11
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_DOOR_RENDER] = "POST_DOOR_RENDER"
____exports.ModCallbackCustom.POST_DOOR_UPDATE = 12
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_DOOR_UPDATE] = "POST_DOOR_UPDATE"
____exports.ModCallbackCustom.POST_EFFECT_INIT_LATE = 13
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_EFFECT_INIT_LATE] = "POST_EFFECT_INIT_LATE"
____exports.ModCallbackCustom.POST_EFFECT_STATE_CHANGED = 14
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_EFFECT_STATE_CHANGED] = "POST_EFFECT_STATE_CHANGED"
____exports.ModCallbackCustom.POST_ESAU_JR = 15
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ESAU_JR] = "POST_ESAU_JR"
____exports.ModCallbackCustom.POST_FAMILIAR_INIT_LATE = 16
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FAMILIAR_INIT_LATE] = "POST_FAMILIAR_INIT_LATE"
____exports.ModCallbackCustom.POST_FAMILIAR_STATE_CHANGED = 17
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FAMILIAR_STATE_CHANGED] = "POST_FAMILIAR_STATE_CHANGED"
____exports.ModCallbackCustom.POST_FIRST_ESAU_JR = 18
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FIRST_ESAU_JR] = "POST_FIRST_ESAU_JR"
____exports.ModCallbackCustom.POST_FIRST_FLIP = 19
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FIRST_FLIP] = "POST_FIRST_FLIP"
____exports.ModCallbackCustom.POST_FLIP = 20
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FLIP] = "POST_FLIP"
____exports.ModCallbackCustom.POST_GAME_STARTED_REORDERED = 21
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GAME_STARTED_REORDERED] = "POST_GAME_STARTED_REORDERED"
____exports.ModCallbackCustom.POST_GAME_STARTED_REORDERED_LAST = 22
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GAME_STARTED_REORDERED_LAST] = "POST_GAME_STARTED_REORDERED_LAST"
____exports.ModCallbackCustom.POST_GREED_MODE_WAVE = 23
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GREED_MODE_WAVE] = "POST_GREED_MODE_WAVE"
____exports.ModCallbackCustom.POST_GRID_ENTITY_BROKEN = 24
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_BROKEN] = "POST_GRID_ENTITY_BROKEN"
____exports.ModCallbackCustom.POST_GRID_ENTITY_COLLISION = 25
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_COLLISION] = "POST_GRID_ENTITY_COLLISION"
____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN = 26
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN] = "POST_GRID_ENTITY_CUSTOM_BROKEN"
____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION = 27
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION] = "POST_GRID_ENTITY_CUSTOM_COLLISION"
____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT = 28
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT] = "POST_GRID_ENTITY_CUSTOM_INIT"
____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE = 29
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE] = "POST_GRID_ENTITY_CUSTOM_REMOVE"
____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER = 30
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER] = "POST_GRID_ENTITY_CUSTOM_RENDER"
____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED = 31
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED] = "POST_GRID_ENTITY_CUSTOM_STATE_CHANGED"
____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE = 32
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE] = "POST_GRID_ENTITY_CUSTOM_UPDATE"
____exports.ModCallbackCustom.POST_GRID_ENTITY_INIT = 33
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_INIT] = "POST_GRID_ENTITY_INIT"
____exports.ModCallbackCustom.POST_GRID_ENTITY_REMOVE = 34
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_REMOVE] = "POST_GRID_ENTITY_REMOVE"
____exports.ModCallbackCustom.POST_GRID_ENTITY_RENDER = 35
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_RENDER] = "POST_GRID_ENTITY_RENDER"
____exports.ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED = 36
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED] = "POST_GRID_ENTITY_STATE_CHANGED"
____exports.ModCallbackCustom.POST_GRID_ENTITY_UPDATE = 37
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_UPDATE] = "POST_GRID_ENTITY_UPDATE"
____exports.ModCallbackCustom.POST_HOLY_MANTLE_REMOVED = 38
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_HOLY_MANTLE_REMOVED] = "POST_HOLY_MANTLE_REMOVED"
____exports.ModCallbackCustom.POST_ITEM_DISCHARGE = 39
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ITEM_DISCHARGE] = "POST_ITEM_DISCHARGE"
____exports.ModCallbackCustom.POST_ITEM_PICKUP = 40
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ITEM_PICKUP] = "POST_ITEM_PICKUP"
____exports.ModCallbackCustom.POST_KNIFE_INIT_LATE = 41
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_KNIFE_INIT_LATE] = "POST_KNIFE_INIT_LATE"
____exports.ModCallbackCustom.POST_LASER_INIT_LATE = 42
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_LASER_INIT_LATE] = "POST_LASER_INIT_LATE"
____exports.ModCallbackCustom.POST_NEW_LEVEL_REORDERED = 43
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NEW_LEVEL_REORDERED] = "POST_NEW_LEVEL_REORDERED"
____exports.ModCallbackCustom.POST_NEW_ROOM_EARLY = 44
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NEW_ROOM_EARLY] = "POST_NEW_ROOM_EARLY"
____exports.ModCallbackCustom.POST_NEW_ROOM_REORDERED = 45
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NEW_ROOM_REORDERED] = "POST_NEW_ROOM_REORDERED"
____exports.ModCallbackCustom.POST_NPC_DEATH_FILTER = 46
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_DEATH_FILTER] = "POST_NPC_DEATH_FILTER"
____exports.ModCallbackCustom.POST_NPC_INIT_FILTER = 47
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_INIT_FILTER] = "POST_NPC_INIT_FILTER"
____exports.ModCallbackCustom.POST_NPC_INIT_LATE = 48
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_INIT_LATE] = "POST_NPC_INIT_LATE"
____exports.ModCallbackCustom.POST_NPC_RENDER_FILTER = 49
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_RENDER_FILTER] = "POST_NPC_RENDER_FILTER"
____exports.ModCallbackCustom.POST_NPC_STATE_CHANGED = 50
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_STATE_CHANGED] = "POST_NPC_STATE_CHANGED"
____exports.ModCallbackCustom.POST_NPC_UPDATE_FILTER = 51
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_UPDATE_FILTER] = "POST_NPC_UPDATE_FILTER"
____exports.ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED = 52
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED] = "POST_PEFFECT_UPDATE_REORDERED"
____exports.ModCallbackCustom.POST_PICKUP_COLLECT = 53
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_COLLECT] = "POST_PICKUP_COLLECT"
____exports.ModCallbackCustom.POST_PICKUP_INIT_FIRST = 54
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_INIT_FIRST] = "POST_PICKUP_INIT_FIRST"
____exports.ModCallbackCustom.POST_PICKUP_INIT_LATE = 55
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_INIT_LATE] = "POST_PICKUP_INIT_LATE"
____exports.ModCallbackCustom.POST_PICKUP_STATE_CHANGED = 56
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_STATE_CHANGED] = "POST_PICKUP_STATE_CHANGED"
____exports.ModCallbackCustom.POST_PIT_RENDER = 57
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PIT_RENDER] = "POST_PIT_RENDER"
____exports.ModCallbackCustom.POST_PIT_UPDATE = 58
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PIT_UPDATE] = "POST_PIT_UPDATE"
____exports.ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH = 59
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH] = "POST_PLAYER_CHANGE_HEALTH"
____exports.ModCallbackCustom.POST_PLAYER_CHANGE_STAT = 60
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_CHANGE_STAT] = "POST_PLAYER_CHANGE_STAT"
____exports.ModCallbackCustom.POST_PLAYER_CHANGE_TYPE = 61
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_CHANGE_TYPE] = "POST_PLAYER_CHANGE_TYPE"
____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED = 62
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED] = "POST_PLAYER_COLLECTIBLE_ADDED"
____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED = 63
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED] = "POST_PLAYER_COLLECTIBLE_REMOVED"
____exports.ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE = 64
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE] = "POST_PLAYER_FATAL_DAMAGE"
____exports.ModCallbackCustom.POST_PLAYER_INIT_FIRST = 65
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_INIT_FIRST] = "POST_PLAYER_INIT_FIRST"
____exports.ModCallbackCustom.POST_PLAYER_INIT_LATE = 66
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_INIT_LATE] = "POST_PLAYER_INIT_LATE"
____exports.ModCallbackCustom.POST_PLAYER_RENDER_REORDERED = 67
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_RENDER_REORDERED] = "POST_PLAYER_RENDER_REORDERED"
____exports.ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED = 68
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED] = "POST_PLAYER_UPDATE_REORDERED"
____exports.ModCallbackCustom.POST_POOP_RENDER = 69
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_POOP_RENDER] = "POST_POOP_RENDER"
____exports.ModCallbackCustom.POST_POOP_UPDATE = 70
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_POOP_UPDATE] = "POST_POOP_UPDATE"
____exports.ModCallbackCustom.POST_PRESSURE_PLATE_RENDER = 71
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PRESSURE_PLATE_RENDER] = "POST_PRESSURE_PLATE_RENDER"
____exports.ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE = 72
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE] = "POST_PRESSURE_PLATE_UPDATE"
____exports.ModCallbackCustom.POST_PROJECTILE_INIT_LATE = 73
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PROJECTILE_INIT_LATE] = "POST_PROJECTILE_INIT_LATE"
____exports.ModCallbackCustom.POST_PURCHASE = 74
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PURCHASE] = "POST_PURCHASE"
____exports.ModCallbackCustom.POST_ROCK_RENDER = 75
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROCK_RENDER] = "POST_ROCK_RENDER"
____exports.ModCallbackCustom.POST_ROCK_UPDATE = 76
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROCK_UPDATE] = "POST_ROCK_UPDATE"
____exports.ModCallbackCustom.POST_ROOM_CLEAR_CHANGED = 77
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROOM_CLEAR_CHANGED] = "POST_ROOM_CLEAR_CHANGED"
____exports.ModCallbackCustom.POST_SACRIFICE = 78
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SACRIFICE] = "POST_SACRIFICE"
____exports.ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED = 79
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED] = "POST_SLOT_ANIMATION_CHANGED"
____exports.ModCallbackCustom.POST_SLOT_COLLISION = 80
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_COLLISION] = "POST_SLOT_COLLISION"
____exports.ModCallbackCustom.POST_SLOT_DESTROYED = 81
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_DESTROYED] = "POST_SLOT_DESTROYED"
____exports.ModCallbackCustom.POST_SLOT_INIT = 82
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_INIT] = "POST_SLOT_INIT"
____exports.ModCallbackCustom.POST_SLOT_RENDER = 83
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_RENDER] = "POST_SLOT_RENDER"
____exports.ModCallbackCustom.POST_SLOT_UPDATE = 84
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_UPDATE] = "POST_SLOT_UPDATE"
____exports.ModCallbackCustom.POST_SPIKES_RENDER = 85
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SPIKES_RENDER] = "POST_SPIKES_RENDER"
____exports.ModCallbackCustom.POST_SPIKES_UPDATE = 86
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SPIKES_UPDATE] = "POST_SPIKES_UPDATE"
____exports.ModCallbackCustom.POST_TEAR_INIT_LATE = 87
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_INIT_LATE] = "POST_TEAR_INIT_LATE"
____exports.ModCallbackCustom.POST_TEAR_INIT_VERY_LATE = 88
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_INIT_VERY_LATE] = "POST_TEAR_INIT_VERY_LATE"
____exports.ModCallbackCustom.POST_TNT_RENDER = 89
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TNT_RENDER] = "POST_TNT_RENDER"
____exports.ModCallbackCustom.POST_TNT_UPDATE = 90
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TNT_UPDATE] = "POST_TNT_UPDATE"
____exports.ModCallbackCustom.POST_TRANSFORMATION = 91
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TRANSFORMATION] = "POST_TRANSFORMATION"
____exports.ModCallbackCustom.POST_TRINKET_BREAK = 92
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TRINKET_BREAK] = "POST_TRINKET_BREAK"
____exports.ModCallbackCustom.PRE_BERSERK_DEATH = 93
____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_BERSERK_DEATH] = "PRE_BERSERK_DEATH"
____exports.ModCallbackCustom.PRE_CUSTOM_REVIVE = 94
____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_CUSTOM_REVIVE] = "PRE_CUSTOM_REVIVE"
____exports.ModCallbackCustom.PRE_GET_PEDESTAL = 95
____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_GET_PEDESTAL] = "PRE_GET_PEDESTAL"
____exports.ModCallbackCustom.PRE_ITEM_PICKUP = 96
____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_ITEM_PICKUP] = "PRE_ITEM_PICKUP"
____exports.ModCallbackCustom.PRE_NEW_LEVEL = 97
____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_NEW_LEVEL] = "PRE_NEW_LEVEL"
____exports.ModCallbackCustom.PRE_NPC_COLLISION_FILTER = 98
____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_NPC_COLLISION_FILTER] = "PRE_NPC_COLLISION_FILTER"
____exports.ModCallbackCustom.PRE_NPC_UPDATE_FILTER = 99
____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_NPC_UPDATE_FILTER] = "PRE_NPC_UPDATE_FILTER"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostItemDischarge"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local SuckerVariant = ____isaac_2Dtypescript_2Ddefinitions.SuckerVariant
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____charge = require("lua_modules.isaacscript-common.dist.src.functions.charge")
local getTotalCharge = ____charge.getTotalCharge
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer
local mapGetPlayer = ____playerDataStructures.mapGetPlayer
local mapSetPlayer = ____playerDataStructures.mapSetPlayer
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostItemDischarge = __TS__Class()
local PostItemDischarge = ____exports.PostItemDischarge
PostItemDischarge.name = "PostItemDischarge"
__TS__ClassExtends(PostItemDischarge, CustomCallback)
function PostItemDischarge.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {
        run = {
            playersActiveItemMap = __TS__New(
                DefaultMap,
                function() return __TS__New(Map) end
            ),
            playersActiveChargeMap = __TS__New(
                DefaultMap,
                function() return __TS__New(Map) end
            )
        },
        room = {playersBulbLastCollisionFrame = __TS__New(Map)}
    }
    self.shouldFire = function(____, fireArgs, optionalArgs)
        local _player, collectibleType = table.unpack(fireArgs)
        local callbackCollectibleType = table.unpack(optionalArgs)
        return callbackCollectibleType == nil or callbackCollectibleType == collectibleType
    end
    self.preNPCCollisionSucker = function(____, npc, collider)
        if npc.Variant == asNumber(nil, SuckerVariant.BULB) then
            return self:preNPCCollisionBulb(npc, collider)
        end
        return nil
    end
    self.postPEffectUpdateReordered = function(____, player)
        local activeItemMap = defaultMapGetPlayer(nil, self.v.run.playersActiveItemMap, player)
        local chargeMap = defaultMapGetPlayer(nil, self.v.run.playersActiveChargeMap, player)
        for ____, activeSlot in ipairs(getEnumValues(nil, ActiveSlot)) do
            do
                local currentActiveItem = player:GetActiveItem()
                local previousActiveItem = activeItemMap:get(activeSlot)
                if previousActiveItem == nil then
                    previousActiveItem = currentActiveItem
                end
                activeItemMap:set(activeSlot, currentActiveItem)
                if currentActiveItem ~= previousActiveItem then
                    goto __continue9
                end
                local currentCharge = getTotalCharge(nil, player, activeSlot)
                local previousCharge = chargeMap:get(activeSlot)
                if previousCharge == nil then
                    previousCharge = currentCharge
                end
                chargeMap:set(activeSlot, currentCharge)
                if self:playerRecentlyCollidedWithBulb(player) then
                    goto __continue9
                end
                if currentCharge < previousCharge then
                    local collectibleType = player:GetActiveItem(activeSlot)
                    self:fire(player, collectibleType, activeSlot)
                end
            end
            ::__continue9::
        end
    end
    self.callbacksUsed = {{ModCallback.PRE_NPC_COLLISION, {self.preNPCCollisionSucker, EntityType.SUCKER}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectUpdateReordered}}}
end
function PostItemDischarge.prototype.preNPCCollisionBulb(self, _npc, collider)
    self:checkPlayerCollidedWithBulb(collider)
    return nil
end
function PostItemDischarge.prototype.checkPlayerCollidedWithBulb(self, collider)
    local player = collider:ToPlayer()
    if player == nil then
        return
    end
    local gameFrameCount = game:GetFrameCount()
    mapSetPlayer(nil, self.v.room.playersBulbLastCollisionFrame, player, gameFrameCount)
end
function PostItemDischarge.prototype.playerRecentlyCollidedWithBulb(self, player)
    local gameFrameCount = game:GetFrameCount()
    local bulbLastCollisionFrame = mapGetPlayer(nil, self.v.room.playersBulbLastCollisionFrame, player)
    local collidedOnThisFrame = gameFrameCount == bulbLastCollisionFrame
    local collidedOnLastFrame = gameFrameCount - 1 == bulbLastCollisionFrame
    return collidedOnThisFrame or collidedOnLastFrame
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.charge"] = function(...) 
local ____exports = {}
local getChargesToAddWithAAAModifier, shouldPlayFullRechargeSound
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ItemConfigChargeType = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigChargeType
local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local sfxManager = ____cachedClasses.sfxManager
local ____collectibles = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
local getCollectibleChargeType = ____collectibles.getCollectibleChargeType
local getCollectibleMaxCharges = ____collectibles.getCollectibleMaxCharges
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getPlayers = ____playerIndex.getPlayers
local ____roomShape = require("lua_modules.isaacscript-common.dist.src.functions.roomShape")
local getRoomShapeCharges = ____roomShape.getRoomShapeCharges
--- Helper function to add a charge to the player's active item. Will flash the HUD and play the
-- appropriate sound effect, depending on whether the charge is partially full or completely full.
-- 
-- If the player's active item is already fully charged, then this function will return 0 and not
-- flash the HUD or play a sound effect.
-- 
-- This function will take the following things into account:
-- - The Battery
-- - AAA Battery
-- 
-- @param player The player to grant the charges to.
-- @param activeSlot Optional. The slot to grant the charges to. Default is `ActiveSlot.PRIMARY`.
-- @param numCharges Optional. The amount of charges to grant. Default is 1.
-- @param playSoundEffect Optional. Whether to play a charge-related sound effect. Default is true.
-- @returns The amount of charges that were actually granted. For example, if the active item was
-- only one away from a full charge, but the `numCharges` provided to this function was 2,
-- then this function would return 1.
function ____exports.addCharge(self, player, activeSlot, numCharges, playSoundEffect)
    if activeSlot == nil then
        activeSlot = ActiveSlot.PRIMARY
    end
    if numCharges == nil then
        numCharges = 1
    end
    if playSoundEffect == nil then
        playSoundEffect = true
    end
    local hud = game:GetHUD()
    local chargesAwayFromMax = ____exports.getChargesAwayFromMax(nil, player, activeSlot)
    local chargesToAdd = numCharges > chargesAwayFromMax and chargesAwayFromMax or numCharges
    local modifiedChargesToAdd = getChargesToAddWithAAAModifier(nil, player, activeSlot, chargesToAdd)
    local totalCharge = ____exports.getTotalCharge(nil, player, activeSlot)
    local newCharge = totalCharge + modifiedChargesToAdd
    if newCharge == totalCharge then
        return 0
    end
    player:SetActiveCharge(newCharge, activeSlot)
    hud:FlashChargeBar(player, activeSlot)
    if playSoundEffect then
        ____exports.playChargeSoundEffect(nil, player, activeSlot)
    end
    return modifiedChargesToAdd
end
--- Helper function to add a charge to one of a player's active items, emulating what happens when a
-- room is cleared.
-- 
-- This function will take the following things into account:
-- - L rooms and 2x2 rooms granting a double charge
-- - The Battery
-- - AAA Battery
-- - Not charging active items with `chargetype="special"`
-- 
-- @param player The player to grant the charges to.
-- @param activeSlot Optional. The active item slot to grant the charges to. Default is
-- `ActiveSlot.PRIMARY`.
-- @param bigRoomDoubleCharge Optional. If set to false, it will treat the current room as a 1x1
-- room for the purposes of calculating how much charge to grant. Default
-- is true.
-- @param playSoundEffect Optional. Whether to play a charge-related sound effect. Default is true.
function ____exports.addRoomClearChargeToSlot(self, player, activeSlot, bigRoomDoubleCharge, playSoundEffect)
    if activeSlot == nil then
        activeSlot = ActiveSlot.PRIMARY
    end
    if bigRoomDoubleCharge == nil then
        bigRoomDoubleCharge = true
    end
    if playSoundEffect == nil then
        playSoundEffect = true
    end
    local activeItem = player:GetActiveItem(activeSlot)
    if activeItem == CollectibleType.NULL then
        return
    end
    local chargeType = getCollectibleChargeType(nil, activeItem)
    if chargeType == ItemConfigChargeType.SPECIAL then
        return
    end
    local room = game:GetRoom()
    local roomShape = room:GetRoomShape()
    local numCharges = bigRoomDoubleCharge and getRoomShapeCharges(nil, roomShape) or 1
    if chargeType == ItemConfigChargeType.TIMED then
        numCharges = getCollectibleMaxCharges(nil, activeItem)
    end
    ____exports.addCharge(
        nil,
        player,
        activeSlot,
        numCharges,
        playSoundEffect
    )
end
function getChargesToAddWithAAAModifier(self, player, activeSlot, chargesToAdd)
    local hasAAABattery = player:HasTrinket(TrinketType.AAA_BATTERY)
    if not hasAAABattery then
        return chargesToAdd
    end
    local chargesAwayFromMax = ____exports.getChargesAwayFromMax(nil, player, activeSlot)
    local AAABatteryShouldApply = chargesToAdd == chargesAwayFromMax - 1
    return AAABatteryShouldApply and chargesToAdd + 1 or chargesToAdd
end
--- Helper function to get the amount of charges away from the maximum charge that a particular
-- player is.
-- 
-- This function accounts for The Battery. For example, if the player has 2/6 charges on a D6, this
-- function will return 10 (because there are 4 charges remaining on the base charge and 6 charges
-- remaining on The Battery charge).
-- 
-- @param player The player to get the charges from.
-- @param activeSlot Optional. The slot to get the charges from. Default is `ActiveSlot.PRIMARY`.
function ____exports.getChargesAwayFromMax(self, player, activeSlot)
    if activeSlot == nil then
        activeSlot = ActiveSlot.PRIMARY
    end
    local totalCharge = ____exports.getTotalCharge(nil, player, activeSlot)
    local activeItem = player:GetActiveItem(activeSlot)
    local hasBattery = player:HasCollectible(CollectibleType.BATTERY)
    local maxCharges = getCollectibleMaxCharges(nil, activeItem)
    local effectiveMaxCharges = hasBattery and maxCharges * 2 or maxCharges
    return effectiveMaxCharges - totalCharge
end
--- Helper function to get the combined normal charge and the battery charge for the player's active
-- item. This is useful because you have to add these two values together when setting the active
-- charge.
-- 
-- @param player The player to get the charges from.
-- @param activeSlot Optional. The slot to get the charges from. Default is `ActiveSlot.PRIMARY`.
function ____exports.getTotalCharge(self, player, activeSlot)
    if activeSlot == nil then
        activeSlot = ActiveSlot.PRIMARY
    end
    local activeCharge = player:GetActiveCharge(activeSlot)
    local batteryCharge = player:GetBatteryCharge(activeSlot)
    return activeCharge + batteryCharge
end
--- Helper function to play the appropriate sound effect for a player after getting one or more
-- charges on their active item. (There is a different sound depending on whether the item is fully
-- charged or not.)
-- 
-- @param player The player to play the sound effect for.
-- @param activeSlot Optional. The slot that was just charged. Default is `ActiveSlot.PRIMARY`.
function ____exports.playChargeSoundEffect(self, player, activeSlot)
    if activeSlot == nil then
        activeSlot = ActiveSlot.PRIMARY
    end
    for ____, soundEffect in ipairs({SoundEffect.BATTERY_CHARGE, SoundEffect.BEEP}) do
        sfxManager:Stop(soundEffect)
    end
    local chargeSoundEffect = shouldPlayFullRechargeSound(nil, player, activeSlot) and SoundEffect.BATTERY_CHARGE or SoundEffect.BEEP
    sfxManager:Play(chargeSoundEffect)
end
function shouldPlayFullRechargeSound(self, player, activeSlot)
    local activeItem = player:GetActiveItem(activeSlot)
    local activeCharge = player:GetActiveCharge(activeSlot)
    local batteryCharge = player:GetBatteryCharge(activeSlot)
    local hasBattery = player:HasCollectible(CollectibleType.BATTERY)
    local maxCharges = getCollectibleMaxCharges(nil, activeItem)
    if not hasBattery then
        return activeCharge == maxCharges
    end
    return batteryCharge == maxCharges or activeCharge == maxCharges and batteryCharge == 0
end
--- Helper function to add a charge to a player's active item(s), emulating what happens when a room
-- is cleared.
-- 
-- This function will take the following things into account:
-- - 2x2 rooms and L rooms granting a double charge
-- - The Battery
-- - AAA Battery
-- - Not charging active items with `chargetype="special"`
-- 
-- @param player The player to grant the charges to.
-- @param bigRoomDoubleCharge Optional. If set to false, it will treat the current room as a 1x1
-- room for the purposes of calculating how much charge to grant. Default
-- is true.
-- @param playSoundEffect Optional. Whether to play a charge-related sound effect. Default is true.
function ____exports.addRoomClearCharge(self, player, bigRoomDoubleCharge, playSoundEffect)
    if bigRoomDoubleCharge == nil then
        bigRoomDoubleCharge = true
    end
    if playSoundEffect == nil then
        playSoundEffect = true
    end
    for ____, activeSlot in ipairs({ActiveSlot.PRIMARY, ActiveSlot.SECONDARY, ActiveSlot.POCKET}) do
        ____exports.addRoomClearChargeToSlot(
            nil,
            player,
            activeSlot,
            bigRoomDoubleCharge,
            playSoundEffect
        )
    end
end
--- Helper function to add a charge to every player's active item, emulating what happens when a room
-- is cleared.
-- 
-- This function will take the following things into account:
-- - L rooms and 2x2 rooms granting a double charge
-- - The Battery
-- - AAA Battery
-- 
-- @param bigRoomDoubleCharge Optional. If set to false, it will treat the current room as a 1x1
-- room for the purposes of calculating how much charge to grant. Default
-- is true.
function ____exports.addRoomClearCharges(self, bigRoomDoubleCharge)
    if bigRoomDoubleCharge == nil then
        bigRoomDoubleCharge = true
    end
    for ____, player in ipairs(getPlayers(nil)) do
        ____exports.addRoomClearCharge(nil, player, bigRoomDoubleCharge)
    end
end
--- Helper function to check if a player's active item is "double charged", meaning that it has both
-- a full normal charge and a full charge from The Battery.
-- 
-- @param player The player to check.
-- @param activeSlot Optional. The slot to check. Default is `ActiveSlot.PRIMARY`.
function ____exports.isActiveSlotDoubleCharged(self, player, activeSlot)
    if activeSlot == nil then
        activeSlot = ActiveSlot.PRIMARY
    end
    local collectibleType = player:GetActiveItem(activeSlot)
    local batteryCharge = player:GetBatteryCharge(activeSlot)
    local maxCharges = getCollectibleMaxCharges(nil, collectibleType)
    return batteryCharge >= maxCharges
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.roomShape"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ____roomShapeBounds = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeBounds")
local ROOM_SHAPE_BOUNDS = ____roomShapeBounds.ROOM_SHAPE_BOUNDS
local ____roomShapeCorners = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeCorners")
local ROOM_SHAPE_CORNERS = ____roomShapeCorners.ROOM_SHAPE_CORNERS
local ____roomShapeLayoutSizes = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeLayoutSizes")
local ROOM_SHAPE_LAYOUT_SIZES = ____roomShapeLayoutSizes.ROOM_SHAPE_LAYOUT_SIZES
local ____roomShapeToBottomRightPosition = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeToBottomRightPosition")
local ROOM_SHAPE_TO_BOTTOM_RIGHT_POSITION = ____roomShapeToBottomRightPosition.ROOM_SHAPE_TO_BOTTOM_RIGHT_POSITION
local ____roomShapeToDoorSlotsToGridIndexDelta = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeToDoorSlotsToGridIndexDelta")
local ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA = ____roomShapeToDoorSlotsToGridIndexDelta.ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA
local ____roomShapeToGridWidth = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeToGridWidth")
local ROOM_SHAPE_TO_GRID_WIDTH = ____roomShapeToGridWidth.ROOM_SHAPE_TO_GRID_WIDTH
local ____roomShapeToTopLeftPosition = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeToTopLeftPosition")
local ROOM_SHAPE_TO_TOP_LEFT_POSITION = ____roomShapeToTopLeftPosition.ROOM_SHAPE_TO_TOP_LEFT_POSITION
local ____roomShapeVolumes = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeVolumes")
local ROOM_SHAPE_VOLUMES = ____roomShapeVolumes.ROOM_SHAPE_VOLUMES
local ____LRoomShapesSet = require("lua_modules.isaacscript-common.dist.src.sets.LRoomShapesSet")
local L_ROOM_SHAPES_SET = ____LRoomShapesSet.L_ROOM_SHAPES_SET
local ____narrowRoomShapesSet = require("lua_modules.isaacscript-common.dist.src.sets.narrowRoomShapesSet")
local NARROW_ROOM_SHAPES_SET = ____narrowRoomShapesSet.NARROW_ROOM_SHAPES_SET
--- Helper function to see if a given room shape will grant a single charge or a double charge to the
-- player's active item(s).
-- 
-- For example, `RoomShape.SHAPE_2x2` will return true.
function ____exports.isRoomShapeDoubleCharge(self, roomShape)
    return roomShape >= RoomShape.SHAPE_2x2
end
--- Helper function to get the grid index delta that a door out of the given room shape would lead
-- to. For example, if you went through the bottom door in a room of `RoomShape.SHAPE_1x2`, you
-- would end up in a room with a grid index that is +26 units from the `SafeGridIndex` of where you
-- started.
function ____exports.getGridIndexDelta(self, roomShape, doorSlot)
    local doorSlotToGridIndexMap = ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA[roomShape]
    return doorSlotToGridIndexMap:get(doorSlot)
end
--- Helper function to see if a given room shape will grant a single charge or a double charge to the
-- player's active item(s).
-- 
-- For example, `RoomShape.SHAPE_2x2` will return 2.
function ____exports.getRoomShapeBottomRightPosition(self, roomShape)
    return ROOM_SHAPE_TO_BOTTOM_RIGHT_POSITION[roomShape]
end
--- Helper function to get the grid position of the bottom-right tile of a given room shape.
-- 
-- "Vector(0, 0)" corresponds to the top left tile of a room, not including the walls. (The top-left
-- wall would be at "Vector(-1, -1)".)
function ____exports.getRoomShapeBounds(self, roomShape)
    return ROOM_SHAPE_BOUNDS[roomShape]
end
--- Helper function to get the number of charges that a given room shape will grant to a player upon
-- clearing it.
-- 
-- For example, `RoomShape.SHAPE_2x2` will return 2.
function ____exports.getRoomShapeCharges(self, roomShape)
    return ____exports.isRoomShapeDoubleCharge(nil, roomShape) and 2 or 1
end
--- Helper function to get the corners that exist in the given room shape.
-- 
-- Note that these corner locations are not accurate for the Mother Boss Room and the Home closet
-- rooms. (Those rooms have custom shapes.)
function ____exports.getRoomShapeCorners(self, roomShape)
    return ROOM_SHAPE_CORNERS[roomShape]
end
--- Helper function to get the dimensions of a room shape's layout. This is NOT the size of the
-- room's actual contents! For that, use the `getRoomShapeBounds` function.
-- 
-- For example, a horizontal narrow room has a layout size of equal to that of a 1x1 room.
function ____exports.getRoomShapeLayoutSize(self, roomShape)
    return ROOM_SHAPE_LAYOUT_SIZES[roomShape]
end
--- Helper function to get the grid position of the top-left tile of a given room shape.
-- 
-- "Vector(0, 0)" corresponds to the top left tile of a room, not including the walls. (The top-left
-- wall would be at "Vector(-1, -1)".)
function ____exports.getRoomShapeTopLeftPosition(self, roomShape)
    return ROOM_SHAPE_TO_TOP_LEFT_POSITION[roomShape]
end
--- Helper function to get the volume of a room shape, which is the amount of tiles that are inside
-- the room.
-- 
-- (This cannot be directly calculated from the bounds since L rooms are a special case.)
function ____exports.getRoomShapeVolume(self, roomShape)
    return ROOM_SHAPE_VOLUMES[roomShape]
end
function ____exports.getRoomShapeWidth(self, roomShape)
    return ROOM_SHAPE_TO_GRID_WIDTH[roomShape]
end
function ____exports.isLRoom(self, roomShape)
    return L_ROOM_SHAPES_SET:has(roomShape)
end
function ____exports.isNarrowRoom(self, roomShape)
    return NARROW_ROOM_SHAPES_SET:has(roomShape)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomShapeBounds"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ____roomShapeVolumes = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeVolumes")
local NARROW_CONTENTS_HEIGHT = ____roomShapeVolumes.NARROW_CONTENTS_HEIGHT
local NARROW_CONTENTS_WIDTH = ____roomShapeVolumes.NARROW_CONTENTS_WIDTH
local ONE_BY_ONE_CONTENTS_HEIGHT = ____roomShapeVolumes.ONE_BY_ONE_CONTENTS_HEIGHT
local ONE_BY_ONE_CONTENTS_WIDTH = ____roomShapeVolumes.ONE_BY_ONE_CONTENTS_WIDTH
local TWO_BY_TWO_BOUNDS = {ONE_BY_ONE_CONTENTS_WIDTH * 2, ONE_BY_ONE_CONTENTS_HEIGHT * 2}
--- The size of a room shape's contents. This does not include the tiles that the walls are on. L
-- rooms use the same bounds as a 2x2 room.
____exports.ROOM_SHAPE_BOUNDS = {
    [RoomShape.SHAPE_1x1] = {ONE_BY_ONE_CONTENTS_WIDTH, ONE_BY_ONE_CONTENTS_HEIGHT},
    [RoomShape.IH] = {ONE_BY_ONE_CONTENTS_WIDTH, NARROW_CONTENTS_HEIGHT},
    [RoomShape.IV] = {NARROW_CONTENTS_WIDTH, ONE_BY_ONE_CONTENTS_HEIGHT},
    [RoomShape.SHAPE_1x2] = {ONE_BY_ONE_CONTENTS_WIDTH, ONE_BY_ONE_CONTENTS_HEIGHT * 2},
    [RoomShape.IIV] = {NARROW_CONTENTS_WIDTH, ONE_BY_ONE_CONTENTS_HEIGHT * 2},
    [RoomShape.SHAPE_2x1] = {ONE_BY_ONE_CONTENTS_WIDTH * 2, ONE_BY_ONE_CONTENTS_HEIGHT},
    [RoomShape.IIH] = {ONE_BY_ONE_CONTENTS_WIDTH * 2, NARROW_CONTENTS_HEIGHT},
    [RoomShape.SHAPE_2x2] = TWO_BY_TWO_BOUNDS,
    [RoomShape.LTL] = TWO_BY_TWO_BOUNDS,
    [RoomShape.LTR] = TWO_BY_TWO_BOUNDS,
    [RoomShape.LBL] = TWO_BY_TWO_BOUNDS,
    [RoomShape.LBR] = TWO_BY_TWO_BOUNDS
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomShapeVolumes"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
____exports.ONE_BY_ONE_CONTENTS_WIDTH = 13
____exports.ONE_BY_ONE_CONTENTS_HEIGHT = 7
local ONE_BY_ONE_VOLUME = ____exports.ONE_BY_ONE_CONTENTS_HEIGHT * ____exports.ONE_BY_ONE_CONTENTS_WIDTH
____exports.NARROW_CONTENTS_WIDTH = 5
____exports.NARROW_CONTENTS_HEIGHT = 3
local NARROW_HORIZONTAL_VOLUME = ____exports.ONE_BY_ONE_CONTENTS_WIDTH * ____exports.NARROW_CONTENTS_HEIGHT
local NARROW_VERTICAL_VOLUME = ____exports.NARROW_CONTENTS_WIDTH * ____exports.ONE_BY_ONE_CONTENTS_HEIGHT
local ONE_BY_TWO_VOLUME = ONE_BY_ONE_VOLUME * 2
local L_ROOM_VOLUME = ONE_BY_ONE_VOLUME * 3
--- Volume is the amount of tiles that are inside the room shape.
-- 
-- (This cannot be directly calculated from the bounds since L rooms are a special case.)
____exports.ROOM_SHAPE_VOLUMES = {
    [RoomShape.SHAPE_1x1] = ONE_BY_ONE_VOLUME,
    [RoomShape.IH] = NARROW_HORIZONTAL_VOLUME,
    [RoomShape.IV] = NARROW_VERTICAL_VOLUME,
    [RoomShape.SHAPE_1x2] = ONE_BY_TWO_VOLUME,
    [RoomShape.IIV] = NARROW_VERTICAL_VOLUME * 2,
    [RoomShape.SHAPE_2x1] = ONE_BY_TWO_VOLUME,
    [RoomShape.IIH] = NARROW_HORIZONTAL_VOLUME * 2,
    [RoomShape.SHAPE_2x2] = ONE_BY_ONE_VOLUME * 4,
    [RoomShape.LTL] = L_ROOM_VOLUME,
    [RoomShape.LTR] = L_ROOM_VOLUME,
    [RoomShape.LBL] = L_ROOM_VOLUME,
    [RoomShape.LBR] = L_ROOM_VOLUME
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomShapeCorners"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ____CornerType = require("lua_modules.isaacscript-common.dist.src.enums.CornerType")
local CornerType = ____CornerType.CornerType
--- The locations of the corners for each room shape.
-- 
-- Note that these corner locations are not accurate for the Mother Boss Room and the Home closet
-- rooms. (Those rooms have custom shapes.)
____exports.ROOM_SHAPE_CORNERS = {
    [RoomShape.SHAPE_1x1] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 0,
            position = Vector(60, 140)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 14,
            position = Vector(580, 140)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 120,
            position = Vector(60, 420)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 134,
            position = Vector(580, 420)
        }
    },
    [RoomShape.IH] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 30,
            position = Vector(60, 220)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 44,
            position = Vector(580, 220)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 90,
            position = Vector(60, 340)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 104,
            position = Vector(580, 340)
        }
    },
    [RoomShape.IV] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 4,
            position = Vector(220, 140)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 10,
            position = Vector(420, 140)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 124,
            position = Vector(220, 420)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 130,
            position = Vector(420, 420)
        }
    },
    [RoomShape.SHAPE_1x2] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 0,
            position = Vector(60, 140)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 14,
            position = Vector(580, 140)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 225,
            position = Vector(60, 700)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 239,
            position = Vector(580, 700)
        }
    },
    [RoomShape.IIV] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 4,
            position = Vector(220, 140)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 10,
            position = Vector(420, 140)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 229,
            position = Vector(220, 700)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 235,
            position = Vector(420, 700)
        }
    },
    [RoomShape.SHAPE_2x1] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 0,
            position = Vector(60, 140)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 27,
            position = Vector(1100, 140)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 224,
            position = Vector(60, 420)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 251,
            position = Vector(1100, 420)
        }
    },
    [RoomShape.IIH] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 56,
            position = Vector(60, 220)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 83,
            position = Vector(1100, 220)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 168,
            position = Vector(60, 340)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 195,
            position = Vector(1100, 340)
        }
    },
    [RoomShape.SHAPE_2x2] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 0,
            position = Vector(60, 140)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 27,
            position = Vector(1100, 140)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 420,
            position = Vector(60, 700)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 447,
            position = Vector(1100, 700)
        }
    },
    [RoomShape.LTL] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 13,
            position = Vector(580, 140)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 27,
            position = Vector(1100, 140)
        },
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 196,
            position = Vector(60, 420)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 209,
            position = Vector(580, 420)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 420,
            position = Vector(60, 700)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 447,
            position = Vector(1100, 700)
        }
    },
    [RoomShape.LTR] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 0,
            position = Vector(60, 140)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 14,
            position = Vector(580, 140)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 210,
            position = Vector(580, 420)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 223,
            position = Vector(1100, 420)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 420,
            position = Vector(60, 700)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 447,
            position = Vector(1100, 700)
        }
    },
    [RoomShape.LBL] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 0,
            position = Vector(60, 140)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 27,
            position = Vector(1100, 140)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 224,
            position = Vector(580, 140)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 237,
            position = Vector(580, 420)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 433,
            position = Vector(580, 700)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 447,
            position = Vector(1100, 700)
        }
    },
    [RoomShape.LBR] = {
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 0,
            position = Vector(60, 140)
        },
        {
            type = CornerType.TOP_RIGHT,
            gridIndex = 27,
            position = Vector(1100, 140)
        },
        {
            type = CornerType.TOP_LEFT,
            gridIndex = 238,
            position = Vector(580, 420)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 251,
            position = Vector(1100, 420)
        },
        {
            type = CornerType.BOTTOM_LEFT,
            gridIndex = 420,
            position = Vector(60, 700)
        },
        {
            type = CornerType.BOTTOM_RIGHT,
            gridIndex = 434,
            position = Vector(580, 700)
        }
    }
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.CornerType"] = function(...) 
local ____exports = {}
--- This is used by the `getRoomShapeCorners` helper function.
____exports.CornerType = {}
____exports.CornerType.TOP_LEFT = 0
____exports.CornerType[____exports.CornerType.TOP_LEFT] = "TOP_LEFT"
____exports.CornerType.TOP_RIGHT = 1
____exports.CornerType[____exports.CornerType.TOP_RIGHT] = "TOP_RIGHT"
____exports.CornerType.BOTTOM_LEFT = 2
____exports.CornerType[____exports.CornerType.BOTTOM_LEFT] = "BOTTOM_LEFT"
____exports.CornerType.BOTTOM_RIGHT = 3
____exports.CornerType[____exports.CornerType.BOTTOM_RIGHT] = "BOTTOM_RIGHT"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomShapeLayoutSizes"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ____roomShapeVolumes = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeVolumes")
local ONE_BY_ONE_CONTENTS_HEIGHT = ____roomShapeVolumes.ONE_BY_ONE_CONTENTS_HEIGHT
local ONE_BY_ONE_CONTENTS_WIDTH = ____roomShapeVolumes.ONE_BY_ONE_CONTENTS_WIDTH
local ONE_BY_ONE_LAYOUT_SIZE = {ONE_BY_ONE_CONTENTS_WIDTH, ONE_BY_ONE_CONTENTS_HEIGHT}
local TWO_BY_ONE_VERTICAL_LAYOUT_SIZE = {ONE_BY_ONE_CONTENTS_WIDTH, ONE_BY_ONE_CONTENTS_HEIGHT * 2}
local TWO_BY_ONE_HORIZONTAL_LAYOUT_SIZE = {ONE_BY_ONE_CONTENTS_WIDTH * 2, ONE_BY_ONE_CONTENTS_HEIGHT}
local TWO_BY_TWO_LAYOUT_SIZE = {ONE_BY_ONE_CONTENTS_WIDTH * 2, ONE_BY_ONE_CONTENTS_HEIGHT * 2}
--- The dimensions of a room shape's layout. This is NOT the size of the room's actual contents! For
-- that, use `ROOM_SHAPE_BOUNDS`.
-- 
-- For example, a horizontal narrow room has a layout size of equal to that of a 1x1 room.
____exports.ROOM_SHAPE_LAYOUT_SIZES = {
    [RoomShape.SHAPE_1x1] = ONE_BY_ONE_LAYOUT_SIZE,
    [RoomShape.IH] = ONE_BY_ONE_LAYOUT_SIZE,
    [RoomShape.IV] = ONE_BY_ONE_LAYOUT_SIZE,
    [RoomShape.SHAPE_1x2] = TWO_BY_ONE_VERTICAL_LAYOUT_SIZE,
    [RoomShape.IIV] = TWO_BY_ONE_VERTICAL_LAYOUT_SIZE,
    [RoomShape.SHAPE_2x1] = TWO_BY_ONE_HORIZONTAL_LAYOUT_SIZE,
    [RoomShape.IIH] = TWO_BY_ONE_HORIZONTAL_LAYOUT_SIZE,
    [RoomShape.SHAPE_2x2] = TWO_BY_TWO_LAYOUT_SIZE,
    [RoomShape.LTL] = TWO_BY_TWO_LAYOUT_SIZE,
    [RoomShape.LTR] = TWO_BY_TWO_LAYOUT_SIZE,
    [RoomShape.LBL] = TWO_BY_TWO_LAYOUT_SIZE,
    [RoomShape.LBR] = TWO_BY_TWO_LAYOUT_SIZE
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomShapeToBottomRightPosition"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local TWO_BY_TWO_BOTTOM_RIGHT_POSITION = Vector(25, 13)
local ONE_BY_TWO_VERTICAL_BOTTOM_RIGHT_POSITION = Vector(12, 13)
--- "Vector(0, 0)" corresponds to the top left tile of a room, not including the walls. (The top-left
-- wall would be at "Vector(-1, -1)".)
____exports.ROOM_SHAPE_TO_BOTTOM_RIGHT_POSITION = {
    [RoomShape.SHAPE_1x1] = Vector(12, 6),
    [RoomShape.IH] = Vector(12, 4),
    [RoomShape.IV] = Vector(8, 6),
    [RoomShape.SHAPE_1x2] = ONE_BY_TWO_VERTICAL_BOTTOM_RIGHT_POSITION,
    [RoomShape.IIV] = Vector(8, 13),
    [RoomShape.SHAPE_2x1] = Vector(25, 6),
    [RoomShape.IIH] = Vector(25, 4),
    [RoomShape.SHAPE_2x2] = TWO_BY_TWO_BOTTOM_RIGHT_POSITION,
    [RoomShape.LTL] = TWO_BY_TWO_BOTTOM_RIGHT_POSITION,
    [RoomShape.LTR] = TWO_BY_TWO_BOTTOM_RIGHT_POSITION,
    [RoomShape.LBL] = TWO_BY_TWO_BOTTOM_RIGHT_POSITION,
    [RoomShape.LBR] = ONE_BY_TWO_VERTICAL_BOTTOM_RIGHT_POSITION
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomShapeToDoorSlotsToGridIndexDelta"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local LEVEL_GRID_ROW_WIDTH = ____constants.LEVEL_GRID_ROW_WIDTH
local LEFT = -1
local UP = -LEVEL_GRID_ROW_WIDTH
local RIGHT = 1
local DOWN = LEVEL_GRID_ROW_WIDTH
--- Deltas are considered to be from the safe grid index of the room (i.e. the top left corner, or
-- top right corner in the case of `RoomShape.LTL`).
____exports.ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA = {
    [RoomShape.SHAPE_1x1] = __TS__New(Map, {{DoorSlot.LEFT_0, LEFT}, {DoorSlot.UP_0, UP}, {DoorSlot.RIGHT_0, RIGHT}, {DoorSlot.DOWN_0, DOWN}}),
    [RoomShape.IH] = __TS__New(Map, {{DoorSlot.LEFT_0, LEFT}, {DoorSlot.RIGHT_0, RIGHT}}),
    [RoomShape.IV] = __TS__New(Map, {{DoorSlot.UP_0, UP}, {DoorSlot.DOWN_0, DOWN}}),
    [RoomShape.SHAPE_1x2] = __TS__New(Map, {
        {DoorSlot.LEFT_0, LEFT},
        {DoorSlot.UP_0, UP},
        {DoorSlot.RIGHT_0, RIGHT},
        {DoorSlot.DOWN_0, DOWN + DOWN},
        {DoorSlot.LEFT_1, DOWN + LEFT},
        {DoorSlot.RIGHT_1, DOWN + RIGHT}
    }),
    [RoomShape.IIV] = __TS__New(Map, {{DoorSlot.UP_0, UP}, {DoorSlot.DOWN_0, DOWN + DOWN}}),
    [RoomShape.SHAPE_2x1] = __TS__New(Map, {
        {DoorSlot.LEFT_0, LEFT},
        {DoorSlot.UP_0, UP},
        {DoorSlot.RIGHT_0, RIGHT + RIGHT},
        {DoorSlot.DOWN_0, DOWN},
        {DoorSlot.UP_1, RIGHT + UP},
        {DoorSlot.DOWN_1, RIGHT + DOWN}
    }),
    [RoomShape.IIH] = __TS__New(Map, {{DoorSlot.LEFT_0, LEFT}, {DoorSlot.RIGHT_0, RIGHT + RIGHT}}),
    [RoomShape.SHAPE_2x2] = __TS__New(Map, {
        {DoorSlot.LEFT_0, LEFT},
        {DoorSlot.UP_0, UP},
        {DoorSlot.RIGHT_0, RIGHT + RIGHT},
        {DoorSlot.DOWN_0, DOWN + DOWN},
        {DoorSlot.LEFT_1, DOWN + LEFT},
        {DoorSlot.UP_1, RIGHT + UP},
        {DoorSlot.RIGHT_1, RIGHT + DOWN + RIGHT},
        {DoorSlot.DOWN_1, RIGHT + DOWN + DOWN}
    }),
    [RoomShape.LTL] = __TS__New(Map, {
        {DoorSlot.LEFT_0, LEFT},
        {DoorSlot.UP_0, DOWN + LEFT + UP},
        {DoorSlot.RIGHT_0, RIGHT},
        {DoorSlot.DOWN_0, DOWN + LEFT + DOWN},
        {DoorSlot.LEFT_1, DOWN + LEFT + LEFT},
        {DoorSlot.UP_1, UP},
        {DoorSlot.RIGHT_1, DOWN + RIGHT},
        {DoorSlot.DOWN_1, DOWN + DOWN}
    }),
    [RoomShape.LTR] = __TS__New(Map, {
        {DoorSlot.LEFT_0, LEFT},
        {DoorSlot.UP_0, UP},
        {DoorSlot.RIGHT_0, RIGHT},
        {DoorSlot.DOWN_0, DOWN + DOWN},
        {DoorSlot.LEFT_1, DOWN + LEFT},
        {DoorSlot.UP_1, DOWN + RIGHT + UP},
        {DoorSlot.RIGHT_1, DOWN + RIGHT + RIGHT},
        {DoorSlot.DOWN_1, DOWN + RIGHT + DOWN}
    }),
    [RoomShape.LBL] = __TS__New(Map, {
        {DoorSlot.LEFT_0, LEFT},
        {DoorSlot.UP_0, UP},
        {DoorSlot.RIGHT_0, RIGHT + RIGHT},
        {DoorSlot.DOWN_0, DOWN},
        {DoorSlot.LEFT_1, RIGHT + DOWN + LEFT},
        {DoorSlot.UP_1, RIGHT + UP},
        {DoorSlot.RIGHT_1, RIGHT + DOWN + RIGHT},
        {DoorSlot.DOWN_1, RIGHT + DOWN + DOWN}
    }),
    [RoomShape.LBR] = __TS__New(Map, {
        {DoorSlot.LEFT_0, LEFT},
        {DoorSlot.UP_0, UP},
        {DoorSlot.RIGHT_0, RIGHT + RIGHT},
        {DoorSlot.DOWN_0, DOWN + DOWN},
        {DoorSlot.LEFT_1, DOWN + LEFT},
        {DoorSlot.UP_1, RIGHT + UP},
        {DoorSlot.RIGHT_1, DOWN + RIGHT},
        {DoorSlot.DOWN_1, RIGHT + DOWN}
    })
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomShapeToGridWidth"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ONE_BY_ONE_WIDTH = 15
local TWO_BY_ONE_WIDTH = 28
____exports.ROOM_SHAPE_TO_GRID_WIDTH = {
    [RoomShape.SHAPE_1x1] = ONE_BY_ONE_WIDTH,
    [RoomShape.IH] = ONE_BY_ONE_WIDTH,
    [RoomShape.IV] = ONE_BY_ONE_WIDTH,
    [RoomShape.SHAPE_1x2] = ONE_BY_ONE_WIDTH,
    [RoomShape.IIV] = ONE_BY_ONE_WIDTH,
    [RoomShape.SHAPE_2x1] = TWO_BY_ONE_WIDTH,
    [RoomShape.IIH] = TWO_BY_ONE_WIDTH,
    [RoomShape.SHAPE_2x2] = TWO_BY_ONE_WIDTH,
    [RoomShape.LTL] = TWO_BY_ONE_WIDTH,
    [RoomShape.LTR] = TWO_BY_ONE_WIDTH,
    [RoomShape.LBL] = TWO_BY_ONE_WIDTH,
    [RoomShape.LBR] = TWO_BY_ONE_WIDTH
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomShapeToTopLeftPosition"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
local NARROW_HORIZONTAL_TOP_LEFT_POSITION = Vector(0, 2)
local NARROW_VERTICAL_TOP_LEFT_POSITION = Vector(4, 0)
--- "Vector(0, 0)" corresponds to the top left tile of a room, not including the walls. (The top-left
-- wall would be at "Vector(-1, -1)".)
____exports.ROOM_SHAPE_TO_TOP_LEFT_POSITION = {
    [RoomShape.SHAPE_1x1] = VectorZero,
    [RoomShape.IH] = NARROW_HORIZONTAL_TOP_LEFT_POSITION,
    [RoomShape.IV] = NARROW_VERTICAL_TOP_LEFT_POSITION,
    [RoomShape.SHAPE_1x2] = VectorZero,
    [RoomShape.IIV] = NARROW_VERTICAL_TOP_LEFT_POSITION,
    [RoomShape.SHAPE_2x1] = VectorZero,
    [RoomShape.IIH] = NARROW_HORIZONTAL_TOP_LEFT_POSITION,
    [RoomShape.SHAPE_2x2] = VectorZero,
    [RoomShape.LTL] = Vector(13, 0),
    [RoomShape.LTR] = VectorZero,
    [RoomShape.LBL] = VectorZero,
    [RoomShape.LBR] = VectorZero
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.LRoomShapesSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
____exports.L_ROOM_SHAPES_SET = __TS__New(Set, {RoomShape.LTL, RoomShape.LTR, RoomShape.LBL, RoomShape.LBR})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.narrowRoomShapesSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
____exports.NARROW_ROOM_SHAPES_SET = __TS__New(Set, {RoomShape.IH, RoomShape.IV, RoomShape.IIV, RoomShape.IIH})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostItemPickup"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireItemPickup = ____shouldFire.shouldFireItemPickup
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostItemPickup = __TS__Class()
local PostItemPickup = ____exports.PostItemPickup
PostItemPickup.name = "PostItemPickup"
__TS__ClassExtends(PostItemPickup, CustomCallback)
function PostItemPickup.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireItemPickup
    self.featuresUsed = {ISCFeature.ITEM_PICKUP_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostKnifeInitLate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireKnife = ____shouldFire.shouldFireKnife
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostKnifeInitLate = __TS__Class()
local PostKnifeInitLate = ____exports.PostKnifeInitLate
PostKnifeInitLate.name = "PostKnifeInitLate"
__TS__ClassExtends(PostKnifeInitLate, CustomCallback)
function PostKnifeInitLate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFireKnife
    self.postKnifeUpdate = function(____, knife)
        local ptrHash = GetPtrHash(knife)
        if not self.v.room.firedSet:has(ptrHash) then
            self.v.room.firedSet:add(ptrHash)
            self:fire(knife)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_KNIFE_UPDATE, {self.postKnifeUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostLaserInitLate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireLaser = ____shouldFire.shouldFireLaser
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostLaserInitLate = __TS__Class()
local PostLaserInitLate = ____exports.PostLaserInitLate
PostLaserInitLate.name = "PostLaserInitLate"
__TS__ClassExtends(PostLaserInitLate, CustomCallback)
function PostLaserInitLate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFireLaser
    self.postLaserUpdate = function(____, laser)
        local index = GetPtrHash(laser)
        if not self.v.room.firedSet:has(index) then
            self.v.room.firedSet:add(index)
            self:fire(laser)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_LASER_UPDATE, {self.postLaserUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNewLevelReordered"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostNewLevelReordered = __TS__Class()
local PostNewLevelReordered = ____exports.PostNewLevelReordered
PostNewLevelReordered.name = "PostNewLevelReordered"
__TS__ClassExtends(PostNewLevelReordered, CustomCallback)
function PostNewLevelReordered.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.GAME_REORDERED_CALLBACKS}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNewRoomEarly"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local getTopLeftWallGridIndex = ____gridEntities.getTopLeftWallGridIndex
local spawnGridEntity = ____gridEntities.spawnGridEntity
local ____logMisc = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
local logError = ____logMisc.logError
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostNewRoomEarly = __TS__Class()
local PostNewRoomEarly = ____exports.PostNewRoomEarly
PostNewRoomEarly.name = "PostNewRoomEarly"
__TS__ClassExtends(PostNewRoomEarly, CustomCallback)
function PostNewRoomEarly.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.currentRoomTopLeftWallPtrHash = nil
    self.currentRoomTopLeftWallPtrHash2 = nil
    self.postNewRoom = function()
        self:checkRoomChanged()
    end
    self.preEntitySpawn = function()
        self:checkRoomChanged()
        return nil
    end
    self.callbacksUsed = {{ModCallback.POST_NEW_ROOM, {self.postNewRoom}}, {ModCallback.PRE_ENTITY_SPAWN, {self.preEntitySpawn}}}
end
function PostNewRoomEarly.prototype.checkRoomChanged(self)
    if self:isNewRoom() then
        self:fire()
    end
end
function PostNewRoomEarly.prototype.isNewRoom(self)
    local room = game:GetRoom()
    local topLeftWallGridIndex = getTopLeftWallGridIndex(nil)
    local rightOfTopWallGridIndex = topLeftWallGridIndex + 1
    local topLeftWall = room:GetGridEntity(topLeftWallGridIndex)
    local topLeftWall2 = room:GetGridEntity(rightOfTopWallGridIndex)
    if topLeftWall == nil then
        topLeftWall = spawnGridEntity(nil, GridEntityType.WALL, topLeftWallGridIndex)
        if topLeftWall == nil then
            logError(nil, "Failed to spawn a new wall (1) for the POST_NEW_ROOM_EARLY callback.")
            return false
        end
    end
    if topLeftWall2 == nil then
        topLeftWall2 = spawnGridEntity(nil, GridEntityType.WALL, rightOfTopWallGridIndex)
        if topLeftWall2 == nil then
            logError(nil, "Failed to spawn a new wall (2) for the POST_NEW_ROOM_EARLY callback.")
            return false
        end
    end
    local oldTopLeftWallPtrHash = self.currentRoomTopLeftWallPtrHash
    local oldTopLeftWallPtrHash2 = self.currentRoomTopLeftWallPtrHash2
    self.currentRoomTopLeftWallPtrHash = GetPtrHash(topLeftWall)
    self.currentRoomTopLeftWallPtrHash2 = GetPtrHash(topLeftWall2)
    return oldTopLeftWallPtrHash ~= self.currentRoomTopLeftWallPtrHash or oldTopLeftWallPtrHash2 ~= self.currentRoomTopLeftWallPtrHash2
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.gridEntities"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__StringSplit = ____lualib.__TS__StringSplit
local Map = ____lualib.Map
local ____exports = {}
local getAllGridEntities
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant
local GridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.GridCollisionClass
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local PoopGridEntityVariant = ____isaac_2Dtypescript_2Ddefinitions.PoopGridEntityVariant
local StatueVariant = ____isaac_2Dtypescript_2Ddefinitions.StatueVariant
local TrapdoorVariant = ____isaac_2Dtypescript_2Ddefinitions.TrapdoorVariant
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local DISTANCE_OF_GRID_TILE = ____constants.DISTANCE_OF_GRID_TILE
local VectorOne = ____constants.VectorOne
local ____gridEntityTypeToBrokenStateMap = require("lua_modules.isaacscript-common.dist.src.maps.gridEntityTypeToBrokenStateMap")
local GRID_ENTITY_TYPE_TO_BROKEN_STATE_MAP = ____gridEntityTypeToBrokenStateMap.GRID_ENTITY_TYPE_TO_BROKEN_STATE_MAP
local ____gridEntityXMLMap = require("lua_modules.isaacscript-common.dist.src.maps.gridEntityXMLMap")
local GRID_ENTITY_XML_MAP = ____gridEntityXMLMap.GRID_ENTITY_XML_MAP
local ____roomShapeToTopLeftWallGridIndexMap = require("lua_modules.isaacscript-common.dist.src.maps.roomShapeToTopLeftWallGridIndexMap")
local DEFAULT_TOP_LEFT_WALL_GRID_INDEX = ____roomShapeToTopLeftWallGridIndexMap.DEFAULT_TOP_LEFT_WALL_GRID_INDEX
local ROOM_SHAPE_TO_TOP_LEFT_WALL_GRID_INDEX_MAP = ____roomShapeToTopLeftWallGridIndexMap.ROOM_SHAPE_TO_TOP_LEFT_WALL_GRID_INDEX_MAP
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local removeEntities = ____entities.removeEntities
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getEffects = ____entitiesSpecific.getEffects
local ____math = require("lua_modules.isaacscript-common.dist.src.functions.math")
local isCircleIntersectingRectangle = ____math.isCircleIntersectingRectangle
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local roomUpdateSafe = ____rooms.roomUpdateSafe
local ____sprites = require("lua_modules.isaacscript-common.dist.src.functions.sprites")
local clearSprite = ____sprites.clearSprite
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
local isNumber = ____types.isNumber
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local eRange = ____utils.eRange
local iRange = ____utils.iRange
local ____vector = require("lua_modules.isaacscript-common.dist.src.functions.vector")
local isVector = ____vector.isVector
local vectorEquals = ____vector.vectorEquals
--- Helper function to get every legal grid index for the current room.
-- 
-- Under the hood, this uses the `Room.GetGridSize` method.
function ____exports.getAllGridIndexes(self)
    local room = game:GetRoom()
    local gridSize = room:GetGridSize()
    return eRange(nil, gridSize)
end
function getAllGridEntities(self)
    local room = game:GetRoom()
    local gridEntities = {}
    for ____, gridIndex in ipairs(____exports.getAllGridIndexes(nil)) do
        local gridEntity = room:GetGridEntity(gridIndex)
        if gridEntity ~= nil then
            gridEntities[#gridEntities + 1] = gridEntity
        end
    end
    return gridEntities
end
--- Helper function to get the top left and bottom right corners of a given grid entity.
function ____exports.getGridEntityCollisionPoints(self, gridEntity)
    local topLeft = Vector(gridEntity.Position.X - DISTANCE_OF_GRID_TILE / 2, gridEntity.Position.Y - DISTANCE_OF_GRID_TILE / 2)
    local bottomRight = Vector(gridEntity.Position.X + DISTANCE_OF_GRID_TILE / 2, gridEntity.Position.Y + DISTANCE_OF_GRID_TILE / 2)
    return {topLeft, bottomRight}
end
--- Helper function to get the grid index of the top left wall. (This will depend on what the current
-- room shape is.)
function ____exports.getTopLeftWallGridIndex(self)
    local room = game:GetRoom()
    local roomShape = room:GetRoomShape()
    local topLeftWallGridIndex = ROOM_SHAPE_TO_TOP_LEFT_WALL_GRID_INDEX_MAP:get(roomShape)
    return topLeftWallGridIndex == nil and DEFAULT_TOP_LEFT_WALL_GRID_INDEX or topLeftWallGridIndex
end
--- Helper function to remove a grid entity by providing the grid entity object or the grid index
-- inside of the room.
-- 
-- If removing a Devil Statue or an Angel Statue, this will also remove the associated effect
-- (`EffectVariant.DEVIL` (6) or `EffectVariant.ANGEL` (9), respectively.)
-- 
-- @param gridEntityOrGridIndex The grid entity or grid index to remove.
-- @param updateRoom Whether or not to update the room after the grid entity is removed. This is
-- generally a good idea because if the room is not updated, you will be unable to
-- spawn another grid entity on the same tile until a frame has passed. However,
-- doing this is expensive, since it involves a call to `Isaac.GetRoomEntities`,
-- so set this to false if you need to run this function multiple times.
function ____exports.removeGridEntity(self, gridEntityOrGridIndex, updateRoom)
    local room = game:GetRoom()
    local ____isNumber_result_0
    if isNumber(nil, gridEntityOrGridIndex) then
        ____isNumber_result_0 = room:GetGridEntity(gridEntityOrGridIndex)
    else
        ____isNumber_result_0 = gridEntityOrGridIndex
    end
    local gridEntity = ____isNumber_result_0
    if gridEntity == nil then
        return
    end
    local gridEntityType = gridEntity:GetType()
    local variant = gridEntity:GetVariant()
    local position = gridEntity.Position
    local gridIndex = isNumber(nil, gridEntityOrGridIndex) and gridEntityOrGridIndex or gridEntityOrGridIndex:GetGridIndex()
    room:RemoveGridEntity(gridIndex, 0, false)
    if updateRoom then
        roomUpdateSafe(nil)
    end
    if gridEntityType == GridEntityType.STATUE then
        local effectVariant = variant == asNumber(nil, StatueVariant.DEVIL) and EffectVariant.DEVIL or EffectVariant.ANGEL
        local effects = getEffects(nil, effectVariant)
        local effectsOnTile = __TS__ArrayFilter(
            effects,
            function(____, effect) return vectorEquals(nil, effect.Position, position) end
        )
        removeEntities(nil, effectsOnTile)
    end
end
--- Helper function to spawn a grid entity with a specific variant.
-- 
-- Use this instead of the `Isaac.GridSpawn` method since it:
-- - handles giving pits collision
-- - removes existing grid entities on the same tile, if any
-- - allows you to specify the grid index or the position
function ____exports.spawnGridEntityWithVariant(self, gridEntityType, variant, gridIndexOrPosition)
    local room = game:GetRoom()
    local ____isVector_result_1
    if isVector(nil, gridIndexOrPosition) then
        ____isVector_result_1 = room:GetGridEntityFromPos(gridIndexOrPosition)
    else
        ____isVector_result_1 = room:GetGridEntity(gridIndexOrPosition)
    end
    local existingGridEntity = ____isVector_result_1
    if existingGridEntity ~= nil then
        ____exports.removeGridEntity(nil, existingGridEntity, true)
    end
    local position = isVector(nil, gridIndexOrPosition) and gridIndexOrPosition or room:GetGridPosition(gridIndexOrPosition)
    local gridEntity = Isaac.GridSpawn(gridEntityType, variant, position)
    if gridEntity == nil then
        return gridEntity
    end
    if gridEntityType == GridEntityType.PIT then
        local pit = gridEntity:ToPit()
        if pit ~= nil then
            pit:UpdateCollision()
        end
    elseif gridEntityType == GridEntityType.WALL then
        gridEntity.CollisionClass = GridCollisionClass.WALL
    end
    return gridEntity
end
local BREAKABLE_GRID_ENTITY_TYPES_BY_EXPLOSIONS = __TS__New(Set, {
    GridEntityType.ROCK,
    GridEntityType.ROCK_TINTED,
    GridEntityType.ROCK_BOMB,
    GridEntityType.ROCK_ALT,
    GridEntityType.SPIDER_WEB,
    GridEntityType.TNT,
    GridEntityType.POOP,
    GridEntityType.ROCK_SUPER_SPECIAL,
    GridEntityType.ROCK_SPIKED,
    GridEntityType.ROCK_ALT_2,
    GridEntityType.ROCK_GOLD
})
local BREAKABLE_GRID_ENTITY_TYPES_VARIANTS_BY_EXPLOSIONS = __TS__New(
    Set,
    {(tostring(GridEntityType.STATUE) .. ".") .. tostring(StatueVariant.ANGEL)}
)
--- Helper function to convert the grid entity type found in a room XML file to the corresponding
-- grid entity type and variant normally used by the game. For example, a rock is represented as
-- 1000.0 in a room XML file, but `GridEntityType.ROCK` is equal to 2.
function ____exports.convertXMLGridEntityType(self, gridEntityXMLType, gridEntityXMLVariant)
    local gridEntityArray = GRID_ENTITY_XML_MAP:get(gridEntityXMLType)
    if gridEntityArray == nil then
        error("Failed to find an entry in the grid entity map for XML entity type: " .. tostring(gridEntityXMLType))
    end
    local gridEntityType = gridEntityArray[1]
    local variant = gridEntityArray[2]
    if gridEntityType == GridEntityType.SPIKES_ON_OFF or gridEntityType == GridEntityType.PRESSURE_PLATE or gridEntityType == GridEntityType.TELEPORTER then
        variant = gridEntityXMLVariant
    end
    return {gridEntityType, variant}
end
--- Gets the entities that have a hitbox that overlaps with any part of the square that the grid
-- entity is on.
-- 
-- Note that this function will not work properly in the `POST_NEW_ROOM` callback, since entities do
-- not have collision yet in that callback.
function ____exports.getCollidingEntitiesWithGridEntity(self, gridEntity)
    local topLeft, bottomRight = table.unpack(____exports.getGridEntityCollisionPoints(nil, gridEntity))
    local closeEntities = Isaac.FindInRadius(gridEntity.Position, DISTANCE_OF_GRID_TILE * 2)
    return __TS__ArrayFilter(
        closeEntities,
        function(____, entity) return entity:CollidesWithGrid() and isCircleIntersectingRectangle(
            nil,
            entity.Position,
            entity.Size + 0.1,
            topLeft,
            bottomRight
        ) end
    )
end
--- Helper function to get the grid entity type and variant from a `GridEntityID`.
function ____exports.getConstituentsFromGridEntityID(self, gridEntityID)
    local parts = __TS__StringSplit(gridEntityID, ".")
    if #parts ~= 2 then
        error("Failed to get the constituents from grid entity ID: " .. gridEntityID)
    end
    local gridEntityTypeString, variantString = table.unpack(parts)
    local gridEntityType = tonumber(gridEntityTypeString)
    if gridEntityType == nil then
        error("Failed to convert the grid entity type to a number: " .. tostring(gridEntityTypeString))
    end
    local variant = tonumber(variantString)
    if variant == nil then
        error("Failed to convert the grid entity variant to a number: " .. tostring(variantString))
    end
    return {gridEntityType, variant}
end
--- Helper function to get every grid entity in the current room.
-- 
-- Use this function with no arguments to get every grid entity, or specify a variadic amount of
-- arguments to match specific grid entity types.
-- 
-- For example:
-- 
-- ```ts
-- for (const gridEntity of getGridEntities()) {
--   print(gridEntity.GetType())
-- }
-- ```
-- 
-- For example:
-- 
-- ```ts
-- const rocks = getGridEntities(
--   GridEntityType.ROCK,
--   GridEntityType.BLOCK,
--   GridEntityType.ROCK_TINTED,
-- );
-- ```
function ____exports.getGridEntities(self, ...)
    local gridEntityTypes = {...}
    local gridEntities = getAllGridEntities(nil)
    if #gridEntityTypes == 0 then
        return gridEntities
    end
    local gridEntityTypesSet = __TS__New(Set, gridEntityTypes)
    return __TS__ArrayFilter(
        gridEntities,
        function(____, gridEntity)
            local gridEntityType = gridEntity:GetType()
            return gridEntityTypesSet:has(gridEntityType)
        end
    )
end
--- Helper function to get every grid entity in the current room except for certain specific types.
-- 
-- This function is variadic, meaning that you can specify as many grid entity types as you want to
-- exclude.
function ____exports.getGridEntitiesExcept(self, ...)
    local gridEntityTypes = {...}
    local gridEntities = getAllGridEntities(nil)
    if #gridEntityTypes == 0 then
        return gridEntities
    end
    local gridEntityTypesSet = __TS__New(Set, gridEntityTypes)
    return __TS__ArrayFilter(
        gridEntities,
        function(____, gridEntity)
            local gridEntityType = gridEntity:GetType()
            return not gridEntityTypesSet:has(gridEntityType)
        end
    )
end
--- Helper function to get all grid entities in a given radius around a given point.
function ____exports.getGridEntitiesInRadius(self, targetPosition, radius)
    radius = math.abs(radius)
    local topLeftOffset = VectorOne * -radius
    local mostTopLeftPosition = targetPosition + topLeftOffset
    local room = game:GetRoom()
    local diameter = radius * 2
    local iterations = math.ceil(diameter / DISTANCE_OF_GRID_TILE)
    local separation = diameter / iterations
    local gridEntities = {}
    local registeredGridIndexes = __TS__New(Set)
    for ____, x in ipairs(iRange(nil, iterations)) do
        for ____, y in ipairs(iRange(nil, iterations)) do
            do
                local position = mostTopLeftPosition + Vector(x * separation, y * separation)
                local gridIndex = room:GetGridIndex(position)
                local gridEntity = room:GetGridEntityFromPos(position)
                if gridEntity == nil or registeredGridIndexes:has(gridIndex) then
                    goto __continue24
                end
                registeredGridIndexes:add(gridIndex)
                local topLeft, bottomRight = table.unpack(____exports.getGridEntityCollisionPoints(nil, gridEntity))
                if isCircleIntersectingRectangle(
                    nil,
                    targetPosition,
                    radius,
                    topLeft,
                    bottomRight
                ) then
                    gridEntities[#gridEntities + 1] = gridEntity
                end
            end
            ::__continue24::
        end
    end
    return gridEntities
end
--- Helper function to get a map of every grid entity in the current room. The indexes of the map are
-- equal to the grid index. The values of the map are equal to the grid entities.
-- 
-- Use this function with no arguments to get every grid entity, or specify a variadic amount of
-- arguments to match specific grid entity types.
function ____exports.getGridEntitiesMap(self, ...)
    local gridEntities = ____exports.getGridEntities(nil, ...)
    local gridEntityMap = __TS__New(Map)
    for ____, gridEntity in ipairs(gridEntities) do
        local gridIndex = gridEntity:GetGridIndex()
        gridEntityMap:set(gridIndex, gridEntity)
    end
    return gridEntityMap
end
--- Helper function to get a string containing the grid entity's type and variant.
function ____exports.getGridEntityID(self, gridEntity)
    local gridEntityType = gridEntity:GetType()
    local variant = gridEntity:GetVariant()
    return (tostring(gridEntityType) .. ".") .. tostring(variant)
end
--- Helper function to get a formatted string in the format returned by the `getGridEntityID`
-- function.
function ____exports.getGridEntityIDFromConstituents(self, gridEntityType, variant)
    return (tostring(gridEntityType) .. ".") .. tostring(variant)
end
--- Helper function to get all of the grid entities in the room that specifically match the type and
-- variant provided.
-- 
-- If you want to match every variant, use the `getGridEntities` function instead.
function ____exports.getMatchingGridEntities(self, gridEntityType, variant)
    local gridEntities = ____exports.getGridEntities(nil, gridEntityType)
    return __TS__ArrayFilter(
        gridEntities,
        function(____, gridEntity) return gridEntity:GetVariant() == variant end
    )
end
function ____exports.getSurroundingGridEntities(self, gridEntity)
    local room = game:GetRoom()
    local gridWidth = room:GetGridWidth()
    local gridIndex = gridEntity:GetGridIndex()
    local surroundingGridIndexes = {
        gridIndex - 1,
        gridIndex + 1,
        gridIndex - gridWidth - 1,
        gridIndex - gridWidth,
        gridIndex - gridWidth + 1,
        gridIndex + gridWidth - 1,
        gridIndex + gridWidth,
        gridIndex + gridWidth + 1
    }
    local surroundingGridEntities = {}
    for ____, surroundingGridIndex in ipairs(surroundingGridIndexes) do
        local surroundingGridEntity = room:GetGridEntity(surroundingGridIndex)
        if surroundingGridEntity ~= nil then
            surroundingGridEntities[#surroundingGridEntities + 1] = surroundingGridEntity
        end
    end
    return surroundingGridEntities
end
function ____exports.getTopLeftWall(self)
    local room = game:GetRoom()
    local topLeftWallGridIndex = ____exports.getTopLeftWallGridIndex(nil)
    return room:GetGridEntity(topLeftWallGridIndex)
end
--- Helper function to see if the provided gridEntity is in its respective broken state. See the
-- `GRID_ENTITY_TYPE_TO_BROKEN_STATE_MAP` constant for more details.
-- 
-- Note that in the case of `GridEntityType.LOCK` (11), the state will turn to being broken before
-- the actual collision for the entity is removed.
function ____exports.isGridEntityBreakableByExplosion(self, gridEntity)
    local gridEntityType = gridEntity:GetType()
    local variant = gridEntity:GetVariant()
    local gridEntityTypeVariant = (tostring(gridEntityType) .. ".") .. tostring(variant)
    return BREAKABLE_GRID_ENTITY_TYPES_BY_EXPLOSIONS:has(gridEntityType) or BREAKABLE_GRID_ENTITY_TYPES_VARIANTS_BY_EXPLOSIONS:has(gridEntityTypeVariant)
end
--- Helper function to detect whether a given Void Portal is one that randomly spawns after a boss is
-- defeated or is one that naturally spawns in the room after Hush. (This is determined by looking
-- at the VarData of the entity.)
function ____exports.isGridEntityBroken(self, gridEntity)
    local gridEntityType = gridEntity:GetType()
    local brokenState = GRID_ENTITY_TYPE_TO_BROKEN_STATE_MAP:get(gridEntityType)
    return gridEntity.State == brokenState
end
--- Helper function to determine if all of the pressure plates in the current room are pushed.
-- Returns true if there are no pressure plates in the room.
function ____exports.isPostBossVoidPortal(self, gridEntity)
    local saveState = gridEntity:GetSaveState()
    return saveState.VarData == 1
end
--- Helper function to all grid entities in the room except for ones matching the grid entity types
-- provided.
-- 
-- Note that this function will automatically update the room. (This means that you can spawn new
-- grid entities on the same tile on the same frame, if needed.)
-- 
-- For example:
-- 
-- ```ts
-- removeAllGridEntitiesExcept(
--   GridEntityType.WALL,
--   GridEntityType.DOOR,
-- );
-- ```
-- 
-- @returns The grid entities that were removed.
function ____exports.removeAllGridEntitiesExcept(self, ...)
    local gridEntityTypes = {...}
    local gridEntityTypeExceptions = __TS__New(Set, gridEntityTypes)
    local gridEntities = ____exports.getGridEntities(nil)
    local removedGridEntities = {}
    for ____, gridEntity in ipairs(gridEntities) do
        local gridEntityType = gridEntity:GetType()
        if not gridEntityTypeExceptions:has(gridEntityType) then
            ____exports.removeGridEntity(nil, gridEntity, false)
            removedGridEntities[#removedGridEntities + 1] = gridEntity
        end
    end
    if #removedGridEntities > 0 then
        roomUpdateSafe(nil)
    end
    return removedGridEntities
end
--- Helper function to remove all of the grid entities in the room that match the grid entity types
-- provided.
-- 
-- Note that this function will automatically update the room. (This means that you can spawn new
-- grid entities on the same tile on the same frame, if needed.)
-- 
-- For example:
-- 
-- ```ts
-- removeAllMatchingGridEntities(
--   GridEntityType.ROCK,
--   GridEntityType.BLOCK,
--   GridEntityType.ROCK_TINTED,
-- );
-- ```
-- 
-- @returns An array of the grid entities removed.
function ____exports.removeAllMatchingGridEntities(self, ...)
    local gridEntities = ____exports.getGridEntities(nil, ...)
    if #gridEntities == 0 then
        return {}
    end
    for ____, gridEntity in ipairs(gridEntities) do
        ____exports.removeGridEntity(nil, gridEntity, false)
    end
    roomUpdateSafe(nil)
    return gridEntities
end
--- Helper function to remove all entities that just spawned from a grid entity breaking.
-- Specifically, this is any entities that overlap with the position of a grid entity and are on
-- frame 0.
-- 
-- You must specify an array of entities to look through.
function ____exports.removeEntitiesSpawnedFromGridEntity(self, entities, gridEntity)
    local entitiesFromGridEntity = __TS__ArrayFilter(
        entities,
        function(____, entity) return entity.FrameCount == 0 and vectorEquals(nil, entity.Position, gridEntity.Position) end
    )
    removeEntities(nil, entitiesFromGridEntity)
end
--- Helper function to remove all of the grid entities in the supplied array.
-- 
-- @param gridEntities The array of grid entities to remove.
-- @param updateRoom Whether or not to update the room after the grid entities are removed. This is
-- generally a good idea because if the room is not updated, you will be unable to
-- spawn another grid entity on the same tile until a frame has passed. However,
-- doing this is expensive, since it involves a call to `Isaac.GetRoomEntities`,
-- so set this to false if you need to run this function multiple times.
-- @param cap Optional. If specified, will only remove the given amount of entities.
-- @returns An array of the entities that were removed.
function ____exports.removeGridEntities(self, gridEntities, updateRoom, cap)
    if #gridEntities == 0 then
        return {}
    end
    local gridEntitiesRemoved = {}
    for ____, gridEntity in ipairs(gridEntities) do
        ____exports.removeGridEntity(nil, gridEntity, false)
        gridEntitiesRemoved[#gridEntitiesRemoved + 1] = gridEntity
        if cap ~= nil and #gridEntitiesRemoved >= cap then
            break
        end
    end
    if updateRoom then
        roomUpdateSafe(nil)
    end
    return gridEntitiesRemoved
end
--- Helper function to make a grid entity invisible. This is accomplished by setting its sprite to an
-- empty/missing PNG file.
-- 
-- For more information, see the documentation for the `clearSprite` helper function.
function ____exports.setGridEntityInvisible(self, gridEntity)
    local sprite = gridEntity:GetSprite()
    clearSprite(nil, sprite)
end
--- Helper function to spawn a giant poop. This is performed by spawning each of the four quadrant
-- grid entities in the appropriate positions.
function ____exports.spawnGiantPoop(self, topLeftGridIndex)
    local room = game:GetRoom()
    local gridWidth = room:GetGridWidth()
    local topRightGridIndex = topLeftGridIndex + 1
    local bottomLeftGridIndex = topLeftGridIndex + gridWidth
    local bottomRightGridIndex = bottomLeftGridIndex + 1
    ____exports.spawnGridEntityWithVariant(nil, GridEntityType.POOP, PoopGridEntityVariant.GIGA_TOP_LEFT, topLeftGridIndex)
    ____exports.spawnGridEntityWithVariant(nil, GridEntityType.POOP, PoopGridEntityVariant.GIGA_TOP_RIGHT, topRightGridIndex)
    ____exports.spawnGridEntityWithVariant(nil, GridEntityType.POOP, PoopGridEntityVariant.GIGA_BOTTOM_LEFT, bottomLeftGridIndex)
    ____exports.spawnGridEntityWithVariant(nil, GridEntityType.POOP, PoopGridEntityVariant.GIGA_BOTTOM_RIGHT, bottomRightGridIndex)
end
--- Helper function to spawn a grid entity.
-- 
-- This function assumes you want to give the grid entity a variant of 0. If you want to specify a
-- variant, use the `spawnGridEntityWithVariant` helper function instead.
-- 
-- Use this instead of the `Isaac.GridSpawn` method since it:
-- - handles giving pits collision
-- - removes existing grid entities on the same tile, if any
-- - allows you to specify either the grid index or the position
function ____exports.spawnGridEntity(self, gridEntityType, gridIndexOrPosition)
    return ____exports.spawnGridEntityWithVariant(nil, gridEntityType, 0, gridIndexOrPosition)
end
--- Helper function to spawn a Void Portal. This is more complicated than simply spawning a trapdoor
-- with the appropriate variant, as the game does not give it the correct sprite automatically.
function ____exports.spawnVoidPortal(self, gridIndex)
    local voidPortal = ____exports.spawnGridEntityWithVariant(nil, GridEntityType.TRAPDOOR, TrapdoorVariant.VOID_PORTAL, gridIndex)
    if voidPortal == nil then
        return voidPortal
    end
    voidPortal.VarData = 1
    local sprite = voidPortal:GetSprite()
    sprite:Load("gfx/grid/voidtrapdoor.anm2", true)
    return voidPortal
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.gridEntityTypeToBrokenStateMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local LockState = ____isaac_2Dtypescript_2Ddefinitions.LockState
local PoopState = ____isaac_2Dtypescript_2Ddefinitions.PoopState
local RockState = ____isaac_2Dtypescript_2Ddefinitions.RockState
local SpiderWebState = ____isaac_2Dtypescript_2Ddefinitions.SpiderWebState
local TNTState = ____isaac_2Dtypescript_2Ddefinitions.TNTState
____exports.GRID_ENTITY_TYPE_TO_BROKEN_STATE_MAP = __TS__New(Map, {
    {GridEntityType.ROCK, RockState.BROKEN},
    {GridEntityType.ROCK_TINTED, RockState.BROKEN},
    {GridEntityType.ROCK_BOMB, RockState.BROKEN},
    {GridEntityType.ROCK_ALT, RockState.BROKEN},
    {GridEntityType.SPIDER_WEB, SpiderWebState.BROKEN},
    {GridEntityType.LOCK, LockState.UNLOCKED},
    {GridEntityType.TNT, TNTState.EXPLODED},
    {GridEntityType.POOP, PoopState.COMPLETELY_DESTROYED},
    {GridEntityType.ROCK_SUPER_SPECIAL, RockState.BROKEN},
    {GridEntityType.ROCK_SPIKED, RockState.BROKEN},
    {GridEntityType.ROCK_ALT_2, RockState.BROKEN},
    {GridEntityType.ROCK_GOLD, RockState.BROKEN}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.gridEntityXMLMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CrawlSpaceVariant = ____isaac_2Dtypescript_2Ddefinitions.CrawlSpaceVariant
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local GridEntityXMLType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityXMLType
local PitVariant = ____isaac_2Dtypescript_2Ddefinitions.PitVariant
local PoopGridEntityVariant = ____isaac_2Dtypescript_2Ddefinitions.PoopGridEntityVariant
local PressurePlateVariant = ____isaac_2Dtypescript_2Ddefinitions.PressurePlateVariant
local RockVariant = ____isaac_2Dtypescript_2Ddefinitions.RockVariant
local StatueVariant = ____isaac_2Dtypescript_2Ddefinitions.StatueVariant
local TrapdoorVariant = ____isaac_2Dtypescript_2Ddefinitions.TrapdoorVariant
--- This maps the GridEntityXMLType (i.e. the type contained in the room XML/STB file) to the
-- GridEntityType and the variant used by the game.
____exports.GRID_ENTITY_XML_MAP = __TS__New(Map, {
    {GridEntityXMLType.DECORATION, {GridEntityType.DECORATION, 0}},
    {GridEntityXMLType.ROCK, {GridEntityType.ROCK, RockVariant.NORMAL}},
    {GridEntityXMLType.ROCK_BOMB, {GridEntityType.ROCK_BOMB, 0}},
    {GridEntityXMLType.ROCK_ALT, {GridEntityType.ROCK_ALT, 0}},
    {GridEntityXMLType.ROCK_TINTED, {GridEntityType.ROCK_TINTED, 0}},
    {GridEntityXMLType.ROCK_ALT_2, {GridEntityType.ROCK_ALT_2, 0}},
    {GridEntityXMLType.ROCK_EVENT, {GridEntityType.ROCK_ALT_2, RockVariant.EVENT}},
    {GridEntityXMLType.ROCK_SPIKED, {GridEntityType.ROCK_SPIKED, 0}},
    {GridEntityXMLType.ROCK_GOLD, {GridEntityType.ROCK_GOLD, 0}},
    {GridEntityXMLType.TNT, {GridEntityType.TNT, 0}},
    {GridEntityXMLType.POOP_RED, {GridEntityType.POOP, PoopGridEntityVariant.RED}},
    {GridEntityXMLType.POOP_RAINBOW, {GridEntityType.POOP, PoopGridEntityVariant.RAINBOW}},
    {GridEntityXMLType.POOP_CORN, {GridEntityType.POOP, PoopGridEntityVariant.CORN}},
    {GridEntityXMLType.POOP_GOLDEN, {GridEntityType.POOP, PoopGridEntityVariant.GOLDEN}},
    {GridEntityXMLType.POOP_BLACK, {GridEntityType.POOP, PoopGridEntityVariant.BLACK}},
    {GridEntityXMLType.POOP_WHITE, {GridEntityType.POOP, PoopGridEntityVariant.WHITE}},
    {GridEntityXMLType.POOP, {GridEntityType.POOP, PoopGridEntityVariant.NORMAL}},
    {GridEntityXMLType.POOP_CHARMING, {GridEntityType.POOP, PoopGridEntityVariant.CHARMING}},
    {GridEntityXMLType.BLOCK, {GridEntityType.BLOCK, 0}},
    {GridEntityXMLType.PILLAR, {GridEntityType.PILLAR, 0}},
    {GridEntityXMLType.SPIKES, {GridEntityType.SPIKES, 0}},
    {GridEntityXMLType.SPIKES_ON_OFF, {GridEntityType.SPIKES_ON_OFF, 0}},
    {GridEntityXMLType.SPIDER_WEB, {GridEntityType.SPIDER_WEB, 0}},
    {GridEntityXMLType.WALL, {GridEntityType.WALL, 0}},
    {GridEntityXMLType.PIT, {GridEntityType.PIT, PitVariant.NORMAL}},
    {GridEntityXMLType.FISSURE_SPAWNER, {GridEntityType.PIT, PitVariant.FISSURE_SPAWNER}},
    {GridEntityXMLType.PIT_EVENT, {GridEntityType.PIT, PitVariant.NORMAL}},
    {GridEntityXMLType.LOCK, {GridEntityType.LOCK, 0}},
    {GridEntityXMLType.PRESSURE_PLATE, {GridEntityType.PRESSURE_PLATE, PressurePlateVariant.PRESSURE_PLATE}},
    {GridEntityXMLType.STATUE_DEVIL, {GridEntityType.STATUE, StatueVariant.DEVIL}},
    {GridEntityXMLType.STATUE_ANGEL, {GridEntityType.STATUE, StatueVariant.ANGEL}},
    {GridEntityXMLType.TELEPORTER, {GridEntityType.TELEPORTER, 0}},
    {GridEntityXMLType.TRAPDOOR, {GridEntityType.TRAPDOOR, TrapdoorVariant.NORMAL}},
    {GridEntityXMLType.CRAWL_SPACE, {GridEntityType.CRAWL_SPACE, CrawlSpaceVariant.NORMAL}},
    {GridEntityXMLType.GRAVITY, {GridEntityType.GRAVITY, 0}}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.roomShapeToTopLeftWallGridIndexMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
____exports.DEFAULT_TOP_LEFT_WALL_GRID_INDEX = 0
--- Only used for special room shapes where the top left wall grid index is not equal to
-- `DEFAULT_TOP_LEFT_WALL_GRID_INDEX`.
____exports.ROOM_SHAPE_TO_TOP_LEFT_WALL_GRID_INDEX_MAP = __TS__New(Map, {
    {RoomShape.IH, 30},
    {RoomShape.IV, 4},
    {RoomShape.IIV, 4},
    {RoomShape.IIH, 56},
    {RoomShape.LTL, 13}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.rooms"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Spread = ____lualib.__TS__Spread
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__StringIncludes = ____lualib.__TS__StringIncludes
local __TS__ArraySome = ____lualib.__TS__ArraySome
local Set = ____lualib.Set
local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local AngelRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.AngelRoomSubType
local Dimension = ____isaac_2Dtypescript_2Ddefinitions.Dimension
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
local DownpourRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.DownpourRoomSubType
local DungeonSubType = ____isaac_2Dtypescript_2Ddefinitions.DungeonSubType
local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom
local HomeRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.HomeRoomSubType
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
local RoomDescriptorFlag = ____isaac_2Dtypescript_2Ddefinitions.RoomDescriptorFlag
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect
local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local sfxManager = ____cachedClasses.sfxManager
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local MAX_LEVEL_GRID_INDEX = ____constants.MAX_LEVEL_GRID_INDEX
local ____roomTypeNames = require("lua_modules.isaacscript-common.dist.src.objects.roomTypeNames")
local ROOM_TYPE_NAMES = ____roomTypeNames.ROOM_TYPE_NAMES
local ____mineShaftRoomSubTypesSet = require("lua_modules.isaacscript-common.dist.src.sets.mineShaftRoomSubTypesSet")
local MINE_SHAFT_ROOM_SUB_TYPE_SET = ____mineShaftRoomSubTypesSet.MINE_SHAFT_ROOM_SUB_TYPE_SET
local ____dimensions = require("lua_modules.isaacscript-common.dist.src.functions.dimensions")
local getAllDimensions = ____dimensions.getAllDimensions
local inDimension = ____dimensions.inDimension
local ____doors = require("lua_modules.isaacscript-common.dist.src.functions.doors")
local closeAllDoors = ____doors.closeAllDoors
local getDoors = ____doors.getDoors
local isHiddenSecretRoomDoor = ____doors.isHiddenSecretRoomDoor
local openDoorFast = ____doors.openDoorFast
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntities = ____entities.getEntities
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
local ____positionVelocity = require("lua_modules.isaacscript-common.dist.src.functions.positionVelocity")
local getEntityPositions = ____positionVelocity.getEntityPositions
local getEntityVelocities = ____positionVelocity.getEntityVelocities
local setEntityPositions = ____positionVelocity.setEntityPositions
local setEntityVelocities = ____positionVelocity.setEntityVelocities
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomData = ____roomData.getRoomData
local getRoomDescriptor = ____roomData.getRoomDescriptor
local getRoomDescriptorReadOnly = ____roomData.getRoomDescriptorReadOnly
local getRoomGridIndex = ____roomData.getRoomGridIndex
local getRoomName = ____roomData.getRoomName
local getRoomStageID = ____roomData.getRoomStageID
local getRoomSubType = ____roomData.getRoomSubType
local ____roomTransition = require("lua_modules.isaacscript-common.dist.src.functions.roomTransition")
local reloadRoom = ____roomTransition.reloadRoom
local ____stage = require("lua_modules.isaacscript-common.dist.src.functions.stage")
local getGotoCommand = ____stage.getGotoCommand
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local iRange = ____utils.iRange
--- Helper function to get a read-only copy of the room descriptor for every room on the level. This
-- includes off-grid rooms, such as the Devil Room, and extra-dimensional rooms, if they are
-- generated and exist.
-- 
-- Room descriptors without any data are assumed to be non-existent and are not included.
-- 
-- Under the hood, this is performed by iterating over the `RoomList` from the `Level.GetRooms`
-- method. This is the best way to see if off-grid rooms have been initialized, since it is possible
-- for mods to insert room data at non-official negative room grid indexes.
function ____exports.getReadOnlyRooms(self)
    local level = game:GetLevel()
    local roomList = level:GetRooms()
    local readOnlyRoomDescriptors = {}
    do
        local i = 0
        while i < roomList.Size do
            local readOnlyRoomDescriptor = roomList:Get(i)
            if readOnlyRoomDescriptor ~= nil and readOnlyRoomDescriptor.Data ~= nil then
                readOnlyRoomDescriptors[#readOnlyRoomDescriptors + 1] = readOnlyRoomDescriptor
            end
            i = i + 1
        end
    end
    return readOnlyRoomDescriptors
end
--- Helper function to get the room descriptor for every room on the level that is on the grid. (For
-- example, Devil Rooms are excluded.)
-- 
-- Room descriptors without any data are assumed to be non-existent and are not included.
-- 
-- @param includeExtraDimensionalRooms Optional. On some floors (e.g. Downpour 2, Mines 2),
-- extra-dimensional rooms are automatically be generated. Default
-- is false.
function ____exports.getRoomsInsideGrid(self, includeExtraDimensionalRooms)
    if includeExtraDimensionalRooms == nil then
        includeExtraDimensionalRooms = false
    end
    local level = game:GetLevel()
    local dimensions = includeExtraDimensionalRooms and getAllDimensions(nil) or ({Dimension.CURRENT})
    --- We use a map instead of an array because room shapes occupy more than one room grid index.
    local roomDescriptorMap = __TS__New(Map)
    for ____, dimension in ipairs(dimensions) do
        for ____, roomGridIndex in ipairs(iRange(nil, MAX_LEVEL_GRID_INDEX)) do
            local roomDescriptor = level:GetRoomByIdx(roomGridIndex, dimension)
            if roomDescriptor.Data ~= nil then
                local ptrHash = GetPtrHash(roomDescriptor)
                roomDescriptorMap:set(ptrHash, roomDescriptor)
            end
        end
    end
    return {__TS__Spread(roomDescriptorMap:values())}
end
--- Helper function to get the room descriptor for every room on the level that is outside of the
-- grid (like a Devil Room).
-- 
-- Room descriptors without any data are assumed to be non-existent and are not included.
function ____exports.getRoomsOutsideGrid(self)
    local readOnlyRooms = ____exports.getReadOnlyRooms(nil)
    local readOnlyRoomsOffGrid = __TS__ArrayFilter(
        readOnlyRooms,
        function(____, readOnlyRoomDescriptor) return readOnlyRoomDescriptor.SafeGridIndex < 0 end
    )
    return __TS__ArrayMap(
        readOnlyRoomsOffGrid,
        function(____, readOnlyRoomDescriptor) return getRoomDescriptor(nil, readOnlyRoomDescriptor.SafeGridIndex) end
    )
end
--- Helper function for quickly switching to a new room without playing a particular animation. Use
-- this helper function over invoking the `Game.ChangeRoom` method directly to ensure that you do
-- not forget to set the `LeaveDoor` field and to prevent crashing on invalid room grid indexes.
function ____exports.changeRoom(self, roomGridIndex)
    local level = game:GetLevel()
    local roomData = getRoomData(nil, roomGridIndex)
    if roomData == nil then
        error(("Failed to change the room to grid index " .. tostring(roomGridIndex)) .. " because that room does not exist.")
    end
    level.LeaveDoor = DoorSlot.NO_DOOR_SLOT
    game:ChangeRoom(roomGridIndex)
end
--- Helper function to get the number of rooms that are currently on the floor layout. This does not
-- include off-grid rooms, like the Devil Room.
function ____exports.getNumRooms(self)
    local rooms = ____exports.getRoomsInsideGrid(nil)
    return #rooms
end
--- Helper function to get the room data for a specific room type and variant combination. This is
-- accomplished by using the "goto" console command to load the specified room into the
-- `GridRoom.DEBUG` slot.
-- 
-- Returns undefined if the provided room type and variant combination were not found. (A warning
-- message will also appear on the console, since the "goto" command will fail.)
-- 
-- Note that the side effect of using the "goto" console command is that it will trigger a room
-- transition after a short delay. By default, this function cancels the incoming room transition by
-- using the `Game.StartRoomTransition` method to travel to the same room.
-- 
-- @param roomType The type of room to retrieve.
-- @param roomVariant The room variant to retrieve. (The room variant is the "ID" of the room in
-- Basement Renovator.)
-- @param cancelRoomTransition Optional. Whether to cancel the room transition by using the
-- `Game.StartRoomTransition` method to travel to the same room. Default
-- is true. Set this to false if you are getting the data for many rooms
-- at the same time, and then use the `teleport` helper function when
-- you are finished.
function ____exports.getRoomDataForTypeVariant(self, roomType, roomVariant, cancelRoomTransition)
    if cancelRoomTransition == nil then
        cancelRoomTransition = true
    end
    local command = getGotoCommand(nil, roomType, roomVariant)
    Isaac.ExecuteCommand(command)
    local newRoomData = getRoomData(nil, GridRoom.DEBUG)
    if cancelRoomTransition then
        reloadRoom(nil)
    end
    return newRoomData
end
--- Helper function to get the item pool type for the current room. For example, this returns
-- `ItemPoolType.ItemPoolType.POOL_ANGEL` if you are in an Angel Room.
function ____exports.getRoomItemPoolType(self)
    local itemPool = game:GetItemPool()
    local room = game:GetRoom()
    local roomType = room:GetType()
    local roomSeed = room:GetSpawnSeed()
    return itemPool:GetPoolForRoom(roomType, roomSeed)
end
--- Helper function to get the proper name of a room type.
-- 
-- For example, `RoomType.TREASURE` will return "Treasure Room".
function ____exports.getRoomTypeName(self, roomType)
    return ROOM_TYPE_NAMES[roomType]
end
--- Helper function to get the room descriptor for every room on the level. This includes off-grid
-- rooms, such as the Devil Room.
-- 
-- Room descriptors without any data are assumed to be non-existent and are not included.
-- 
-- - If you want just the rooms inside of the grid, use the `getRoomsInGrid` helper function.
-- - If you want just the rooms outside of the grid, use the `getRoomsOutsideGrid` helper function.
-- 
-- @param includeExtraDimensionalRooms Optional. On some floors (e.g. Downpour 2, Mines 2),
-- extra-dimensional rooms are automatically generated. Default is
-- false.
function ____exports.getRooms(self, includeExtraDimensionalRooms)
    if includeExtraDimensionalRooms == nil then
        includeExtraDimensionalRooms = false
    end
    local roomsInGrid = ____exports.getRoomsInsideGrid(nil, includeExtraDimensionalRooms)
    local roomsOutsideGrid = ____exports.getRoomsOutsideGrid(nil)
    local ____array_0 = __TS__SparseArrayNew(table.unpack(roomsInGrid))
    __TS__SparseArrayPush(
        ____array_0,
        table.unpack(roomsOutsideGrid)
    )
    return {__TS__SparseArraySpread(____array_0)}
end
--- Helper function to get the room descriptor for every room on the level in a specific dimension.
-- This will not include any off-grid rooms, such as the Devil Room.
-- 
-- Room descriptors without any data are assumed to be non-existent and are not included.
function ____exports.getRoomsOfDimension(self, dimension)
    local level = game:GetLevel()
    --- We use a map instead of an array because room shapes occupy more than one room grid index.
    local roomsMap = __TS__New(Map)
    for ____, roomGridIndex in ipairs(iRange(nil, MAX_LEVEL_GRID_INDEX)) do
        local roomDescriptor = level:GetRoomByIdx(roomGridIndex, dimension)
        if roomDescriptor.Data ~= nil then
            local ptrHash = GetPtrHash(roomDescriptor)
            roomsMap:set(ptrHash, roomDescriptor)
        end
    end
    return {__TS__Spread(roomsMap:values())}
end
--- Helper function to determine if the current room shape is equal to `RoomShape.1x2` or
-- `RoomShape.2x1`.
function ____exports.in2x1Room(self)
    local room = game:GetRoom()
    local roomShape = room:GetRoomShape()
    return roomShape == RoomShape.SHAPE_1x2 or roomShape == RoomShape.SHAPE_2x1
end
function ____exports.inAngelShop(self)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local roomSubType = getRoomSubType(nil)
    return roomType == RoomType.ANGEL and roomSubType == asNumber(nil, AngelRoomSubType.SHOP)
end
function ____exports.inBeastRoom(self)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local roomSubType = getRoomSubType(nil)
    return roomType == RoomType.DUNGEON and roomSubType == asNumber(nil, DungeonSubType.BEAST_ROOM)
end
--- Helper function to check if the current room is a boss room for a particular boss. This will only
-- work for bosses that have dedicated boss rooms in the "00.special rooms.stb" file.
function ____exports.inBossRoomOf(self, bossID)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local roomStageID = getRoomStageID(nil)
    local roomSubType = getRoomSubType(nil)
    return roomType == RoomType.BOSS and roomStageID == StageID.SPECIAL_ROOMS and roomSubType == asNumber(nil, bossID)
end
--- Helper function for determining whether the current room is a crawl space. Use this function over
-- comparing to `RoomType.DUNGEON` or `GridRoom.DUNGEON_IDX` since there is a special case of the
-- player being in a boss fight that take place in a dungeon.
function ____exports.inCrawlSpace(self)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local roomSubType = getRoomSubType(nil)
    return roomType == RoomType.DUNGEON and roomSubType == asNumber(nil, DungeonSubType.NORMAL)
end
--- Helper function to detect if the current room is one of the room in the Death Certificate area.
function ____exports.inDeathCertificateArea(self)
    local roomStageID = getRoomStageID(nil)
    local roomSubType = getRoomSubType(nil)
    return roomStageID == StageID.HOME and (roomSubType == asNumber(nil, HomeRoomSubType.DEATH_CERTIFICATE_ENTRANCE) or roomSubType == asNumber(nil, HomeRoomSubType.DEATH_CERTIFICATE_ITEMS))
end
--- Helper function to detect if the current room is a Treasure Room created when entering with a
-- Devil's Crown trinket.
-- 
-- Under the hood, this checks for `RoomDescriptorFlag.DEVIL_TREASURE`.
function ____exports.inDevilsCrownTreasureRoom(self)
    local roomDescriptor = getRoomDescriptorReadOnly(nil)
    return hasFlag(nil, roomDescriptor.Flags, RoomDescriptorFlag.DEVIL_TREASURE)
end
function ____exports.inDoubleTrouble(self)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local roomName = getRoomName(nil)
    return roomType == RoomType.BOSS and __TS__StringIncludes(roomName, "Double Trouble")
end
function ____exports.inGenesisRoom(self)
    local roomGridIndex = getRoomGridIndex(nil)
    return roomGridIndex == asNumber(nil, GridRoom.GENESIS)
end
--- Helper function to check if the current room is either the left Home closet (behind the red door)
-- or the right Home closet (with one random pickup).
-- 
-- Home closets have a unique shape that is different from any other room in the game.
function ____exports.inHomeCloset(self)
    local level = game:GetLevel()
    local stage = level:GetStage()
    local roomSubType = getRoomSubType(nil)
    return stage == LevelStage.HOME and (roomSubType == asNumber(nil, HomeRoomSubType.CLOSET_LEFT) or roomSubType == asNumber(nil, HomeRoomSubType.CLOSET_RIGHT))
end
--- Helper function to determine if the current room shape is one of the four L room shapes.
function ____exports.inLRoom(self)
    local room = game:GetRoom()
    local roomShape = room:GetRoomShape()
    return roomShape == RoomShape.LTL or roomShape == RoomShape.LTR or roomShape == RoomShape.LBL or roomShape == RoomShape.LBR
end
--- Helper function to determine if the current room index is equal to `GridRoom.MEGA_SATAN`.
function ____exports.inMegaSatanRoom(self)
    local roomGridIndex = getRoomGridIndex(nil)
    return roomGridIndex == asNumber(nil, GridRoom.MEGA_SATAN)
end
--- Helper function to determine if the current room is part of the Repentance "escape sequence" in
-- the Mines/Ashpit.
function ____exports.inMineShaft(self)
    local roomStageID = getRoomStageID(nil)
    local roomSubType = getRoomSubType(nil)
    return (roomStageID == StageID.MINES or roomStageID == StageID.ASHPIT) and MINE_SHAFT_ROOM_SUB_TYPE_SET:has(roomSubType)
end
--- Helper function to check if the current room is a miniboss room for a particular miniboss. This
-- will only work for mini-bosses that have dedicated boss rooms in the "00.special rooms.stb" file.
function ____exports.inMinibossRoomOf(self, minibossID)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local roomStageID = getRoomStageID(nil)
    local roomSubType = getRoomSubType(nil)
    return roomType == RoomType.MINI_BOSS and roomStageID == StageID.SPECIAL_ROOMS and roomSubType == asNumber(nil, minibossID)
end
--- Helper function to check if the current room is a "mirror room" in Downpour or Dross. (These
-- rooms are marked with a specific sub-type.)
function ____exports.inMirrorRoom(self)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local roomStageID = getRoomStageID(nil)
    local roomSubType = getRoomSubType(nil)
    return roomType == RoomType.DEFAULT and (roomStageID == StageID.DOWNPOUR or roomStageID == StageID.DROSS) and roomSubType == asNumber(nil, DownpourRoomSubType.MIRROR)
end
--- Helper function to check if the current room matches one of the given room types.
-- 
-- This function is variadic, which means you can pass as many room types as you want to match for.
function ____exports.inRoomType(self, ...)
    local roomTypes = {...}
    local room = game:GetRoom()
    local thisRoomType = room:GetType()
    return __TS__ArraySome(
        roomTypes,
        function(____, roomType) return roomType == thisRoomType end
    )
end
--- Helper function for checking if the current room is a secret exit that leads to a Repentance
-- floor.
function ____exports.inSecretExit(self)
    local roomGridIndex = getRoomGridIndex(nil)
    return roomGridIndex == asNumber(nil, GridRoom.SECRET_EXIT)
end
--- Helper function for checking if the current room is a secret shop (from the Member Card
-- collectible).
-- 
-- Secret shops are simply copies of normal shops, but with the backdrop of a secret room. In other
-- words, they will have the same room type, room variant, and room sub-type of a normal shop. Thus,
-- the only way to detect them is by using the grid index.
function ____exports.inSecretShop(self)
    local roomGridIndex = getRoomGridIndex(nil)
    return roomGridIndex == asNumber(nil, GridRoom.SECRET_SHOP)
end
--- Helper function to determine whether or not the current room is the starting room of a floor. It
-- only returns true for the starting room of the primary dimension (meaning that being in the
-- starting room of the mirror world does not count).
function ____exports.inStartingRoom(self)
    local level = game:GetLevel()
    local startingRoomGridIndex = level:GetStartingRoomIndex()
    local roomGridIndex = getRoomGridIndex(nil)
    return roomGridIndex == startingRoomGridIndex and inDimension(nil, Dimension.MAIN)
end
--- Helper function to loop through every room on the floor and see if it has been cleared.
-- 
-- This function will only check rooms inside the gird and inside the current dimension.
-- 
-- @param onlyCheckRoomTypes Optional. A whitelist of room types. If specified, room types not in
-- the array will be ignored. If not specified, then all rooms will be
-- checked. Undefined by default.
function ____exports.isAllRoomsClear(self, onlyCheckRoomTypes)
    local rooms = ____exports.getRoomsInsideGrid(nil)
    local matchingRooms
    if onlyCheckRoomTypes == nil then
        matchingRooms = rooms
    else
        local roomTypeWhitelist = __TS__New(Set, onlyCheckRoomTypes)
        matchingRooms = __TS__ArrayFilter(
            rooms,
            function(____, roomDescriptor) return roomDescriptor.Data ~= nil and roomTypeWhitelist:has(roomDescriptor.Data.Type) end
        )
    end
    return __TS__ArrayEvery(
        matchingRooms,
        function(____, roomDescriptor) return roomDescriptor.Clear end
    )
end
--- If the `Room.Update` method is called in a `POST_NEW_ROOM` callback, then some entities will
-- slide around (such as the player). Since those entity velocities are already at zero, setting
-- them to zero will have no effect. Thus, a generic solution is to record all of the entity
-- positions/velocities before updating the room, and then restore those positions/velocities.
function ____exports.roomUpdateSafe(self)
    local room = game:GetRoom()
    local entities = getEntities(nil)
    local entityPositions = getEntityPositions(nil, entities)
    local entityVelocities = getEntityVelocities(nil, entities)
    room:Update()
    setEntityPositions(nil, entityPositions, entities)
    setEntityVelocities(nil, entityVelocities, entities)
end
--- Helper function to set the backdrop (i.e. background) of the current room.
function ____exports.setBackdrop(self, backdropType)
    game:ShowHallucination(0, backdropType)
    sfxManager:Stop(SoundEffect.DEATH_CARD)
end
--- Helper function to convert an uncleared room to a cleared room in the `POST_NEW_ROOM` callback.
-- This is useful because if enemies are removed in this callback, a room drop will be awarded and
-- the doors will start closed and then open.
function ____exports.setRoomCleared(self)
    local room = game:GetRoom()
    local roomClear = room:IsClear()
    if roomClear then
        return
    end
    room:SetClear(true)
    for ____, door in ipairs(getDoors(nil)) do
        do
            if isHiddenSecretRoomDoor(nil, door) then
                goto __continue55
            end
            openDoorFast(nil, door)
            door.ExtraVisible = false
        end
        ::__continue55::
    end
    sfxManager:Stop(SoundEffect.DOOR_HEAVY_OPEN)
    game:ShakeScreen(0)
end
--- Helper function to emulate what happens when you bomb an Angel Statue or push a Reward Plate that
-- spawns an NPC.
function ____exports.setRoomUncleared(self)
    local room = game:GetRoom()
    room:SetClear(false)
    closeAllDoors(nil)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomTypeNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
____exports.ROOM_TYPE_NAMES = {
    [RoomType.DEFAULT] = "default room",
    [RoomType.SHOP] = "shop",
    [RoomType.ERROR] = "I AM ERROR Room",
    [RoomType.TREASURE] = "Treasure Room",
    [RoomType.BOSS] = "Boss Room",
    [RoomType.MINI_BOSS] = "Miniboss Room",
    [RoomType.SECRET] = "Secret Room",
    [RoomType.SUPER_SECRET] = "Super Secret Room",
    [RoomType.ARCADE] = "Arcade",
    [RoomType.CURSE] = "Curse Room",
    [RoomType.CHALLENGE] = "Challenge Room",
    [RoomType.LIBRARY] = "Library",
    [RoomType.SACRIFICE] = "Sacrifice Room",
    [RoomType.DEVIL] = "Devil Room",
    [RoomType.ANGEL] = "Angel Room",
    [RoomType.DUNGEON] = "Crawl Space",
    [RoomType.BOSS_RUSH] = "Boss Rush",
    [RoomType.CLEAN_BEDROOM] = "Clean Bedroom",
    [RoomType.DIRTY_BEDROOM] = "Dirty Bedroom",
    [RoomType.CHEST] = "Chest Room",
    [RoomType.DICE] = "Dice Room",
    [RoomType.BLACK_MARKET] = "Black Market",
    [RoomType.GREED_EXIT] = "Greed Exit Room",
    [RoomType.PLANETARIUM] = "Planetarium",
    [RoomType.TELEPORTER] = "Teleporter Room",
    [RoomType.TELEPORTER_EXIT] = "Teleporter Exit Room",
    [RoomType.SECRET_EXIT] = "Secret Exit",
    [RoomType.BLUE] = "Blue Room",
    [RoomType.ULTRA_SECRET] = "Ultra Secret Room"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.mineShaftRoomSubTypesSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local MinesRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.MinesRoomSubType
____exports.MINE_SHAFT_ROOM_SUB_TYPE_SET = __TS__New(Set, {
    MinesRoomSubType.MINESHAFT_ENTRANCE,
    MinesRoomSubType.MINESHAFT_LOBBY,
    MinesRoomSubType.MINESHAFT_KNIFE_PIECE,
    MinesRoomSubType.MINESHAFT_ROOM_PRE_CHASE,
    MinesRoomSubType.MINESHAFT_ROOM_POST_CHASE
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.dimensions"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Dimension = ____isaac_2Dtypescript_2Ddefinitions.Dimension
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local NUM_DIMENSIONS = ____constants.NUM_DIMENSIONS
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomGridIndex = ____roomData.getRoomGridIndex
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local eRange = ____utils.eRange
--- Helper function to get an array with every valid `Dimension` (not including `Dimension.CURRENT`).
function ____exports.getAllDimensions(self)
    return eRange(nil, NUM_DIMENSIONS)
end
--- Helper function to get the current dimension. Most of the time, this will be `Dimension.MAIN`,
-- but it can change if e.g. the player is in the mirror world of Downpour/Dross.
function ____exports.getDimension(self)
    local level = game:GetLevel()
    local roomGridIndex = getRoomGridIndex(nil)
    local roomDescription = level:GetRoomByIdx(roomGridIndex, Dimension.CURRENT)
    local currentRoomHash = GetPtrHash(roomDescription)
    for ____, dimension in ipairs(____exports.getAllDimensions(nil)) do
        local dimensionRoomDescription = level:GetRoomByIdx(roomGridIndex, dimension)
        local dimensionRoomHash = GetPtrHash(dimensionRoomDescription)
        if dimensionRoomHash == currentRoomHash then
            return dimension
        end
    end
    error("Failed to get the current dimension.")
end
function ____exports.inDimension(self, dimension)
    return dimension == ____exports.getDimension(nil)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.positionVelocity"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArraySome = ____lualib.__TS__ArraySome
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant
local HeavenLightDoorSubType = ____isaac_2Dtypescript_2Ddefinitions.HeavenLightDoorSubType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local DISTANCE_OF_GRID_TILE = ____constants.DISTANCE_OF_GRID_TILE
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntities = ____entities.getEntities
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getEffects = ____entitiesSpecific.getEffects
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getPlayers = ____playerIndex.getPlayers
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getPlayerCloserThan = ____players.getPlayerCloserThan
local MAX_FIND_FREE_POSITION_ATTEMPTS = 100
function ____exports.anyEntityCloserThan(self, entities, position, distance)
    return __TS__ArraySome(
        entities,
        function(____, entity) return position:Distance(entity.Position) <= distance end
    )
end
--- Iterates over all players and checks if any player is close enough to the specified position.
-- 
-- Note that this function does not consider players with a non-undefined parent, since they are not
-- real players (e.g. the Strawman Keeper).
function ____exports.anyPlayerCloserThan(self, position, distance)
    local players = getPlayers(nil)
    return __TS__ArraySome(
        players,
        function(____, player) return player.Position:Distance(position) <= distance end
    )
end
--- Helper function to get a room position that is not overlapping with a grid entity, a heaven door,
-- or a player. The `Room.FindFreePickupSpawnPosition` method will return locations that overlap
-- with heaven doors and partially overlap with players, if the thing being spawned is bigger than a
-- tile (like a Blood Donation Machine). Use this function instead if you want to account for those
-- specific situations.
-- 
-- @param startingPosition The position to start searching from. If this position is not overlapping
-- with anything, then it will be returned.
-- @param avoidActiveEntities Optional. Default is false.
-- @param minimumDistance Optional. If specified, will ensure that the randomly generated position
-- is equal to or greater than the distance provided.
function ____exports.findFreePosition(self, startingPosition, avoidActiveEntities, minimumDistance)
    if avoidActiveEntities == nil then
        avoidActiveEntities = false
    end
    local room = game:GetRoom()
    local heavenDoors = getEffects(nil, EffectVariant.HEAVEN_LIGHT_DOOR, HeavenLightDoorSubType.HEAVEN_DOOR)
    do
        local i = 0
        while i < MAX_FIND_FREE_POSITION_ATTEMPTS do
            do
                local position = room:FindFreePickupSpawnPosition(startingPosition, i, avoidActiveEntities)
                local closePlayer = getPlayerCloserThan(nil, position, DISTANCE_OF_GRID_TILE)
                if closePlayer ~= nil then
                    goto __continue7
                end
                local isCloseHeavenDoor = ____exports.anyEntityCloserThan(nil, heavenDoors, position, DISTANCE_OF_GRID_TILE)
                if isCloseHeavenDoor then
                    goto __continue7
                end
                if minimumDistance ~= nil then
                    local distance = startingPosition:Distance(position)
                    if distance < minimumDistance then
                        goto __continue7
                    end
                end
                return position
            end
            ::__continue7::
            i = i + 1
        end
    end
    return room:FindFreePickupSpawnPosition(startingPosition)
end
--- Helper function to get a map containing the positions of every entity in the current room.
-- 
-- This is useful for rewinding entity positions at a later time. Also see `setEntityPositions`.
-- 
-- @param entities Optional. If provided, will only get the positions of the provided entities. Use
-- this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
-- multiple times.
function ____exports.getEntityPositions(self, entities)
    if entities == nil then
        entities = getEntities(nil)
    end
    local entityPositions = __TS__New(Map)
    for ____, entity in ipairs(entities) do
        local ptrHash = GetPtrHash(entity)
        entityPositions:set(ptrHash, entity.Position)
    end
    return entityPositions
end
--- Helper function to get a map containing the velocities of every entity in the current room.
-- 
-- This is useful for rewinding entity velocities at a later time. Also see `setEntityVelocities`.
-- 
-- @param entities Optional. If provided, will only get the velocities of the provided entities. Use
-- this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
-- multiple times.
function ____exports.getEntityVelocities(self, entities)
    if entities == nil then
        entities = getEntities(nil)
    end
    local entityVelocities = __TS__New(Map)
    for ____, entity in ipairs(entities) do
        local ptrHash = GetPtrHash(entity)
        entityVelocities:set(ptrHash, entity.Velocity)
    end
    return entityVelocities
end
--- Helper function to set the position of every entity in the room based on a map of positions. If
-- an entity is found that does not have matching element in the provided map, then that entity will
-- be skipped.
-- 
-- This function is useful for rewinding entity positions at a later time. Also see
-- `getEntityPositions`.
-- 
-- @param entityPositions The map providing the positions for every entity.
-- @param entities Optional. If provided, will only set the positions of the provided entities. Use
-- this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
-- multiple times.
function ____exports.setEntityPositions(self, entityPositions, entities)
    if entities == nil then
        entities = getEntities(nil)
    end
    for ____, entity in ipairs(entities) do
        local ptrHash = GetPtrHash(entity)
        local entityPosition = entityPositions:get(ptrHash)
        if entityPosition ~= nil then
            entity.Position = entityPosition
        end
    end
end
--- Helper function to set the velocity of every entity in the room based on a map of velocities. If
-- an entity is found that does not have matching element in the provided map, then that entity will
-- be skipped.
-- 
-- This function is useful for rewinding entity velocities at a later time. Also see
-- `getEntityVelocities`.
-- 
-- @param entityVelocities The map providing the velocities for every entity.
-- @param entities Optional. If provided, will only set the velocities of the provided entities. Use
-- this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
-- multiple times.
function ____exports.setEntityVelocities(self, entityVelocities, entities)
    if entities == nil then
        entities = getEntities(nil)
    end
    for ____, entity in ipairs(entities) do
        local ptrHash = GetPtrHash(entity)
        local entityVelocity = entityVelocities:get(ptrHash)
        if entityVelocity ~= nil then
            entity.Velocity = entityVelocity
        end
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.roomTransition"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
local RoomTransitionAnim = ____isaac_2Dtypescript_2Ddefinitions.RoomTransitionAnim
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomData = ____roomData.getRoomData
local getRoomGridIndex = ____roomData.getRoomGridIndex
--- Helper function to change the current room. It can be used for both teleportation and "normal"
-- room transitions, depending on what is passed for the `direction` and `roomTransitionAnim`
-- arguments.
-- 
-- Use this function instead of invoking the `Game.StartRoomTransition` method directly so that:
-- - you do not forget to set the `Level.LeaveDoor` field
-- - to prevent crashing on invalid room grid indexes
-- 
-- Note that if the current floor has Curse of the Maze, it may redirect the intended teleport.
-- 
-- @param roomGridIndex The room grid index of the destination room.
-- @param direction Optional. Default is `Direction.NO_DIRECTION`.
-- @param roomTransitionAnim Optional. Default is `RoomTransitionAnim.TELEPORT`.
function ____exports.teleport(self, roomGridIndex, direction, roomTransitionAnim)
    if direction == nil then
        direction = Direction.NO_DIRECTION
    end
    if roomTransitionAnim == nil then
        roomTransitionAnim = RoomTransitionAnim.TELEPORT
    end
    local level = game:GetLevel()
    local roomData = getRoomData(nil, roomGridIndex)
    if roomData == nil then
        error(("Failed to change the room to grid index " .. tostring(roomGridIndex)) .. " because that room does not exist.")
    end
    level.LeaveDoor = DoorSlot.NO_DOOR_SLOT
    game:StartRoomTransition(roomGridIndex, direction, roomTransitionAnim)
end
--- Helper function to reload the current room using `Game.StartRoomTransition`.
-- 
-- This is useful for canceling the "goto" console command or to make the `Level.SetStage` method
-- take effect.
function ____exports.reloadRoom(self)
    local roomGridIndex = getRoomGridIndex(nil)
    ____exports.teleport(nil, roomGridIndex, Direction.NO_DIRECTION, RoomTransitionAnim.FADE)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.stage"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local GameStateFlag = ____isaac_2Dtypescript_2Ddefinitions.GameStateFlag
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____roomTypeGotoPrefixes = require("lua_modules.isaacscript-common.dist.src.objects.roomTypeGotoPrefixes")
local ROOM_TYPE_GOTO_PREFIXES = ____roomTypeGotoPrefixes.ROOM_TYPE_GOTO_PREFIXES
local ____stageTypeSuffixes = require("lua_modules.isaacscript-common.dist.src.objects.stageTypeSuffixes")
local STAGE_TYPE_SUFFIXES = ____stageTypeSuffixes.STAGE_TYPE_SUFFIXES
local ____stageTypeToLetter = require("lua_modules.isaacscript-common.dist.src.objects.stageTypeToLetter")
local STAGE_TYPE_TO_LETTER = ____stageTypeToLetter.STAGE_TYPE_TO_LETTER
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asLevelStage = ____types.asLevelStage
local asNumber = ____types.asNumber
--- Helper function to check if the provided stage type is equal to `StageType.REPENTANCE` or
-- `StageType.REPENTANCE_B`.
function ____exports.isRepentanceStage(self, stageType)
    return stageType == StageType.REPENTANCE or stageType == StageType.REPENTANCE_B
end
--- Helper function to check if the current stage type is equal to `StageType.REPENTANCE` or
-- `StageType.REPENTANCE_B`.
function ____exports.onRepentanceStage(self)
    local level = game:GetLevel()
    local stageType = level:GetStageType()
    return ____exports.isRepentanceStage(nil, stageType)
end
--- Helper function to convert a numerical `StageType` into the letter suffix supplied to the "stage"
-- console command. For example, `StageType.REPENTANCE` is the stage type for Downpour, and the
-- console command to go to Downpour is "stage 1c", so this function converts `StageType.REPENTANCE`
-- to "c".
function ____exports.stageTypeToLetter(self, stageType)
    return STAGE_TYPE_TO_LETTER[stageType]
end
--- Helper function that calculates what the stage type should be for the provided stage. This
-- emulates what the game's internal code does.
function ____exports.calculateStageType(self, stage)
    local seeds = game:GetSeeds()
    local stageSeed = seeds:GetStageSeed(stage)
    if stageSeed % 2 == 0 then
        return StageType.WRATH_OF_THE_LAMB
    end
    if stageSeed % 3 == 0 then
        return StageType.AFTERBIRTH
    end
    return StageType.ORIGINAL
end
--- Helper function that calculates what the Repentance stage type should be for the provided stage.
-- This emulates what the game's internal code does.
function ____exports.calculateStageTypeRepentance(self, stage)
    if stage == LevelStage.WOMB_1 or stage == LevelStage.WOMB_2 then
        return StageType.REPENTANCE
    end
    local seeds = game:GetSeeds()
    local adjustedStage = asLevelStage(
        nil,
        asNumber(nil, stage) + 1
    )
    local stageSeed = seeds:GetStageSeed(adjustedStage)
    local halfStageSeed = math.floor(stageSeed / 2)
    if halfStageSeed % 2 == 0 then
        return StageType.REPENTANCE_B
    end
    return StageType.REPENTANCE
end
--- Helper function to account for Repentance floors being offset by 1. For example, Downpour 2 is
-- the third level of the run, but the game considers it to have a stage of 2. This function will
-- consider Downpour 2 to have a stage of 3.
function ____exports.getEffectiveStage(self)
    local level = game:GetLevel()
    local stage = level:GetStage()
    if ____exports.onRepentanceStage(nil) then
        return asNumber(nil, stage) + 1
    end
    return stage
end
--- Helper function to get the corresponding "goto" console command that would correspond to the
-- provided room type and room variant.
function ____exports.getGotoCommand(self, roomType, roomVariant)
    local prefix = ROOM_TYPE_GOTO_PREFIXES[roomType]
    return (("goto " .. prefix) .. ".") .. tostring(roomVariant)
end
--- Alias for the `Level.GetStage` method.
function ____exports.getStage(self)
    local level = game:GetLevel()
    return level:GetStage()
end
--- Alias for the `Level.GetStageType` method.
function ____exports.getStageType(self)
    local level = game:GetLevel()
    return level:GetStageType()
end
--- Helper function to directly warp to a specific stage using the "stage" console command.
function ____exports.goToStage(self, stage, stageType)
    local stageTypeLetterSuffix = ____exports.stageTypeToLetter(nil, stageType)
    local command = ("stage " .. tostring(stage)) .. stageTypeLetterSuffix
    Isaac.ExecuteCommand(command)
end
function ____exports.onAscent(self)
    return game:GetStateFlag(GameStateFlag.BACKWARDS_PATH)
end
function ____exports.onCathedral(self)
    local level = game:GetLevel()
    local stage = level:GetStage()
    local stageType = level:GetStageType()
    return stage == LevelStage.SHEOL_CATHEDRAL and stageType == StageType.WRATH_OF_THE_LAMB
end
function ____exports.onChest(self)
    local level = game:GetLevel()
    local stage = level:GetStage()
    local stageType = level:GetStageType()
    return stage == LevelStage.DARK_ROOM_CHEST and stageType == StageType.WRATH_OF_THE_LAMB
end
function ____exports.onDarkRoom(self)
    local level = game:GetLevel()
    local stage = level:GetStage()
    local stageType = level:GetStageType()
    return stage == LevelStage.DARK_ROOM_CHEST and stageType == StageType.ORIGINAL
end
--- Returns whether or not the player is on the "final floor" of the particular run. The final floor
-- is defined as one that prevents the player from entering the I AM ERROR room on.
-- 
-- For example, when using Undefined on The Chest, it has a 50% chance of teleporting the player to
-- the Secret Room and a 50% chance of teleporting the player to the Super Secret Room, because the
-- I AM ERROR room is never entered into the list of possibilities.
function ____exports.onFinalFloor(self)
    local level = game:GetLevel()
    local stage = level:GetStage()
    return stage == LevelStage.DARK_ROOM_CHEST or stage == LevelStage.THE_VOID or stage == LevelStage.HOME or stage == LevelStage.WOMB_2 and ____exports.onRepentanceStage(nil)
end
--- Returns whether or not the player is on the first floor of the particular run.
-- 
-- This is tricky to determine because we have to handle the cases of Downpour/Dross 1 not being the
-- first floor and The Ascent.
function ____exports.onFirstFloor(self)
    local effectiveStage = ____exports.getEffectiveStage(nil)
    local isOnAscent = ____exports.onAscent(nil)
    return effectiveStage == 1 and not isOnAscent
end
function ____exports.onSheol(self)
    local level = game:GetLevel()
    local stage = level:GetStage()
    local stageType = level:GetStageType()
    return stage == LevelStage.SHEOL_CATHEDRAL and stageType == StageType.ORIGINAL
end
--- Helper function to warp to a new stage/level.
-- 
-- @param stage The stage number to warp to.
-- @param stageType The stage type to warp to.
-- @param reseed Optional. Whether or not to reseed the floor upon arrival. Default is false. Set
-- this to true if you are warping to the same stage but a different stage type (or
-- else the floor layout will be identical to the old floor).
function ____exports.setStage(self, stage, stageType, reseed)
    if reseed == nil then
        reseed = false
    end
    local stageTypeSuffix = STAGE_TYPE_SUFFIXES[stageType]
    local command = ("stage " .. tostring(stage)) .. stageTypeSuffix
    Isaac.ExecuteCommand(command)
    if reseed then
        Isaac.ExecuteCommand("reseed")
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.roomTypeGotoPrefixes"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
____exports.ROOM_TYPE_GOTO_PREFIXES = {
    [RoomType.DEFAULT] = "s.default",
    [RoomType.SHOP] = "s.shop",
    [RoomType.ERROR] = "s.error",
    [RoomType.TREASURE] = "s.treasure",
    [RoomType.BOSS] = "s.boss",
    [RoomType.MINI_BOSS] = "s.miniboss",
    [RoomType.SECRET] = "s.secret",
    [RoomType.SUPER_SECRET] = "s.supersecret",
    [RoomType.ARCADE] = "s.arcade",
    [RoomType.CURSE] = "s.curse",
    [RoomType.CHALLENGE] = "s.challenge",
    [RoomType.LIBRARY] = "s.library",
    [RoomType.SACRIFICE] = "s.sacrifice",
    [RoomType.DEVIL] = "s.devil",
    [RoomType.ANGEL] = "s.angel",
    [RoomType.DUNGEON] = "s.itemdungeon",
    [RoomType.BOSS_RUSH] = "s.bossrush",
    [RoomType.CLEAN_BEDROOM] = "s.isaacs",
    [RoomType.DIRTY_BEDROOM] = "s.barren",
    [RoomType.CHEST] = "s.chest",
    [RoomType.DICE] = "s.dice",
    [RoomType.BLACK_MARKET] = "s.blackmarket",
    [RoomType.GREED_EXIT] = "s.greedexit",
    [RoomType.PLANETARIUM] = "s.planetarium",
    [RoomType.TELEPORTER] = "s.teleporter",
    [RoomType.TELEPORTER_EXIT] = "s.teleporterexit",
    [RoomType.SECRET_EXIT] = "s.secretexit",
    [RoomType.BLUE] = "s.blue",
    [RoomType.ULTRA_SECRET] = "s.ultrasecret"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.stageTypeSuffixes"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
____exports.STAGE_TYPE_SUFFIXES = {
    [StageType.ORIGINAL] = "",
    [StageType.WRATH_OF_THE_LAMB] = "a",
    [StageType.AFTERBIRTH] = "b",
    [StageType.GREED_MODE] = "",
    [StageType.REPENTANCE] = "c",
    [StageType.REPENTANCE_B] = "d"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.stageTypeToLetter"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
____exports.STAGE_TYPE_TO_LETTER = {
    [StageType.ORIGINAL] = "",
    [StageType.WRATH_OF_THE_LAMB] = "a",
    [StageType.AFTERBIRTH] = "b",
    [StageType.GREED_MODE] = "",
    [StageType.REPENTANCE] = "c",
    [StageType.REPENTANCE_B] = "d"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.logMisc"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__Spread = ____lualib.__TS__Spread
local __TS__ArraySort = ____lualib.__TS__ArraySort
local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach
local Set = ____lualib.Set
local __TS__TypeOf = ____lualib.__TS__TypeOf
local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag
local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
local GameStateFlag = ____isaac_2Dtypescript_2Ddefinitions.GameStateFlag
local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom
local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType
local LevelStateFlag = ____isaac_2Dtypescript_2Ddefinitions.LevelStateFlag
local ProjectileFlag = ____isaac_2Dtypescript_2Ddefinitions.ProjectileFlag
local SeedEffect = ____isaac_2Dtypescript_2Ddefinitions.SeedEffect
local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect
local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag
local UseFlag = ____isaac_2Dtypescript_2Ddefinitions.UseFlag
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local sfxManager = ____cachedClasses.sfxManager
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local arrayToString = ____array.arrayToString
local isArray = ____array.isArray
local ____collectibles = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
local getCollectibleName = ____collectibles.getCollectibleName
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntityID = ____entities.getEntityID
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumEntries = ____enums.getEnumEntries
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass")
local getIsaacAPIClassName = ____isaacAPIClass.getIsaacAPIClassName
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local ____playerHealth = require("lua_modules.isaacscript-common.dist.src.functions.playerHealth")
local getPlayerHealth = ____playerHealth.getPlayerHealth
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getEffectsList = ____players.getEffectsList
local getPlayerName = ____players.getPlayerName
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomData = ____roomData.getRoomData
local getRoomGridIndex = ____roomData.getRoomGridIndex
local getRoomListIndex = ____roomData.getRoomListIndex
local ____set = require("lua_modules.isaacscript-common.dist.src.functions.set")
local combineSets = ____set.combineSets
local getSortedSetValues = ____set.getSortedSetValues
local ____table = require("lua_modules.isaacscript-common.dist.src.functions.table")
local iterateTableInOrder = ____table.iterateTableInOrder
local ____trinkets = require("lua_modules.isaacscript-common.dist.src.functions.trinkets")
local getTrinketName = ____trinkets.getTrinketName
local ____tstlClass = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
local isDefaultMap = ____tstlClass.isDefaultMap
local isTSTLMap = ____tstlClass.isTSTLMap
local isTSTLSet = ____tstlClass.isTSTLSet
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isTable = ____types.isTable
local isUserdata = ____types.isUserdata
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local printConsole = ____utils.printConsole
local ____vector = require("lua_modules.isaacscript-common.dist.src.functions.vector")
local vectorToString = ____vector.vectorToString
--- Helper function for printing out every flag that is turned on. Useful when debugging.
function ____exports.logFlags(self, flags, flagEnum, description)
    if description == nil then
        description = ""
    end
    if description ~= "" then
        description = "flag"
    end
    log(
        nil,
        (("Logging " .. description) .. " values for: ") .. tostring(flags)
    )
    local hasNoFlags = true
    for ____, ____value in ipairs(getEnumEntries(nil, flagEnum)) do
        local key = ____value[1]
        local value = ____value[2]
        if hasFlag(nil, flags, value) then
            log(
                nil,
                ((("  Has flag: " .. key) .. " (") .. tostring(value)) .. ")"
            )
            hasNoFlags = false
        end
    end
    if hasNoFlags then
        log(nil, "  n/a (no flags)")
    end
end
function ____exports.logArray(self, array)
    if not isArray(nil, array) then
        log(nil, "Tried to log an array, but the given object was not an array.")
        return
    end
    local arrayString = arrayToString(nil, array)
    log(nil, "Array: " .. arrayString)
end
function ____exports.logCollectibleTypes(self, collectibleTypes)
    log(nil, "Collectibles:")
    local i = 1
    for ____, collectibleType in ipairs(collectibleTypes) do
        local collectibleName = getCollectibleName(nil, collectibleType)
        log(
            nil,
            ((((tostring(i) .. ") ") .. collectibleName) .. " (") .. tostring(collectibleType)) .. ")"
        )
        i = i + 1
    end
end
function ____exports.logColor(self, color)
    log(
        nil,
        (((((((((((("Color: R" .. tostring(color.R)) .. ", G") .. tostring(color.G)) .. ", B") .. tostring(color.B)) .. ", A") .. tostring(color.A)) .. ", RO") .. tostring(color.RO)) .. ", BO") .. tostring(color.BO)) .. ", GO") .. tostring(color.GO)
    )
end
--- Helper function for printing out every damage flag that is turned on. Useful when debugging.
function ____exports.logDamageFlags(self, flags)
    ____exports.logFlags(nil, flags, DamageFlag, "damage")
end
--- Helper function for printing out every entity flag that is turned on. Useful when debugging.
function ____exports.logEntityFlags(self, flags)
    ____exports.logFlags(nil, flags, EntityFlag, "entity")
end
function ____exports.logEntityID(self, entity)
    local entityID = getEntityID(nil, entity)
    log(nil, "Entity: " .. entityID)
end
--- Helper function to log an error message and also print it to the console for better visibility.
-- 
-- This is useful in situations where using the `error` function would be dangerous (since it
-- prevents all of the subsequent code in the callback from running).
function ____exports.logError(self, msg)
    local errorMsg = "Error: " .. msg
    log(nil, errorMsg)
    printConsole(nil, errorMsg)
end
--- Helper function for printing out every game state flag that is turned on. Useful when debugging.
function ____exports.logGameStateFlags(self)
    log(nil, "Logging game state flags:")
    local gameStateFlagEntries = getEnumEntries(nil, GameStateFlag)
    local hasNoFlags = true
    for ____, ____value in ipairs(gameStateFlagEntries) do
        local key = ____value[1]
        local gameStateFlag = ____value[2]
        local flagValue = game:GetStateFlag(gameStateFlag)
        if flagValue then
            log(
                nil,
                ((("  Has flag: " .. key) .. " (") .. tostring(gameStateFlag)) .. ")"
            )
            hasNoFlags = false
        end
    end
    if hasNoFlags then
        log(nil, "  n/a (no flags)")
    end
end
function ____exports.logKColor(self, kColor)
    log(
        nil,
        (((((("Color: R" .. tostring(kColor.Red)) .. ", G") .. tostring(kColor.Green)) .. ", B") .. tostring(kColor.Blue)) .. ", A") .. tostring(kColor.Alpha)
    )
end
--- Helper function for printing out every level state flag that is turned on. Useful when debugging.
function ____exports.logLevelStateFlags(self)
    local level = game:GetLevel()
    local levelStateFlagEntries = getEnumEntries(nil, LevelStateFlag)
    log(nil, "Logging level state flags:")
    local hasNoFlags = true
    for ____, ____value in ipairs(levelStateFlagEntries) do
        local key = ____value[1]
        local levelStateFlag = ____value[2]
        local flagValue = level:GetStateFlag(levelStateFlag)
        if flagValue then
            log(
                nil,
                ((("  Has flag: " .. key) .. " (") .. tostring(levelStateFlag)) .. ")"
            )
            hasNoFlags = false
        end
    end
    if hasNoFlags then
        log(nil, "  n/a (no flags)")
    end
end
function ____exports.logMap(self, map)
    if not isTSTLMap(nil, map) and not isDefaultMap(nil, map) then
        log(nil, "Tried to log a TSTL map, but the given object was not a TSTL map.")
        return
    end
    log(nil, "Printing out a TSTL map:")
    local mapKeys = {__TS__Spread(map:keys())}
    __TS__ArraySort(mapKeys)
    for ____, key in ipairs(mapKeys) do
        local value = map:get(key)
        log(
            nil,
            (("  " .. tostring(key)) .. " --> ") .. tostring(value)
        )
    end
    log(
        nil,
        "  The size of the map was: " .. tostring(map.size)
    )
end
function ____exports.logPlayerEffects(self, player)
    local effects = getEffectsList(nil, player)
    log(nil, "Logging player effects:")
    if #effects == 0 then
        log(nil, "  n/a (no effects)")
        return
    end
    __TS__ArrayForEach(
        effects,
        function(____, effect, i)
            local effectDescription
            if effect.Item:IsCollectible() then
                local collectibleName = getCollectibleName(nil, effect.Item.ID)
                effectDescription = "Collectible: " .. collectibleName
            elseif effect.Item:IsTrinket() then
                local trinketName = getTrinketName(nil, effect.Item.ID)
                effectDescription = "Trinket: " .. trinketName
            elseif effect.Item:IsNull() then
                effectDescription = "Null item: " .. tostring(effect.Item.ID)
            else
                effectDescription = "Unknown type of effect: " .. tostring(effect.Item.ID)
            end
            log(
                nil,
                ((((("  " .. tostring(i + 1)) .. ") ") .. effectDescription) .. " (x") .. tostring(effect.Count)) .. ")"
            )
        end
    )
end
function ____exports.logPlayerHealth(self, player)
    local playerName = getPlayerName(nil, player)
    local playerHealth = getPlayerHealth(nil, player)
    log(nil, ("Player health for " .. playerName) .. ":")
    log(
        nil,
        "  Max hearts: " .. tostring(playerHealth.maxHearts)
    )
    log(
        nil,
        "  Hearts: " .. tostring(playerHealth.hearts)
    )
    log(
        nil,
        "  Eternal hearts: " .. tostring(playerHealth.eternalHearts)
    )
    log(
        nil,
        "  Soul hearts: " .. tostring(playerHealth.soulHearts)
    )
    log(
        nil,
        "  Bone hearts: " .. tostring(playerHealth.boneHearts)
    )
    log(
        nil,
        "  Golden hearts: " .. tostring(playerHealth.goldenHearts)
    )
    log(
        nil,
        "  Rotten hearts: " .. tostring(playerHealth.rottenHearts)
    )
    log(
        nil,
        "  Broken hearts: " .. tostring(playerHealth.brokenHearts)
    )
    log(
        nil,
        "  Soul charges: " .. tostring(playerHealth.soulCharges)
    )
    log(
        nil,
        "  Blood charges: " .. tostring(playerHealth.bloodCharges)
    )
    log(nil, "  Soul heart types: [")
    for ____, soulHeartType in ipairs(playerHealth.soulHeartTypes) do
        log(
            nil,
            "    HeartSubType." .. tostring(HeartSubType[soulHeartType])
        )
    end
    log(nil, "  ]")
end
--- Helper function for printing out every projectile flag that is turned on. Useful when debugging.
function ____exports.logProjectileFlags(self, flags)
    ____exports.logFlags(nil, flags, ProjectileFlag, "projectile")
end
--- Helper function for logging information about the current room.
function ____exports.logRoom(self)
    local room = game:GetRoom()
    local bossID = room:GetBossID()
    local roomGridIndex = getRoomGridIndex(nil)
    local roomListIndex = getRoomListIndex(nil)
    local roomData = getRoomData(nil)
    log(nil, "Current room information:")
    if roomData == nil then
        log(nil, "- Room data is undefined.")
    else
        log(
            nil,
            "- Room stage ID: " .. tostring(roomData.StageID)
        )
        log(
            nil,
            (((("- Type/variant/sub-type: " .. tostring(roomData.Type)) .. ".") .. tostring(roomData.Variant)) .. ".") .. tostring(roomData.Subtype)
        )
        log(nil, "- Name: " .. roomData.Name)
    end
    local roomGridIndexName = GridRoom[roomGridIndex]
    if roomGridIndexName == nil then
        log(
            nil,
            "- Grid index: " .. tostring(roomGridIndex)
        )
    else
        log(
            nil,
            ((("- Grid index: GridRoom." .. roomGridIndexName) .. " (") .. tostring(roomGridIndex)) .. ")"
        )
    end
    log(
        nil,
        "- List index: " .. tostring(roomListIndex)
    )
    log(
        nil,
        "- Boss ID: " .. tostring(bossID)
    )
end
--- Helper function for printing out every seed effect (i.e. Easter Egg) that is turned on for the
-- particular run.
function ____exports.logSeedEffects(self)
    local seeds = game:GetSeeds()
    local seedEffectEntries = getEnumEntries(nil, SeedEffect)
    log(nil, "Logging seed effects:")
    local hasNoSeedEffects = true
    for ____, ____value in ipairs(seedEffectEntries) do
        local key = ____value[1]
        local seedEffect = ____value[2]
        if seeds:HasSeedEffect(seedEffect) then
            log(
                nil,
                ((("  " .. key) .. " (") .. tostring(seedEffect)) .. ")"
            )
            hasNoSeedEffects = false
        end
    end
    if hasNoSeedEffects then
        log(nil, "  n/a (no seed effects)")
    end
end
function ____exports.logSet(self, set)
    if not isTSTLSet(nil, set) then
        log(nil, "Tried to log a TSTL set, but the given object was not a TSTL set.")
        return
    end
    log(nil, "Printing out a TSTL set:")
    local setValues = getSortedSetValues(nil, set)
    for ____, value in ipairs(setValues) do
        log(
            nil,
            "  Value: " .. tostring(value)
        )
    end
    log(
        nil,
        "  The size of the set was: " .. tostring(set.size)
    )
end
--- Helper function for logging every sound effect that is currently playing.
function ____exports.logSounds(self)
    local soundEffects = getEnumEntries(nil, SoundEffect)
    for ____, ____value in ipairs(soundEffects) do
        local key = ____value[1]
        local soundEffect = ____value[2]
        if sfxManager:IsPlaying(soundEffect) then
            log(
                nil,
                ((("Currently playing sound effect: " .. key) .. " (") .. tostring(soundEffect)) .. ")"
            )
        end
    end
end
--- Helper function for logging every key and value of a Lua table. This is a deep log; the function
-- will recursively call itself if it counters a table within a table.
-- 
-- This function will only work on tables that have string keys (because it logs the keys in order,
-- instead of randomly). It will throw a run-time error if it encounters a non-string key.
function ____exports.logTable(self, luaTable, parentTables)
    if parentTables == nil then
        parentTables = 0
    end
    if parentTables == 0 then
        log(nil, "Printing out a Lua table:")
    end
    local numSpaces = (parentTables + 1) * 2
    local indentation = string.rep(
        " ",
        math.floor(numSpaces)
    )
    if not isTable(nil, luaTable) then
        (function(self)
            log(
                nil,
                ((indentation .. "n/a (encountered a variable of type \"") .. __TS__TypeOf(luaTable)) .. "\" instead of a table)"
            )
        end)(nil)
        return
    end
    local numElements = 0
    iterateTableInOrder(
        nil,
        luaTable,
        function(____, key, value)
            log(
                nil,
                ((indentation .. tostring(key)) .. " --> ") .. tostring(value)
            )
            if isTable(nil, value) then
                if key == "__class" then
                    log(nil, indentation .. "  (skipping enumerating this key to avoid infinite recursion)")
                else
                    ____exports.logTable(nil, value, parentTables + 1)
                end
            end
            numElements = numElements + 1
        end
    );
    (function(self)
        log(
            nil,
            (indentation .. "The size of the table was: ") .. tostring(numElements)
        )
    end)(nil)
end
--- Helper function to print out the differences between the entries of two tables. Note that this
-- will only do a shallow comparison.
function ____exports.logTableDifferences(self, table1, table2)
    log(nil, "Comparing two Lua tables:")
    local table1Keys = __TS__ObjectKeys(table1)
    local table1KeysSet = __TS__New(Set, table1Keys)
    local table2Keys = __TS__ObjectKeys(table2)
    local table2KeysSet = __TS__New(Set, table2Keys)
    local keysSet = combineSets(nil, table1KeysSet, table2KeysSet)
    local keys = {__TS__Spread(keysSet:values())}
    __TS__ArraySort(keys)
    for ____, key in ipairs(keys) do
        if not table1KeysSet:has(key) then
            log(
                nil,
                "  Table 1 is missing key: " .. tostring(key)
            )
        elseif not table2KeysSet:has(key) then
            log(
                nil,
                "  Table 2 is missing key: " .. tostring(key)
            )
        else
            local value1 = table1[key]
            local value2 = table2[key]
            if value1 ~= value2 then
                log(
                    nil,
                    ((((("  " .. tostring(key)) .. " --> \"") .. tostring(value1)) .. "\" versus \"") .. tostring(value2)) .. "\""
                )
            end
        end
    end
end
--- Helper function to log the keys of a Lua table. This is not a deep log; only the keys of the
-- top-most table will be logged.
-- 
-- This function is useful for tables that have recursive references.
function ____exports.logTableKeys(self, luaTable)
    log(nil, "Printing out the keys of a Lua table:")
    if not isTable(nil, luaTable) then
        log(
            nil,
            ("  n/a (encountered a variable of type \"" .. __TS__TypeOf(luaTable)) .. "\" instead of a table)"
        )
        return
    end
    local numElements = 0
    iterateTableInOrder(
        nil,
        luaTable,
        function(____, key)
            log(
                nil,
                tostring(key)
            )
            numElements = numElements + 1
        end
    )
    log(
        nil,
        "  The size of the table was: " .. tostring(numElements)
    )
end
--- Helper function for printing out every tear flag that is turned on. Useful when debugging.
function ____exports.logTearFlags(self, flags)
    ____exports.logFlags(nil, flags, TearFlag, "tear")
end
--- Helper function for printing out every use flag that is turned on. Useful when debugging.
function ____exports.logUseFlags(self, flags)
    ____exports.logFlags(nil, flags, UseFlag, "use")
end
--- Helper function to enumerate all of the properties of a "userdata" object (i.e. an object from
-- the Isaac API).
function ____exports.logUserdata(self, userdata)
    if not isUserdata(nil, userdata) then
        log(nil, "Userdata: [not userdata]")
        return
    end
    local metatable = getmetatable(userdata)
    if metatable == nil then
        log(nil, "Userdata: [no metatable]")
        return
    end
    local classType = getIsaacAPIClassName(nil, userdata)
    if classType == nil then
        log(nil, "Userdata: [no class type]")
    else
        log(nil, "Userdata: " .. classType)
    end
    ____exports.logTable(nil, metatable)
end
function ____exports.logVector(self, vector, round)
    if round == nil then
        round = false
    end
    local vectorString = vectorToString(nil, vector, round)
    log(nil, "Vector: " .. vectorString)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.playerHealth"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local MAX_PLAYER_HEART_CONTAINERS = ____constants.MAX_PLAYER_HEART_CONTAINERS
local ____HealthType = require("lua_modules.isaacscript-common.dist.src.enums.HealthType")
local HealthType = ____HealthType.HealthType
local ____bitwise = require("lua_modules.isaacscript-common.dist.src.functions.bitwise")
local countSetBits = ____bitwise.countSetBits
local getKBitOfN = ____bitwise.getKBitOfN
local getNumBitsOfN = ____bitwise.getNumBitsOfN
local ____characters = require("lua_modules.isaacscript-common.dist.src.functions.characters")
local getCharacterMaxHeartContainers = ____characters.getCharacterMaxHeartContainers
local ____charge = require("lua_modules.isaacscript-common.dist.src.functions.charge")
local getTotalCharge = ____charge.getTotalCharge
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local isCharacter = ____players.isCharacter
local isKeeper = ____players.isKeeper
local setActiveItem = ____players.setActiveItem
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local ____repeat = ____utils["repeat"]
--- Returns the number of black hearts that the player has, excluding any soul hearts. For example,
-- if the player has one full black heart, one full soul heart, and one half black heart, this
-- function returns 3.
-- 
-- This is different from the `EntityPlayer.GetBlackHearts` method, since that returns a bitmask.
function ____exports.getPlayerBlackHearts(self, player)
    local blackHeartsBitmask = player:GetBlackHearts()
    local blackHeartBits = countSetBits(nil, blackHeartsBitmask)
    return blackHeartBits * 2
end
--- Returns the number of red hearts that the player has, excluding any rotten hearts. For example,
-- if the player has one full black heart, one full soul heart, and one half black heart, this
-- function returns 3.
-- 
-- This is different from the `EntityPlayer.GetHearts` method, since that returns a value that
-- includes rotten hearts.
function ____exports.getPlayerHearts(self, player)
    local rottenHearts = player:GetRottenHearts()
    local hearts = player:GetHearts()
    return hearts - rottenHearts * 2
end
--- Returns the maximum heart containers that the provided player can have. Normally, this is 12, but
-- it can change depending on the character (e.g. Keeper) and other things (e.g. Mother's Kiss).
-- This function does not account for Broken Hearts; use the `getPlayerAvailableHeartSlots` helper
-- function for that.
function ____exports.getPlayerMaxHeartContainers(self, player)
    local character = player:GetPlayerType()
    local characterMaxHeartContainers = getCharacterMaxHeartContainers(nil, character)
    if character == PlayerType.MAGDALENE and player:HasCollectible(CollectibleType.BIRTHRIGHT) then
        local extraMaxHeartContainersFromBirthright = 6
        return characterMaxHeartContainers + extraMaxHeartContainersFromBirthright
    end
    if isKeeper(nil, player) then
        local numMothersKisses = player:GetTrinketMultiplier(TrinketType.MOTHERS_KISS)
        local hasGreedsGullet = player:HasCollectible(CollectibleType.GREEDS_GULLET)
        local coins = player:GetNumCoins()
        local greedsGulletCoinContainers = hasGreedsGullet and math.floor(coins / 25) or 0
        return characterMaxHeartContainers + numMothersKisses + greedsGulletCoinContainers
    end
    return characterMaxHeartContainers
end
--- Returns the number of soul hearts that the player has, excluding any black hearts. For example,
-- if the player has one full black heart, one full soul heart, and one half black heart, this
-- function returns 2.
-- 
-- This is different from the `EntityPlayer.GetSoulHearts` method, since that returns the combined
-- number of soul hearts and black hearts.
function ____exports.getPlayerSoulHearts(self, player)
    local soulHearts = player:GetSoulHearts()
    local blackHearts = ____exports.getPlayerBlackHearts(nil, player)
    return soulHearts - blackHearts
end
function ____exports.removeAllPlayerHealth(self, player)
    local goldenHearts = player:GetGoldenHearts()
    local eternalHearts = player:GetEternalHearts()
    local boneHearts = player:GetBoneHearts()
    local brokenHearts = player:GetBrokenHearts()
    player:AddGoldenHearts(goldenHearts * -1)
    player:AddEternalHearts(eternalHearts * -1)
    player:AddBoneHearts(boneHearts * -1)
    player:AddBrokenHearts(brokenHearts * -1)
    player:AddMaxHearts(MAX_PLAYER_HEART_CONTAINERS * -2, true)
    player:AddSoulHearts(MAX_PLAYER_HEART_CONTAINERS * -2)
    if isCharacter(nil, player, PlayerType.SOUL) then
        local forgotten = player:GetSubPlayer()
        if forgotten ~= nil then
            local forgottenBoneHearts = forgotten:GetBoneHearts()
            forgotten:AddBoneHearts(forgottenBoneHearts * -1)
        end
    end
end
--- Helper function to set a player's health to a specific state. You can use this in combination
-- with the `getPlayerHealth` function to restore the player's health back to a certain
-- configuration at a later time.
-- 
-- Based on the `REVEL.LoadHealth` function in the Revelations mod.
function ____exports.setPlayerHealth(self, player, playerHealth)
    local character = player:GetPlayerType()
    local subPlayer = player:GetSubPlayer()
    ____exports.removeAllPlayerHealth(nil, player)
    local alabasterBoxes = {}
    if player:HasCollectible(CollectibleType.ALABASTER_BOX) then
        for ____, activeSlot in ipairs(getEnumValues(nil, ActiveSlot)) do
            local activeItem = player:GetActiveItem()
            if activeItem == CollectibleType.ALABASTER_BOX then
                local totalCharge = getTotalCharge(nil, player, activeSlot)
                setActiveItem(nil, player, CollectibleType.NULL, activeSlot)
                alabasterBoxes[#alabasterBoxes + 1] = {activeSlot, totalCharge}
            end
        end
    end
    if character == PlayerType.SOUL and subPlayer ~= nil then
        subPlayer:AddMaxHearts(playerHealth.maxHearts, false)
    else
        player:AddMaxHearts(playerHealth.maxHearts, false)
    end
    player:AddEternalHearts(playerHealth.eternalHearts)
    local soulHeartsRemaining = playerHealth.soulHearts
    __TS__ArrayForEach(
        playerHealth.soulHeartTypes,
        function(____, soulHeartType, i)
            local isHalf = playerHealth.soulHearts + playerHealth.boneHearts * 2 < (i + 1) * 2
            local addAmount = 2
            if isHalf or soulHeartType == HeartSubType.BONE or soulHeartsRemaining < 2 then
                addAmount = 1
            end
            repeat
                local ____switch72 = soulHeartType
                local ____cond72 = ____switch72 == HeartSubType.SOUL
                if ____cond72 then
                    do
                        player:AddSoulHearts(addAmount)
                        soulHeartsRemaining = soulHeartsRemaining - addAmount
                        break
                    end
                end
                ____cond72 = ____cond72 or ____switch72 == HeartSubType.BLACK
                if ____cond72 then
                    do
                        player:AddBlackHearts(addAmount)
                        soulHeartsRemaining = soulHeartsRemaining - addAmount
                        break
                    end
                end
                ____cond72 = ____cond72 or ____switch72 == HeartSubType.BONE
                if ____cond72 then
                    do
                        player:AddBoneHearts(addAmount)
                        break
                    end
                end
            until true
        end
    )
    player:AddRottenHearts(playerHealth.rottenHearts)
    if character == PlayerType.MAGDALENE_B then
        ____repeat(
            nil,
            playerHealth.hearts,
            function()
                if player:HasFullHearts() then
                    return
                end
                local hearts = player:GetHearts()
                local maxHearts = player:GetMaxHearts()
                if hearts == maxHearts - 1 then
                    player:AddHearts(1)
                    return
                end
                player:AddHearts(1)
                player:AddHearts(-1)
            end
        )
    else
        player:AddHearts(playerHealth.hearts)
    end
    player:AddGoldenHearts(playerHealth.goldenHearts)
    player:AddBrokenHearts(playerHealth.brokenHearts)
    if character == PlayerType.BETHANY then
        player:SetSoulCharge(playerHealth.soulCharges)
    elseif character == PlayerType.BETHANY_B then
        player:SetBloodCharge(playerHealth.bloodCharges)
    end
    for ____, ____value in ipairs(alabasterBoxes) do
        local activeSlot = ____value[1]
        local totalCharge = ____value[2]
        setActiveItem(
            nil,
            player,
            CollectibleType.ALABASTER_BOX,
            activeSlot,
            totalCharge
        )
    end
end
function ____exports.addPlayerHealthType(self, player, healthType, numHearts)
    repeat
        local ____switch3 = healthType
        local ____cond3 = ____switch3 == HealthType.RED
        if ____cond3 then
            do
                player:AddHearts(numHearts)
                break
            end
        end
        ____cond3 = ____cond3 or ____switch3 == HealthType.SOUL
        if ____cond3 then
            do
                player:AddSoulHearts(numHearts)
                break
            end
        end
        ____cond3 = ____cond3 or ____switch3 == HealthType.ETERNAL
        if ____cond3 then
            do
                player:AddEternalHearts(numHearts)
                break
            end
        end
        ____cond3 = ____cond3 or ____switch3 == HealthType.BLACK
        if ____cond3 then
            do
                player:AddBlackHearts(numHearts)
                break
            end
        end
        ____cond3 = ____cond3 or ____switch3 == HealthType.GOLDEN
        if ____cond3 then
            do
                player:AddGoldenHearts(numHearts)
                break
            end
        end
        ____cond3 = ____cond3 or ____switch3 == HealthType.BONE
        if ____cond3 then
            do
                player:AddBoneHearts(numHearts)
                break
            end
        end
        ____cond3 = ____cond3 or ____switch3 == HealthType.ROTTEN
        if ____cond3 then
            do
                player:AddRottenHearts(numHearts)
                break
            end
        end
        ____cond3 = ____cond3 or ____switch3 == HealthType.BROKEN
        if ____cond3 then
            do
                player:AddBrokenHearts(numHearts)
                break
            end
        end
        ____cond3 = ____cond3 or ____switch3 == HealthType.MAX_HEARTS
        if ____cond3 then
            do
                player:AddMaxHearts(numHearts, false)
                break
            end
        end
    until true
end
--- Helper function to see if the provided player can pick up an eternal heart. (If a player already
-- has an eternal heart and full heart containers, they are not able to pick up any additional
-- eternal hearts.)
-- 
-- This function's name matches the existing `EntityPlayer` methods.
function ____exports.canPickEternalHearts(self, player)
    local eternalHearts = player:GetEternalHearts()
    local maxHearts = player:GetMaxHearts()
    local heartLimit = player:GetHeartLimit()
    return eternalHearts == 0 or maxHearts ~= heartLimit
end
--- Returns whether or not all of the player's soul-heart-type hearts are black hearts.
-- 
-- Note that this function does not consider red heart containers.
-- 
-- For example:
-- 
-- - If the player has one black heart, this function would return true.
-- - If the player has one soul heart and two black hearts, this function would return false.
-- - If the player has no black hearts, this function will return false.
-- - If the player has one red heart container and three black hearts, this function would return
--   true.
function ____exports.doesPlayerHaveAllBlackHearts(self, player)
    local soulHearts = ____exports.getPlayerSoulHearts(nil, player)
    local blackHearts = ____exports.getPlayerBlackHearts(nil, player)
    return blackHearts > 0 and soulHearts == 0
end
--- Returns whether or not all of the player's soul-heart-type hearts are soul hearts.
-- 
-- Note that this function does not consider red heart containers.
-- 
-- For example:
-- 
-- - If the player has two soul hearts and one black heart, this function would return false.
-- - If the player has no soul hearts, this function will return false.
-- - If the player has one red heart container and three soul hearts, this function would return
--   true.
function ____exports.doesPlayerHaveAllSoulHearts(self, player)
    local soulHearts = ____exports.getPlayerSoulHearts(nil, player)
    local blackHearts = ____exports.getPlayerBlackHearts(nil, player)
    return soulHearts > 0 and blackHearts == 0
end
--- Returns the number of slots that the player has remaining for new heart containers, accounting
-- for broken hearts. For example, if the player is Judas and has 1 red heart containers and 2 full
-- soul hearts and 3 broken hearts, then this function would return 6 (i.e. 12 - 1 - 2 - 3).
function ____exports.getPlayerAvailableHeartSlots(self, player)
    local maxHeartContainers = ____exports.getPlayerMaxHeartContainers(nil, player)
    local effectiveMaxHearts = player:GetEffectiveMaxHearts()
    local normalAndBoneHeartContainers = effectiveMaxHearts / 2
    local soulHearts = player:GetSoulHearts()
    local soulHeartContainers = math.ceil(soulHearts / 2)
    local totalHeartContainers = normalAndBoneHeartContainers + soulHeartContainers
    local brokenHearts = player:GetBrokenHearts()
    local totalOccupiedHeartSlots = totalHeartContainers + brokenHearts
    return maxHeartContainers - totalOccupiedHeartSlots
end
--- Helper function to get an object representing the player's health. You can use this in
-- combination with the `setPlayerHealth` function to restore the player's health back to a certain
-- configuration at a later time.
-- 
-- This is based on the `REVEL.StoreHealth` function in the Revelations mod.
function ____exports.getPlayerHealth(self, player)
    local character = player:GetPlayerType()
    local maxHearts = player:GetMaxHearts()
    local hearts = ____exports.getPlayerHearts(nil, player)
    local soulHearts = player:GetSoulHearts()
    local boneHearts = player:GetBoneHearts()
    local goldenHearts = player:GetGoldenHearts()
    local eternalHearts = player:GetEternalHearts()
    local rottenHearts = player:GetRottenHearts()
    local brokenHearts = player:GetBrokenHearts()
    local subPlayer = player:GetSubPlayer()
    local soulCharges = player:GetEffectiveSoulCharge()
    local bloodCharges = player:GetEffectiveBloodCharge()
    if character == PlayerType.FORGOTTEN and subPlayer ~= nil then
        maxHearts = boneHearts * 2
        boneHearts = 0
        soulHearts = subPlayer:GetSoulHearts()
    elseif character == PlayerType.SOUL and subPlayer ~= nil then
        maxHearts = subPlayer:GetBoneHearts() * 2
        hearts = subPlayer:GetHearts()
    end
    local extraHearts = math.ceil(soulHearts / 2) + boneHearts
    local currentSoulHeart = 0
    local soulHeartTypes = {}
    do
        local i = 0
        while i < extraHearts do
            local isBoneHeart = player:IsBoneHeart(i)
            if character == PlayerType.FORGOTTEN and subPlayer ~= nil then
                isBoneHeart = subPlayer:IsBoneHeart(i)
            end
            if isBoneHeart then
                soulHeartTypes[#soulHeartTypes + 1] = HeartSubType.BONE
            else
                local isBlackHeart = player:IsBlackHeart(currentSoulHeart + 1)
                if character == PlayerType.FORGOTTEN and subPlayer ~= nil then
                    isBlackHeart = subPlayer:IsBlackHeart(currentSoulHeart + 1)
                end
                if isBlackHeart then
                    soulHeartTypes[#soulHeartTypes + 1] = HeartSubType.BLACK
                else
                    soulHeartTypes[#soulHeartTypes + 1] = HeartSubType.SOUL
                end
                currentSoulHeart = currentSoulHeart + 2
            end
            i = i + 1
        end
    end
    return {
        maxHearts = maxHearts,
        hearts = hearts,
        eternalHearts = eternalHearts,
        soulHearts = soulHearts,
        boneHearts = boneHearts,
        goldenHearts = goldenHearts,
        rottenHearts = rottenHearts,
        brokenHearts = brokenHearts,
        soulCharges = soulCharges,
        bloodCharges = bloodCharges,
        soulHeartTypes = soulHeartTypes
    }
end
function ____exports.getPlayerHealthType(self, player, healthType)
    repeat
        local ____switch29 = healthType
        local ____cond29 = ____switch29 == HealthType.RED
        if ____cond29 then
            do
                return ____exports.getPlayerHearts(nil, player)
            end
        end
        ____cond29 = ____cond29 or ____switch29 == HealthType.SOUL
        if ____cond29 then
            do
                return ____exports.getPlayerSoulHearts(nil, player)
            end
        end
        ____cond29 = ____cond29 or ____switch29 == HealthType.ETERNAL
        if ____cond29 then
            do
                return player:GetEternalHearts()
            end
        end
        ____cond29 = ____cond29 or ____switch29 == HealthType.BLACK
        if ____cond29 then
            do
                return ____exports.getPlayerBlackHearts(nil, player)
            end
        end
        ____cond29 = ____cond29 or ____switch29 == HealthType.GOLDEN
        if ____cond29 then
            do
                return player:GetGoldenHearts()
            end
        end
        ____cond29 = ____cond29 or ____switch29 == HealthType.BONE
        if ____cond29 then
            do
                return player:GetBoneHearts()
            end
        end
        ____cond29 = ____cond29 or ____switch29 == HealthType.ROTTEN
        if ____cond29 then
            do
                return player:GetRottenHearts()
            end
        end
        ____cond29 = ____cond29 or ____switch29 == HealthType.BROKEN
        if ____cond29 then
            do
                return player:GetBrokenHearts()
            end
        end
        ____cond29 = ____cond29 or ____switch29 == HealthType.MAX_HEARTS
        if ____cond29 then
            do
                return player:GetMaxHearts()
            end
        end
    until true
end
--- Helper function that returns the type of the rightmost heart. This does not including golden
-- hearts or broken hearts, since they cannot be damaged directly.
function ____exports.getPlayerLastHeart(self, player)
    local hearts = player:GetHearts()
    local effectiveMaxHearts = player:GetEffectiveMaxHearts()
    local soulHearts = player:GetSoulHearts()
    local blackHearts = player:GetBlackHearts()
    local eternalHearts = player:GetEternalHearts()
    local boneHearts = player:GetBoneHearts()
    local rottenHearts = player:GetRottenHearts()
    local soulHeartSlots = soulHearts / 2
    local lastHeartIndex = boneHearts + soulHeartSlots - 1
    local isLastHeartBone = player:IsBoneHeart(lastHeartIndex)
    if isLastHeartBone then
        local isLastContainerEmpty = hearts <= effectiveMaxHearts - 2
        if isLastContainerEmpty then
            return HealthType.BONE
        end
        if rottenHearts > 0 then
            return HealthType.ROTTEN
        end
        if eternalHearts > 0 then
            return HealthType.ETERNAL
        end
        return HealthType.RED
    end
    if soulHearts > 0 then
        local numBits = getNumBitsOfN(nil, blackHearts)
        local finalBit = getKBitOfN(nil, numBits - 1, blackHearts)
        local isBlack = finalBit == 1
        if isBlack then
            return HealthType.BLACK
        end
        return HealthType.SOUL
    end
    if eternalHearts > 0 then
        return HealthType.ETERNAL
    end
    if rottenHearts > 0 then
        return HealthType.ROTTEN
    end
    return HealthType.RED
end
--- Helper function to determine how many heart containers that Tainted Magdalene has that will not
-- be automatically depleted over time. By default, this is 2, but this function will return 4 so
-- that it is consistent with the `player.GetHearts` and `player.GetMaxHearts` methods.
-- 
-- If Tainted Magdalene has Birthright, she will gained an additional non-temporary heart container.
-- 
-- This function does not validate whether or not the provided player is Tainted Magdalene; that
-- should be accomplished before invoking this function.
function ____exports.getTaintedMagdaleneNonTemporaryMaxHearts(self, player)
    local maxHearts = player:GetMaxHearts()
    local hasBirthright = player:HasCollectible(CollectibleType.BIRTHRIGHT)
    local maxNonTemporaryMaxHearts = hasBirthright and 6 or 4
    return math.min(maxHearts, maxNonTemporaryMaxHearts)
end
--- Returns a `PlayerHealth` object with all zeros.
function ____exports.newPlayerHealth(self)
    return {
        maxHearts = 0,
        hearts = 0,
        eternalHearts = 0,
        soulHearts = 0,
        boneHearts = 0,
        goldenHearts = 0,
        rottenHearts = 0,
        brokenHearts = 0,
        soulCharges = 0,
        bloodCharges = 0,
        soulHeartTypes = {}
    }
end
function ____exports.playerConvertBlackHeartsToSoulHearts(self, player)
    local playerHealth = ____exports.getPlayerHealth(nil, player)
    ____exports.removeAllPlayerHealth(nil, player)
    playerHealth.soulHeartTypes = __TS__ArrayMap(
        playerHealth.soulHeartTypes,
        function(____, soulHeartType) return soulHeartType == HeartSubType.BLACK and HeartSubType.SOUL or soulHeartType end
    )
    ____exports.setPlayerHealth(nil, player, playerHealth)
end
function ____exports.playerConvertSoulHeartsToBlackHearts(self, player)
    local playerHealth = ____exports.getPlayerHealth(nil, player)
    ____exports.removeAllPlayerHealth(nil, player)
    playerHealth.soulHeartTypes = __TS__ArrayMap(
        playerHealth.soulHeartTypes,
        function(____, soulHeartType) return soulHeartType == HeartSubType.SOUL and HeartSubType.BLACK or soulHeartType end
    )
    ____exports.setPlayerHealth(nil, player, playerHealth)
end
--- Helper function to see if the player is out of health.
-- 
-- Specifically, this function will return false if the player has 0 red hearts, 0 soul/black
-- hearts, and 0 bone hearts.
function ____exports.playerHasHealthLeft(self, player)
    local hearts = player:GetHearts()
    local soulHearts = player:GetSoulHearts()
    local boneHearts = player:GetBoneHearts()
    return hearts > 0 or soulHearts > 0 or boneHearts > 0
end
--- Helper function to see if a certain damage amount would deal "permanent" damage to Tainted
-- Magdalene.
-- 
-- Tainted Magdalene has "permanent" health and "temporary" health. When standing still and doing
-- nothing, all of Tainted Magdalene's temporary health will eventually go away.
-- 
-- Before using this function, it is expected that you check to see if the player is Tainted
-- Magdalene first, or else it will give a nonsensical result.
function ____exports.wouldDamageTaintedMagdaleneNonTemporaryHeartContainers(self, player, damageAmount)
    local soulHearts = player:GetSoulHearts()
    if soulHearts > 0 then
        return false
    end
    local boneHearts = player:GetBoneHearts()
    if boneHearts > 0 then
        return false
    end
    local hearts = player:GetHearts()
    local rottenHearts = player:GetRottenHearts()
    local effectiveDamageAmount = damageAmount + math.min(rottenHearts, damageAmount)
    local heartsAfterDamage = hearts - effectiveDamageAmount
    local nonTemporaryMaxHearts = ____exports.getTaintedMagdaleneNonTemporaryMaxHearts(nil, player)
    return heartsAfterDamage < nonTemporaryMaxHearts
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.HealthType"] = function(...) 
local ____exports = {}
--- This represents the type of health that is either given or taken away from a player. Note that we
-- cannot use the `HeartSubType` enum for this purpose this since it has no value for broken hearts
-- or max hearts.
____exports.HealthType = {}
____exports.HealthType.RED = 0
____exports.HealthType[____exports.HealthType.RED] = "RED"
____exports.HealthType.SOUL = 1
____exports.HealthType[____exports.HealthType.SOUL] = "SOUL"
____exports.HealthType.ETERNAL = 2
____exports.HealthType[____exports.HealthType.ETERNAL] = "ETERNAL"
____exports.HealthType.BLACK = 3
____exports.HealthType[____exports.HealthType.BLACK] = "BLACK"
____exports.HealthType.GOLDEN = 4
____exports.HealthType[____exports.HealthType.GOLDEN] = "GOLDEN"
____exports.HealthType.BONE = 5
____exports.HealthType[____exports.HealthType.BONE] = "BONE"
____exports.HealthType.ROTTEN = 6
____exports.HealthType[____exports.HealthType.ROTTEN] = "ROTTEN"
____exports.HealthType.BROKEN = 7
____exports.HealthType[____exports.HealthType.BROKEN] = "BROKEN"
____exports.HealthType.MAX_HEARTS = 8
____exports.HealthType[____exports.HealthType.MAX_HEARTS] = "MAX_HEARTS"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.set"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__Iterator = ____lualib.__TS__Iterator
local __TS__New = ____lualib.__TS__New
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__Spread = ____lualib.__TS__Spread
local __TS__ArraySort = ____lualib.__TS__ArraySort
local ____exports = {}
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local getArrayCombinations = ____array.getArrayCombinations
local getRandomArrayElement = ____array.getRandomArrayElement
local sumArray = ____array.sumArray
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isPrimitive = ____types.isPrimitive
--- Helper function to get a sorted array based on the contents of a set.
-- 
-- Normally, set values are returned in a random order, so use this function when the ordering of
-- the contents is important.
function ____exports.getSortedSetValues(self, set)
    local values = set:values()
    local array = {__TS__Spread(values)}
    local firstElement = array[1]
    if firstElement ~= nil then
        local arrayType = type(firstElement)
        if not isPrimitive(nil, arrayType) then
            error(("Failed to get the sorted set values because the provided set was of type \"" .. tostring(arrayType)) .. "\". Having sets with non-primitive types doesn't make much sense in general, so you might need to rethink what you are doing.")
        end
    end
    __TS__ArraySort(array)
    return array
end
--- Helper function to add all of the values in one set to another set. The first set passed will be
-- modified in place.
-- 
-- This function is variadic, meaning that you can specify N sets to add to the first set.
function ____exports.addSetsToSet(self, mainSet, ...)
    local setsToAdd = {...}
    for ____, set in ipairs(setsToAdd) do
        for ____, value in __TS__Iterator(set:values()) do
            mainSet:add(value)
        end
    end
end
--- Helper function to create a new set that is the composition of two or more sets.
-- 
-- This function is variadic, meaning that you can specify N sets.
function ____exports.combineSets(self, ...)
    local sets = {...}
    local newSet = __TS__New(Set)
    for ____, set in ipairs(sets) do
        for ____, value in __TS__Iterator(set:values()) do
            newSet:add(value)
        end
    end
    return newSet
end
--- Helper function to copy a set. (You can also use a Set constructor to accomplish this task.)
function ____exports.copySet(self, oldSet)
    local newSet = __TS__New(Set)
    for ____, value in __TS__Iterator(oldSet:values()) do
        newSet:add(value)
    end
    return newSet
end
--- Helper function to delete all of the values in one set from another set. The first set passed
-- will be modified in place.
-- 
-- This function is variadic, meaning that you can specify N sets to remove from the first set.
function ____exports.deleteSetsFromSet(self, mainSet, ...)
    local setsToRemove = {...}
    for ____, set in ipairs(setsToRemove) do
        for ____, value in __TS__Iterator(set:values()) do
            mainSet:delete(value)
        end
    end
end
--- Helper function to get a random element from the provided set.
-- 
-- @param set The set to get an element from.
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param exceptions Optional. An array of elements to skip over if selected.
function ____exports.getRandomSetElement(self, set, seedOrRNG, exceptions)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if exceptions == nil then
        exceptions = {}
    end
    local array = ____exports.getSortedSetValues(nil, set)
    return getRandomArrayElement(nil, array, seedOrRNG, exceptions)
end
--- Helper function to get all possible combinations of the given set. This includes the combination
-- of an empty set.
-- 
-- For example, if this function is provided a set containing 1, 2, and 3, then it will return an
-- array containing the following sets:
-- 
-- - [] (if `includeEmptyArray` is set to true)
-- - [1]
-- - [2]
-- - [3]
-- - [1, 2]
-- - [1, 3]
-- - [2, 3]
-- - [1, 2, 3]
-- 
-- @param set The set to get the combinations of.
-- @param includeEmptyArray Whether or not to include an empty array in the combinations.
function ____exports.getSetCombinations(self, set, includeEmptyArray)
    local values = ____exports.getSortedSetValues(nil, set)
    local combinations = getArrayCombinations(nil, values, includeEmptyArray)
    return __TS__ArrayMap(
        combinations,
        function(____, array) return __TS__New(Set, array) end
    )
end
--- Helper function to add one or more elements to a set at once without having to repeatedly call
-- the `Set.add` method.
-- 
-- This function is variadic, meaning that you can pass as many things as you want to add.
function ____exports.setAdd(self, set, ...)
    local elements = {...}
    for ____, element in ipairs(elements) do
        set:add(element)
    end
end
--- Helper function to sum every value in a set together.
function ____exports.sumSet(self, set)
    local values = {__TS__Spread(set:values())}
    return sumArray(nil, values)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.trinkets"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local TrinketSlot = ____isaac_2Dtypescript_2Ddefinitions.TrinketSlot
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local itemConfig = ____cachedClasses.itemConfig
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local BLIND_ITEM_PNG_PATH = ____constants.BLIND_ITEM_PNG_PATH
local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.src.core.constantsFirstLast")
local FIRST_TRINKET_TYPE = ____constantsFirstLast.FIRST_TRINKET_TYPE
local LAST_VANILLA_TRINKET_TYPE = ____constantsFirstLast.LAST_VANILLA_TRINKET_TYPE
local ____trinketDescriptionMap = require("lua_modules.isaacscript-common.dist.src.maps.trinketDescriptionMap")
local DEFAULT_TRINKET_DESCRIPTION = ____trinketDescriptionMap.DEFAULT_TRINKET_DESCRIPTION
local TRINKET_DESCRIPTION_MAP = ____trinketDescriptionMap.TRINKET_DESCRIPTION_MAP
local ____trinketTypeToNameMap = require("lua_modules.isaacscript-common.dist.src.maps.trinketTypeToNameMap")
local DEFAULT_TRINKET_NAME = ____trinketTypeToNameMap.DEFAULT_TRINKET_NAME
local TRINKET_TYPE_TO_NAME_MAP = ____trinketTypeToNameMap.TRINKET_TYPE_TO_NAME_MAP
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntityID = ____entities.getEntityID
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
local ____pickupVariants = require("lua_modules.isaacscript-common.dist.src.functions.pickupVariants")
local isTrinket = ____pickupVariants.isTrinket
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local isCharacter = ____players.isCharacter
local ____sprites = require("lua_modules.isaacscript-common.dist.src.functions.sprites")
local clearSprite = ____sprites.clearSprite
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local iRange = ____utils.iRange
function ____exports.isVanillaTrinketType(self, trinketType)
    return trinketType <= LAST_VANILLA_TRINKET_TYPE
end
--- Add this to a `TrinketType` to get the corresponding golden trinket type.
-- 
-- Corresponds to the vanilla `PillColor.TRINKET_GOLDEN_FLAG` value.
-- 
-- 1 << 15
local GOLDEN_TRINKET_ADJUSTMENT = 32768
local TRINKET_ANM2_PATH = "gfx/005.350_trinket.anm2"
local TRINKET_SPRITE_LAYER = 0
--- Helper function to get the corresponding golden trinket type from a normal trinket type.
-- 
-- For example, passing `TrinketType.SWALLOWED_PENNY` would result in 32769, which is the value that
-- corresponds to the golden trinket sub-type for Swallowed Penny.
function ____exports.getGoldenTrinketType(self, trinketType)
    return asNumber(nil, trinketType) + GOLDEN_TRINKET_ADJUSTMENT
end
--- Returns the slot number corresponding to where a trinket can be safely inserted.
-- 
-- For example:
-- 
-- ```ts
-- const player = Isaac.GetPlayer();
-- const trinketSlot = getOpenTrinketSlotNum(player);
-- if (trinketSlot !== undefined) {
--   // They have one or more open trinket slots
--   player.AddTrinket(TrinketType.SWALLOWED_PENNY);
-- }
-- ```
function ____exports.getOpenTrinketSlot(self, player)
    local maxTrinkets = player:GetMaxTrinkets()
    local trinketType1 = player:GetTrinket(TrinketSlot.SLOT_1)
    local trinketType2 = player:GetTrinket(TrinketSlot.SLOT_2)
    if maxTrinkets == 1 then
        return trinketType1 == TrinketType.NULL and 0 or nil
    end
    if maxTrinkets == 2 then
        if trinketType1 == TrinketType.NULL then
            return 0
        end
        return trinketType2 == TrinketType.NULL and 1 or nil
    end
    error("The player has an unknown number of trinket slots: " .. tostring(maxTrinkets))
end
--- Helper function to get the in-game description for a trinket. Returns "Unknown" if the provided
-- trinket type was not valid.
-- 
-- This function works for both vanilla and modded trinkets.
function ____exports.getTrinketDescription(self, trinketType)
    local trinketDescription = TRINKET_DESCRIPTION_MAP:get(trinketType)
    if trinketDescription ~= nil then
        return trinketDescription
    end
    local itemConfigItem = itemConfig:GetTrinket(trinketType)
    if itemConfigItem ~= nil then
        return itemConfigItem.Description
    end
    return DEFAULT_TRINKET_DESCRIPTION
end
--- Helper function to get the path to a trinket PNG file. Returns the path to the question mark
-- sprite (i.e. from Curse of the Blind) if the provided trinket type was not valid.
-- 
-- Note that this does not return the file name, but the full path to the trinket's PNG file. The
-- function is named "GfxFilename" to correspond to the associated `ItemConfigItem.GfxFileName`
-- field.
function ____exports.getTrinketGfxFilename(self, trinketType)
    local itemConfigItem = itemConfig:GetTrinket(trinketType)
    if itemConfigItem == nil then
        return BLIND_ITEM_PNG_PATH
    end
    return itemConfigItem.GfxFileName
end
--- Helper function to get the name of a trinket. Returns "Unknown" if the provided trinket type is
-- not valid.
-- 
-- For example, `getTrinketName(TrinketType.SWALLOWED_PENNY)` would return "Swallowed Penny".
-- 
-- This function works for both vanilla and modded trinkets.
function ____exports.getTrinketName(self, trinketType)
    local trinketName = TRINKET_TYPE_TO_NAME_MAP:get(trinketType)
    if trinketName ~= nil then
        return trinketName
    end
    local itemConfigItem = itemConfig:GetTrinket(trinketType)
    if itemConfigItem ~= nil then
        return itemConfigItem.Name
    end
    return DEFAULT_TRINKET_NAME
end
--- Helper function to get an array that represents every vanilla trinket type.
function ____exports.getVanillaTrinketTypes(self)
    return iRange(nil, FIRST_TRINKET_TYPE, LAST_VANILLA_TRINKET_TYPE)
end
--- Returns whether or not the player can hold an additional trinket, beyond what they are currently
-- carrying. This takes into account items that modify the max number of trinkets, like Mom's Purse.
-- 
-- If the player is the Tainted Soul, this always returns false, since that character cannot pick up
-- items. (Only Tainted Forgotten can pick up items.)
function ____exports.hasOpenTrinketSlot(self, player)
    if isCharacter(nil, player, PlayerType.SOUL_B) then
        return false
    end
    local openTrinketSlot = ____exports.getOpenTrinketSlot(nil, player)
    return openTrinketSlot ~= nil
end
function ____exports.isGoldenTrinketType(self, trinketType)
    return asNumber(nil, trinketType) > GOLDEN_TRINKET_ADJUSTMENT
end
function ____exports.isModdedTrinketType(self, trinketType)
    return not ____exports.isVanillaTrinketType(nil, trinketType)
end
--- Helper function to generate a new sprite based on a collectible. If the provided collectible type
-- is invalid, a sprite with a Curse of the Blind question mark will be returned.
function ____exports.newTrinketSprite(self, trinketType)
    local sprite = Sprite()
    sprite:Load(TRINKET_ANM2_PATH, false)
    local gfxFileName = ____exports.getTrinketGfxFilename(nil, trinketType)
    sprite:ReplaceSpritesheet(TRINKET_SPRITE_LAYER, gfxFileName)
    sprite:LoadGraphics()
    return sprite
end
--- Helper function to change the sprite of a trinket entity.
-- 
-- For more information about removing the trinket sprite, see the documentation for the
-- "clearSprite" helper function.
-- 
-- @param trinket The trinket whose sprite you want to modify.
-- @param pngPath Equal to either the spritesheet path to load (e.g.
-- "gfx/items/trinkets/trinket_001_swallowedpenny.png") or undefined. If undefined,
-- the sprite will be removed, making it appear like the collectible has already been
-- taken by the player.
function ____exports.setTrinketSprite(self, trinket, pngPath)
    if not isTrinket(nil, trinket) then
        local entityID = getEntityID(nil, trinket)
        error("The \"setTrinketSprite\" function was given a non-trinket: " .. entityID)
    end
    local sprite = trinket:GetSprite()
    if pngPath == nil then
        clearSprite(nil, sprite, TRINKET_SPRITE_LAYER)
    else
        sprite:ReplaceSpritesheet(TRINKET_SPRITE_LAYER, pngPath)
        sprite:LoadGraphics()
    end
end
--- Helper function to check in the item config if a given trinket has a given cache flag.
function ____exports.trinketHasCacheFlag(self, trinketType, cacheFlag)
    local itemConfigItem = itemConfig:GetTrinket(trinketType)
    if itemConfigItem == nil then
        return false
    end
    return hasFlag(nil, itemConfigItem.CacheFlags, cacheFlag)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.trinketDescriptionMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
____exports.DEFAULT_TRINKET_DESCRIPTION = "Unknown"
--- Maps trinket types to the real English descriptions from the "stringtable.sta" file.
-- 
-- This is a temporary map due to missing features in the vanilla API. (Otherwise, this would be
-- converted to a type-safe object.)
____exports.TRINKET_DESCRIPTION_MAP = __TS__New(Map, {
    {1, "Gulp!"},
    {2, "It feels lucky?"},
    {3, "Trickle charge"},
    {4, "It's broken"},
    {5, "Challenge up"},
    {6, "It kinda works"},
    {7, "Faith up"},
    {8, "I remember these"},
    {9, "Wub wub!"},
    {10, "Wiggle waggle!"},
    {11, "Woop woop!"},
    {12, "Blub blub!"},
    {13, "YES!"},
    {14, "Your feet feel stronger"},
    {15, "There's something inside it"},
    {16, "???"},
    {17, "Evil up"},
    {18, "Faith up"},
    {19, "Master of lockpicking"},
    {20, "Wish granted"},
    {21, "???"},
    {22, "Evil up"},
    {23, "???"},
    {24, "Wealth of gas"},
    {25, "Uh-oh!"},
    {26, "Zip zoop!"},
    {27, "Wooosh!"},
    {28, "Eternal life?"},
    {29, "It stinks"},
    {30, "Poison shots"},
    {31, "Piercing shots"},
    {32, "Touch fuzzy, get dizzy"},
    {33, "Fetal protection"},
    {34, "It calls out to its brothers"},
    {35, "DMG up"},
    {36, "It feels lucky?"},
    {37, "Speed up"},
    {38, "It emanates purity "},
    {39, "Yay, cancer!"},
    {40, "Your rage grows"},
    {41, "Tastes like burning"},
    {42, "Luck up!"},
    {43, "Cursed?"},
    {44, "Don't swallow it"},
    {45, "Luck of the draw"},
    {46, "Consume thy enemy"},
    {48, "It glows with power"},
    {49, "Wealth of health"},
    {50, "Wealth of chaos"},
    {51, "Wealth of answers"},
    {52, "Wealth of wealth"},
    {53, "Well, that's not coming off"},
    {54, "Dead friend"},
    {55, "Faith's reward"},
    {56, "Payment received "},
    {57, "Imaginary friend"},
    {58, "Your rage grows"},
    {59, "May you see your destination"},
    {60, "Revenge from beyond"},
    {61, "The left-hand path reaps dark rewards"},
    {62, "It shines for its brothers"},
    {63, "Fuse cutter"},
    {64, "Bleep bloop blop"},
    {65, "Floooooooooop!"},
    {66, "Pft"},
    {67, "You feel cursed... kinda."},
    {68, "It pulls"},
    {69, "You feel faded"},
    {70, "Itchy, tasty..."},
    {71, "Creepy bombs"},
    {72, "Lil charge"},
    {73, "Pop! Pop!"},
    {74, "The ground below feels hollow..."},
    {75, "Effect not found?"},
    {76, "It's double down time!"},
    {77, "Bounce back!"},
    {78, "Extended stat effect time!"},
    {79, "I'm stuck in a loop..."},
    {80, "With darkness comes power"},
    {81, "Blind to damage"},
    {82, "Feel lucky?"},
    {83, "Stores are open"},
    {84, "Feels greedy"},
    {85, "Karma up"},
    {86, "The poop is moving..."},
    {87, "You feel her love"},
    {88, "Never again!"},
    {89, "Keep your friends close..."},
    {90, "Fartoom!"},
    {91, "Eww"},
    {92, "Stat booster"},
    {93, "You stink"},
    {94, "It also stinks!"},
    {95, "It looks dead"},
    {96, "Foop foop!"},
    {97, "Sick..."},
    {98, "Seems magic..."},
    {99, "Boing!"},
    {100, "It needs power"},
    {101, "I think it's broken"},
    {102, "Double moon"},
    {103, "="},
    {104, "Make a wish"},
    {105, "I wonder what it is"},
    {106, "Uncorked"},
    {107, "Drain me"},
    {108, "That's a hard nut to crack!"},
    {109, "Stuck!"},
    {110, "Feels lucky..."},
    {111, "Drips with blood..."},
    {112, "..."},
    {113, "I bring War"},
    {114, "I bring Pestilence"},
    {115, "I bring Famine"},
    {116, "I bring Death"},
    {117, "I bring Conquest"},
    {118, "They are growing..."},
    {119, "Regen!"},
    {120, "Danger charge"},
    {121, "My faith protects me"},
    {122, "Can't hold it!"},
    {123, "Angelic spoils"},
    {124, "Hold the door"},
    {125, "Charged friends"},
    {126, "Wealth of flies"},
    {127, "Feed them magic!"},
    {128, "It looks brittle"},
    {129, "Don't chew on it"},
    {130, "It's leaking"},
    {131, "Wealth of purity"},
    {132, "Mystery medicine"},
    {133, "Faster explosions"},
    {134, "Mega farts"},
    {135, "Watch the world burn"},
    {136, "Bombs are key"},
    {137, "Forget me not..."},
    {138, "t's broken9Reroll your dest       "},
    {139, "It feels lucky"},
    {140, "It feels empty"},
    {141, "Sing for your friends"},
    {142, "My faith protects me"},
    {143, "Voltage starving"},
    {144, "Ding!"},
    {145, "Luck way up. Don't lose it!"},
    {146, "His special customer"},
    {147, "Wealth of power"},
    {148, "Gather round"},
    {149, "Push in case of emergency"},
    {150, "Look between the rooms"},
    {151, "No more spikes"},
    {152, "Seek the stars"},
    {153, "A piece of her love"},
    {154, "Bonus roll"},
    {155, "Walk the path of the saint"},
    {156, "HP up"},
    {157, "Death awaits"},
    {158, "A hole in your pocket"},
    {159, "Less is more"},
    {160, "Free goodies!"},
    {161, "Walk the path of the wicked"},
    {162, "Unleash your inner demon"},
    {163, "Oops!"},
    {164, "Twice the bang!"},
    {165, "Don't want!"},
    {166, "???"},
    {167, "Friends from beyond"},
    {168, "A brittle blessing"},
    {169, "Looks familiar..."},
    {170, "Call to the other side"},
    {171, "Money talks"},
    {172, "Wealth of misery"},
    {173, "Give it to me"},
    {174, "6"},
    {175, "What could it open?"},
    {176, "Mini friend"},
    {177, "You feel braver"},
    {178, "Bang!"},
    {179, "Controllable buddies!"},
    {180, "Finally!"},
    {181, "Fun extras"},
    {182, "Virtue's reward"},
    {183, "I'm seeing double..."},
    {184, "Give them a home"},
    {185, "Infested"},
    {186, "Attack buddy"},
    {187, "Double vision?"},
    {188, "Stay frosty"},
    {189, "Revel in death"}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.trinketTypeToNameMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
____exports.DEFAULT_TRINKET_NAME = "Unknown"
--- Maps trinket types to the real English names from the "stringtable.sta" file.
-- 
-- This is a temporary map due to missing features in the vanilla API. (Otherwise, this would be
-- converted to a type-safe object.)
-- 
-- For a mapping of name to `TrinketType`, see `TRINKET_NAME_TO_TYPE_MAP`.
____exports.TRINKET_TYPE_TO_NAME_MAP = __TS__New(Map, {
    {1, "Swallowed Penny"},
    {2, "Petrified Poop"},
    {3, "AAA Battery"},
    {4, "Broken Remote"},
    {5, "Purple Heart"},
    {6, "Broken Magnet"},
    {7, "Rosary Bead"},
    {8, "Cartridge"},
    {9, "Pulse Worm"},
    {10, "Wiggle Worm"},
    {11, "Ring Worm"},
    {12, "Flat Worm"},
    {13, "Store Credit"},
    {14, "Callus"},
    {15, "Lucky Rock"},
    {16, "Mom's Toenail"},
    {17, "Black Lipstick"},
    {18, "Bible Tract"},
    {19, "Paper Clip"},
    {20, "Monkey Paw"},
    {21, "Mysterious Paper"},
    {22, "Daemon's Tail"},
    {23, "Missing Poster"},
    {24, "Butt Penny"},
    {25, "Mysterious Candy"},
    {26, "Hook Worm"},
    {27, "Whip Worm"},
    {28, "Broken Ankh"},
    {29, "Fish Head"},
    {30, "Pinky Eye"},
    {31, "Push Pin"},
    {32, "Liberty Cap"},
    {33, "Umbilical Cord"},
    {34, "Child's Heart"},
    {35, "Curved Horn"},
    {36, "Rusted Key"},
    {37, "Goat Hoof"},
    {38, "Mom's Pearl"},
    {39, "Cancer"},
    {40, "Red Patch"},
    {41, "Match Stick"},
    {42, "Lucky Toe"},
    {43, "Cursed Skull"},
    {44, "Safety Cap"},
    {45, "Ace of Spades"},
    {46, "Isaac's Fork"},
    {48, "A Missing Page"},
    {49, "Bloody Penny"},
    {50, "Burnt Penny"},
    {51, "Flat Penny"},
    {52, "Counterfeit Penny"},
    {53, "Tick"},
    {54, "Isaac's Head"},
    {55, "Maggy's Faith"},
    {56, "Judas' Tongue"},
    {57, "???'s Soul"},
    {58, "Samson's Lock"},
    {59, "Cain's Eye"},
    {60, "Eve's Bird Foot"},
    {61, "The Left Hand"},
    {62, "Shiny Rock"},
    {63, "Safety Scissors"},
    {64, "Rainbow Worm"},
    {65, "Tape Worm"},
    {66, "Lazy Worm"},
    {67, "Cracked Dice"},
    {68, "Super Magnet"},
    {69, "Faded Polaroid"},
    {70, "Louse"},
    {71, "Bob's Bladder"},
    {72, "Watch Battery"},
    {73, "Blasting Cap"},
    {74, "Stud Finder"},
    {75, "Error"},
    {76, "Poker Chip"},
    {77, "Blister"},
    {78, "Second Hand"},
    {79, "Endless Nameless"},
    {80, "Black Feather"},
    {81, "Blind Rage"},
    {82, "Golden Horse Shoe"},
    {83, "Store Key"},
    {84, "Rib of Greed"},
    {85, "Karma"},
    {86, "Lil Larva"},
    {87, "Mom's Locket"},
    {88, "NO!"},
    {89, "Child Leash"},
    {90, "Brown Cap"},
    {91, "Meconium"},
    {92, "Cracked Crown"},
    {93, "Used Diaper"},
    {94, "Fish Tail"},
    {95, "Black Tooth"},
    {96, "Ouroboros Worm"},
    {97, "Tonsil"},
    {98, "Nose Goblin"},
    {99, "Super Ball"},
    {100, "Vibrant Bulb"},
    {101, "Dim Bulb"},
    {102, "Fragmented Card"},
    {103, "Equality!"},
    {104, "Wish Bone"},
    {105, "Bag Lunch"},
    {106, "Lost Cork"},
    {107, "Crow Heart"},
    {108, "Walnut"},
    {109, "Duct Tape"},
    {110, "Silver Dollar"},
    {111, "Bloody Crown"},
    {112, "Pay To Win"},
    {113, "Locust of War"},
    {114, "Locust of Pestilence"},
    {115, "Locust of Famine"},
    {116, "Locust of Death"},
    {117, "Locust of Conquest"},
    {118, "Bat Wing"},
    {119, "Stem Cell"},
    {120, "Hairpin"},
    {121, "Wooden Cross"},
    {122, "Butter!"},
    {123, "Filigree Feather"},
    {124, "Door Stop"},
    {125, "Extension Cord"},
    {126, "Rotten Penny"},
    {127, "Baby-Bender"},
    {128, "Finger Bone"},
    {129, "Jawbreaker"},
    {130, "Chewed Pen"},
    {131, "Blessed Penny"},
    {132, "Broken Syringe"},
    {133, "Short Fuse"},
    {134, "Gigante Bean"},
    {135, "A Lighter"},
    {136, "Broken Padlock"},
    {137, "Myosotis"},
    {138, " 'M"},
    {139, "Teardrop Charm"},
    {140, "Apple of Sodom"},
    {141, "Forgotten Lullaby"},
    {142, "Beth's Faith"},
    {143, "Old Capacitor"},
    {144, "Brain Worm"},
    {145, "Perfection"},
    {146, "Devil's Crown"},
    {147, "Charged Penny"},
    {148, "Friendship Necklace"},
    {149, "Panic Button"},
    {150, "Blue Key"},
    {151, "Flat File"},
    {152, "Telescope Lens"},
    {153, "Mom's Lock"},
    {154, "Dice Bag"},
    {155, "Holy Crown"},
    {156, "Mother's Kiss"},
    {157, "Torn Card"},
    {158, "Torn Pocket"},
    {159, "Gilded Key"},
    {160, "Lucky Sack"},
    {161, "Wicked Crown"},
    {162, "Azazel's Stump"},
    {163, "Dingle Berry"},
    {164, "Ring Cap"},
    {165, "Nuh Uh!"},
    {166, "Modeling Clay"},
    {167, "Polished Bone"},
    {168, "Hollow Heart"},
    {169, "Kid's Drawing"},
    {170, "Crystal Key"},
    {171, "Keeper's Bargain"},
    {172, "Cursed Penny"},
    {173, "Your Soul"},
    {174, "Number Magnet"},
    {175, "Strange Key"},
    {176, "Lil Clot"},
    {177, "Temporary Tattoo"},
    {178, "Swallowed M80"},
    {179, "RC Remote"},
    {180, "Found Soul"},
    {181, "Expansion Pack"},
    {182, "Beth's Essence"},
    {183, "The Twins"},
    {184, "Adoption Papers"},
    {185, "Cricket Leg"},
    {186, "Apollyon's Best Friend"},
    {187, "Broken Glasses"},
    {188, "Ice Cube"},
    {189, "Sigil of Baphomet"}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNewRoomReordered"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostNewRoomReordered = __TS__Class()
local PostNewRoomReordered = ____exports.PostNewRoomReordered
PostNewRoomReordered.name = "PostNewRoomReordered"
__TS__ClassExtends(PostNewRoomReordered, CustomCallback)
function PostNewRoomReordered.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.GAME_REORDERED_CALLBACKS}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCDeathFilter"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireNPC = ____shouldFire.shouldFireNPC
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostNPCDeathFilter = __TS__Class()
local PostNPCDeathFilter = ____exports.PostNPCDeathFilter
PostNPCDeathFilter.name = "PostNPCDeathFilter"
__TS__ClassExtends(PostNPCDeathFilter, CustomCallback)
function PostNPCDeathFilter.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireNPC
    self.postNPCRender = function(____, npc)
        self:fire(npc)
    end
    self.callbacksUsed = {{ModCallback.POST_NPC_DEATH, {self.postNPCRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCInitFilter"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireNPC = ____shouldFire.shouldFireNPC
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostNPCInitFilter = __TS__Class()
local PostNPCInitFilter = ____exports.PostNPCInitFilter
PostNPCInitFilter.name = "PostNPCInitFilter"
__TS__ClassExtends(PostNPCInitFilter, CustomCallback)
function PostNPCInitFilter.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireNPC
    self.postNPCInit = function(____, npc)
        self:fire(npc)
    end
    self.callbacksUsed = {{ModCallback.POST_NPC_INIT, {self.postNPCInit}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCInitLate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireNPC = ____shouldFire.shouldFireNPC
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostNPCInitLate = __TS__Class()
local PostNPCInitLate = ____exports.PostNPCInitLate
PostNPCInitLate.name = "PostNPCInitLate"
__TS__ClassExtends(PostNPCInitLate, CustomCallback)
function PostNPCInitLate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFireNPC
    self.postNPCUpdate = function(____, npc)
        local index = GetPtrHash(npc)
        if not self.v.room.firedSet:has(index) then
            self.v.room.firedSet:add(index)
            self:fire(npc)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_NPC_UPDATE, {self.postNPCUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCRenderFilter"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireNPC = ____shouldFire.shouldFireNPC
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostNPCRenderFilter = __TS__Class()
local PostNPCRenderFilter = ____exports.PostNPCRenderFilter
PostNPCRenderFilter.name = "PostNPCRenderFilter"
__TS__ClassExtends(PostNPCRenderFilter, CustomCallback)
function PostNPCRenderFilter.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireNPC
    self.postNPCRender = function(____, npc, renderOffset)
        self:fire(npc, renderOffset)
    end
    self.callbacksUsed = {{ModCallback.POST_NPC_RENDER, {self.postNPCRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCStateChanged"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireNPC = ____shouldFire.shouldFireNPC
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostNPCStateChanged = __TS__Class()
local PostNPCStateChanged = ____exports.PostNPCStateChanged
PostNPCStateChanged.name = "PostNPCStateChanged"
__TS__ClassExtends(PostNPCStateChanged, CustomCallback)
function PostNPCStateChanged.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {stateMap = __TS__New(
        DefaultMap,
        function(____, state) return state end
    )}}
    self.shouldFire = shouldFireNPC
    self.postNPCUpdate = function(____, npc)
        local ptrHash = GetPtrHash(npc)
        local previousState = self.v.run.stateMap:getAndSetDefault(ptrHash, npc.State)
        local currentState = npc.State
        self.v.run.stateMap:set(ptrHash, currentState)
        if previousState ~= currentState then
            self:fire(npc, previousState, currentState)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_NPC_UPDATE, {self.postNPCUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostNPCUpdateFilter"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireNPC = ____shouldFire.shouldFireNPC
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostNPCUpdateFilter = __TS__Class()
local PostNPCUpdateFilter = ____exports.PostNPCUpdateFilter
PostNPCUpdateFilter.name = "PostNPCUpdateFilter"
__TS__ClassExtends(PostNPCUpdateFilter, CustomCallback)
function PostNPCUpdateFilter.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireNPC
    self.postNPCUpdate = function(____, npc)
        self:fire(npc)
    end
    self.callbacksUsed = {{ModCallback.POST_NPC_UPDATE, {self.postNPCUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPEffectUpdateReordered"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPEffectUpdateReordered = __TS__Class()
local PostPEffectUpdateReordered = ____exports.PostPEffectUpdateReordered
PostPEffectUpdateReordered.name = "PostPEffectUpdateReordered"
__TS__ClassExtends(PostPEffectUpdateReordered, CustomCallback)
function PostPEffectUpdateReordered.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePlayer
    self.featuresUsed = {ISCFeature.PLAYER_REORDERED_CALLBACKS}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPickupCollect"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getClosestPlayer = ____players.getClosestPlayer
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePickup = ____shouldFire.shouldFirePickup
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPickupCollect = __TS__Class()
local PostPickupCollect = ____exports.PostPickupCollect
PostPickupCollect.name = "PostPickupCollect"
__TS__ClassExtends(PostPickupCollect, CustomCallback)
function PostPickupCollect.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFirePickup
    self.postPickupRender = function(____, pickup)
        local sprite = pickup:GetSprite()
        local animation = sprite:GetAnimation()
        if animation ~= "Collect" then
            return
        end
        local index = GetPtrHash(pickup)
        if not self.v.room.firedSet:has(index) then
            self.v.room.firedSet:add(index)
            local player = getClosestPlayer(nil, pickup.Position)
            self:fire(pickup, player)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_PICKUP_RENDER, {self.postPickupRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPickupInitFirst"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomVisitedCount = ____roomData.getRoomVisitedCount
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePickup = ____shouldFire.shouldFirePickup
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPickupInitFirst = __TS__Class()
local PostPickupInitFirst = ____exports.PostPickupInitFirst
PostPickupInitFirst.name = "PostPickupInitFirst"
__TS__ClassExtends(PostPickupInitFirst, CustomCallback)
function PostPickupInitFirst.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFirePickup
    self.postPickupInit = function(____, pickup)
        local room = game:GetRoom()
        local roomFrameCount = room:GetFrameCount()
        local roomVisitedCount = getRoomVisitedCount(nil)
        if roomFrameCount > 0 or roomVisitedCount == 0 then
            self:fire(pickup)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_PICKUP_INIT, {self.postPickupInit}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPickupInitLate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePickup = ____shouldFire.shouldFirePickup
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPickupInitLate = __TS__Class()
local PostPickupInitLate = ____exports.PostPickupInitLate
PostPickupInitLate.name = "PostPickupInitLate"
__TS__ClassExtends(PostPickupInitLate, CustomCallback)
function PostPickupInitLate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFirePickup
    self.postPickupUpdate = function(____, pickup)
        local index = GetPtrHash(pickup)
        if not self.v.room.firedSet:has(index) then
            self.v.room.firedSet:add(index)
            self:fire(pickup)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_PICKUP_UPDATE, {self.postPickupUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPickupStateChanged"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePickup = ____shouldFire.shouldFirePickup
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPickupStateChanged = __TS__Class()
local PostPickupStateChanged = ____exports.PostPickupStateChanged
PostPickupStateChanged.name = "PostPickupStateChanged"
__TS__ClassExtends(PostPickupStateChanged, CustomCallback)
function PostPickupStateChanged.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {stateMap = __TS__New(
        DefaultMap,
        function(____, state) return state end
    )}}
    self.shouldFire = shouldFirePickup
    self.postPickupUpdate = function(____, pickup)
        local ptrHash = GetPtrHash(pickup)
        local previousState = self.v.run.stateMap:getAndSetDefault(ptrHash, pickup.State)
        local currentState = pickup.State
        self.v.run.stateMap:set(ptrHash, currentState)
        if previousState ~= currentState then
            self:fire(pickup, previousState, currentState)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_PICKUP_UPDATE, {self.postPickupUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPitRender"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getPits = ____gridEntitiesSpecific.getPits
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePit = ____shouldFire.shouldFirePit
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPitRender = __TS__Class()
local PostPitRender = ____exports.PostPitRender
PostPitRender.name = "PostPitRender"
__TS__ClassExtends(PostPitRender, CustomCallback)
function PostPitRender.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePit
    self.postRender = function()
        for ____, pit in ipairs(getPits(nil)) do
            self:fire(pit)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CrawlSpaceVariant = ____isaac_2Dtypescript_2Ddefinitions.CrawlSpaceVariant
local DoorVariant = ____isaac_2Dtypescript_2Ddefinitions.DoorVariant
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local PitVariant = ____isaac_2Dtypescript_2Ddefinitions.PitVariant
local PoopGridEntityVariant = ____isaac_2Dtypescript_2Ddefinitions.PoopGridEntityVariant
local PressurePlateVariant = ____isaac_2Dtypescript_2Ddefinitions.PressurePlateVariant
local RockVariant = ____isaac_2Dtypescript_2Ddefinitions.RockVariant
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local getGridEntities = ____gridEntities.getGridEntities
local getMatchingGridEntities = ____gridEntities.getMatchingGridEntities
local removeGridEntities = ____gridEntities.removeGridEntities
local spawnGridEntityWithVariant = ____gridEntities.spawnGridEntityWithVariant
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
--- Helper function to spawn a `GridEntityType.CRAWL_SPACE` (18) with a specific variant.
function ____exports.spawnCrawlSpaceWithVariant(self, crawlSpaceVariant, gridIndexOrPosition)
    return spawnGridEntityWithVariant(nil, GridEntityType.CRAWL_SPACE, crawlSpaceVariant, gridIndexOrPosition)
end
--- Helper function to spawn a `GridEntityType.DOOR` (16).
function ____exports.spawnDoorWithVariant(self, doorVariant, gridIndexOrPosition)
    local gridEntity = spawnGridEntityWithVariant(nil, GridEntityType.DOOR, doorVariant, gridIndexOrPosition)
    if gridEntity == nil then
        return gridEntity
    end
    local door = gridEntity:ToDoor()
    if door == nil then
        error("Failed to spawn a door.")
    end
    return door
end
--- Helper function to spawn a `GridEntityType.PIT` (7) with a specific variant.
function ____exports.spawnPitWithVariant(self, pitVariant, gridIndexOrPosition)
    local gridEntity = spawnGridEntityWithVariant(nil, GridEntityType.PIT, pitVariant, gridIndexOrPosition)
    if gridEntity == nil then
        return gridEntity
    end
    local pit = gridEntity:ToPit()
    if pit == nil then
        error("Failed to spawn a pit.")
    end
    return pit
end
--- Helper function to spawn a `GridEntityType.POOP` (14) with a specific variant.
function ____exports.spawnPoopWithVariant(self, poopVariant, gridIndexOrPosition)
    local gridEntity = spawnGridEntityWithVariant(nil, GridEntityType.POOP, poopVariant, gridIndexOrPosition)
    if gridEntity == nil then
        return gridEntity
    end
    local poop = gridEntity:ToPoop()
    if poop == nil then
        error("Failed to spawn a poop.")
    end
    return poop
end
--- Helper function to spawn a `GridEntityType.PRESSURE_PLATE` (20) with a specific variant.
function ____exports.spawnPressurePlateWithVariant(self, pressurePlateVariant, gridIndexOrPosition)
    local gridEntity = spawnGridEntityWithVariant(nil, GridEntityType.PRESSURE_PLATE, pressurePlateVariant, gridIndexOrPosition)
    if gridEntity == nil then
        return gridEntity
    end
    local pressurePlate = gridEntity:ToPressurePlate()
    if pressurePlate == nil then
        error("Failed to spawn a pressure plate.")
    end
    return pressurePlate
end
--- Helper function to spawn a `GridEntityType.ROCK` (2) with a specific variant.
function ____exports.spawnRockWithVariant(self, rockVariant, gridIndexOrPosition)
    local gridEntity = spawnGridEntityWithVariant(nil, GridEntityType.ROCK, rockVariant, gridIndexOrPosition)
    if gridEntity == nil then
        return gridEntity
    end
    local rock = gridEntity:ToRock()
    if rock == nil then
        error("Failed to spawn a rock.")
    end
    return rock
end
--- Helper function to spawn a `GridEntityType.SPIKES` (8) with a specific variant.
function ____exports.spawnSpikesWithVariant(self, variant, gridIndexOrPosition)
    local gridEntity = spawnGridEntityWithVariant(nil, GridEntityType.SPIKES, variant, gridIndexOrPosition)
    if gridEntity == nil then
        return gridEntity
    end
    local spikes = gridEntity:ToSpikes()
    if spikes == nil then
        error("Failed to spawn spikes.")
    end
    return spikes
end
--- Helper function to spawn a `GridEntityType.TNT` (12) with a specific variant.
function ____exports.spawnTNTWithVariant(self, variant, gridIndexOrPosition)
    local gridEntity = spawnGridEntityWithVariant(nil, GridEntityType.TNT, variant, gridIndexOrPosition)
    if gridEntity == nil then
        return gridEntity
    end
    local tnt = gridEntity:ToTNT()
    if tnt == nil then
        error("Failed to spawn TNT.")
    end
    return tnt
end
--- Helper function to spawn a `GridEntityType.TELEPORTER` (23) with a specific variant.
function ____exports.spawnTeleporterWithVariant(self, variant, gridIndexOrPosition)
    return spawnGridEntityWithVariant(nil, GridEntityType.TELEPORTER, variant, gridIndexOrPosition)
end
--- Helper function to get all of the grid entities of type `GridEntityType.CRAWL_SPACE` (18) in the
-- room.
-- 
-- @param crawlSpaceVariant Optional. If specified, will only get the crawl spaces that match the
-- variant. Default is -1, which matches every variant.
function ____exports.getCrawlSpaces(self, crawlSpaceVariant)
    if crawlSpaceVariant == nil then
        crawlSpaceVariant = -1
    end
    if asNumber(nil, crawlSpaceVariant) == -1 then
        return getGridEntities(nil, GridEntityType.CRAWL_SPACE)
    end
    return getMatchingGridEntities(nil, GridEntityType.CRAWL_SPACE, crawlSpaceVariant)
end
--- Helper function to get all of the `GridEntityPit` in the room.
-- 
-- @param pitVariant Optional. If specified, will only get the pits that match the variant. Default
-- is -1, which matches every variant.
function ____exports.getPits(self, pitVariant)
    if pitVariant == nil then
        pitVariant = -1
    end
    local pits = {}
    for ____, gridEntity in ipairs(getGridEntities(nil)) do
        local pit = gridEntity:ToPit()
        if pit ~= nil then
            local thisPitVariant = pit:GetVariant()
            if asNumber(nil, pitVariant) == -1 or pitVariant == thisPitVariant then
                pits[#pits + 1] = pit
            end
        end
    end
    return pits
end
--- Helper function to get all of the `GridEntityPoop` in the room.
-- 
-- @param poopVariant Optional. If specified, will only get the poops that match the variant.
-- Default is -1, which matches every variant.
function ____exports.getPoops(self, poopVariant)
    if poopVariant == nil then
        poopVariant = -1
    end
    local poops = {}
    for ____, gridEntity in ipairs(getGridEntities(nil)) do
        local poop = gridEntity:ToPoop()
        if poop ~= nil then
            local thisPoopVariant = poop:GetVariant()
            if asNumber(nil, poopVariant) == -1 or poopVariant == thisPoopVariant then
                poops[#poops + 1] = poop
            end
        end
    end
    return poops
end
--- Helper function to get all of the `GridEntityPressurePlate` in the room.
-- 
-- @param pressurePlateVariant Optional. If specified, will only get the pressure plates that match
-- the variant. Default is -1, which matches every variant.
function ____exports.getPressurePlates(self, pressurePlateVariant)
    if pressurePlateVariant == nil then
        pressurePlateVariant = -1
    end
    local pressurePlates = {}
    for ____, gridEntity in ipairs(getGridEntities(nil)) do
        local pressurePlate = gridEntity:ToPressurePlate()
        if pressurePlate ~= nil then
            local thisPressurePlateVariant = pressurePlate:GetVariant()
            if asNumber(nil, pressurePlateVariant) == -1 or pressurePlateVariant == thisPressurePlateVariant then
                pressurePlates[#pressurePlates + 1] = pressurePlate
            end
        end
    end
    return pressurePlates
end
--- Helper function to get all of the `GridEntityRock` in the room.
-- 
-- @param variant Optional. If specified, will only get the rocks that match the variant. Default is
-- -1, which matches every variant. Note that this is not the same thing as the
-- `RockVariant` enum, since that only applies to `GridEntityType.ROCK`, and other
-- types of grid entities can be the `GridEntityRock` class.
function ____exports.getRocks(self, variant)
    if variant == nil then
        variant = -1
    end
    local rocks = {}
    for ____, gridEntity in ipairs(getGridEntities(nil)) do
        local rock = gridEntity:ToRock()
        if rock ~= nil then
            local thisVariant = rock:GetVariant()
            if variant == -1 or variant == thisVariant then
                rocks[#rocks + 1] = rock
            end
        end
    end
    return rocks
end
--- Helper function to get all of the `GridEntitySpikes` in the room.
function ____exports.getSpikes(self, variant)
    if variant == nil then
        variant = -1
    end
    local spikes = {}
    for ____, gridEntity in ipairs(getGridEntities(nil)) do
        local spike = gridEntity:ToSpikes()
        if spike ~= nil then
            local thisVariant = spike:GetVariant()
            if variant == -1 or variant == thisVariant then
                spikes[#spikes + 1] = spike
            end
        end
    end
    return spikes
end
--- Helper function to get all of the `GridEntityTNT` in the room.
function ____exports.getTNT(self, variant)
    if variant == nil then
        variant = -1
    end
    local tntArray = {}
    for ____, gridEntity in ipairs(getGridEntities(nil)) do
        local tnt = gridEntity:ToTNT()
        if tnt ~= nil then
            local thisVariant = tnt:GetVariant()
            if variant == -1 or variant == thisVariant then
                tntArray[#tntArray + 1] = tnt
            end
        end
    end
    return tntArray
end
--- Helper function to get all of the grid entities of type `GridEntityType.TELEPORTER` (23) in the
-- room.
-- 
-- @param variant Optional. If specified, will only get the teleporters that match the variant.
-- Default is -1, which matches every variant.
function ____exports.getTeleporters(self, variant)
    if variant == nil then
        variant = -1
    end
    if variant == -1 then
        return getGridEntities(nil, GridEntityType.TELEPORTER)
    end
    return getMatchingGridEntities(nil, GridEntityType.TELEPORTER, variant)
end
--- Helper function to get all of the grid entities of type `GridEntityType.TRAPDOOR` (17) in the
-- room. Specify a specific trapdoor variant to select only trapdoors of that variant.
-- 
-- @param trapdoorVariant Optional. If specified, will only get the trapdoors that match the
-- variant. Default is -1, which matches every variant.
function ____exports.getTrapdoors(self, trapdoorVariant)
    if trapdoorVariant == nil then
        trapdoorVariant = -1
    end
    if asNumber(nil, trapdoorVariant) == -1 then
        return getGridEntities(nil, GridEntityType.TRAPDOOR)
    end
    return getMatchingGridEntities(nil, GridEntityType.TRAPDOOR, trapdoorVariant)
end
--- Helper function to remove all of the `GridEntityType.CRAWL_SPACE` (18) in the room.
-- 
-- @param crawlSpaceVariant Optional. If specified, will only remove the crawl spaces that match
-- this variant. Default is -1, which matches every variant.
-- @param updateRoom Optional. Whether or not to update the room after the crawl spaces are removed.
-- Default is false. For more information, see the description of the
-- `removeGridEntities` helper function.
-- @param cap Optional. If specified, will only remove the given amount of crawl spaces.
-- @returns The crawl spaces that were removed.
function ____exports.removeAllCrawlSpaces(self, crawlSpaceVariant, updateRoom, cap)
    if crawlSpaceVariant == nil then
        crawlSpaceVariant = -1
    end
    if updateRoom == nil then
        updateRoom = false
    end
    local crawlSpaces = ____exports.getCrawlSpaces(nil, crawlSpaceVariant)
    return removeGridEntities(nil, crawlSpaces, updateRoom, cap)
end
--- Helper function to remove all of the `GridEntityPit` in the room.
-- 
-- @param pitVariant Optional. If specified, will only remove the pits that match this variant.
-- Default is -1, which matches every variant.
-- @param updateRoom Optional. Whether or not to update the room after the pits are removed. Default
-- is false. For more information, see the description of the `removeGridEntities`
-- helper function.
-- @param cap Optional. If specified, will only remove the given amount of pits.
-- @returns The pits that were removed.
function ____exports.removeAllPits(self, pitVariant, updateRoom, cap)
    if pitVariant == nil then
        pitVariant = -1
    end
    if updateRoom == nil then
        updateRoom = false
    end
    local pits = ____exports.getPits(nil, pitVariant)
    return removeGridEntities(nil, pits, updateRoom, cap)
end
--- Helper function to remove all of the `GridEntityPoop` in the room.
-- 
-- Note that poops can either be an entity or a grid entity, depending on the situation. This
-- function will only remove the grid entity poops.
-- 
-- @param poopVariant Optional. If specified, will only remove the poops that match this variant.
-- Default is -1, which matches every variant.
-- @param updateRoom Optional. Whether or not to update the room after the poops are removed.
-- Default is false. For more information, see the description of the
-- `removeGridEntities` helper function.
-- @param cap Optional. If specified, will only remove the given amount of poops.
-- @returns The poops that were removed.
function ____exports.removeAllPoops(self, poopVariant, updateRoom, cap)
    if poopVariant == nil then
        poopVariant = -1
    end
    if updateRoom == nil then
        updateRoom = false
    end
    local poops = ____exports.getPoops(nil, poopVariant)
    return removeGridEntities(nil, poops, updateRoom, cap)
end
--- Helper function to remove all of the `GridEntityPressurePlate` in the room.
-- 
-- @param pressurePlateVariant Optional. If specified, will only remove the pressure plates that
-- match this variant. Default is -1, which matches every variant.
-- @param updateRoom Optional. Whether or not to update the room after the pressure plates are
-- removed. Default is false. For more information, see the description of the
-- `removeGridEntities` helper function.
-- @param cap Optional. If specified, will only remove the given amount of pressure plates.
-- @returns The pressure plates that were removed.
function ____exports.removeAllPressurePlates(self, pressurePlateVariant, updateRoom, cap)
    if pressurePlateVariant == nil then
        pressurePlateVariant = -1
    end
    if updateRoom == nil then
        updateRoom = false
    end
    local pressurePlates = ____exports.getPressurePlates(nil, pressurePlateVariant)
    return removeGridEntities(nil, pressurePlates, updateRoom, cap)
end
--- Helper function to remove all of the `GridEntityRock` in the room.
-- 
-- @param variant Optional. If specified, will only remove the rocks that match this variant.
-- Default is -1, which matches every variant. Note that this is not the same thing
-- as the `RockVariant` enum, since that only applies to `GridEntityType.ROCK`, and
-- other types of grid entities can be the `GridEntityRock` class.
-- @param updateRoom Optional. Whether or not to update the room after the rocks are removed.
-- Default is false. For more information, see the description of the
-- `removeGridEntities` helper function.
-- @param cap Optional. If specified, will only remove the given amount of rocks.
-- @returns The rocks that were removed.
function ____exports.removeAllRocks(self, variant, updateRoom, cap)
    if variant == nil then
        variant = -1
    end
    if updateRoom == nil then
        updateRoom = false
    end
    local rocks = ____exports.getRocks(nil, variant)
    return removeGridEntities(nil, rocks, updateRoom, cap)
end
--- Helper function to remove all of the `GridEntitySpikes` in the room.
-- 
-- @param variant Optional. If specified, will only remove the spikes that match this variant.
-- Default is -1, which matches every variant.
-- @param updateRoom Optional. Whether or not to update the room after the spikes are removed.
-- Default is false. For more information, see the description of the
-- `removeGridEntities` helper function.
-- @param cap Optional. If specified, will only remove the given amount of spikes.
-- @returns The spikes that were removed.
function ____exports.removeAllSpikes(self, variant, updateRoom, cap)
    if variant == nil then
        variant = -1
    end
    if updateRoom == nil then
        updateRoom = false
    end
    local spikes = ____exports.getSpikes(nil, variant)
    return removeGridEntities(nil, spikes, updateRoom, cap)
end
--- Helper function to remove all of the `GridEntityTNT` in the room.
-- 
-- @param variant Optional. If specified, will only remove the TNTs that match this variant. Default
-- is -1, which matches every variant.
-- @param updateRoom Optional. Whether or not to update the room after the TNTs are removed. Default
-- is false. For more information, see the description of the `removeGridEntities`
-- helper function.
-- @param cap Optional. If specified, will only remove the given amount of TNTs.
-- @returns The TNTs that were removed.
function ____exports.removeAllTNT(self, variant, updateRoom, cap)
    if variant == nil then
        variant = -1
    end
    if updateRoom == nil then
        updateRoom = false
    end
    local tnt = ____exports.getTNT(nil, variant)
    return removeGridEntities(nil, tnt, updateRoom, cap)
end
--- Helper function to remove all of the `GridEntityType.TELEPORTER` (23) in the room.
-- 
-- @param variant Optional. If specified, will only remove the teleporters that match this variant.
-- Default is -1, which matches every variant.
-- @param updateRoom Optional. Whether or not to update the room after the teleporters are removed.
-- Default is false. For more information, see the description of the
-- `removeGridEntities` helper function.
-- @param cap Optional. If specified, will only remove the given amount of teleporters.
-- @returns The teleporters that were removed.
function ____exports.removeAllTeleporters(self, variant, updateRoom, cap)
    if variant == nil then
        variant = -1
    end
    if updateRoom == nil then
        updateRoom = false
    end
    local teleporters = ____exports.getTeleporters(nil, variant)
    return removeGridEntities(nil, teleporters, updateRoom, cap)
end
--- Helper function to remove all of the `GridEntityType.TRAPDOOR` (17) in the room.
-- 
-- @param trapdoorVariant Optional. If specified, will only remove the trapdoors that match this
-- variant. Default is -1, which matches every variant.
-- @param updateRoom Optional. Whether or not to update the room after the trapdoors are removed.
-- Default is false. For more information, see the description of the
-- `removeGridEntities` helper function.
-- @param cap Optional. If specified, will only remove the given amount of trapdoors.
-- @returns The trapdoors that were removed.
function ____exports.removeAllTrapdoors(self, trapdoorVariant, updateRoom, cap)
    if trapdoorVariant == nil then
        trapdoorVariant = -1
    end
    if updateRoom == nil then
        updateRoom = false
    end
    local trapdoors = ____exports.getTrapdoors(nil, trapdoorVariant)
    return removeGridEntities(nil, trapdoors, updateRoom, cap)
end
--- Helper function to spawn a `GridEntityType.CRAWL_SPACE` (18).
function ____exports.spawnCrawlSpace(self, gridIndexOrPosition)
    return ____exports.spawnCrawlSpaceWithVariant(nil, CrawlSpaceVariant.NORMAL, gridIndexOrPosition)
end
--- Helper function to spawn a `GridEntityType.PIT` (7) with a specific variant.
function ____exports.spawnDoor(self, gridIndexOrPosition)
    return ____exports.spawnDoorWithVariant(nil, DoorVariant.UNSPECIFIED, gridIndexOrPosition)
end
--- Helper function to spawn a `GridEntityType.DOOR` (16) with a specific variant.
function ____exports.spawnPit(self, gridIndexOrPosition)
    return ____exports.spawnPitWithVariant(nil, PitVariant.NORMAL, gridIndexOrPosition)
end
--- Helper function to spawn a `GridEntityType.POOP` (14).
function ____exports.spawnPoop(self, gridIndexOrPosition)
    return ____exports.spawnPoopWithVariant(nil, PoopGridEntityVariant.NORMAL, gridIndexOrPosition)
end
--- Helper function to spawn a `GridEntityType.PRESSURE_PLATE` (20).
function ____exports.spawnPressurePlate(self, gridIndexOrPosition)
    return ____exports.spawnPressurePlateWithVariant(nil, PressurePlateVariant.PRESSURE_PLATE, gridIndexOrPosition)
end
--- Helper function to spawn a `GridEntityType.ROCK` (2).
function ____exports.spawnRock(self, gridIndexOrPosition)
    return ____exports.spawnRockWithVariant(nil, RockVariant.NORMAL, gridIndexOrPosition)
end
--- Helper function to spawn a `GridEntityType.SPIKES` (8).
function ____exports.spawnSpikes(self, gridIndexOrPosition)
    return ____exports.spawnSpikesWithVariant(nil, 0, gridIndexOrPosition)
end
--- Helper function to spawn a `GridEntityType.TNT` (12).
function ____exports.spawnTNT(self, gridIndexOrPosition)
    return ____exports.spawnTNTWithVariant(nil, 0, gridIndexOrPosition)
end
--- Helper function to spawn a `GridEntityType.TELEPORTER` (23).
function ____exports.spawnTeleporter(self, gridIndexOrPosition)
    return ____exports.spawnTeleporterWithVariant(nil, 0, gridIndexOrPosition)
end
--- Helper function to spawn a `GridEntityType.TRAPDOOR` (17).
function ____exports.spawnTrapdoor(self, gridIndexOrPosition)
    return ____exports.spawnCrawlSpaceWithVariant(nil, CrawlSpaceVariant.NORMAL, gridIndexOrPosition)
end
--- Helper function to spawn a `GridEntityType.TRAPDOOR` (17) with a specific variant.
function ____exports.spawnTrapdoorWithVariant(self, trapdoorVariant, gridIndexOrPosition)
    return spawnGridEntityWithVariant(nil, GridEntityType.TRAPDOOR, trapdoorVariant, gridIndexOrPosition)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPitUpdate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getPits = ____gridEntitiesSpecific.getPits
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePit = ____shouldFire.shouldFirePit
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPitUpdate = __TS__Class()
local PostPitUpdate = ____exports.PostPitUpdate
PostPitUpdate.name = "PostPitUpdate"
__TS__ClassExtends(PostPitUpdate, CustomCallback)
function PostPitUpdate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePit
    self.postUpdate = function()
        for ____, pit in ipairs(getPits(nil)) do
            self:fire(pit)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerChangeHealth"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____HealthType = require("lua_modules.isaacscript-common.dist.src.enums.HealthType")
local HealthType = ____HealthType.HealthType
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____playerHealth = require("lua_modules.isaacscript-common.dist.src.functions.playerHealth")
local getPlayerHealthType = ____playerHealth.getPlayerHealthType
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getPlayerIndex = ____playerIndex.getPlayerIndex
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPlayerChangeHealth = __TS__Class()
local PostPlayerChangeHealth = ____exports.PostPlayerChangeHealth
PostPlayerChangeHealth.name = "PostPlayerChangeHealth"
__TS__ClassExtends(PostPlayerChangeHealth, CustomCallback)
function PostPlayerChangeHealth.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {playersHealthMap = __TS__New(
        DefaultMap,
        function() return __TS__New(Map) end
    )}}
    self.shouldFire = shouldFirePlayer
    self.postPEffectReordered = function(____, player)
        local playerIndex = getPlayerIndex(nil, player, true)
        local playerHealthMap = self.v.run.playersHealthMap:getAndSetDefault(playerIndex)
        for ____, healthType in ipairs(getEnumValues(nil, HealthType)) do
            local storedHealthValue = playerHealthMap:get(healthType)
            local currentHealthValue = getPlayerHealthType(nil, player, healthType)
            playerHealthMap:set(healthType, currentHealthValue)
            if storedHealthValue ~= nil and storedHealthValue ~= currentHealthValue then
                local difference = currentHealthValue - storedHealthValue
                self:fire(
                    player,
                    healthType,
                    difference,
                    storedHealthValue,
                    currentHealthValue
                )
            end
        end
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectReordered}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerChangeStat"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local statEquals
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____StatType = require("lua_modules.isaacscript-common.dist.src.enums.StatType")
local StatType = ____StatType.StatType
local ____bitSet128 = require("lua_modules.isaacscript-common.dist.src.functions.bitSet128")
local isBitSet128 = ____bitSet128.isBitSet128
local ____color = require("lua_modules.isaacscript-common.dist.src.functions.color")
local colorEquals = ____color.colorEquals
local isColor = ____color.isColor
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getPlayerIndex = ____playerIndex.getPlayerIndex
local ____playerStats = require("lua_modules.isaacscript-common.dist.src.functions.playerStats")
local getPlayerStat = ____playerStats.getPlayerStat
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isBoolean = ____types.isBoolean
local isNumber = ____types.isNumber
local ____vector = require("lua_modules.isaacscript-common.dist.src.functions.vector")
local isVector = ____vector.isVector
local vectorEquals = ____vector.vectorEquals
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
function statEquals(self, oldValue, newValue)
    local isNumberStat = isNumber(nil, oldValue) and isNumber(nil, newValue)
    if isNumberStat then
        return oldValue == newValue
    end
    local isBooleanStat = isBoolean(nil, oldValue) and isBoolean(nil, newValue)
    if isBooleanStat then
        return oldValue == newValue
    end
    local isBitSet128Stat = isBitSet128(nil, oldValue) and isBitSet128(nil, newValue)
    if isBitSet128Stat then
        return oldValue == newValue
    end
    local isColorStat = isColor(nil, oldValue) and isColor(nil, newValue)
    if isColorStat then
        return colorEquals(nil, oldValue, newValue)
    end
    local isVectorStat = isVector(nil, oldValue) and isVector(nil, newValue)
    if isVectorStat then
        return vectorEquals(nil, oldValue, newValue)
    end
    error("Failed to determine the type of a stat in the \"POST_PLAYER_CHANGE_STAT\" callback.")
end
____exports.PostPlayerChangeStat = __TS__Class()
local PostPlayerChangeStat = ____exports.PostPlayerChangeStat
PostPlayerChangeStat.name = "PostPlayerChangeStat"
__TS__ClassExtends(PostPlayerChangeStat, CustomCallback)
function PostPlayerChangeStat.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {playersStatMap = __TS__New(
        DefaultMap,
        function() return __TS__New(Map) end
    )}}
    self.shouldFire = shouldFirePlayer
    self.postPEffectReordered = function(____, player)
        local playerIndex = getPlayerIndex(nil, player, true)
        local playerStatMap = self.v.run.playersStatMap:getAndSetDefault(playerIndex)
        for ____, statType in ipairs(getEnumValues(nil, StatType)) do
            do
                local storedStatValue = playerStatMap:get(statType)
                local currentStatValue = getPlayerStat(nil, player, statType)
                playerStatMap:set(statType, currentStatValue)
                if storedStatValue == nil then
                    goto __continue5
                end
                if not statEquals(nil, storedStatValue, currentStatValue) then
                    local isNumberStat = isNumber(nil, storedStatValue) and isNumber(nil, currentStatValue)
                    local difference = isNumberStat and currentStatValue - storedStatValue or 0
                    self:fire(
                        player,
                        statType,
                        difference,
                        storedStatValue,
                        currentStatValue
                    )
                end
            end
            ::__continue5::
        end
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectReordered}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.StatType"] = function(...) 
local ____exports = {}
--- This represents the kinds of stats that a player can have.
____exports.StatType = {}
____exports.StatType.DAMAGE = 0
____exports.StatType[____exports.StatType.DAMAGE] = "DAMAGE"
____exports.StatType.FIRE_DELAY = 1
____exports.StatType[____exports.StatType.FIRE_DELAY] = "FIRE_DELAY"
____exports.StatType.SHOT_SPEED = 2
____exports.StatType[____exports.StatType.SHOT_SPEED] = "SHOT_SPEED"
____exports.StatType.TEAR_HEIGHT = 3
____exports.StatType[____exports.StatType.TEAR_HEIGHT] = "TEAR_HEIGHT"
____exports.StatType.TEAR_RANGE = 4
____exports.StatType[____exports.StatType.TEAR_RANGE] = "TEAR_RANGE"
____exports.StatType.TEAR_FALLING_ACCELERATION = 5
____exports.StatType[____exports.StatType.TEAR_FALLING_ACCELERATION] = "TEAR_FALLING_ACCELERATION"
____exports.StatType.TEAR_FALLING_SPEED = 6
____exports.StatType[____exports.StatType.TEAR_FALLING_SPEED] = "TEAR_FALLING_SPEED"
____exports.StatType.MOVE_SPEED = 7
____exports.StatType[____exports.StatType.MOVE_SPEED] = "MOVE_SPEED"
____exports.StatType.TEAR_FLAG = 8
____exports.StatType[____exports.StatType.TEAR_FLAG] = "TEAR_FLAG"
____exports.StatType.TEAR_COLOR = 9
____exports.StatType[____exports.StatType.TEAR_COLOR] = "TEAR_COLOR"
____exports.StatType.FLYING = 10
____exports.StatType[____exports.StatType.FLYING] = "FLYING"
____exports.StatType.LUCK = 11
____exports.StatType[____exports.StatType.LUCK] = "LUCK"
____exports.StatType.SIZE = 12
____exports.StatType[____exports.StatType.SIZE] = "SIZE"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.playerStats"] = function(...) 
local ____exports = {}
local ____StatType = require("lua_modules.isaacscript-common.dist.src.enums.StatType")
local StatType = ____StatType.StatType
--- Helper function to get the stat for a player corresponding to the `StatType`.
function ____exports.getPlayerStat(self, player, statType)
    return ({
        [StatType.DAMAGE] = player.Damage,
        [StatType.FIRE_DELAY] = player.MaxFireDelay,
        [StatType.SHOT_SPEED] = player.ShotSpeed,
        [StatType.TEAR_HEIGHT] = player.TearHeight,
        [StatType.TEAR_RANGE] = player.TearRange,
        [StatType.TEAR_FALLING_ACCELERATION] = player.TearFallingAcceleration,
        [StatType.TEAR_FALLING_SPEED] = player.TearFallingSpeed,
        [StatType.MOVE_SPEED] = player.MoveSpeed,
        [StatType.TEAR_FLAG] = player.TearFlags,
        [StatType.TEAR_COLOR] = player.TearColor,
        [StatType.FLYING] = player.CanFly,
        [StatType.LUCK] = player.Luck,
        [StatType.SIZE] = player.SpriteScale
    })[statType]
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerChangeType"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer
local mapSetPlayer = ____playerDataStructures.mapSetPlayer
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPlayerChangeType = __TS__Class()
local PostPlayerChangeType = ____exports.PostPlayerChangeType
PostPlayerChangeType.name = "PostPlayerChangeType"
__TS__ClassExtends(PostPlayerChangeType, CustomCallback)
function PostPlayerChangeType.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {playersCharacterMap = __TS__New(
        DefaultMap,
        function(____, character) return character end
    )}}
    self.shouldFire = shouldFirePlayer
    self.postPEffectReordered = function(____, player)
        local character = player:GetPlayerType()
        local storedCharacter = defaultMapGetPlayer(nil, self.v.run.playersCharacterMap, player, character)
        if character ~= storedCharacter then
            mapSetPlayer(nil, self.v.run.playersCharacterMap, player, character)
            self:fire(player, storedCharacter, character)
        end
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectReordered}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerCollectibleAdded"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireCollectibleType = ____shouldFire.shouldFireCollectibleType
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPlayerCollectibleAdded = __TS__Class()
local PostPlayerCollectibleAdded = ____exports.PostPlayerCollectibleAdded
PostPlayerCollectibleAdded.name = "PostPlayerCollectibleAdded"
__TS__ClassExtends(PostPlayerCollectibleAdded, CustomCallback)
function PostPlayerCollectibleAdded.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireCollectibleType
    self.featuresUsed = {ISCFeature.PLAYER_COLLECTIBLE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerCollectibleRemoved"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireCollectibleType = ____shouldFire.shouldFireCollectibleType
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPlayerCollectibleRemoved = __TS__Class()
local PostPlayerCollectibleRemoved = ____exports.PostPlayerCollectibleRemoved
PostPlayerCollectibleRemoved.name = "PostPlayerCollectibleRemoved"
__TS__ClassExtends(PostPlayerCollectibleRemoved, CustomCallback)
function PostPlayerCollectibleRemoved.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireCollectibleType
    self.featuresUsed = {ISCFeature.PLAYER_COLLECTIBLE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerFatalDamage"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local DamageFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DamageFlagZero
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local mapGetPlayer = ____playerDataStructures.mapGetPlayer
local mapSetPlayer = ____playerDataStructures.mapSetPlayer
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local isChildPlayer = ____playerIndex.isChildPlayer
local ____revive = require("lua_modules.isaacscript-common.dist.src.functions.revive")
local isDamageToPlayerFatal = ____revive.isDamageToPlayerFatal
local willPlayerRevive = ____revive.willPlayerRevive
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local inBossRoomOf = ____rooms.inBossRoomOf
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPlayerFatalDamage = __TS__Class()
local PostPlayerFatalDamage = ____exports.PostPlayerFatalDamage
PostPlayerFatalDamage.name = "PostPlayerFatalDamage"
__TS__ClassExtends(PostPlayerFatalDamage, CustomCallback)
function PostPlayerFatalDamage.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {playersLastDamageGameFrame = __TS__New(Map)}}
    self.shouldFire = shouldFirePlayer
    self.entityTakeDmgPlayer = function(____, entity, amount, damageFlags, source, countdownFrames)
        local player = entity:ToPlayer()
        if player == nil then
            return nil
        end
        if isChildPlayer(nil, player) then
            return nil
        end
        local gameFrameCount = game:GetFrameCount()
        local lastDamageGameFrame = mapGetPlayer(nil, self.v.run.playersLastDamageGameFrame, player)
        mapSetPlayer(nil, self.v.run.playersLastDamageGameFrame, player, gameFrameCount)
        if willPlayerRevive(nil, player) then
            return nil
        end
        if not isDamageToPlayerFatal(
            nil,
            player,
            amount,
            source,
            lastDamageGameFrame
        ) then
            return nil
        end
        local shouldSustainDeath = self:fire(
            player,
            amount,
            damageFlags,
            source,
            countdownFrames
        )
        if shouldSustainDeath ~= nil then
            return shouldSustainDeath
        end
        return nil
    end
    self.preUseItemBible = function(____, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData)
        if not inBossRoomOf(nil, BossID.SATAN) then
            return nil
        end
        local shouldSustainDeath = self:fire(
            player,
            0,
            DamageFlagZero,
            EntityRef(player),
            0
        )
        if shouldSustainDeath ~= nil then
            return not shouldSustainDeath
        end
        return nil
    end
    self.callbacksUsed = {{ModCallback.ENTITY_TAKE_DMG, {self.entityTakeDmgPlayer, EntityType.PLAYER}}, {ModCallback.PRE_USE_ITEM, {self.preUseItemBible, CollectibleType.BIBLE}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.revive"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local NullItemID = ____isaac_2Dtypescript_2Ddefinitions.NullItemID
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local MAX_TAINTED_SAMSON_BERSERK_CHARGE = ____constants.MAX_TAINTED_SAMSON_BERSERK_CHARGE
local TAINTED_SAMSON_BERSERK_CHARGE_FROM_TAKING_DAMAGE = ____constants.TAINTED_SAMSON_BERSERK_CHARGE_FROM_TAKING_DAMAGE
local ____characters = require("lua_modules.isaacscript-common.dist.src.functions.characters")
local getCharacterDeathAnimationName = ____characters.getCharacterDeathAnimationName
local ____playerHealth = require("lua_modules.isaacscript-common.dist.src.functions.playerHealth")
local getPlayerMaxHeartContainers = ____playerHealth.getPlayerMaxHeartContainers
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getPlayerNumHitsRemaining = ____players.getPlayerNumHitsRemaining
local hasLostCurse = ____players.hasLostCurse
local isKeeper = ____players.isKeeper
local ____sprites = require("lua_modules.isaacscript-common.dist.src.functions.sprites")
local getLastFrameOfAnimation = ____sprites.getLastFrameOfAnimation
local ____trinketGive = require("lua_modules.isaacscript-common.dist.src.functions.trinketGive")
local giveTrinketsBack = ____trinketGive.giveTrinketsBack
local temporarilyRemoveTrinket = ____trinketGive.temporarilyRemoveTrinket
--- Helper function to determine if the player will be revived by the Heartbreak collectible if they
-- take fatal damage. This is contingent on the character that they are playing as and the amount of
-- broken hearts that they already have.
function ____exports.willReviveFromHeartbreak(self, player)
    if not player:HasCollectible(CollectibleType.HEARTBREAK) then
        return false
    end
    local maxHeartContainers = getPlayerMaxHeartContainers(nil, player)
    local numBrokenHeartsThatWillBeAdded = isKeeper(nil, player) and 1 or 2
    local brokenHearts = player:GetBrokenHearts()
    local numBrokenHeartsAfterRevival = numBrokenHeartsThatWillBeAdded + brokenHearts
    return maxHeartContainers > numBrokenHeartsAfterRevival
end
--- Helper function to determine if the Spirit Shackles item is in an enabled state. (It can be
-- either enabled or disabled.)
function ____exports.willReviveFromSpiritShackles(self, player)
    if not player:HasCollectible(CollectibleType.SPIRIT_SHACKLES) then
        return false
    end
    local effects = player:GetEffects()
    local spiritShacklesEnabled = not effects:HasNullEffect(NullItemID.SPIRIT_SHACKLES_DISABLED)
    local playerInSoulForm = effects:HasNullEffect(NullItemID.SPIRIT_SHACKLES_SOUL)
    return spiritShacklesEnabled and not playerInSoulForm
end
--- Uses the player's current health and other miscellaneous things to determine if incoming damage
-- will be fatal.
function ____exports.isDamageToPlayerFatal(self, player, amount, source, lastDamageGameFrame)
    local gameFrameCount = game:GetFrameCount()
    local character = player:GetPlayerType()
    local effects = player:GetEffects()
    local isBerserk = effects:HasCollectibleEffect(CollectibleType.BERSERK)
    if character == PlayerType.JACOB_B and source.Type == EntityType.DARK_ESAU then
        return false
    end
    if isBerserk then
        return false
    end
    local berserkChargeAfterHit = player.SamsonBerserkCharge + TAINTED_SAMSON_BERSERK_CHARGE_FROM_TAKING_DAMAGE
    if character == PlayerType.SAMSON_B and berserkChargeAfterHit >= MAX_TAINTED_SAMSON_BERSERK_CHARGE then
        return false
    end
    if ____exports.willReviveFromSpiritShackles(nil, player) then
        return false
    end
    if character == PlayerType.JACOB_2_B then
        return true
    end
    if hasLostCurse(nil, player) then
        return true
    end
    local playerNumAllHearts = getPlayerNumHitsRemaining(nil, player)
    if amount < playerNumAllHearts then
        return false
    end
    if ____exports.willReviveFromHeartbreak(nil, player) then
        return false
    end
    if player:HasCollectible(CollectibleType.BROKEN_GLASS_CANNON) and gameFrameCount == lastDamageGameFrame then
        return false
    end
    local hearts = player:GetHearts()
    local eternalHearts = player:GetEternalHearts()
    local soulHearts = player:GetSoulHearts()
    local boneHearts = player:GetBoneHearts()
    if hearts > 0 and soulHearts > 0 or hearts > 0 and boneHearts > 0 or soulHearts > 0 and boneHearts > 0 or soulHearts > 0 and eternalHearts > 0 or boneHearts >= 2 then
        return false
    end
    return true
end
--- Assuming that we are on the frame of fatal damage, this function returns whether or not
-- Mysterious Paper would rotate to Missing Poster on the frame that the "Game Over" screen would
-- appear (which would subsequently save the player from fatal damage).
-- 
-- Mysterious Paper rotates between the 4 items on every frame, in order. The formula for whether
-- Mysterious Paper be Missing Power is: `gameFrameCount % 4 === 3`
function ____exports.willMysteriousPaperRevive(self, player)
    local gameFrameCount = game:GetFrameCount()
    local sprite = player:GetSprite()
    local character = player:GetPlayerType()
    local animation = getCharacterDeathAnimationName(nil, character)
    local deathAnimationFrames = getLastFrameOfAnimation(nil, sprite, animation)
    local frameOfDeath = gameFrameCount + deathAnimationFrames + 1
    return frameOfDeath % 4 == 3
end
--- The `EntityPlayer.WillPlayerRevive` method does not properly account for Mysterious Paper, so use
-- this helper function instead for more robust revival detection.
function ____exports.willPlayerRevive(self, player)
    local trinketSituation = temporarilyRemoveTrinket(nil, player, TrinketType.MYSTERIOUS_PAPER)
    local willRevive = player:WillPlayerRevive() or trinketSituation ~= nil and ____exports.willMysteriousPaperRevive(nil, player)
    giveTrinketsBack(nil, player, trinketSituation)
    return willRevive
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.trinketGive"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local TrinketSlot = ____isaac_2Dtypescript_2Ddefinitions.TrinketSlot
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local useActiveItemTemp = ____players.useActiveItemTemp
local ____trinkets = require("lua_modules.isaacscript-common.dist.src.functions.trinkets")
local getGoldenTrinketType = ____trinkets.getGoldenTrinketType
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local ____repeat = ____utils["repeat"]
--- Helper function to temporarily removes a player's held trinkets, if any. This will not remove any
-- smelted trinkets. Use this in combination with the `giveTrinketsBack` function to take away and
-- give back trinkets on the same frame.
-- 
-- @returns Undefined if the player does not have any trinkets, or TrinketSituation if they do.
function ____exports.temporarilyRemoveTrinkets(self, player)
    local trinketType1 = player:GetTrinket(TrinketSlot.SLOT_1)
    local trinketType2 = player:GetTrinket(TrinketSlot.SLOT_2)
    if trinketType1 == TrinketType.NULL and trinketType2 == TrinketType.NULL then
        return nil
    end
    if trinketType1 ~= TrinketType.NULL then
        player:TryRemoveTrinket(trinketType1)
    end
    if trinketType2 ~= TrinketType.NULL then
        player:TryRemoveTrinket(trinketType2)
    end
    return {trinketTypeRemoved = TrinketType.NULL, trinketType1 = trinketType1, trinketType2 = trinketType2, numSmeltedTrinkets = 0}
end
--- Helper function to restore the player's trinkets back to the way they were before the
-- `temporarilyRemoveTrinket` function was used. It will re-smelt any smelted trinkets that were
-- removed.
function ____exports.giveTrinketsBack(self, player, trinketSituation)
    if trinketSituation == nil then
        return
    end
    local trinketType1 = player:GetTrinket(TrinketSlot.SLOT_1)
    local trinketType2 = player:GetTrinket(TrinketSlot.SLOT_2)
    if trinketType1 ~= TrinketType.NULL then
        player:TryRemoveTrinket(trinketType1)
    end
    if trinketType2 ~= TrinketType.NULL then
        player:TryRemoveTrinket(trinketType2)
    end
    ____repeat(
        nil,
        trinketSituation.numSmeltedTrinkets,
        function()
            player:AddTrinket(trinketSituation.trinketTypeRemoved, false)
            useActiveItemTemp(nil, player, CollectibleType.SMELTER)
        end
    )
    if trinketSituation.trinketType1 ~= TrinketType.NULL then
        player:AddTrinket(trinketSituation.trinketType1, false)
    end
    if trinketSituation.trinketType2 ~= TrinketType.NULL then
        player:AddTrinket(trinketSituation.trinketType2, false)
    end
end
--- Helper function to smelt a trinket. Before smelting, this function will automatically remove the
-- trinkets that the player is holding, if any, and then give them back after the new trinket is
-- smelted.
-- 
-- @param player The player to smelt the trinkets to.
-- @param trinketType The trinket type to smelt.
-- @param numTrinkets Optional. If specified, will smelt the given number of trinkets. Use this to
-- avoid calling this function multiple times. Default is 1.
function ____exports.smeltTrinket(self, player, trinketType, numTrinkets)
    if numTrinkets == nil then
        numTrinkets = 1
    end
    local trinketSituation = ____exports.temporarilyRemoveTrinkets(nil, player)
    ____repeat(
        nil,
        numTrinkets,
        function()
            player:AddTrinket(trinketType)
            useActiveItemTemp(nil, player, CollectibleType.SMELTER)
        end
    )
    ____exports.giveTrinketsBack(nil, player, trinketSituation)
end
--- Helper function to smelt two or more different trinkets. If you want to smelt one trinket (or
-- multiple copies of one trinket), then use the `smeltTrinket` helper function instead.
-- 
-- This function is variadic, meaning that you can pass as many trinket types as you want to smelt.
-- 
-- Before smelting, this function will automatically remove the trinkets that the player is holding,
-- if any, and then give them back after the new trinket is smelted.
-- 
-- @param player The player to smelt the trinkets to.
-- @param trinketTypes The trinket types to smelt.
function ____exports.smeltTrinkets(self, player, ...)
    local trinketTypes = {...}
    for ____, trinketType in ipairs(trinketTypes) do
        ____exports.smeltTrinket(nil, player, trinketType)
    end
end
--- Helper function to temporarily remove a specific kind of trinket from the player. Use this in
-- combination with the `giveTrinketsBack` function to take away and give back a trinket on the same
-- frame. This function correctly handles multiple trinket slots and ensures that all copies of the
-- trinket are removed, including smelted trinkets.
-- 
-- Note that one smelted golden trinket is the same as two smelted normal trinkets.
-- 
-- @returns Undefined if the player does not have the trinket, or TrinketSituation if they do.
function ____exports.temporarilyRemoveTrinket(self, player, trinketType)
    if not player:HasTrinket(trinketType) then
        return nil
    end
    local trinketType1 = player:GetTrinket(TrinketSlot.SLOT_1)
    local trinketType2 = player:GetTrinket(TrinketSlot.SLOT_2)
    local numTrinkets = 0
    while player:HasTrinket(trinketType) do
        player:TryRemoveTrinket(trinketType)
        numTrinkets = numTrinkets + 1
    end
    local numSmeltedTrinkets = numTrinkets
    local trinketWasInSlot1 = trinketType1 == trinketType or trinketType1 == getGoldenTrinketType(nil, trinketType)
    if trinketWasInSlot1 then
        numSmeltedTrinkets = numSmeltedTrinkets - 1
    end
    local trinketWasInSlot2 = trinketType2 == trinketType or trinketType2 == getGoldenTrinketType(nil, trinketType)
    if trinketWasInSlot2 then
        numSmeltedTrinkets = numSmeltedTrinkets - 1
    end
    return {trinketTypeRemoved = trinketType, trinketType1 = trinketType1, trinketType2 = trinketType2, numSmeltedTrinkets = numSmeltedTrinkets}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerInitFirst"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getPlayers = ____playerIndex.getPlayers
local isChildPlayer = ____playerIndex.isChildPlayer
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local inGenesisRoom = ____rooms.inGenesisRoom
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPlayerInitFirst = __TS__Class()
local PostPlayerInitFirst = ____exports.PostPlayerInitFirst
PostPlayerInitFirst.name = "PostPlayerInitFirst"
__TS__ClassExtends(PostPlayerInitFirst, CustomCallback)
function PostPlayerInitFirst.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePlayer
    self.postNewRoomReordered = function()
        if not inGenesisRoom(nil) then
            return
        end
        for ____, player in ipairs(getPlayers(nil)) do
            self:fire(player)
        end
    end
    self.postPlayerInitLate = function(____, player)
        if isChildPlayer(nil, player) then
            return
        end
        self:fire(player)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_REORDERED, {self.postNewRoomReordered}}, {ModCallbackCustom.POST_PLAYER_INIT_LATE, {self.postPlayerInitLate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerInitLate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local setAddPlayer = ____playerDataStructures.setAddPlayer
local setHasPlayer = ____playerDataStructures.setHasPlayer
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPlayerInitLate = __TS__Class()
local PostPlayerInitLate = ____exports.PostPlayerInitLate
PostPlayerInitLate.name = "PostPlayerInitLate"
__TS__ClassExtends(PostPlayerInitLate, CustomCallback)
function PostPlayerInitLate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {playersFiredSet = __TS__New(Set)}}
    self.shouldFire = shouldFirePlayer
    self.postPEffectUpdateReordered = function(____, player)
        if not setHasPlayer(nil, self.v.run.playersFiredSet, player) then
            setAddPlayer(nil, self.v.run.playersFiredSet, player)
            self:fire(player)
        end
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectUpdateReordered}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerRenderReordered"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPlayerRenderReordered = __TS__Class()
local PostPlayerRenderReordered = ____exports.PostPlayerRenderReordered
PostPlayerRenderReordered.name = "PostPlayerRenderReordered"
__TS__ClassExtends(PostPlayerRenderReordered, CustomCallback)
function PostPlayerRenderReordered.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePlayer
    self.featuresUsed = {ISCFeature.PLAYER_REORDERED_CALLBACKS}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPlayerUpdateReordered"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPlayerUpdateReordered = __TS__Class()
local PostPlayerUpdateReordered = ____exports.PostPlayerUpdateReordered
PostPlayerUpdateReordered.name = "PostPlayerUpdateReordered"
__TS__ClassExtends(PostPlayerUpdateReordered, CustomCallback)
function PostPlayerUpdateReordered.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePlayer
    self.featuresUsed = {ISCFeature.PLAYER_REORDERED_CALLBACKS}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPoopRender"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getPoops = ____gridEntitiesSpecific.getPoops
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePoop = ____shouldFire.shouldFirePoop
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPoopRender = __TS__Class()
local PostPoopRender = ____exports.PostPoopRender
PostPoopRender.name = "PostPoopRender"
__TS__ClassExtends(PostPoopRender, CustomCallback)
function PostPoopRender.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePoop
    self.postRender = function()
        for ____, poop in ipairs(getPoops(nil)) do
            self:fire(poop)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPoopUpdate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getPoops = ____gridEntitiesSpecific.getPoops
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePoop = ____shouldFire.shouldFirePoop
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPoopUpdate = __TS__Class()
local PostPoopUpdate = ____exports.PostPoopUpdate
PostPoopUpdate.name = "PostPoopUpdate"
__TS__ClassExtends(PostPoopUpdate, CustomCallback)
function PostPoopUpdate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePoop
    self.postUpdate = function()
        for ____, poop in ipairs(getPoops(nil)) do
            self:fire(poop)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPressurePlateRender"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getPressurePlates = ____gridEntitiesSpecific.getPressurePlates
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePressurePlate = ____shouldFire.shouldFirePressurePlate
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPressurePlateRender = __TS__Class()
local PostPressurePlateRender = ____exports.PostPressurePlateRender
PostPressurePlateRender.name = "PostPressurePlateRender"
__TS__ClassExtends(PostPressurePlateRender, CustomCallback)
function PostPressurePlateRender.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePressurePlate
    self.postRender = function()
        for ____, pressurePlate in ipairs(getPressurePlates(nil)) do
            self:fire(pressurePlate)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPressurePlateUpdate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getPressurePlates = ____gridEntitiesSpecific.getPressurePlates
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePressurePlate = ____shouldFire.shouldFirePressurePlate
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPressurePlateUpdate = __TS__Class()
local PostPressurePlateUpdate = ____exports.PostPressurePlateUpdate
PostPressurePlateUpdate.name = "PostPressurePlateUpdate"
__TS__ClassExtends(PostPressurePlateUpdate, CustomCallback)
function PostPressurePlateUpdate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePressurePlate
    self.postUpdate = function()
        for ____, pressurePlate in ipairs(getPressurePlates(nil)) do
            self:fire(pressurePlate)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostProjectileInitLate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireProjectile = ____shouldFire.shouldFireProjectile
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostProjectileInitLate = __TS__Class()
local PostProjectileInitLate = ____exports.PostProjectileInitLate
PostProjectileInitLate.name = "PostProjectileInitLate"
__TS__ClassExtends(PostProjectileInitLate, CustomCallback)
function PostProjectileInitLate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFireProjectile
    self.postProjectileUpdate = function(____, projectile)
        local ptrHash = GetPtrHash(projectile)
        if not self.v.room.firedSet:has(ptrHash) then
            self.v.room.firedSet:add(ptrHash)
            self:fire(projectile)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_PROJECTILE_UPDATE, {self.postProjectileUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostPurchase"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getPickups = ____entitiesSpecific.getPickups
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer
local mapSetPlayer = ____playerDataStructures.mapSetPlayer
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostPurchase = __TS__Class()
local PostPurchase = ____exports.PostPurchase
PostPurchase.name = "PostPurchase"
__TS__ClassExtends(PostPurchase, CustomCallback)
function PostPurchase.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {playersHoldingItemOnLastFrameMap = __TS__New(DefaultMap, false)}}
    self.shouldFire = function(____, fireArgs, optionalArgs)
        local _player, pickup = table.unpack(fireArgs)
        local callbackPickupVariant, callbackPickupSubType = table.unpack(optionalArgs)
        return (callbackPickupVariant == nil or callbackPickupVariant == pickup.Variant) and (callbackPickupSubType == nil or callbackPickupSubType == pickup.SubType)
    end
    self.postPEffectUpdateReordered = function(____, player)
        local isHoldingItem = player:IsHoldingItem()
        local wasHoldingItemOnLastFrame = defaultMapGetPlayer(nil, self.v.room.playersHoldingItemOnLastFrameMap, player)
        mapSetPlayer(nil, self.v.room.playersHoldingItemOnLastFrameMap, player, isHoldingItem)
        if not wasHoldingItemOnLastFrame and isHoldingItem then
            self:playerPickedUpNewItem(player)
        end
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectUpdateReordered}}}
end
function PostPurchase.prototype.playerPickedUpNewItem(self, player)
    local pickups = getPickups(nil)
    local disappearingPickup = __TS__ArrayFind(
        pickups,
        function(____, pickup) return not pickup:Exists() and pickup.Price ~= 0 end
    )
    if disappearingPickup ~= nil then
        self:fire(player, disappearingPickup)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostRockRender"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getRocks = ____gridEntitiesSpecific.getRocks
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireRock = ____shouldFire.shouldFireRock
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostRockRender = __TS__Class()
local PostRockRender = ____exports.PostRockRender
PostRockRender.name = "PostRockRender"
__TS__ClassExtends(PostRockRender, CustomCallback)
function PostRockRender.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireRock
    self.postRender = function()
        for ____, rock in ipairs(getRocks(nil)) do
            self:fire(rock)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostRockUpdate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getRocks = ____gridEntitiesSpecific.getRocks
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireRock = ____shouldFire.shouldFireRock
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostRockUpdate = __TS__Class()
local PostRockUpdate = ____exports.PostRockUpdate
PostRockUpdate.name = "PostRockUpdate"
__TS__ClassExtends(PostRockUpdate, CustomCallback)
function PostRockUpdate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireRock
    self.postUpdate = function()
        for ____, rock in ipairs(getRocks(nil)) do
            self:fire(rock)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostRoomClearChanged"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostRoomClearChanged = __TS__Class()
local PostRoomClearChanged = ____exports.PostRoomClearChanged
PostRoomClearChanged.name = "PostRoomClearChanged"
__TS__ClassExtends(PostRoomClearChanged, CustomCallback)
function PostRoomClearChanged.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {cleared = false}}
    self.shouldFire = function(____, fireArgs, optionalArgs)
        local roomClear = table.unpack(fireArgs)
        local callbackRoomClear = table.unpack(optionalArgs)
        return callbackRoomClear == nil or callbackRoomClear == roomClear
    end
    self.postUpdate = function()
        local room = game:GetRoom()
        local roomClear = room:IsClear()
        if roomClear ~= self.v.room.cleared then
            self.v.room.cleared = roomClear
            self:fire(roomClear)
        end
    end
    self.postNewRoomReordered = function()
        local room = game:GetRoom()
        local roomClear = room:IsClear()
        self.v.room.cleared = roomClear
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_REORDERED, {self.postNewRoomReordered}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSacrifice"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostSacrifice = __TS__Class()
local PostSacrifice = ____exports.PostSacrifice
PostSacrifice.name = "PostSacrifice"
__TS__ClassExtends(PostSacrifice, CustomCallback)
function PostSacrifice.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {level = {numSacrifices = 0}}
    self.shouldFire = shouldFirePlayer
    self.entityTakeDmgPlayer = function(____, entity, _amount, damageFlags, _source, _countdownFrames)
        local player = entity:ToPlayer()
        if player == nil then
            return nil
        end
        local room = game:GetRoom()
        local roomType = room:GetType()
        local isSpikeDamage = hasFlag(nil, damageFlags, DamageFlag.SPIKES)
        if roomType == RoomType.SACRIFICE and isSpikeDamage then
            local ____self_v_level_0, ____numSacrifices_1 = self.v.level, "numSacrifices"
            ____self_v_level_0[____numSacrifices_1] = ____self_v_level_0[____numSacrifices_1] + 1
            self:fire(player, self.v.level.numSacrifices)
        end
        return nil
    end
    self.callbacksUsed = {{ModCallback.ENTITY_TAKE_DMG, {self.entityTakeDmgPlayer, EntityType.PLAYER}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotAnimationChanged"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireSlot = ____shouldFire.shouldFireSlot
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostSlotAnimationChanged = __TS__Class()
local PostSlotAnimationChanged = ____exports.PostSlotAnimationChanged
PostSlotAnimationChanged.name = "PostSlotAnimationChanged"
__TS__ClassExtends(PostSlotAnimationChanged, CustomCallback)
function PostSlotAnimationChanged.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireSlot
    self.featuresUsed = {ISCFeature.SLOT_RENDER_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotCollision"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____entityTypes = require("lua_modules.isaacscript-common.dist.src.functions.entityTypes")
local isSlot = ____entityTypes.isSlot
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireSlot = ____shouldFire.shouldFireSlot
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostSlotCollision = __TS__Class()
local PostSlotCollision = ____exports.PostSlotCollision
PostSlotCollision.name = "PostSlotCollision"
__TS__ClassExtends(PostSlotCollision, CustomCallback)
function PostSlotCollision.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireSlot
    self.prePlayerCollision = function(____, player, collider)
        if isSlot(nil, collider) then
            self:fire(collider, player)
        end
        return nil
    end
    self.callbacksUsed = {{ModCallback.PRE_PLAYER_COLLISION, {self.prePlayerCollision}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.entityTypes"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
--- For `EntityType.SLOT` (6).
function ____exports.isSlot(self, entity)
    return entity.Type == EntityType.SLOT
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotDestroyed"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local Map = ____lualib.Map
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityGridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityGridCollisionClass
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____SlotDestructionType = require("lua_modules.isaacscript-common.dist.src.enums.SlotDestructionType")
local SlotDestructionType = ____SlotDestructionType.SlotDestructionType
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireSlot = ____shouldFire.shouldFireSlot
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
local PRIZE_GAME_FRAME_DELAY_UNTIL_REMOVAL = 3
____exports.PostSlotDestroyed = __TS__Class()
local PostSlotDestroyed = ____exports.PostSlotDestroyed
PostSlotDestroyed.name = "PostSlotDestroyed"
__TS__ClassExtends(PostSlotDestroyed, CustomCallback)
function PostSlotDestroyed.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {
        brokenSlots = __TS__New(Set),
        slotPrizeAnimationGameFrame = __TS__New(Map)
    }}
    self.shouldFire = shouldFireSlot
    self.postEntityRemoveSlot = function(____, entity)
        local slot = entity
        local ptrHash = GetPtrHash(slot)
        local gameFrameCount = game:GetFrameCount()
        local prizeFrame = self.v.room.slotPrizeAnimationGameFrame:get(ptrHash)
        if prizeFrame == nil then
            return
        end
        if prizeFrame + PRIZE_GAME_FRAME_DELAY_UNTIL_REMOVAL == gameFrameCount then
            self:fire(slot, SlotDestructionType.COLLECTIBLE_PAYOUT)
        end
    end
    self.postSlotAnimationChanged = function(____, slot)
        local ptrHash = GetPtrHash(slot)
        local gameFrameCount = game:GetFrameCount()
        local alreadyBroken = self.v.room.brokenSlots:has(ptrHash)
        if alreadyBroken then
            return
        end
        if slot.GridCollisionClass == EntityGridCollisionClass.GROUND then
            self.v.room.brokenSlots:add(ptrHash)
            self:fire(slot, SlotDestructionType.NORMAL)
        end
        local sprite = slot:GetSprite()
        local animation = sprite:GetAnimation()
        if animation == "Prize" then
            self.v.room.slotPrizeAnimationGameFrame:set(ptrHash, gameFrameCount)
        else
            self.v.room.slotPrizeAnimationGameFrame:delete(ptrHash)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_ENTITY_REMOVE, {self.postEntityRemoveSlot, EntityType.SLOT}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED, {self.postSlotAnimationChanged}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.SlotDestructionType"] = function(...) 
local ____exports = {}
--- This is used in the `POST_SLOT_DESTROYED` custom callback.
____exports.SlotDestructionType = {}
____exports.SlotDestructionType.NORMAL = 0
____exports.SlotDestructionType[____exports.SlotDestructionType.NORMAL] = "NORMAL"
____exports.SlotDestructionType.COLLECTIBLE_PAYOUT = 1
____exports.SlotDestructionType[____exports.SlotDestructionType.COLLECTIBLE_PAYOUT] = "COLLECTIBLE_PAYOUT"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotInit"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireSlot = ____shouldFire.shouldFireSlot
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostSlotInit = __TS__Class()
local PostSlotInit = ____exports.PostSlotInit
PostSlotInit.name = "PostSlotInit"
__TS__ClassExtends(PostSlotInit, CustomCallback)
function PostSlotInit.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireSlot
    self.featuresUsed = {ISCFeature.SLOT_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotRender"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireSlot = ____shouldFire.shouldFireSlot
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostSlotRender = __TS__Class()
local PostSlotRender = ____exports.PostSlotRender
PostSlotRender.name = "PostSlotRender"
__TS__ClassExtends(PostSlotRender, CustomCallback)
function PostSlotRender.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireSlot
    self.featuresUsed = {ISCFeature.SLOT_RENDER_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSlotUpdate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireSlot = ____shouldFire.shouldFireSlot
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostSlotUpdate = __TS__Class()
local PostSlotUpdate = ____exports.PostSlotUpdate
PostSlotUpdate.name = "PostSlotUpdate"
__TS__ClassExtends(PostSlotUpdate, CustomCallback)
function PostSlotUpdate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireSlot
    self.featuresUsed = {ISCFeature.SLOT_UPDATE_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSpikesRender"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getSpikes = ____gridEntitiesSpecific.getSpikes
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireSpikes = ____shouldFire.shouldFireSpikes
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostSpikesRender = __TS__Class()
local PostSpikesRender = ____exports.PostSpikesRender
PostSpikesRender.name = "PostSpikesRender"
__TS__ClassExtends(PostSpikesRender, CustomCallback)
function PostSpikesRender.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireSpikes
    self.postRender = function()
        for ____, spikes in ipairs(getSpikes(nil)) do
            self:fire(spikes)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostSpikesUpdate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getSpikes = ____gridEntitiesSpecific.getSpikes
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireSpikes = ____shouldFire.shouldFireSpikes
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostSpikesUpdate = __TS__Class()
local PostSpikesUpdate = ____exports.PostSpikesUpdate
PostSpikesUpdate.name = "PostSpikesUpdate"
__TS__ClassExtends(PostSpikesUpdate, CustomCallback)
function PostSpikesUpdate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireSpikes
    self.postUpdate = function()
        for ____, spikes in ipairs(getSpikes(nil)) do
            self:fire(spikes)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTearInitLate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireTear = ____shouldFire.shouldFireTear
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostTearInitLate = __TS__Class()
local PostTearInitLate = ____exports.PostTearInitLate
PostTearInitLate.name = "PostTearInitLate"
__TS__ClassExtends(PostTearInitLate, CustomCallback)
function PostTearInitLate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFireTear
    self.postTearUpdate = function(____, tear)
        local ptrHash = GetPtrHash(tear)
        if not self.v.room.firedSet:has(ptrHash) then
            self.v.room.firedSet:add(ptrHash)
            self:fire(tear)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_TEAR_UPDATE, {self.postTearUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTearInitVeryLate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireTear = ____shouldFire.shouldFireTear
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostTearInitVeryLate = __TS__Class()
local PostTearInitVeryLate = ____exports.PostTearInitVeryLate
PostTearInitVeryLate.name = "PostTearInitVeryLate"
__TS__ClassExtends(PostTearInitVeryLate, CustomCallback)
function PostTearInitVeryLate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {room = {firedSet = __TS__New(Set)}}
    self.shouldFire = shouldFireTear
    self.postTearUpdate = function(____, tear)
        if tear.FrameCount == 0 then
            return
        end
        local index = GetPtrHash(tear)
        if not self.v.room.firedSet:has(index) then
            self.v.room.firedSet:add(index)
            self:fire(tear)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_TEAR_UPDATE, {self.postTearUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTNTRender"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getTNT = ____gridEntitiesSpecific.getTNT
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireTNT = ____shouldFire.shouldFireTNT
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostTNTRender = __TS__Class()
local PostTNTRender = ____exports.PostTNTRender
PostTNTRender.name = "PostTNTRender"
__TS__ClassExtends(PostTNTRender, CustomCallback)
function PostTNTRender.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireTNT
    self.postRender = function()
        for ____, tnt in ipairs(getTNT(nil)) do
            self:fire(tnt)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTNTUpdate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getTNT = ____gridEntitiesSpecific.getTNT
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireTNT = ____shouldFire.shouldFireTNT
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostTNTUpdate = __TS__Class()
local PostTNTUpdate = ____exports.PostTNTUpdate
PostTNTUpdate.name = "PostTNTUpdate"
__TS__ClassExtends(PostTNTUpdate, CustomCallback)
function PostTNTUpdate.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireTNT
    self.postUpdate = function()
        for ____, tnt in ipairs(getTNT(nil)) do
            self:fire(tnt)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTransformation"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PostTransformation = __TS__Class()
local PostTransformation = ____exports.PostTransformation
PostTransformation.name = "PostTransformation"
__TS__ClassExtends(PostTransformation, CustomCallback)
function PostTransformation.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {playersTransformationsMap = __TS__New(
        DefaultMap,
        function() return __TS__New(Map) end
    )}}
    self.shouldFire = function(____, fireArgs, optionalArgs)
        local _player, playerForm = table.unpack(fireArgs)
        local callbackPlayerForm = table.unpack(optionalArgs)
        return callbackPlayerForm == nil or callbackPlayerForm == playerForm
    end
    self.postPEffectUpdateReordered = function(____, player)
        local playerTransformationsMap = defaultMapGetPlayer(nil, self.v.run.playersTransformationsMap, player)
        for ____, playerForm in ipairs(getEnumValues(nil, PlayerForm)) do
            local hasForm = player:HasPlayerForm(playerForm)
            local storedForm = playerTransformationsMap:get(playerForm)
            if storedForm == nil then
                storedForm = false
            end
            if hasForm ~= storedForm then
                playerTransformationsMap:set(playerForm, hasForm)
                self:fire(player, playerForm, hasForm)
            end
        end
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectUpdateReordered}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PostTrinketBreak"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireTrinketType = ____shouldFire.shouldFireTrinketType
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
local TRINKETS_THAT_CAN_BREAK = {TrinketType.WISH_BONE, TrinketType.WALNUT}
____exports.PostTrinketBreak = __TS__Class()
local PostTrinketBreak = ____exports.PostTrinketBreak
PostTrinketBreak.name = "PostTrinketBreak"
__TS__ClassExtends(PostTrinketBreak, CustomCallback)
function PostTrinketBreak.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {playersTrinketMap = __TS__New(
        DefaultMap,
        function() return __TS__New(Map) end
    )}}
    self.shouldFire = shouldFireTrinketType
    self.entityTakeDmgPlayer = function(____, entity, _amount, _damageFlags, _source, _countdownFrames)
        local player = entity:ToPlayer()
        if player == nil then
            return nil
        end
        local trinketMap = defaultMapGetPlayer(nil, self.v.run.playersTrinketMap, player)
        for ____, trinketType in ipairs(TRINKETS_THAT_CAN_BREAK) do
            do
                local numTrinketsHeld = player:GetTrinketMultiplier(trinketType)
                local oldNumTrinketsHeld = trinketMap:get(trinketType)
                if oldNumTrinketsHeld == nil then
                    oldNumTrinketsHeld = 0
                end
                if numTrinketsHeld >= oldNumTrinketsHeld then
                    goto __continue6
                end
                trinketMap:set(trinketType, numTrinketsHeld)
                local numTrinketsOnGround = Isaac.CountEntities(nil, EntityType.PICKUP, PickupVariant.TRINKET, trinketType)
                if numTrinketsOnGround > 0 then
                    goto __continue6
                end
                self:fire(player, trinketType)
            end
            ::__continue6::
        end
        return nil
    end
    self.postPEffectUpdateReordered = function(____, player)
        local trinketMap = defaultMapGetPlayer(nil, self.v.run.playersTrinketMap, player)
        for ____, trinketType in ipairs(TRINKETS_THAT_CAN_BREAK) do
            local numTrinkets = player:GetTrinketMultiplier(trinketType)
            trinketMap:set(trinketType, numTrinkets)
        end
    end
    self.callbacksUsed = {{ModCallback.ENTITY_TAKE_DMG, {self.entityTakeDmgPlayer, EntityType.PLAYER}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectUpdateReordered}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PreBerserkDeath"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local isChildPlayer = ____playerIndex.isChildPlayer
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getPlayerNumHitsRemaining = ____players.getPlayerNumHitsRemaining
local ____revive = require("lua_modules.isaacscript-common.dist.src.functions.revive")
local willPlayerRevive = ____revive.willPlayerRevive
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PreBerserkDeath = __TS__Class()
local PreBerserkDeath = ____exports.PreBerserkDeath
PreBerserkDeath.name = "PreBerserkDeath"
__TS__ClassExtends(PreBerserkDeath, CustomCallback)
function PreBerserkDeath.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePlayer
    self.postPEffectUpdateReordered = function(____, player)
        if isChildPlayer(nil, player) then
            return
        end
        local effects = player:GetEffects()
        local berserkEffect = effects:GetCollectibleEffect(CollectibleType.BERSERK)
        local numHitsRemaining = getPlayerNumHitsRemaining(nil, player)
        if berserkEffect ~= nil and berserkEffect.Cooldown == 1 and numHitsRemaining == 0 and not willPlayerRevive(nil, player) then
            self:fire(player)
        end
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectUpdateReordered}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PreCustomRevive"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PreCustomRevive = __TS__Class()
local PreCustomRevive = ____exports.PreCustomRevive
PreCustomRevive.name = "PreCustomRevive"
__TS__ClassExtends(PreCustomRevive, CustomCallback)
function PreCustomRevive.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePlayer
    self.featuresUsed = {ISCFeature.CUSTOM_REVIVE}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PreGetPedestal"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PreGetPedestal = __TS__Class()
local PreGetPedestal = ____exports.PreGetPedestal
PreGetPedestal.name = "PreGetPedestal"
__TS__ClassExtends(PreGetPedestal, CustomCallback)
function PreGetPedestal.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFirePlayer
    self.prePickupCollision = function(____, pickup, collider, _low)
        local collectible = pickup
        if collectible.SubType == CollectibleType.NULL then
            return nil
        end
        local player = collider:ToPlayer()
        if player == nil then
            return nil
        end
        local numCoins = player:GetNumCoins()
        if collectible.Price > numCoins then
            return nil
        end
        if collectible.Wait > 0 or player.ItemHoldCooldown > 0 then
            return nil
        end
        if player:IsHoldingItem() then
            return nil
        end
        return self:fire(player, collectible)
    end
    self.callbacksUsed = {{ModCallback.PRE_PICKUP_COLLISION, {self.prePickupCollision, PickupVariant.COLLECTIBLE}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PreItemPickup"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireItemPickup = ____shouldFire.shouldFireItemPickup
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PreItemPickup = __TS__Class()
local PreItemPickup = ____exports.PreItemPickup
PreItemPickup.name = "PreItemPickup"
__TS__ClassExtends(PreItemPickup, CustomCallback)
function PreItemPickup.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireItemPickup
    self.featuresUsed = {ISCFeature.ITEM_PICKUP_DETECTION}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PreNewLevel"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____sprites = require("lua_modules.isaacscript-common.dist.src.functions.sprites")
local getLastFrameOfAnimation = ____sprites.getLastFrameOfAnimation
local ____stage = require("lua_modules.isaacscript-common.dist.src.functions.stage")
local getEffectiveStage = ____stage.getEffectiveStage
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
local TRAVELING_TO_NEXT_FLOOR_ANIMATIONS = __TS__New(Set, {"Trapdoor", "LightTravel"})
____exports.PreNewLevel = __TS__Class()
local PreNewLevel = ____exports.PreNewLevel
PreNewLevel.name = "PreNewLevel"
__TS__ClassExtends(PreNewLevel, CustomCallback)
function PreNewLevel.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = {run = {firedOnStage = nil}}
    self.postPlayerRender = function(____, player)
        local effectiveStage = getEffectiveStage(nil)
        if effectiveStage == self.v.run.firedOnStage then
            return
        end
        local sprite = player:GetSprite()
        local animation = sprite:GetAnimation()
        if not TRAVELING_TO_NEXT_FLOOR_ANIMATIONS:has(animation) then
            return
        end
        local frame = sprite:GetFrame()
        local finalFrame = getLastFrameOfAnimation(nil, sprite)
        if frame == finalFrame then
            self.v.run.firedOnStage = effectiveStage
            self:fire(player)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_PLAYER_RENDER, {self.postPlayerRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PreNPCCollisionFilter"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireNPC = ____shouldFire.shouldFireNPC
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PreNPCCollisionFilter = __TS__Class()
local PreNPCCollisionFilter = ____exports.PreNPCCollisionFilter
PreNPCCollisionFilter.name = "PreNPCCollisionFilter"
__TS__ClassExtends(PreNPCCollisionFilter, CustomCallback)
function PreNPCCollisionFilter.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireNPC
    self.preNPCCollision = function(____, npc, collider, low) return self:fire(npc, collider, low) end
    self.callbacksUsed = {{ModCallback.PRE_NPC_COLLISION, {self.preNPCCollision}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.callbacks.PreNPCUpdateFilter"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____shouldFire = require("lua_modules.isaacscript-common.dist.src.shouldFire")
local shouldFireNPC = ____shouldFire.shouldFireNPC
local ____CustomCallback = require("lua_modules.isaacscript-common.dist.src.classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
____exports.PreNPCUpdateFilter = __TS__Class()
local PreNPCUpdateFilter = ____exports.PreNPCUpdateFilter
PreNPCUpdateFilter.name = "PreNPCUpdateFilter"
__TS__ClassExtends(PreNPCUpdateFilter, CustomCallback)
function PreNPCUpdateFilter.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.shouldFire = shouldFireNPC
    self.preNPCUpdate = function(____, npc) return self:fire(npc) end
    self.callbacksUsed = {{ModCallback.PRE_NPC_UPDATE, {self.preNPCUpdate}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.decorators"] = function(...) 
local ____exports = {}
____exports.EXPORTED_METHOD_NAMES_KEY = "__exportedMethodNames"
--- A decorator function that signifies that the decorated class method should be added to the
-- `ModUpgraded` object.
-- 
-- This is only meant to be used internally.
function ____exports.Exported(self, target, propertyKey)
    local constructor = target.constructor
    if not (constructor[____exports.EXPORTED_METHOD_NAMES_KEY] ~= nil) then
        constructor[____exports.EXPORTED_METHOD_NAMES_KEY] = {}
    end
    local exportedMethodNames = constructor[____exports.EXPORTED_METHOD_NAMES_KEY]
    exportedMethodNames[#exportedMethodNames + 1] = propertyKey
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.features"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____CustomGridEntities = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.CustomGridEntities")
local CustomGridEntities = ____CustomGridEntities.CustomGridEntities
local ____CustomRevive = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.CustomRevive")
local CustomRevive = ____CustomRevive.CustomRevive
local ____EsauJrDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.EsauJrDetection")
local EsauJrDetection = ____EsauJrDetection.EsauJrDetection
local ____FlipDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.FlipDetection")
local FlipDetection = ____FlipDetection.FlipDetection
local ____GameReorderedCallbacks = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.GameReorderedCallbacks")
local GameReorderedCallbacks = ____GameReorderedCallbacks.GameReorderedCallbacks
local ____GridEntityCollisionDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.GridEntityCollisionDetection")
local GridEntityCollisionDetection = ____GridEntityCollisionDetection.GridEntityCollisionDetection
local ____GridEntityRenderDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.GridEntityRenderDetection")
local GridEntityRenderDetection = ____GridEntityRenderDetection.GridEntityRenderDetection
local ____GridEntityUpdateDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.GridEntityUpdateDetection")
local GridEntityUpdateDetection = ____GridEntityUpdateDetection.GridEntityUpdateDetection
local ____ItemPickupDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.ItemPickupDetection")
local ItemPickupDetection = ____ItemPickupDetection.ItemPickupDetection
local ____PlayerCollectibleDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.PlayerCollectibleDetection")
local PlayerCollectibleDetection = ____PlayerCollectibleDetection.PlayerCollectibleDetection
local ____PlayerReorderedCallbacks = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.PlayerReorderedCallbacks")
local PlayerReorderedCallbacks = ____PlayerReorderedCallbacks.PlayerReorderedCallbacks
local ____SlotRenderDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.SlotRenderDetection")
local SlotRenderDetection = ____SlotRenderDetection.SlotRenderDetection
local ____SlotUpdateDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.SlotUpdateDetection")
local SlotUpdateDetection = ____SlotUpdateDetection.SlotUpdateDetection
local ____CharacterHealthConversion = require("lua_modules.isaacscript-common.dist.src.classes.features.other.CharacterHealthConversion")
local CharacterHealthConversion = ____CharacterHealthConversion.CharacterHealthConversion
local ____CharacterStats = require("lua_modules.isaacscript-common.dist.src.classes.features.other.CharacterStats")
local CharacterStats = ____CharacterStats.CharacterStats
local ____CollectibleItemPoolType = require("lua_modules.isaacscript-common.dist.src.classes.features.other.CollectibleItemPoolType")
local CollectibleItemPoolType = ____CollectibleItemPoolType.CollectibleItemPoolType
local ____CustomHotkeys = require("lua_modules.isaacscript-common.dist.src.classes.features.other.CustomHotkeys")
local CustomHotkeys = ____CustomHotkeys.CustomHotkeys
local ____CustomItemPools = require("lua_modules.isaacscript-common.dist.src.classes.features.other.CustomItemPools")
local CustomItemPools = ____CustomItemPools.CustomItemPools
local ____CustomPickups = require("lua_modules.isaacscript-common.dist.src.classes.features.other.CustomPickups")
local CustomPickups = ____CustomPickups.CustomPickups
local ____CustomStages = require("lua_modules.isaacscript-common.dist.src.classes.features.other.CustomStages")
local CustomStages = ____CustomStages.CustomStages
local ____CustomTrapdoors = require("lua_modules.isaacscript-common.dist.src.classes.features.other.CustomTrapdoors")
local CustomTrapdoors = ____CustomTrapdoors.CustomTrapdoors
local ____DebugDisplay = require("lua_modules.isaacscript-common.dist.src.classes.features.other.DebugDisplay")
local DebugDisplay = ____DebugDisplay.DebugDisplay
local ____DeployJSONRoom = require("lua_modules.isaacscript-common.dist.src.classes.features.other.DeployJSONRoom")
local DeployJSONRoom = ____DeployJSONRoom.DeployJSONRoom
local ____DisableAllSound = require("lua_modules.isaacscript-common.dist.src.classes.features.other.DisableAllSound")
local DisableAllSound = ____DisableAllSound.DisableAllSound
local ____DisableInputs = require("lua_modules.isaacscript-common.dist.src.classes.features.other.DisableInputs")
local DisableInputs = ____DisableInputs.DisableInputs
local ____ExtraConsoleCommands = require("lua_modules.isaacscript-common.dist.src.classes.features.other.ExtraConsoleCommands")
local ExtraConsoleCommands = ____ExtraConsoleCommands.ExtraConsoleCommands
local ____FadeInRemover = require("lua_modules.isaacscript-common.dist.src.classes.features.other.FadeInRemover")
local FadeInRemover = ____FadeInRemover.FadeInRemover
local ____FastReset = require("lua_modules.isaacscript-common.dist.src.classes.features.other.FastReset")
local FastReset = ____FastReset.FastReset
local ____FlyingDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.other.FlyingDetection")
local FlyingDetection = ____FlyingDetection.FlyingDetection
local ____ForgottenSwitch = require("lua_modules.isaacscript-common.dist.src.classes.features.other.ForgottenSwitch")
local ForgottenSwitch = ____ForgottenSwitch.ForgottenSwitch
local ____ItemPoolDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.other.ItemPoolDetection")
local ItemPoolDetection = ____ItemPoolDetection.ItemPoolDetection
local ____ModdedElementDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.other.ModdedElementDetection")
local ModdedElementDetection = ____ModdedElementDetection.ModdedElementDetection
local ____ModdedElementSets = require("lua_modules.isaacscript-common.dist.src.classes.features.other.ModdedElementSets")
local ModdedElementSets = ____ModdedElementSets.ModdedElementSets
local ____NoSirenSteal = require("lua_modules.isaacscript-common.dist.src.classes.features.other.NoSirenSteal")
local NoSirenSteal = ____NoSirenSteal.NoSirenSteal
local ____Pause = require("lua_modules.isaacscript-common.dist.src.classes.features.other.Pause")
local Pause = ____Pause.Pause
local ____PersistentEntities = require("lua_modules.isaacscript-common.dist.src.classes.features.other.PersistentEntities")
local PersistentEntities = ____PersistentEntities.PersistentEntities
local ____PickupIndexCreation = require("lua_modules.isaacscript-common.dist.src.classes.features.other.PickupIndexCreation")
local PickupIndexCreation = ____PickupIndexCreation.PickupIndexCreation
local ____PlayerInventory = require("lua_modules.isaacscript-common.dist.src.classes.features.other.PlayerInventory")
local PlayerInventory = ____PlayerInventory.PlayerInventory
local ____PonyDetection = require("lua_modules.isaacscript-common.dist.src.classes.features.other.PonyDetection")
local PonyDetection = ____PonyDetection.PonyDetection
local ____PreventChildEntities = require("lua_modules.isaacscript-common.dist.src.classes.features.other.PreventChildEntities")
local PreventChildEntities = ____PreventChildEntities.PreventChildEntities
local ____PreventCollectibleRotation = require("lua_modules.isaacscript-common.dist.src.classes.features.other.PreventCollectibleRotation")
local PreventCollectibleRotation = ____PreventCollectibleRotation.PreventCollectibleRotation
local ____PreventGridEntityRespawn = require("lua_modules.isaacscript-common.dist.src.classes.features.other.PreventGridEntityRespawn")
local PreventGridEntityRespawn = ____PreventGridEntityRespawn.PreventGridEntityRespawn
local ____RoomClearFrame = require("lua_modules.isaacscript-common.dist.src.classes.features.other.RoomClearFrame")
local RoomClearFrame = ____RoomClearFrame.RoomClearFrame
local ____RoomHistory = require("lua_modules.isaacscript-common.dist.src.classes.features.other.RoomHistory")
local RoomHistory = ____RoomHistory.RoomHistory
local ____RunInNFrames = require("lua_modules.isaacscript-common.dist.src.classes.features.other.RunInNFrames")
local RunInNFrames = ____RunInNFrames.RunInNFrames
local ____RunNextRoom = require("lua_modules.isaacscript-common.dist.src.classes.features.other.RunNextRoom")
local RunNextRoom = ____RunNextRoom.RunNextRoom
local ____SaveDataManager = require("lua_modules.isaacscript-common.dist.src.classes.features.other.SaveDataManager")
local SaveDataManager = ____SaveDataManager.SaveDataManager
local ____SpawnCollectible = require("lua_modules.isaacscript-common.dist.src.classes.features.other.SpawnCollectible")
local SpawnCollectible = ____SpawnCollectible.SpawnCollectible
local ____SpawnRockAltRewards = require("lua_modules.isaacscript-common.dist.src.classes.features.other.SpawnRockAltRewards")
local SpawnRockAltRewards = ____SpawnRockAltRewards.SpawnRockAltRewards
local ____StageHistory = require("lua_modules.isaacscript-common.dist.src.classes.features.other.StageHistory")
local StageHistory = ____StageHistory.StageHistory
local ____StartAmbush = require("lua_modules.isaacscript-common.dist.src.classes.features.other.StartAmbush")
local StartAmbush = ____StartAmbush.StartAmbush
local ____TaintedLazarusPlayers = require("lua_modules.isaacscript-common.dist.src.classes.features.other.TaintedLazarusPlayers")
local TaintedLazarusPlayers = ____TaintedLazarusPlayers.TaintedLazarusPlayers
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local newObjectWithEnumKeys = ____utils.newObjectWithEnumKeys
local validateInterfaceMatchesEnum = ____utils.validateInterfaceMatchesEnum
validateInterfaceMatchesEnum(nil)
function ____exports.getFeatures(self, mod, callbacks)
    local gameReorderedCallbacks = __TS__New(
        GameReorderedCallbacks,
        callbacks[ModCallbackCustom.POST_GAME_STARTED_REORDERED],
        callbacks[ModCallbackCustom.POST_NEW_LEVEL_REORDERED],
        callbacks[ModCallbackCustom.POST_NEW_ROOM_REORDERED],
        callbacks[ModCallbackCustom.POST_GAME_STARTED_REORDERED_LAST]
    )
    local disableAllSound = __TS__New(DisableAllSound)
    local disableInputs = __TS__New(DisableInputs)
    local moddedElementDetection = __TS__New(ModdedElementDetection)
    local ponyDetection = __TS__New(PonyDetection)
    local preventCollectibleRotation = __TS__New(PreventCollectibleRotation)
    local roomClearFrame = __TS__New(RoomClearFrame)
    local roomHistory = __TS__New(RoomHistory)
    local runInNFrames = __TS__New(RunInNFrames)
    local runNextRoom = __TS__New(RunNextRoom)
    local stageHistory = __TS__New(StageHistory)
    local customGridEntities = __TS__New(CustomGridEntities, runInNFrames)
    local moddedElementSets = __TS__New(ModdedElementSets, moddedElementDetection)
    local itemPoolDetection = __TS__New(ItemPoolDetection, moddedElementSets)
    local pause = __TS__New(Pause, disableInputs)
    local pickupIndexCreation = __TS__New(PickupIndexCreation, roomHistory)
    local preventGridEntityRespawn = __TS__New(PreventGridEntityRespawn, runInNFrames)
    local spawnCollectible = __TS__New(SpawnCollectible, preventCollectibleRotation)
    local customTrapdoors = __TS__New(
        CustomTrapdoors,
        customGridEntities,
        disableInputs,
        ponyDetection,
        roomClearFrame,
        runInNFrames,
        runNextRoom,
        stageHistory
    )
    return newObjectWithEnumKeys(
        nil,
        ISCFeature,
        {
            [ISCFeature.CUSTOM_REVIVE] = __TS__New(CustomRevive, callbacks[ModCallbackCustom.PRE_CUSTOM_REVIVE], callbacks[ModCallbackCustom.POST_CUSTOM_REVIVE], runInNFrames),
            [ISCFeature.ESAU_JR_DETECTION] = __TS__New(EsauJrDetection, callbacks[ModCallbackCustom.POST_ESAU_JR], callbacks[ModCallbackCustom.POST_FIRST_ESAU_JR]),
            [ISCFeature.FLIP_DETECTION] = __TS__New(FlipDetection, callbacks[ModCallbackCustom.POST_FLIP], callbacks[ModCallbackCustom.POST_FIRST_FLIP]),
            [ISCFeature.GRID_ENTITY_COLLISION_DETECTION] = __TS__New(GridEntityCollisionDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_COLLISION], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION], customGridEntities),
            [ISCFeature.GRID_ENTITY_UPDATE_DETECTION] = __TS__New(
                GridEntityUpdateDetection,
                callbacks[ModCallbackCustom.POST_GRID_ENTITY_INIT],
                callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT],
                callbacks[ModCallbackCustom.POST_GRID_ENTITY_UPDATE],
                callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE],
                callbacks[ModCallbackCustom.POST_GRID_ENTITY_REMOVE],
                callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE],
                callbacks[ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED],
                callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED],
                callbacks[ModCallbackCustom.POST_GRID_ENTITY_BROKEN],
                callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN],
                customGridEntities
            ),
            [ISCFeature.GRID_ENTITY_RENDER_DETECTION] = __TS__New(GridEntityRenderDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_RENDER], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER], customGridEntities),
            [ISCFeature.GAME_REORDERED_CALLBACKS] = gameReorderedCallbacks,
            [ISCFeature.ITEM_PICKUP_DETECTION] = __TS__New(ItemPickupDetection, callbacks[ModCallbackCustom.POST_ITEM_PICKUP], callbacks[ModCallbackCustom.PRE_ITEM_PICKUP]),
            [ISCFeature.PLAYER_COLLECTIBLE_DETECTION] = __TS__New(
                PlayerCollectibleDetection,
                callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED],
                callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED],
                moddedElementSets,
                runInNFrames
            ),
            [ISCFeature.PLAYER_REORDERED_CALLBACKS] = __TS__New(PlayerReorderedCallbacks, callbacks[ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED], callbacks[ModCallbackCustom.POST_PLAYER_RENDER_REORDERED], callbacks[ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED]),
            [ISCFeature.SLOT_RENDER_DETECTION] = __TS__New(SlotRenderDetection, callbacks[ModCallbackCustom.POST_SLOT_RENDER], callbacks[ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED]),
            [ISCFeature.SLOT_UPDATE_DETECTION] = __TS__New(SlotUpdateDetection, callbacks[ModCallbackCustom.POST_SLOT_INIT], callbacks[ModCallbackCustom.POST_SLOT_UPDATE]),
            [ISCFeature.CHARACTER_HEALTH_CONVERSION] = __TS__New(CharacterHealthConversion),
            [ISCFeature.CHARACTER_STATS] = __TS__New(CharacterStats),
            [ISCFeature.COLLECTIBLE_ITEM_POOL_TYPE] = __TS__New(CollectibleItemPoolType, pickupIndexCreation),
            [ISCFeature.CUSTOM_GRID_ENTITIES] = customGridEntities,
            [ISCFeature.CUSTOM_ITEM_POOLS] = __TS__New(CustomItemPools),
            [ISCFeature.CUSTOM_HOTKEYS] = __TS__New(CustomHotkeys),
            [ISCFeature.CUSTOM_PICKUPS] = __TS__New(CustomPickups),
            [ISCFeature.CUSTOM_STAGES] = __TS__New(
                CustomStages,
                customGridEntities,
                customTrapdoors,
                disableAllSound,
                gameReorderedCallbacks,
                pause,
                runInNFrames
            ),
            [ISCFeature.CUSTOM_TRAPDOORS] = customTrapdoors,
            [ISCFeature.DEBUG_DISPLAY] = __TS__New(DebugDisplay, mod),
            [ISCFeature.DEPLOY_JSON_ROOM] = __TS__New(DeployJSONRoom, preventGridEntityRespawn, spawnCollectible),
            [ISCFeature.DISABLE_ALL_SOUND] = disableAllSound,
            [ISCFeature.DISABLE_INPUTS] = disableInputs,
            [ISCFeature.FADE_IN_REMOVER] = __TS__New(FadeInRemover),
            [ISCFeature.FAST_RESET] = __TS__New(FastReset),
            [ISCFeature.FLYING_DETECTION] = __TS__New(FlyingDetection, moddedElementSets),
            [ISCFeature.FORGOTTEN_SWITCH] = __TS__New(ForgottenSwitch),
            [ISCFeature.EXTRA_CONSOLE_COMMANDS] = __TS__New(ExtraConsoleCommands),
            [ISCFeature.ITEM_POOL_DETECTION] = itemPoolDetection,
            [ISCFeature.MODDED_ELEMENT_DETECTION] = moddedElementDetection,
            [ISCFeature.MODDED_ELEMENT_SETS] = moddedElementSets,
            [ISCFeature.NO_SIREN_STEAL] = __TS__New(NoSirenSteal),
            [ISCFeature.PAUSE] = pause,
            [ISCFeature.PERSISTENT_ENTITIES] = __TS__New(PersistentEntities, roomHistory),
            [ISCFeature.PICKUP_INDEX_CREATION] = pickupIndexCreation,
            [ISCFeature.PLAYER_INVENTORY] = __TS__New(PlayerInventory),
            [ISCFeature.PONY_DETECTION] = ponyDetection,
            [ISCFeature.PREVENT_CHILD_ENTITIES] = __TS__New(PreventChildEntities),
            [ISCFeature.PREVENT_COLLECTIBLE_ROTATION] = preventCollectibleRotation,
            [ISCFeature.PREVENT_GRID_ENTITY_RESPAWN] = preventGridEntityRespawn,
            [ISCFeature.ROOM_CLEAR_FRAME] = roomClearFrame,
            [ISCFeature.ROOM_HISTORY] = roomHistory,
            [ISCFeature.RUN_IN_N_FRAMES] = runInNFrames,
            [ISCFeature.RUN_NEXT_ROOM] = runNextRoom,
            [ISCFeature.SAVE_DATA_MANAGER] = __TS__New(SaveDataManager, mod),
            [ISCFeature.SPAWN_ALT_ROCK_REWARDS] = __TS__New(SpawnRockAltRewards, itemPoolDetection),
            [ISCFeature.SPAWN_COLLECTIBLE] = spawnCollectible,
            [ISCFeature.STAGE_HISTORY] = stageHistory,
            [ISCFeature.START_AMBUSH] = __TS__New(StartAmbush, runInNFrames),
            [ISCFeature.TAINTED_LAZARUS_PLAYERS] = __TS__New(TaintedLazarusPlayers)
        }
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.CustomGridEntities"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local Set = ____lualib.Set
local __TS__Iterator = ____lualib.__TS__Iterator
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local GridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.GridCollisionClass
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local removeGridEntity = ____gridEntities.removeGridEntity
local spawnGridEntityWithVariant = ____gridEntities.spawnGridEntityWithVariant
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getPlayerFromPtr = ____players.getPlayerFromPtr
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomListIndex = ____roomData.getRoomListIndex
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isNumber = ____types.isNumber
local ____vector = require("lua_modules.isaacscript-common.dist.src.functions.vector")
local isVector = ____vector.isVector
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.CustomGridEntities = __TS__Class()
local CustomGridEntities = ____exports.CustomGridEntities
CustomGridEntities.name = "CustomGridEntities"
__TS__ClassExtends(CustomGridEntities, Feature)
function CustomGridEntities.prototype.____constructor(self, runInNFrames)
    Feature.prototype.____constructor(self)
    self.v = {
        level = {customGridEntities = __TS__New(
            DefaultMap,
            function() return __TS__New(Map) end
        )},
        room = {
            genericPropPtrHashes = __TS__New(Set),
            manuallyUsingShovel = false
        }
    }
    self.postNewRoom = function()
        local roomListIndex = getRoomListIndex(nil)
        local roomCustomGridEntities = self.v.level.customGridEntities:get(roomListIndex)
        if roomCustomGridEntities == nil then
            return
        end
        local room = game:GetRoom()
        for ____, ____value in __TS__Iterator(roomCustomGridEntities:entries()) do
            local gridIndex = ____value[1]
            local data = ____value[2]
            do
                local decoration = room:GetGridEntity(gridIndex)
                if decoration == nil then
                    roomCustomGridEntities:delete(gridIndex)
                    goto __continue6
                end
                if data.anm2Path ~= nil then
                    local sprite = decoration:GetSprite()
                    sprite:Load(data.anm2Path, true)
                    local animationToPlay = data.defaultAnimation == nil and sprite:GetDefaultAnimation() or data.defaultAnimation
                    sprite:Play(animationToPlay, true)
                end
            end
            ::__continue6::
        end
    end
    self.preUseItemWeNeedToGoDeeper = function(____, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData)
        local room = game:GetRoom()
        local roomListIndex = getRoomListIndex(nil)
        local roomCustomGridEntities = self.v.level.customGridEntities:get(roomListIndex)
        if roomCustomGridEntities == nil then
            return nil
        end
        local gridIndex = room:GetGridIndex(player.Position)
        local customGridEntity = roomCustomGridEntities:get(gridIndex)
        if customGridEntity == nil then
            return nil
        end
        if customGridEntity.gridCollisionClass ~= GridCollisionClass.NONE then
            return nil
        end
        removeGridEntity(nil, customGridEntity.gridIndex, false)
        local entityPtr = EntityPtr(player)
        self.runInNFrames:runNextGameFrame(function()
            local futurePlayer = getPlayerFromPtr(nil, entityPtr)
            if futurePlayer == nil then
                return
            end
            self.v.room.manuallyUsingShovel = true
            futurePlayer:UseActiveItem(CollectibleType.WE_NEED_TO_GO_DEEPER)
            self.v.room.manuallyUsingShovel = false
        end)
        return true
    end
    self.featuresUsed = {ISCFeature.RUN_IN_N_FRAMES}
    self.callbacksUsed = {{ModCallback.POST_NEW_ROOM, {self.postNewRoom}}, {ModCallback.PRE_USE_ITEM, {self.preUseItemWeNeedToGoDeeper, CollectibleType.WE_NEED_TO_GO_DEEPER}}}
    self.runInNFrames = runInNFrames
end
function CustomGridEntities.prototype.spawnCustomGridEntity(self, gridEntityTypeCustom, gridIndexOrPosition, gridCollisionClass, anm2Path, defaultAnimation, baseGridEntityType, baseGridEntityVariant)
    if baseGridEntityType == nil then
        baseGridEntityType = GridEntityType.DECORATION
    end
    if baseGridEntityVariant == nil then
        baseGridEntityVariant = 0
    end
    local room = game:GetRoom()
    local roomListIndex = getRoomListIndex(nil)
    local gridIndex = isVector(nil, gridIndexOrPosition) and room:GetGridIndex(gridIndexOrPosition) or gridIndexOrPosition
    local customGridEntity = spawnGridEntityWithVariant(nil, baseGridEntityType, baseGridEntityVariant, gridIndexOrPosition)
    if customGridEntity == nil then
        error("Failed to spawn a custom grid entity.")
    end
    if gridCollisionClass ~= nil then
        customGridEntity.CollisionClass = gridCollisionClass
    end
    if anm2Path ~= nil then
        local sprite = customGridEntity:GetSprite()
        sprite:Load(anm2Path, true)
        local animationToPlay = defaultAnimation == nil and sprite:GetDefaultAnimation() or defaultAnimation
        sprite:Play(animationToPlay, true)
    end
    local customGridEntityData = {
        gridEntityTypeCustom = gridEntityTypeCustom,
        roomListIndex = roomListIndex,
        gridIndex = gridIndex,
        anm2Path = anm2Path,
        defaultAnimation = defaultAnimation,
        gridCollisionClass = gridCollisionClass
    }
    local roomCustomGridEntities = self.v.level.customGridEntities:getAndSetDefault(roomListIndex)
    roomCustomGridEntities:set(gridIndex, customGridEntityData)
    return customGridEntity
end
function CustomGridEntities.prototype.removeCustomGridEntity(self, gridIndexOrPositionOrGridEntity, updateRoom)
    if updateRoom == nil then
        updateRoom = true
    end
    local room = game:GetRoom()
    local roomListIndex = getRoomListIndex(nil)
    local decoration
    if type(gridIndexOrPositionOrGridEntity) == "number" then
        local gridIndex = gridIndexOrPositionOrGridEntity
        local gridEntity = room:GetGridEntity(gridIndex)
        if gridEntity == nil then
            return nil
        end
        decoration = gridEntity
    elseif isVector(nil, gridIndexOrPositionOrGridEntity) then
        local position = gridIndexOrPositionOrGridEntity
        local gridEntity = room:GetGridEntityFromPos(position)
        if gridEntity == nil then
            return nil
        end
        decoration = gridEntity
    else
        decoration = gridIndexOrPositionOrGridEntity
    end
    local gridIndex = decoration:GetGridIndex()
    local roomCustomGridEntities = self.v.level.customGridEntities:getAndSetDefault(roomListIndex)
    local exists = roomCustomGridEntities:has(gridIndex)
    if not exists then
        return nil
    end
    roomCustomGridEntities:delete(gridIndex)
    removeGridEntity(nil, decoration, updateRoom)
    return decoration
end
function CustomGridEntities.prototype.getCustomGridEntities(self)
    local roomListIndex = getRoomListIndex(nil)
    local roomCustomGridEntities = self.v.level.customGridEntities:get(roomListIndex)
    if roomCustomGridEntities == nil then
        return {}
    end
    local room = game:GetRoom()
    local customGridEntities = {}
    for ____, ____value in __TS__Iterator(roomCustomGridEntities:entries()) do
        local gridIndex = ____value[1]
        local data = ____value[2]
        local gridEntity = room:GetGridEntity(gridIndex)
        if gridEntity ~= nil then
            customGridEntities[#customGridEntities + 1] = {gridEntity, data}
        end
    end
    return customGridEntities
end
function CustomGridEntities.prototype.getCustomGridEntityType(self, gridEntityOrGridIndex)
    if not self.initialized then
        return nil
    end
    local gridIndex = isNumber(nil, gridEntityOrGridIndex) and gridEntityOrGridIndex or gridEntityOrGridIndex:GetGridIndex()
    local roomListIndex = getRoomListIndex(nil)
    local roomCustomGridEntities = self.v.level.customGridEntities:get(roomListIndex)
    if roomCustomGridEntities == nil then
        return nil
    end
    for ____, ____value in __TS__Iterator(roomCustomGridEntities:entries()) do
        local _gridIndex = ____value[1]
        local data = ____value[2]
        if data.gridIndex == gridIndex then
            return data.gridEntityTypeCustom
        end
    end
    return nil
end
function CustomGridEntities.prototype.isCustomGridEntity(self, gridEntityOrGridIndex)
    local gridEntityTypeCustom = self:getCustomGridEntityType(gridEntityOrGridIndex)
    return gridEntityTypeCustom ~= nil
end
__TS__Decorate({Exported}, CustomGridEntities.prototype, "spawnCustomGridEntity", true)
__TS__Decorate({Exported}, CustomGridEntities.prototype, "removeCustomGridEntity", true)
__TS__Decorate({Exported}, CustomGridEntities.prototype, "getCustomGridEntities", true)
__TS__Decorate({Exported}, CustomGridEntities.prototype, "getCustomGridEntityType", true)
__TS__Decorate({Exported}, CustomGridEntities.prototype, "isCustomGridEntity", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.CustomRevive"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local sfxManager = ____cachedClasses.sfxManager
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____collectibles = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
local removeCollectibleFromItemTracker = ____collectibles.removeCollectibleFromItemTracker
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local removeAllFamiliars = ____entitiesSpecific.removeAllFamiliars
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local ____logMisc = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
local logError = ____logMisc.logError
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getPlayerFromIndex = ____playerIndex.getPlayerFromIndex
local getPlayerIndex = ____playerIndex.getPlayerIndex
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local isCharacter = ____players.isCharacter
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local DEBUG = false
local CustomReviveState = {}
CustomReviveState.DISABLED = 0
CustomReviveState[CustomReviveState.DISABLED] = "DISABLED"
CustomReviveState.WAITING_FOR_ROOM_TRANSITION = 1
CustomReviveState[CustomReviveState.WAITING_FOR_ROOM_TRANSITION] = "WAITING_FOR_ROOM_TRANSITION"
CustomReviveState.WAITING_FOR_ITEM_ANIMATION = 2
CustomReviveState[CustomReviveState.WAITING_FOR_ITEM_ANIMATION] = "WAITING_FOR_ITEM_ANIMATION"
____exports.CustomRevive = __TS__Class()
local CustomRevive = ____exports.CustomRevive
CustomRevive.name = "CustomRevive"
__TS__ClassExtends(CustomRevive, Feature)
function CustomRevive.prototype.____constructor(self, preCustomRevive, postCustomRevive, runInNFrames)
    Feature.prototype.____constructor(self)
    self.v = {run = {state = CustomReviveState.DISABLED, revivalType = nil, dyingPlayerIndex = nil}}
    self.postRender = function()
        if self.v.run.state ~= CustomReviveState.WAITING_FOR_ITEM_ANIMATION then
            return
        end
        sfxManager:Stop(SoundEffect.ONE_UP)
    end
    self.postPEffectUpdate = function(____, player)
        self:checkWaitingForItemAnimation(player)
    end
    self.postNewRoom = function()
        if self.v.run.state ~= CustomReviveState.WAITING_FOR_ROOM_TRANSITION then
            return
        end
        self.v.run.state = CustomReviveState.WAITING_FOR_ITEM_ANIMATION
        self:logStateChanged()
    end
    self.postPlayerFatalDamage = function(____, player)
        self:playerIsAboutToDie(player)
        return nil
    end
    self.preBerserkDeath = function(____, player)
        self:playerIsAboutToDie(player)
    end
    self.featuresUsed = {ISCFeature.RUN_IN_N_FRAMES}
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}, {ModCallback.POST_PEFFECT_UPDATE, {self.postPEffectUpdate}}, {ModCallback.POST_NEW_ROOM, {self.postNewRoom}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE, {self.postPlayerFatalDamage}}, {ModCallbackCustom.PRE_BERSERK_DEATH, {self.preBerserkDeath}}}
    self.preCustomRevive = preCustomRevive
    self.postCustomRevive = postCustomRevive
    self.runInNFrames = runInNFrames
end
function CustomRevive.prototype.checkWaitingForItemAnimation(self, player)
    if self.v.run.state ~= CustomReviveState.WAITING_FOR_ITEM_ANIMATION then
        return
    end
    if self.v.run.dyingPlayerIndex == nil then
        return
    end
    local playerIndex = getPlayerIndex(nil, player)
    if playerIndex ~= self.v.run.dyingPlayerIndex then
        return
    end
    local playerToCheckHoldingItem = player
    if isCharacter(nil, player, PlayerType.SOUL_B) then
        local forgottenBody = player:GetOtherTwin()
        if forgottenBody ~= nil then
            playerToCheckHoldingItem = forgottenBody
        end
    end
    if not playerToCheckHoldingItem:IsHoldingItem() then
        return
    end
    if self.v.run.revivalType ~= nil then
        self.postCustomRevive:fire(playerToCheckHoldingItem, self.v.run.revivalType)
    end
    self.v.run.state = CustomReviveState.DISABLED
    self.v.run.revivalType = nil
    self.v.run.dyingPlayerIndex = nil
    self:logStateChanged()
end
function CustomRevive.prototype.playerIsAboutToDie(self, player)
    local revivalType = self.preCustomRevive:fire(player)
    if revivalType == nil then
        return
    end
    self.v.run.state = CustomReviveState.WAITING_FOR_ROOM_TRANSITION
    self.v.run.revivalType = revivalType
    self.v.run.dyingPlayerIndex = getPlayerIndex(nil, player)
    self:logStateChanged()
    player:AddCollectible(CollectibleType.ONE_UP, 0, false)
    removeAllFamiliars(nil, FamiliarVariant.ONE_UP)
    removeCollectibleFromItemTracker(nil, CollectibleType.ONE_UP)
    local playerIndex = getPlayerIndex(nil, player)
    self.runInNFrames:runNextGameFrame(function()
        local futurePlayer = getPlayerFromIndex(nil, playerIndex)
        if futurePlayer == nil then
            return
        end
        if futurePlayer:IsDead() then
            return
        end
        logError(nil, "The player is still alive after initializing a custom revive. Explicitly killing the player.")
        futurePlayer:Kill()
    end)
end
function CustomRevive.prototype.logStateChanged(self)
    if DEBUG then
        log(
            nil,
            ((("Custom revive state changed: " .. tostring(CustomReviveState[self.v.run.state])) .. " (") .. tostring(self.v.run.state)) .. ")"
        )
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.EsauJrDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getPlayersWithControllerIndex = ____players.getPlayersWithControllerIndex
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.EsauJrDetection = __TS__Class()
local EsauJrDetection = ____exports.EsauJrDetection
EsauJrDetection.name = "EsauJrDetection"
__TS__ClassExtends(EsauJrDetection, Feature)
function EsauJrDetection.prototype.____constructor(self, postEsauJr, postFirstEsauJr)
    Feature.prototype.____constructor(self)
    self.v = {run = {usedEsauJrFrame = nil, usedEsauJrControllerIndex = nil, usedEsauJrAtLeastOnce = false}}
    self.postUpdate = function()
        local gameFrameCount = game:GetFrameCount()
        if self.v.run.usedEsauJrFrame == nil or gameFrameCount < self.v.run.usedEsauJrFrame + 1 then
            return
        end
        self.v.run.usedEsauJrFrame = nil
        if self.v.run.usedEsauJrControllerIndex == nil then
            return
        end
        local players = getPlayersWithControllerIndex(nil, self.v.run.usedEsauJrControllerIndex)
        self.v.run.usedEsauJrControllerIndex = nil
        local player = players[1]
        if player == nil then
            return
        end
        if not self.v.run.usedEsauJrAtLeastOnce then
            self.v.run.usedEsauJrAtLeastOnce = true
            self.postFirstEsauJr:fire(player)
        end
        self.postEsauJr:fire(player)
    end
    self.useItemEsauJr = function(____, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData)
        local gameFrameCount = game:GetFrameCount()
        self.v.run.usedEsauJrFrame = gameFrameCount + 1
        self.v.run.usedEsauJrControllerIndex = player.ControllerIndex
        return nil
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}, {ModCallback.POST_USE_ITEM, {self.useItemEsauJr, CollectibleType.ESAU_JR}}}
    self.postEsauJr = postEsauJr
    self.postFirstEsauJr = postFirstEsauJr
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.FlipDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
local ____exports = {}
local getNewLazarus
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getPlayersOfType = ____players.getPlayersOfType
local isTaintedLazarus = ____players.isTaintedLazarus
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
function getNewLazarus(self, oldLazarus)
    local oldCharacter = oldLazarus:GetPlayerType()
    local newCharacter
    if oldCharacter == PlayerType.LAZARUS_B then
        newCharacter = PlayerType.LAZARUS_2_B
    elseif oldCharacter == PlayerType.LAZARUS_2_B then
        newCharacter = PlayerType.LAZARUS_B
    else
        return nil
    end
    local playersOfType = getPlayersOfType(nil, newCharacter)
    return __TS__ArrayFind(
        playersOfType,
        function(____, player) return player.FrameCount == oldLazarus.FrameCount end
    )
end
____exports.FlipDetection = __TS__Class()
local FlipDetection = ____exports.FlipDetection
FlipDetection.name = "FlipDetection"
__TS__ClassExtends(FlipDetection, Feature)
function FlipDetection.prototype.____constructor(self, postFlip, postFirstFlip)
    Feature.prototype.____constructor(self)
    self.v = {run = {usedFlipAtLeastOnce = false}}
    self.useItemFlip = function(____, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData)
        if not isTaintedLazarus(nil, player) then
            return nil
        end
        local newLazarus = getNewLazarus(nil, player)
        if newLazarus == nil then
            return nil
        end
        if not self.v.run.usedFlipAtLeastOnce then
            self.v.run.usedFlipAtLeastOnce = true
            self.postFirstFlip:fire(newLazarus, player)
        end
        self.postFlip:fire(newLazarus, player)
        return nil
    end
    self.callbacksUsed = {{ModCallback.POST_USE_ITEM, {self.useItemFlip, CollectibleType.FLIP}}}
    self.postFlip = postFlip
    self.postFirstFlip = postFirstFlip
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.GameReorderedCallbacks"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
--- By default, callbacks fire in the following order:
-- - `POST_NEW_ROOM` --> `POST_NEW_LEVEL` --> `POST_GAME_STARTED`
-- 
-- It is easier to write mod code if the callbacks run in a more logical order:
-- - `POST_GAME_STARTED` --> `POST_NEW_LEVEL` --> `POST_NEW_ROOM`
-- 
-- `isaacscript-common` provides three new callbacks that change the order to this:
-- - `POST_GAME_STARTED_REORDERED`
-- - `POST_NEW_LEVEL_REORDERED`
-- - `POST_NEW_ROOM_REORDERED`
-- 
-- Additionally, there are some helper functions listed below that can deal with some edge cases
-- that you may run into with these callbacks.
____exports.GameReorderedCallbacks = __TS__Class()
local GameReorderedCallbacks = ____exports.GameReorderedCallbacks
GameReorderedCallbacks.name = "GameReorderedCallbacks"
__TS__ClassExtends(GameReorderedCallbacks, Feature)
function GameReorderedCallbacks.prototype.____constructor(self, postGameStartedReordered, postNewLevelReordered, postNewRoomReordered, postGameStartedReorderedLast)
    Feature.prototype.____constructor(self)
    self.currentStage = nil
    self.currentStageType = nil
    self.usedGlowingHourGlass = false
    self.forceNewLevel = false
    self.forceNewRoom = false
    self.useItemGlowingHourGlass = function()
        self.usedGlowingHourGlass = true
        return nil
    end
    self.postGameStarted = function(____, isContinued)
        self:recordCurrentStage()
        self.postGameStartedReordered:fire(isContinued)
        self.postNewLevelReordered:fire()
        self.postNewRoomReordered:fire()
        self.postGameStartedReorderedLast:fire(isContinued)
    end
    self.postNewLevel = function()
        local gameFrameCount = game:GetFrameCount()
        if gameFrameCount == 0 and not self.forceNewLevel then
            return
        end
        self.forceNewLevel = false
        self:recordCurrentStage()
        self.postNewLevelReordered:fire()
        self.postNewRoomReordered:fire()
    end
    self.postNewRoom = function()
        local gameFrameCount = game:GetFrameCount()
        local level = game:GetLevel()
        local stage = level:GetStage()
        local stageType = level:GetStageType()
        if self.usedGlowingHourGlass then
            self.usedGlowingHourGlass = false
            if self.currentStage ~= stage or self.currentStageType ~= stageType then
                self:recordCurrentStage()
                self.postNewLevelReordered:fire()
                self.postNewRoomReordered:fire()
                return
            end
        end
        if (gameFrameCount == 0 or self.currentStage ~= stage or self.currentStageType ~= stageType) and not self.forceNewRoom then
            return
        end
        self.forceNewRoom = false
        self.postNewRoomReordered:fire()
    end
    self.callbacksUsed = {{ModCallback.POST_USE_ITEM, {self.useItemGlowingHourGlass, CollectibleType.GLOWING_HOUR_GLASS}}, {ModCallback.POST_GAME_STARTED, {self.postGameStarted}}, {ModCallback.POST_NEW_LEVEL, {self.postNewLevel}}, {ModCallback.POST_NEW_ROOM, {self.postNewRoom}}}
    self.postGameStartedReordered = postGameStartedReordered
    self.postNewLevelReordered = postNewLevelReordered
    self.postNewRoomReordered = postNewRoomReordered
    self.postGameStartedReorderedLast = postGameStartedReorderedLast
end
function GameReorderedCallbacks.prototype.recordCurrentStage(self)
    local level = game:GetLevel()
    local stage = level:GetStage()
    local stageType = level:GetStageType()
    self.currentStage = stage
    self.currentStageType = stageType
end
function GameReorderedCallbacks.prototype.forceNewLevelCallback(self)
    self.forceNewLevel = true
end
function GameReorderedCallbacks.prototype.forceNewRoomCallback(self)
    self.forceNewRoom = true
end
function GameReorderedCallbacks.prototype.reorderedCallbacksSetStage(self, stage, stageType)
    self.currentStage = stage
    self.currentStageType = stageType
end
__TS__Decorate({Exported}, GameReorderedCallbacks.prototype, "forceNewLevelCallback", true)
__TS__Decorate({Exported}, GameReorderedCallbacks.prototype, "forceNewRoomCallback", true)
__TS__Decorate({Exported}, GameReorderedCallbacks.prototype, "reorderedCallbacksSetStage", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.GridEntityCollisionDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local GridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.GridCollisionClass
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local getCollidingEntitiesWithGridEntity = ____gridEntities.getCollidingEntitiesWithGridEntity
local getGridEntities = ____gridEntities.getGridEntities
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.GridEntityCollisionDetection = __TS__Class()
local GridEntityCollisionDetection = ____exports.GridEntityCollisionDetection
GridEntityCollisionDetection.name = "GridEntityCollisionDetection"
__TS__ClassExtends(GridEntityCollisionDetection, Feature)
function GridEntityCollisionDetection.prototype.____constructor(self, postGridEntityCollision, postGridEntityCustomCollision, customGridEntities)
    Feature.prototype.____constructor(self)
    self.v = {room = {collidingEntitiesMap = __TS__New(
        DefaultMap,
        function() return __TS__New(Set) end
    )}}
    self.postUpdate = function()
        local gridEntities = getGridEntities(nil)
        local gridEntitiesWithCollision = __TS__ArrayFilter(
            gridEntities,
            function(____, gridEntity) return gridEntity.CollisionClass ~= GridCollisionClass.NONE end
        )
        for ____, gridEntity in ipairs(gridEntitiesWithCollision) do
            local gridEntityPtrHash = GetPtrHash(gridEntity)
            local oldCollidingEntities = self.v.room.collidingEntitiesMap:getAndSetDefault(gridEntityPtrHash)
            local collidingEntities = getCollidingEntitiesWithGridEntity(nil, gridEntity)
            for ____, entity in ipairs(collidingEntities) do
                local entityPtrHash = GetPtrHash(entity)
                if not oldCollidingEntities:has(entityPtrHash) then
                    oldCollidingEntities:add(entityPtrHash)
                    local gridEntityTypeCustom = self.customGridEntities:getCustomGridEntityType(gridEntity)
                    if gridEntityTypeCustom == nil then
                        self.postGridEntityCollision:fire(gridEntity, entity)
                    else
                        self.postGridEntityCustomCollision:fire(gridEntity, gridEntityTypeCustom, entity)
                    end
                end
            end
            local collidingEntitiesPtrHashes = __TS__ArrayMap(
                collidingEntities,
                function(____, entity) return GetPtrHash(entity) end
            )
            local collidingEntitiesPtrHashSet = __TS__New(Set, collidingEntitiesPtrHashes)
            for ____, oldCollidingEntityPtrHash in __TS__Iterator(oldCollidingEntities:values()) do
                if not collidingEntitiesPtrHashSet:has(oldCollidingEntityPtrHash) then
                    oldCollidingEntities:delete(oldCollidingEntityPtrHash)
                end
            end
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
    self.postGridEntityCollision = postGridEntityCollision
    self.postGridEntityCustomCollision = postGridEntityCustomCollision
    self.customGridEntities = customGridEntities
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.GridEntityRenderDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local getGridEntities = ____gridEntities.getGridEntities
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.GridEntityRenderDetection = __TS__Class()
local GridEntityRenderDetection = ____exports.GridEntityRenderDetection
GridEntityRenderDetection.name = "GridEntityRenderDetection"
__TS__ClassExtends(GridEntityRenderDetection, Feature)
function GridEntityRenderDetection.prototype.____constructor(self, postGridEntityRender, postGridEntityCustomRender, customGridEntities)
    Feature.prototype.____constructor(self)
    self.postRender = function()
        for ____, gridEntity in ipairs(getGridEntities(nil)) do
            local gridIndex = gridEntity:GetGridIndex()
            local gridEntityTypeCustom = self.customGridEntities:getCustomGridEntityType(gridIndex)
            if gridEntityTypeCustom == nil then
                self.postGridEntityRender:fire(gridEntity)
            else
                self.postGridEntityCustomRender:fire(gridEntity, gridEntityTypeCustom)
            end
        end
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
    self.postGridEntityRender = postGridEntityRender
    self.postGridEntityCustomRender = postGridEntityCustomRender
    self.customGridEntities = customGridEntities
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.GridEntityUpdateDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local getGridEntitiesMap = ____gridEntities.getGridEntitiesMap
local isGridEntityBroken = ____gridEntities.isGridEntityBroken
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.GridEntityUpdateDetection = __TS__Class()
local GridEntityUpdateDetection = ____exports.GridEntityUpdateDetection
GridEntityUpdateDetection.name = "GridEntityUpdateDetection"
__TS__ClassExtends(GridEntityUpdateDetection, Feature)
function GridEntityUpdateDetection.prototype.____constructor(self, postGridEntityInit, postGridEntityCustomInit, postGridEntityUpdate, postGridEntityCustomUpdate, postGridEntityRemove, postGridEntityCustomRemove, postGridEntityStateChanged, postGridEntityCustomStateChanged, postGridEntityBroken, postGridEntityCustomBroken, customGridEntities)
    Feature.prototype.____constructor(self)
    self.v = {room = {initializedGridEntities = __TS__New(Map)}}
    self.postUpdate = function()
        local gridEntitiesMap = getGridEntitiesMap(nil)
        self:checkGridEntitiesRemoved(gridEntitiesMap)
        for ____, ____value in __TS__Iterator(gridEntitiesMap:entries()) do
            local gridIndex = ____value[1]
            local gridEntity = ____value[2]
            self:checkGridEntityStateChanged(gridIndex, gridEntity)
            self:checkNewGridEntity(gridIndex, gridEntity)
            local gridEntityTypeCustom = self.customGridEntities:getCustomGridEntityType(gridIndex)
            if gridEntityTypeCustom == nil then
                self.postGridEntityUpdate:fire(gridEntity)
            else
                self.postGridEntityCustomUpdate:fire(gridEntity, gridEntityTypeCustom)
            end
        end
    end
    self.postNewRoom = function()
        local gridEntitiesMap = getGridEntitiesMap(nil)
        for ____, ____value in __TS__Iterator(gridEntitiesMap:entries()) do
            local gridIndex = ____value[1]
            local gridEntity = ____value[2]
            self:checkNewGridEntity(gridIndex, gridEntity)
        end
    end
    self.featuresUsed = {ISCFeature.RUN_IN_N_FRAMES}
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}, {ModCallback.POST_NEW_ROOM, {self.postNewRoom}}}
    self.postGridEntityInit = postGridEntityInit
    self.postGridEntityCustomInit = postGridEntityCustomInit
    self.postGridEntityUpdate = postGridEntityUpdate
    self.postGridEntityCustomUpdate = postGridEntityCustomUpdate
    self.postGridEntityRemove = postGridEntityRemove
    self.postGridEntityCustomRemove = postGridEntityCustomRemove
    self.postGridEntityStateChanged = postGridEntityStateChanged
    self.postGridEntityCustomStateChanged = postGridEntityCustomStateChanged
    self.postGridEntityBroken = postGridEntityBroken
    self.postGridEntityCustomBroken = postGridEntityCustomBroken
    self.customGridEntities = customGridEntities
end
function GridEntityUpdateDetection.prototype.checkGridEntitiesRemoved(self, gridEntitiesMap)
    for ____, ____value in __TS__Iterator(self.v.room.initializedGridEntities:entries()) do
        local gridIndex = ____value[1]
        local gridEntityTuple = ____value[2]
        local storedGridEntityType, storedGridEntityVariant = table.unpack(gridEntityTuple)
        local gridEntity = gridEntitiesMap:get(gridIndex)
        if gridEntity == nil or gridEntity:GetType() ~= storedGridEntityType then
            self.v.room.initializedGridEntities:delete(gridIndex)
            local gridEntityTypeCustom = self.customGridEntities:getCustomGridEntityType(gridIndex)
            if gridEntityTypeCustom == nil then
                self.postGridEntityRemove:fire(gridIndex, storedGridEntityType, storedGridEntityVariant)
            else
                self.postGridEntityCustomRemove:fire(gridIndex, gridEntityTypeCustom)
            end
        end
    end
end
function GridEntityUpdateDetection.prototype.checkGridEntityStateChanged(self, gridIndex, gridEntity)
    local gridEntityTuple = self.v.room.initializedGridEntities:get(gridIndex)
    if gridEntityTuple == nil then
        return
    end
    local _gridEntityType, _gridEntityVariant, oldState = table.unpack(gridEntityTuple)
    local newState = gridEntity.State
    if oldState ~= newState then
        self:updateTupleInMap(gridEntity)
        local gridEntityTypeCustom = self.customGridEntities:getCustomGridEntityType(gridEntity)
        if gridEntityTypeCustom == nil then
            self.postGridEntityStateChanged:fire(gridEntity, oldState, newState)
        else
            self.postGridEntityCustomStateChanged:fire(gridEntity, gridEntityTypeCustom, oldState, newState)
        end
        if isGridEntityBroken(nil, gridEntity) then
            if gridEntityTypeCustom == nil then
                self.postGridEntityBroken:fire(gridEntity)
            else
                self.postGridEntityCustomBroken:fire(gridEntity, gridEntityTypeCustom)
            end
        end
    end
end
function GridEntityUpdateDetection.prototype.checkNewGridEntity(self, gridIndex, gridEntity)
    local gridEntityType = gridEntity:GetType()
    local gridEntityTuple = self.v.room.initializedGridEntities:get(gridIndex)
    if gridEntityTuple == nil or gridEntityTuple[1] ~= gridEntityType then
        self:updateTupleInMap(gridEntity)
        local gridEntityTypeCustom = self.customGridEntities:getCustomGridEntityType(gridEntity)
        if gridEntityTypeCustom == nil then
            self.postGridEntityInit:fire(gridEntity)
        else
            self.postGridEntityCustomInit:fire(gridEntity, gridEntityTypeCustom)
        end
    end
end
function GridEntityUpdateDetection.prototype.updateTupleInMap(self, gridEntity)
    local gridEntityType = gridEntity:GetType()
    local variant = gridEntity:GetVariant()
    local gridIndex = gridEntity:GetGridIndex()
    local newTuple = {gridEntityType, variant, gridEntity.State}
    self.v.room.initializedGridEntities:set(gridIndex, newTuple)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.ItemPickupDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
local ____PickingUpItem = require("lua_modules.isaacscript-common.dist.src.types.PickingUpItem")
local newPickingUpItem = ____PickingUpItem.newPickingUpItem
local resetPickingUpItem = ____PickingUpItem.resetPickingUpItem
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.ItemPickupDetection = __TS__Class()
local ItemPickupDetection = ____exports.ItemPickupDetection
ItemPickupDetection.name = "ItemPickupDetection"
__TS__ClassExtends(ItemPickupDetection, Feature)
function ItemPickupDetection.prototype.____constructor(self, postItemPickup, preItemPickup)
    Feature.prototype.____constructor(self)
    self.v = {run = {playersPickingUpItemMap = __TS__New(
        DefaultMap,
        function() return newPickingUpItem(nil) end
    )}}
    self.postPEffectUpdate = function(____, player)
        local pickingUpItem = defaultMapGetPlayer(nil, self.v.run.playersPickingUpItemMap, player)
        if player:IsItemQueueEmpty() then
            self:queueEmpty(player, pickingUpItem)
        else
            self:queueNotEmpty(player, pickingUpItem)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_PEFFECT_UPDATE, {self.postPEffectUpdate}}}
    self.postItemPickup = postItemPickup
    self.preItemPickup = preItemPickup
end
function ItemPickupDetection.prototype.queueEmpty(self, player, pickingUpItem)
    if pickingUpItem.itemType == ItemType.NULL or asNumber(nil, pickingUpItem.subType) == 0 then
        return
    end
    self.postItemPickup:fire(player, pickingUpItem)
    resetPickingUpItem(nil, pickingUpItem)
end
function ItemPickupDetection.prototype.queueNotEmpty(self, player, pickingUpItem)
    local queuedItem = player.QueuedItem.Item
    if queuedItem == nil or queuedItem.Type == ItemType.NULL then
        return
    end
    if queuedItem.Type ~= pickingUpItem.itemType or queuedItem.ID ~= pickingUpItem.subType then
        pickingUpItem.itemType = queuedItem.Type
        pickingUpItem.subType = queuedItem.ID
        self.preItemPickup:fire(player, pickingUpItem)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.types.PickingUpItem"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType
local DEFAULT_ITEM_TYPE = ItemType.NULL
local DEFAULT_SUB_TYPE = CollectibleType.NULL
function ____exports.newPickingUpItem(self)
    return {itemType = DEFAULT_ITEM_TYPE, subType = DEFAULT_SUB_TYPE}
end
function ____exports.resetPickingUpItem(self, pickingUpItem)
    pickingUpItem.itemType = DEFAULT_ITEM_TYPE
    pickingUpItem.subType = DEFAULT_SUB_TYPE
end
local COLLECTIBLE_ITEM_TYPES = __TS__New(Set, {ItemType.PASSIVE, ItemType.ACTIVE, ItemType.FAMILIAR})
--- Helper function to narrow the type of `PickingUpItem`.
function ____exports.isPickingUpItemNull(self, pickingUpItem)
    return pickingUpItem.itemType == ItemType.NULL
end
--- Helper function to narrow the type of `PickingUpItem`.
function ____exports.isPickingUpItemCollectible(self, pickingUpItem)
    return COLLECTIBLE_ITEM_TYPES:has(pickingUpItem.itemType)
end
--- Helper function to narrow the type of `PickingUpItem`.
function ____exports.isPickingUpItemTrinket(self, pickingUpItem)
    return pickingUpItem.itemType == ItemType.TRINKET
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.PlayerCollectibleDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local Map = ____lualib.Map
local Set = ____lualib.Set
local __TS__Spread = ____lualib.__TS__Spread
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
local __TS__Iterator = ____lualib.__TS__Iterator
local __TS__ArraySort = ____lualib.__TS__ArraySort
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local arrayEquals = ____array.arrayEquals
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer
local mapSetPlayer = ____playerDataStructures.mapSetPlayer
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getPlayerFromPtr = ____players.getPlayerFromPtr
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local ____repeat = ____utils["repeat"]
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.PlayerCollectibleDetection = __TS__Class()
local PlayerCollectibleDetection = ____exports.PlayerCollectibleDetection
PlayerCollectibleDetection.name = "PlayerCollectibleDetection"
__TS__ClassExtends(PlayerCollectibleDetection, Feature)
function PlayerCollectibleDetection.prototype.____constructor(self, postPlayerCollectibleAdded, postPlayerCollectibleRemoved, moddedElementSets, runInNFrames)
    Feature.prototype.____constructor(self)
    self.v = {run = {
        playersCollectibleCount = __TS__New(DefaultMap, 0),
        playersCollectibleMap = __TS__New(
            DefaultMap,
            function() return __TS__New(Map) end
        ),
        playersActiveItemMap = __TS__New(
            DefaultMap,
            function() return __TS__New(Map) end
        )
    }}
    self.useItemD4 = function(____, _collectibleType, _rng, player)
        self:updateCollectibleMapAndFire(player, nil)
        return nil
    end
    self.postPEffectUpdate = function(____, player)
        local oldCollectibleCount = defaultMapGetPlayer(nil, self.v.run.playersCollectibleCount, player)
        local newCollectibleCount = player:GetCollectibleCount()
        mapSetPlayer(nil, self.v.run.playersCollectibleCount, player, newCollectibleCount)
        local difference = newCollectibleCount - oldCollectibleCount
        if difference > 0 then
            self:updateCollectibleMapAndFire(player, difference)
        elseif difference < 0 then
            self:updateCollectibleMapAndFire(player, difference * -1)
        elseif difference == 0 then
            self:checkActiveItemsChanged(player)
        end
    end
    self.entityTakeDmgPlayer = function(____, entity, _amount, damageFlags, _source, _countdownFrames)
        if hasFlag(nil, damageFlags, DamageFlag.FAKE) then
            return nil
        end
        local player = entity:ToPlayer()
        if player == nil then
            return nil
        end
        local character = player:GetPlayerType()
        if character ~= PlayerType.EDEN_B then
            return nil
        end
        local entityPtr = EntityPtr(player)
        self.runInNFrames:runNextGameFrame(function()
            local futurePlayer = getPlayerFromPtr(nil, entityPtr)
            if futurePlayer ~= nil then
                self:updateCollectibleMapAndFire(player, nil)
            end
        end)
        return nil
    end
    self.postItemPickup = function(____, player, pickingUpItem)
        if pickingUpItem.itemType == ItemType.TRINKET or pickingUpItem.itemType == ItemType.NULL then
            return
        end
        local newCollectibleCount = player:GetCollectibleCount()
        mapSetPlayer(nil, self.v.run.playersCollectibleCount, player, newCollectibleCount)
        self:updateCollectibleMapAndFire(player, 1)
    end
    self.featuresUsed = {ISCFeature.MODDED_ELEMENT_SETS, ISCFeature.RUN_IN_N_FRAMES}
    self.callbacksUsed = {{ModCallback.POST_USE_ITEM, {self.useItemD4, CollectibleType.D4}}, {ModCallback.POST_PEFFECT_UPDATE, {self.postPEffectUpdate}}, {ModCallback.ENTITY_TAKE_DMG, {self.entityTakeDmgPlayer, EntityType.PLAYER}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_ITEM_PICKUP, {self.postItemPickup}}}
    self.postPlayerCollectibleAdded = postPlayerCollectibleAdded
    self.postPlayerCollectibleRemoved = postPlayerCollectibleRemoved
    self.moddedElementSets = moddedElementSets
    self.runInNFrames = runInNFrames
end
function PlayerCollectibleDetection.prototype.updateCollectibleMapAndFire(self, player, numCollectiblesChanged)
    local oldCollectibleMap = defaultMapGetPlayer(nil, self.v.run.playersCollectibleMap, player)
    local newCollectibleMap = self.moddedElementSets:getPlayerCollectibleMap(player)
    mapSetPlayer(nil, self.v.run.playersCollectibleMap, player, newCollectibleMap)
    local ____Set_1 = Set
    local ____array_0 = __TS__SparseArrayNew(__TS__Spread(oldCollectibleMap:keys()))
    __TS__SparseArrayPush(
        ____array_0,
        __TS__Spread(newCollectibleMap:keys())
    )
    local collectibleTypesSet = __TS__New(
        ____Set_1,
        {__TS__SparseArraySpread(____array_0)}
    )
    local numFired = 0
    for ____, collectibleType in __TS__Iterator(collectibleTypesSet:values()) do
        local oldNum = oldCollectibleMap:get(collectibleType) or 0
        local newNum = newCollectibleMap:get(collectibleType) or 0
        local difference = newNum - oldNum
        local increased = difference > 0
        local absoluteDifference = math.abs(difference)
        ____repeat(
            nil,
            absoluteDifference,
            function()
                if increased then
                    self.postPlayerCollectibleAdded:fire(player, collectibleType)
                else
                    self.postPlayerCollectibleRemoved:fire(player, collectibleType)
                end
                numFired = numFired + 1
            end
        )
        if numFired == numCollectiblesChanged then
            return
        end
    end
end
function PlayerCollectibleDetection.prototype.checkActiveItemsChanged(self, player)
    local activeItemMap = defaultMapGetPlayer(nil, self.v.run.playersActiveItemMap, player)
    local oldCollectibleTypes = {}
    local newCollectibleTypes = {}
    for ____, activeSlot in ipairs(getEnumValues(nil, ActiveSlot)) do
        local oldCollectibleType = activeItemMap:get(activeSlot) or CollectibleType.NULL
        local newCollectibleType = player:GetActiveItem(activeSlot)
        activeItemMap:set(activeSlot, newCollectibleType)
        oldCollectibleTypes[#oldCollectibleTypes + 1] = oldCollectibleType
        newCollectibleTypes[#newCollectibleTypes + 1] = newCollectibleType
    end
    __TS__ArraySort(oldCollectibleTypes)
    __TS__ArraySort(newCollectibleTypes)
    if not arrayEquals(nil, oldCollectibleTypes, newCollectibleTypes) then
        self:updateCollectibleMapAndFire(player, nil)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.PlayerReorderedCallbacks"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local dequeue
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local emptyArray = ____array.emptyArray
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getPlayerFromIndex = ____playerIndex.getPlayerFromIndex
local getPlayerIndex = ____playerIndex.getPlayerIndex
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
function dequeue(self, playerIndexes, fireFunc)
    for ____, playerIndex in ipairs(playerIndexes) do
        local player = getPlayerFromIndex(nil, playerIndex)
        if player ~= nil then
            fireFunc(nil, player)
        end
    end
    emptyArray(nil, playerIndexes)
end
____exports.PlayerReorderedCallbacks = __TS__Class()
local PlayerReorderedCallbacks = ____exports.PlayerReorderedCallbacks
PlayerReorderedCallbacks.name = "PlayerReorderedCallbacks"
__TS__ClassExtends(PlayerReorderedCallbacks, Feature)
function PlayerReorderedCallbacks.prototype.____constructor(self, postPEffectUpdateReordered, postPlayerRenderReordered, postPlayerUpdateReordered)
    Feature.prototype.____constructor(self)
    self.v = {run = {postGameStartedFiredOnThisRun = false, postPEffectUpdateQueue = {}, postPlayerUpdateQueue = {}, postPlayerRenderQueue = {}}}
    self.postPEffectUpdate = function(____, player)
        if self.v.run.postGameStartedFiredOnThisRun then
            self.postPEffectUpdateReordered:fire(player)
        else
            local playerIndex = getPlayerIndex(nil, player)
            local ____self_v_run_postPEffectUpdateQueue_0 = self.v.run.postPEffectUpdateQueue
            ____self_v_run_postPEffectUpdateQueue_0[#____self_v_run_postPEffectUpdateQueue_0 + 1] = playerIndex
        end
    end
    self.postPlayerUpdate = function(____, player)
        if self.v.run.postGameStartedFiredOnThisRun then
            self.postPlayerUpdateReordered:fire(player)
        else
            local playerIndex = getPlayerIndex(nil, player)
            local ____self_v_run_postPlayerUpdateQueue_1 = self.v.run.postPlayerUpdateQueue
            ____self_v_run_postPlayerUpdateQueue_1[#____self_v_run_postPlayerUpdateQueue_1 + 1] = playerIndex
        end
    end
    self.postPlayerRender = function(____, player, _renderOffset)
        if self.v.run.postGameStartedFiredOnThisRun then
            self.postPlayerRenderReordered:fire(player)
        else
            local playerIndex = getPlayerIndex(nil, player)
            local ____self_v_run_postPlayerRenderQueue_2 = self.v.run.postPlayerRenderQueue
            ____self_v_run_postPlayerRenderQueue_2[#____self_v_run_postPlayerRenderQueue_2 + 1] = playerIndex
        end
    end
    self.postGameStartedReorderedLast = function()
        self.v.run.postGameStartedFiredOnThisRun = true
        dequeue(nil, self.v.run.postPEffectUpdateQueue, self.postPEffectUpdateReordered.fire)
        dequeue(nil, self.v.run.postPlayerUpdateQueue, self.postPlayerUpdateReordered.fire)
        dequeue(nil, self.v.run.postPlayerRenderQueue, self.postPlayerRenderReordered.fire)
    end
    self.callbacksUsed = {{ModCallback.POST_PEFFECT_UPDATE, {self.postPEffectUpdate}}, {ModCallback.POST_PLAYER_UPDATE, {self.postPlayerUpdate}}, {ModCallback.POST_PLAYER_RENDER, {self.postPlayerRender}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_GAME_STARTED_REORDERED_LAST, {self.postGameStartedReorderedLast}}}
    self.postPEffectUpdateReordered = postPEffectUpdateReordered
    self.postPlayerRenderReordered = postPlayerRenderReordered
    self.postPlayerUpdateReordered = postPlayerUpdateReordered
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.SlotRenderDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local Set = ____lualib.Set
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getSlots = ____entitiesSpecific.getSlots
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.SlotRenderDetection = __TS__Class()
local SlotRenderDetection = ____exports.SlotRenderDetection
SlotRenderDetection.name = "SlotRenderDetection"
__TS__ClassExtends(SlotRenderDetection, Feature)
function SlotRenderDetection.prototype.____constructor(self, postSlotRender, postSlotAnimationChanged)
    Feature.prototype.____constructor(self)
    self.v = {room = {
        slotAnimations = __TS__New(
            DefaultMap,
            function(____, slot)
                local sprite = slot:GetSprite()
                return sprite:GetAnimation()
            end
        ),
        brokenSlots = __TS__New(Set)
    }}
    self.postRender = function()
        for ____, slot in ipairs(getSlots(nil)) do
            self.postSlotRender:fire(slot)
            self:checkSlotAnimationChanged(slot)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
    self.postSlotRender = postSlotRender
    self.postSlotAnimationChanged = postSlotAnimationChanged
end
function SlotRenderDetection.prototype.checkSlotAnimationChanged(self, slot)
    local sprite = slot:GetSprite()
    local currentAnimation = sprite:GetAnimation()
    local ptrHash = GetPtrHash(slot)
    local previousAnimation = self.v.room.slotAnimations:getAndSetDefault(ptrHash, slot)
    self.v.room.slotAnimations:set(ptrHash, currentAnimation)
    if currentAnimation ~= previousAnimation then
        self.postSlotAnimationChanged:fire(slot, previousAnimation, currentAnimation)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.callbackLogic.SlotUpdateDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getSlots = ____entitiesSpecific.getSlots
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.SlotUpdateDetection = __TS__Class()
local SlotUpdateDetection = ____exports.SlotUpdateDetection
SlotUpdateDetection.name = "SlotUpdateDetection"
__TS__ClassExtends(SlotUpdateDetection, Feature)
function SlotUpdateDetection.prototype.____constructor(self, postSlotInit, postSlotUpdate)
    Feature.prototype.____constructor(self)
    self.v = {room = {initializedSlots = __TS__New(Set)}}
    self.postUpdate = function()
        for ____, slot in ipairs(getSlots(nil)) do
            self:checkNewEntity(slot)
            self.postSlotUpdate:fire(slot)
        end
    end
    self.postNewRoomReordered = function()
        for ____, slot in ipairs(getSlots(nil)) do
            self:checkNewEntity(slot)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_REORDERED, {self.postNewRoomReordered}}}
    self.postSlotInit = postSlotInit
    self.postSlotUpdate = postSlotUpdate
end
function SlotUpdateDetection.prototype.checkNewEntity(self, slot)
    local ptrHash = GetPtrHash(slot)
    if not self.v.room.initializedSlots:has(ptrHash) then
        self.v.room.initializedSlots:add(ptrHash)
        self.postSlotInit:fire(slot)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.CharacterHealthConversion"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local convertRedHeartContainers, removeRedHearts
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____pickups = require("lua_modules.isaacscript-common.dist.src.functions.pickups")
local isRedHeart = ____pickups.isRedHeart
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
function convertRedHeartContainers(self, player, heartSubType)
    local maxHearts = player:GetMaxHearts()
    if maxHearts == 0 then
        return
    end
    player:AddMaxHearts(maxHearts * -1, false)
    repeat
        local ____switch13 = heartSubType
        local ____cond13 = ____switch13 == HeartSubType.SOUL
        if ____cond13 then
            do
                player:AddSoulHearts(maxHearts)
                break
            end
        end
        ____cond13 = ____cond13 or ____switch13 == HeartSubType.BLACK
        if ____cond13 then
            do
                player:AddBlackHearts(maxHearts)
                break
            end
        end
    until true
end
function removeRedHearts(self, player)
    local hearts = player:GetHearts()
    if hearts > 0 then
        player:AddHearts(hearts * -1)
    end
end
____exports.CharacterHealthConversion = __TS__Class()
local CharacterHealthConversion = ____exports.CharacterHealthConversion
CharacterHealthConversion.name = "CharacterHealthConversion"
__TS__ClassExtends(CharacterHealthConversion, Feature)
function CharacterHealthConversion.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.characterHealthReplacementMap = __TS__New(Map)
    self.prePickupCollisionHeart = function(____, pickup, collider)
        if not isRedHeart(nil, pickup) then
            return nil
        end
        local player = collider:ToPlayer()
        if player == nil then
            return nil
        end
        local character = player:GetPlayerType()
        local conversionHeartSubType = self.characterHealthReplacementMap:get(character)
        if conversionHeartSubType == nil then
            return nil
        end
        return false
    end
    self.postPEffectUpdateReordered = function(____, player)
        local character = player:GetPlayerType()
        local conversionHeartSubType = self.characterHealthReplacementMap:get(character)
        if conversionHeartSubType == nil then
            return
        end
        convertRedHeartContainers(nil, player, conversionHeartSubType)
        removeRedHearts(nil, player)
    end
    self.callbacksUsed = {{ModCallback.PRE_PICKUP_COLLISION, {self.prePickupCollisionHeart, PickupVariant.HEART}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectUpdateReordered}}}
end
function CharacterHealthConversion.prototype.registerCharacterHealthConversion(self, playerType, conversionHeartSubType)
    if self.characterHealthReplacementMap:has(playerType) then
        error(("Failed to register a character of type " .. tostring(playerType)) .. " because there is already an existing registered character with that type.")
    end
    self.characterHealthReplacementMap:set(playerType, conversionHeartSubType)
end
__TS__Decorate({Exported}, CharacterHealthConversion.prototype, "registerCharacterHealthConversion", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.pickups"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local ____exports = {}
local ____coinSubTypeToValue = require("lua_modules.isaacscript-common.dist.src.objects.coinSubTypeToValue")
local COIN_SUB_TYPE_TO_VALUE = ____coinSubTypeToValue.COIN_SUB_TYPE_TO_VALUE
local DEFAULT_COIN_VALUE = ____coinSubTypeToValue.DEFAULT_COIN_VALUE
local ____chestPickupVariantsSet = require("lua_modules.isaacscript-common.dist.src.sets.chestPickupVariantsSet")
local CHEST_PICKUP_VARIANTS = ____chestPickupVariantsSet.CHEST_PICKUP_VARIANTS
local ____redHeartSubTypesSet = require("lua_modules.isaacscript-common.dist.src.sets.redHeartSubTypesSet")
local RED_HEART_SUB_TYPES_SET = ____redHeartSubTypesSet.RED_HEART_SUB_TYPES_SET
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local removeEntities = ____entities.removeEntities
local ____pickupsSpecific = require("lua_modules.isaacscript-common.dist.src.functions.pickupsSpecific")
local getHearts = ____pickupsSpecific.getHearts
local ____pickupVariants = require("lua_modules.isaacscript-common.dist.src.functions.pickupVariants")
local isHeart = ____pickupVariants.isHeart
--- Helper function to get the corresponding coin amount from a `CoinSubType`. Returns 1 for modded
-- sub-types.
function ____exports.getCoinValue(self, coinSubType)
    local value = COIN_SUB_TYPE_TO_VALUE[coinSubType]
    return value == nil and DEFAULT_COIN_VALUE or value
end
--- Helper function to get all of the red heart pickup entities in the room.
function ____exports.getRedHearts(self)
    local hearts = getHearts(nil)
    return __TS__ArrayFilter(
        hearts,
        function(____, heart) return RED_HEART_SUB_TYPES_SET:has(heart.SubType) end
    )
end
--- Helper function to test if the provided pickup matches one of the various chest variants.
function ____exports.isChest(self, pickup)
    return CHEST_PICKUP_VARIANTS:has(pickup.Variant)
end
--- Helper function to test if the provided pickup matches one of the various red heart sub types.
function ____exports.isRedHeart(self, pickup)
    return isHeart(nil, pickup) and RED_HEART_SUB_TYPES_SET:has(pickup.SubType)
end
--- Helper function to remove all of the red heart pickup entities in the room.
-- 
-- @param cap Optional. If specified, will only remove the given amount of hearts.
-- @returns The red hearts that were removed.
function ____exports.removeAllRedHearts(self, cap)
    local redHearts = ____exports.getRedHearts(nil)
    return removeEntities(nil, redHearts, cap)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.coinSubTypeToValue"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CoinSubType = ____isaac_2Dtypescript_2Ddefinitions.CoinSubType
____exports.DEFAULT_COIN_VALUE = 1
____exports.COIN_SUB_TYPE_TO_VALUE = {
    [CoinSubType.NULL] = 0,
    [CoinSubType.PENNY] = 1,
    [CoinSubType.NICKEL] = 5,
    [CoinSubType.DIME] = 10,
    [CoinSubType.DOUBLE_PACK] = 2,
    [CoinSubType.LUCKY_PENNY] = 1,
    [CoinSubType.STICKY_NICKEL] = 5,
    [CoinSubType.GOLDEN] = 1
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.chestPickupVariantsSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
____exports.CHEST_PICKUP_VARIANTS = __TS__New(Set, {
    PickupVariant.CHEST,
    PickupVariant.BOMB_CHEST,
    PickupVariant.SPIKED_CHEST,
    PickupVariant.ETERNAL_CHEST,
    PickupVariant.MIMIC_CHEST,
    PickupVariant.OLD_CHEST,
    PickupVariant.WOODEN_CHEST,
    PickupVariant.MEGA_CHEST,
    PickupVariant.HAUNTED_CHEST,
    PickupVariant.LOCKED_CHEST,
    PickupVariant.RED_CHEST,
    PickupVariant.MOMS_CHEST
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.redHeartSubTypesSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType
____exports.RED_HEART_SUB_TYPES_SET = __TS__New(Set, {HeartSubType.FULL, HeartSubType.HALF, HeartSubType.DOUBLE_PACK})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.pickupsSpecific"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getPickups = ____entitiesSpecific.getPickups
local removeAllPickups = ____entitiesSpecific.removeAllPickups
local spawnPickup = ____entitiesSpecific.spawnPickup
--- Helper function to get all of the battery entities in the room.
-- 
-- @param batterySubType Optional. If specified, will only get the batteries that match the
-- sub-type. Default is -1, which matches every sub-type.
function ____exports.getBatteries(self, batterySubType)
    if batterySubType == nil then
        batterySubType = -1
    end
    return getPickups(nil, PickupVariant.LIL_BATTERY, batterySubType)
end
--- Helper function to get all of the bomb entities in the room. (Specifically, this refers to bomb
-- pickups, not the `EntityBomb` class.)
-- 
-- @param bombSubType Optional. If specified, will only get the bombs that match the sub-type.
-- Default is -1, which matches every sub-type.
function ____exports.getBombPickups(self, bombSubType)
    if bombSubType == nil then
        bombSubType = -1
    end
    return getPickups(nil, PickupVariant.BOMB, bombSubType)
end
--- Helper function to get all of the card entities in the room.
-- 
-- @param cardType Optional. If specified, will only get the cards that match the sub-type. Default
-- is -1, which matches every sub-type.
function ____exports.getCards(self, cardType)
    if cardType == nil then
        cardType = -1
    end
    return getPickups(nil, PickupVariant.TAROT_CARD, cardType)
end
--- Helper function to get all of the coin pickup entities in the room.
-- 
-- @param coinSubType Optional. If specified, will only get the coins that match the sub-type.
-- Default is -1, which matches every sub-type.
function ____exports.getCoins(self, coinSubType)
    if coinSubType == nil then
        coinSubType = -1
    end
    return getPickups(nil, PickupVariant.COIN, coinSubType)
end
--- Helper function to get all of the collectible entities in the room.
-- 
-- @param collectibleType Optional. If specified, will only get the collectibles that match the
-- sub-type. Default is -1, which matches every sub-type.
function ____exports.getCollectibles(self, collectibleType)
    if collectibleType == nil then
        collectibleType = -1
    end
    return getPickups(nil, PickupVariant.COLLECTIBLE, collectibleType)
end
--- Helper function to get all of the heart pickup entities in the room.
-- 
-- @param heartSubType Optional. If specified, will only get the hearts that match the sub-type.
-- Default is -1, which matches every sub-type.
function ____exports.getHearts(self, heartSubType)
    if heartSubType == nil then
        heartSubType = -1
    end
    return getPickups(nil, PickupVariant.HEART, heartSubType)
end
--- Helper function to get all of the key pickup entities in the room.
-- 
-- @param keySubType Optional. If specified, will only get the keys that match the sub-type. Default
-- is -1, which matches every sub-type.
function ____exports.getKeys(self, keySubType)
    if keySubType == nil then
        keySubType = -1
    end
    return getPickups(nil, PickupVariant.KEY, keySubType)
end
--- Helper function to get all of the pill entities in the room.
-- 
-- @param pillColor Optional. If specified, will only get the pills that match the sub-type. Default
-- is -1, which matches every sub-type.
function ____exports.getPills(self, pillColor)
    if pillColor == nil then
        pillColor = -1
    end
    return getPickups(nil, PickupVariant.PILL, pillColor)
end
--- Helper function to get all of the sack (i.e. grab bag) entities in the room.
-- 
-- @param sackSubType Optional. If specified, will only get the sacks that match the sub-type.
-- Default is -1, which matches every sub-type.
function ____exports.getSacks(self, sackSubType)
    if sackSubType == nil then
        sackSubType = -1
    end
    return getPickups(nil, PickupVariant.SACK, sackSubType)
end
--- Helper function to get all of the trinket entities in the room.
-- 
-- @param trinketType Optional. If specified, will only get the trinkets that match the sub-type.
-- Default is -1, which matches every sub-type.
function ____exports.getTrinkets(self, trinketType)
    if trinketType == nil then
        trinketType = -1
    end
    return getPickups(nil, PickupVariant.TRINKET, trinketType)
end
--- Helper function to remove all of the batteries in the room.
-- 
-- @param batterySubType Optional. If specified, will only remove the batteries that match this
-- sub-type. Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of cards.
-- @returns The batteries that were removed.
function ____exports.removeAllBatteries(self, batterySubType, cap)
    if batterySubType == nil then
        batterySubType = -1
    end
    return removeAllPickups(nil, PickupVariant.LIL_BATTERY, batterySubType, cap)
end
--- Helper function to remove all of the bomb pickups in the room. (Specifically, this refers to bomb
-- pickups, not the `EntityBomb` class.)
-- 
-- @param bombSubType Optional. If specified, will only remove bombs that match this sub-type.
-- Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of bombs.
-- @returns The bombs that were removed.
function ____exports.removeAllBombPickups(self, bombSubType, cap)
    if bombSubType == nil then
        bombSubType = -1
    end
    return removeAllPickups(nil, PickupVariant.BOMB, bombSubType, cap)
end
--- Helper function to remove all of the cards in the room.
-- 
-- @param cardType Optional. If specified, will only remove cards that match this sub-type. Default
-- is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of cards.
-- @returns The cards that were removed.
function ____exports.removeAllCards(self, cardType, cap)
    if cardType == nil then
        cardType = -1
    end
    return removeAllPickups(nil, PickupVariant.TAROT_CARD, cardType, cap)
end
--- Helper function to remove all of the coins in the room.
-- 
-- @param coinSubType Optional. If specified, will only remove coins that match this sub-type.
-- Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of coins.
-- @returns The coins that were removed.
function ____exports.removeAllCoins(self, coinSubType, cap)
    return removeAllPickups(nil, PickupVariant.COIN, coinSubType, cap)
end
--- Helper function to remove all of the collectibles in the room.
-- 
-- @param collectibleType Optional. If specified, will only remove collectibles that match this
-- sub-type. Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of collectibles.
-- @returns The collectibles that were removed.
function ____exports.removeAllCollectibles(self, collectibleType, cap)
    return removeAllPickups(nil, PickupVariant.COLLECTIBLE, collectibleType, cap)
end
--- Helper function to remove all of the heart pickup entities in the room.
-- 
-- @param heartSubType Optional. If specified, will only remove hearts that match this sub-type.
-- Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of hearts.
-- @returns The hearts that were removed.
function ____exports.removeAllHearts(self, heartSubType, cap)
    return removeAllPickups(nil, PickupVariant.HEART, heartSubType, cap)
end
--- Helper function to remove all of the keys in the room.
-- 
-- @param keySubType Optional. If specified, will only remove keys that match this sub-type. Default
-- is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of keys.
-- @returns The keys that were removed.
function ____exports.removeAllKeys(self, keySubType, cap)
    return removeAllPickups(nil, PickupVariant.KEY, keySubType, cap)
end
--- Helper function to remove all of the pills in the room.
-- 
-- @param pillColor Optional. If specified, will only remove pills that match this sub-type. Default
-- is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of pills.
-- @returns The pills that were removed.
function ____exports.removeAllPills(self, pillColor, cap)
    return removeAllPickups(nil, PickupVariant.PILL, pillColor, cap)
end
--- Helper function to remove all of the sacks (i.e. grab bags) in the room.
-- 
-- @param sackSubType Optional. If specified, will only remove sacks that match this sub-type.
-- Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of sacks.
-- @returns The sacks that were removed.
function ____exports.removeAllSacks(self, sackSubType, cap)
    return removeAllPickups(nil, PickupVariant.TRINKET, sackSubType, cap)
end
--- Helper function to remove all of the trinkets in the room.
-- 
-- @param trinketType Optional. If specified, will only remove trinkets that match this sub-type.
-- Default is -1, which matches every sub-type.
-- @param cap Optional. If specified, will only remove the given amount of trinkets.
-- @returns The trinkets that were removed.
function ____exports.removeAllTrinkets(self, trinketType, cap)
    return removeAllPickups(nil, PickupVariant.TRINKET, trinketType, cap)
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.LIL_BATTERY` (90).
function ____exports.spawnBattery(self, batterySubType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    return spawnPickup(
        nil,
        PickupVariant.LIL_BATTERY,
        batterySubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.LIL_BATTERY` (90)
-- and a specific seed.
function ____exports.spawnBatteryWithSeed(self, batterySubType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnBattery(
        nil,
        batterySubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.BOMB` (40).
function ____exports.spawnBombPickup(self, bombSubType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    return spawnPickup(
        nil,
        PickupVariant.BOMB,
        bombSubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.BOMB` (40) and a
-- specific seed.
function ____exports.spawnBombPickupWithSeed(self, bombSubType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnBombPickup(
        nil,
        bombSubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.TAROT_CARD` (300).
function ____exports.spawnCard(self, cardType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    return spawnPickup(
        nil,
        PickupVariant.TAROT_CARD,
        cardType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.TAROT_CARD` (300)
-- and a specific seed.
function ____exports.spawnCardWithSeed(self, cardType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnCard(
        nil,
        cardType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.COIN` (20).
function ____exports.spawnCoin(self, coinSubType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    return spawnPickup(
        nil,
        PickupVariant.COIN,
        coinSubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.COIN` (20) and a
-- specific seed.
function ____exports.spawnCoinWithSeed(self, coinSubType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnCoin(
        nil,
        coinSubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.HEART` (10).
function ____exports.spawnHeart(self, heartSubType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    return spawnPickup(
        nil,
        PickupVariant.HEART,
        heartSubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
function ____exports.spawnHeartWithSeed(self, heartSubType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnHeart(
        nil,
        heartSubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.KEY` (30).
function ____exports.spawnKey(self, keySubType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    return spawnPickup(
        nil,
        PickupVariant.KEY,
        keySubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.KEY` (30) and a
-- specific seed.
function ____exports.spawnKeyWithSeed(self, keySubType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnKey(
        nil,
        keySubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.PILL` (70).
function ____exports.spawnPill(self, pillColor, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    return spawnPickup(
        nil,
        PickupVariant.PILL,
        pillColor,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.PILL` (70) and a
-- specific seed.
function ____exports.spawnPillWithSeed(self, pillColor, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnPill(
        nil,
        pillColor,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.SACK` (69).
function ____exports.spawnSack(self, sackSubType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    return spawnPickup(
        nil,
        PickupVariant.SACK,
        sackSubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.SACK` (69) and a
-- specific seed.
function ____exports.spawnSackWithSeed(self, sackSubType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnSack(
        nil,
        sackSubType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.TRINKET` (350).
function ____exports.spawnTrinket(self, trinketType, position, velocity, spawner, seedOrRNG)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    return spawnPickup(
        nil,
        PickupVariant.TRINKET,
        trinketType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.TRINKET` (350) and
-- a specific seed.
function ____exports.spawnTrinketWithSeed(self, trinketType, position, seedOrRNG, velocity, spawner)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    return ____exports.spawnTrinket(
        nil,
        trinketType,
        position,
        velocity,
        spawner,
        seedOrRNG
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.CharacterStats"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____stats = require("lua_modules.isaacscript-common.dist.src.functions.stats")
local addStat = ____stats.addStat
local getDefaultPlayerStat = ____stats.getDefaultPlayerStat
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
--- Easily create custom characters that have base stats different from that of Isaac.
____exports.CharacterStats = __TS__Class()
local CharacterStats = ____exports.CharacterStats
CharacterStats.name = "CharacterStats"
__TS__ClassExtends(CharacterStats, Feature)
function CharacterStats.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.charactersStatMap = __TS__New(Map)
    self.evaluateCache = function(____, player, cacheFlag)
        local character = player:GetPlayerType()
        local statMap = self.charactersStatMap:get(character)
        if statMap == nil then
            return
        end
        local stat = statMap:get(cacheFlag)
        local defaultStat = getDefaultPlayerStat(nil, cacheFlag)
        if stat == nil or defaultStat == nil then
            return
        end
        local delta = stat - defaultStat
        addStat(nil, player, cacheFlag, delta)
    end
    self.callbacksUsed = {{ModCallback.EVALUATE_CACHE, {self.evaluateCache}}}
end
function CharacterStats.prototype.registerCharacterStats(self, playerType, statMap)
    self.charactersStatMap:set(playerType, statMap)
end
__TS__Decorate({Exported}, CharacterStats.prototype, "registerCharacterStats", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.stats"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag
local ____defaultPlayerStatMap = require("lua_modules.isaacscript-common.dist.src.maps.defaultPlayerStatMap")
local DEFAULT_PLAYER_STAT_MAP = ____defaultPlayerStatMap.DEFAULT_PLAYER_STAT_MAP
local ____tears = require("lua_modules.isaacscript-common.dist.src.functions.tears")
local addTearsStat = ____tears.addTearsStat
local STAT_CACHE_FLAGS_SET = __TS__New(Set, {
    CacheFlag.DAMAGE,
    CacheFlag.FIRE_DELAY,
    CacheFlag.SHOT_SPEED,
    CacheFlag.RANGE,
    CacheFlag.SPEED,
    CacheFlag.LUCK
})
--- Helper function to add a stat to a player based on the `CacheFlag` provided. Call this function
-- from the `EVALUATE_CACHE` callback.
-- 
-- Note that for `CacheFlag.FIRE_DELAY`, the "amount" argument will be interpreted as the tear stat
-- to add (and not the amount to mutate `EntityPlayer.MaxFireDelay` by).
-- 
-- This function supports the following cache flags:
-- - CacheFlag.DAMAGE (1 << 0)
-- - CacheFlag.FIRE_DELAY (1 << 1)
-- - CacheFlag.SHOT_SPEED (1 << 2)
-- - CacheFlag.RANGE (1 << 3)
-- - CacheFlag.SPEED (1 << 4)
-- - CacheFlag.LUCK (1 << 10)
function ____exports.addStat(self, player, cacheFlag, amount)
    if not STAT_CACHE_FLAGS_SET:has(cacheFlag) then
        error("You cannot add a stat to a player with the cache flag of: " .. tostring(cacheFlag))
    end
    repeat
        local ____switch4 = cacheFlag
        local ____cond4 = ____switch4 == CacheFlag.DAMAGE
        if ____cond4 then
            do
                player.Damage = player.Damage + amount
                break
            end
        end
        ____cond4 = ____cond4 or ____switch4 == CacheFlag.FIRE_DELAY
        if ____cond4 then
            do
                addTearsStat(nil, player, amount)
                break
            end
        end
        ____cond4 = ____cond4 or ____switch4 == CacheFlag.SHOT_SPEED
        if ____cond4 then
            do
                player.ShotSpeed = player.ShotSpeed + amount
                break
            end
        end
        ____cond4 = ____cond4 or ____switch4 == CacheFlag.RANGE
        if ____cond4 then
            do
                player.TearHeight = player.TearHeight + amount
                break
            end
        end
        ____cond4 = ____cond4 or ____switch4 == CacheFlag.SPEED
        if ____cond4 then
            do
                player.MoveSpeed = player.MoveSpeed + amount
                break
            end
        end
        ____cond4 = ____cond4 or ____switch4 == CacheFlag.LUCK
        if ____cond4 then
            do
                player.Luck = player.Luck + amount
                break
            end
        end
    until true
end
--- Returns the starting stat that Isaac (the default character) starts with. For example, if you
-- pass this function `CacheFlag.DAMAGE`, it will return 3.5.
-- 
-- Note that the default fire delay is represented in the tear stat, not the `MaxFireDelay` value.
function ____exports.getDefaultPlayerStat(self, cacheFlag)
    return DEFAULT_PLAYER_STAT_MAP:get(cacheFlag)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.defaultPlayerStatMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag
local ____tears = require("lua_modules.isaacscript-common.dist.src.functions.tears")
local getTearsStat = ____tears.getTearsStat
local DEFAULT_MAX_FIRE_DELAY = 10
--- The default fire delay is represented in the tear stat, not the `MaxFireDelay` value.
____exports.DEFAULT_PLAYER_STAT_MAP = __TS__New(
    Map,
    {
        {CacheFlag.DAMAGE, 3.5},
        {
            CacheFlag.FIRE_DELAY,
            getTearsStat(nil, DEFAULT_MAX_FIRE_DELAY)
        },
        {CacheFlag.SHOT_SPEED, 1},
        {CacheFlag.RANGE, 6.5},
        {CacheFlag.SPEED, 1},
        {CacheFlag.LUCK, 0}
    }
)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.tears"] = function(...) 
local ____exports = {}
--- - The `EntityPlayer` object stores a player's tear rate in the `MaxFireDelay` field. This is
--   equivalent to how many tears the player can shoot per frame.
-- - If you already have a "tears" stat and you want to convert it back to MaxFireDelay, then use
--   this function.
-- - In this context, the "tears stat" represents what is shown on the in-game stat UI.
function ____exports.getFireDelay(self, tearsStat)
    return math.max(30 / tearsStat - 1, -0.9999)
end
--- - The `EntityPlayer` object stores a player's tear rate in the `MaxFireDelay` field. This is
--   equivalent to how many tears the player can shoot per frame.
-- - If you want to convert this to the "tears" stat that is shown on the in-game stat UI, then use
--   this function.
function ____exports.getTearsStat(self, fireDelay)
    return 30 / (fireDelay + 1)
end
--- - Converts the specified amount of tears stat into the format of `EntityPlayer.MaxFireDelay` and
--   adds it to the player.
-- - This function should only be used inside the `EVALUATE_CACHE` callback.
-- - In this context, the "tears stat" represents what is shown on the in-game stat UI.
-- 
-- For example:
-- 
-- ```ts
-- function evaluateCacheTears(player: EntityPlayer) {
--   const numFoo = player.GetNumCollectible(CollectibleTypeCustom.FOO);
--   const tearsStat = numFoo * FOO_TEARS_STAT;
--   addTearsStat(player, tearsStat);
-- }
-- ```
function ____exports.addTearsStat(self, player, tearsStat)
    local existingTearsStat = ____exports.getTearsStat(nil, player.MaxFireDelay)
    local newTearsStat = existingTearsStat + tearsStat
    local newMaxFireDelay = ____exports.getFireDelay(nil, newTearsStat)
    player.MaxFireDelay = newMaxFireDelay
end
--- Helper function to check if a given tear is from a familiar (as opposed to e.g. a player). This
-- is determined by looking at the parent.
-- 
-- For the special case of Incubus and Blood Babies, the parent of the tear is always the player,
-- but the spawner entity of the tear changes. On frame 0, the spawner entity is equal to the
-- player, and on frame 1, the spawner entity is equal to the familiar. For this reason, you can
-- only use this function in the `POST_TEAR_INIT_VERY_LATE` callback or on frame 1+.
-- 
-- If this function is called on frame 0, it will throw a run-time error.
-- 
-- Note that this function does not work properly when the tear is from a Lead Pencil barrage. In
-- this case, it will always appear as if the tear is coming from a player.
function ____exports.isTearFromFamiliar(self, tear)
    if tear.FrameCount == 0 then
        error("Failed to check if the given tear was from a player since the tear's frame count was equal to 0. (The \"isTearFromFamiliar\" function must only be used in the \"POST_TEAR_INIT_VERY_LATE\" callback or on frame 1 and onwards.)")
    end
    if tear.SpawnerEntity == nil then
        return false
    end
    local familiar = tear.SpawnerEntity:ToFamiliar()
    return familiar ~= nil
end
--- Helper function to check if a given tear is from a player (as opposed to e.g. a familiar). This
-- is determined by looking at the parent.
-- 
-- For the special case of Incubus and Blood Babies, the parent of the tear is always the player,
-- but the spawner entity of the tear changes. On frame 0, the spawner entity is equal to the
-- player, and on frame 1, the spawner entity is equal to the familiar. For this reason, you can
-- only use this function in the `POST_TEAR_INIT_VERY_LATE` callback or on frame 1+.
-- 
-- If this function is called on frame 0, it will throw a run-time error.
-- 
-- Note that this function does not work properly when the tear is from a Lead Pencil barrage. In
-- this case, it will always appear as if the tear is coming from a player.
function ____exports.isTearFromPlayer(self, tear)
    if tear.FrameCount == 0 then
        error("Failed to check if the given tear was from a player since the tear's frame count was equal to 0. (The \"isTearFromPlayer\" function must only be used in the \"POST_TEAR_INIT_VERY_LATE\" callback or on frame 1 and onwards.)")
    end
    if tear.SpawnerEntity == nil then
        return false
    end
    local player = tear.SpawnerEntity:ToPlayer()
    return player ~= nil
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.CollectibleItemPoolType"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntityID = ____entities.getEntityID
local ____pickupVariants = require("lua_modules.isaacscript-common.dist.src.functions.pickupVariants")
local isCollectible = ____pickupVariants.isCollectible
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local getRoomItemPoolType = ____rooms.getRoomItemPoolType
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.CollectibleItemPoolType = __TS__Class()
local CollectibleItemPoolType = ____exports.CollectibleItemPoolType
CollectibleItemPoolType.name = "CollectibleItemPoolType"
__TS__ClassExtends(CollectibleItemPoolType, Feature)
function CollectibleItemPoolType.prototype.____constructor(self, pickupIndexCreation)
    Feature.prototype.____constructor(self)
    self.v = {run = {collectibleItemPoolTypeMap = __TS__New(Map)}}
    self.postPickupInitCollectible = function(____, collectible)
        local itemPool = game:GetItemPool()
        local pickupIndex = self.pickupIndexCreation:getPickupIndex(collectible)
        local lastItemPoolType = itemPool:GetLastPool()
        self.v.run.collectibleItemPoolTypeMap:set(pickupIndex, lastItemPoolType)
    end
    self.featuresUsed = {ISCFeature.PICKUP_INDEX_CREATION}
    self.callbacksUsed = {{ModCallback.POST_PICKUP_INIT, {self.postPickupInitCollectible, PickupVariant.COLLECTIBLE}}}
    self.pickupIndexCreation = pickupIndexCreation
end
function CollectibleItemPoolType.prototype.getCollectibleItemPoolType(self, collectible)
    if not isCollectible(nil, collectible) then
        local entityID = getEntityID(nil, collectible)
        error("The \"getCollectibleItemPoolType\" function was given a non-collectible: " .. entityID)
    end
    local pickupIndex = self.pickupIndexCreation:getPickupIndex(collectible)
    local itemPoolType = self.v.run.collectibleItemPoolTypeMap:get(pickupIndex)
    return itemPoolType == nil and getRoomItemPoolType(nil) or itemPoolType
end
__TS__Decorate({Exported}, CollectibleItemPoolType.prototype, "getCollectibleItemPoolType", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.CustomHotkeys"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Iterator = ____lualib.__TS__Iterator
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Keyboard = ____isaac_2Dtypescript_2Ddefinitions.Keyboard
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____input = require("lua_modules.isaacscript-common.dist.src.functions.input")
local isKeyboardPressed = ____input.isKeyboardPressed
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.CustomHotkeys = __TS__Class()
local CustomHotkeys = ____exports.CustomHotkeys
CustomHotkeys.name = "CustomHotkeys"
__TS__ClassExtends(CustomHotkeys, Feature)
function CustomHotkeys.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.staticHotkeyFunctionMap = __TS__New(Map)
    self.dynamicHotkeyFunctionMap = __TS__New(Map)
    self.keyPressedMap = __TS__New(DefaultMap, false)
    self.postRender = function()
        for ____, ____value in __TS__Iterator(self.staticHotkeyFunctionMap:entries()) do
            local keyboard = ____value[1]
            local triggerFunc = ____value[2]
            self:checkIfTriggered(keyboard, triggerFunc)
        end
        for ____, ____value in __TS__Iterator(self.dynamicHotkeyFunctionMap:entries()) do
            local keyboardFunc = ____value[1]
            local triggerFunc = ____value[2]
            local keyboard = keyboardFunc(nil)
            if keyboard ~= nil then
                self:checkIfTriggered(keyboard, triggerFunc)
            end
        end
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
end
function CustomHotkeys.prototype.checkIfTriggered(self, keyboard, triggerFunc)
    local isPressed = isKeyboardPressed(nil, keyboard)
    local wasPreviouslyPressed = self.keyPressedMap:getAndSetDefault(keyboard)
    self.keyPressedMap:set(keyboard, isPressed)
    if isPressed and not wasPreviouslyPressed then
        triggerFunc(nil)
    end
end
function CustomHotkeys.prototype.setConditionalHotkey(self, getKeyFunc, triggerFunc)
    if self.dynamicHotkeyFunctionMap:has(getKeyFunc) then
        error("Failed to register a hotkey due to a custom hotkey already being defined for the submitted function.")
    end
    self.dynamicHotkeyFunctionMap:set(getKeyFunc, triggerFunc)
end
function CustomHotkeys.prototype.setHotkey(self, keyboard, triggerFunc)
    if self.staticHotkeyFunctionMap:has(keyboard) then
        error(((("Failed to register a hotkey due to a hotkey already being defined for: Keyboard." .. tostring(Keyboard[keyboard])) .. " (") .. tostring(keyboard)) .. ")")
    end
    self.staticHotkeyFunctionMap:set(keyboard, triggerFunc)
end
function CustomHotkeys.prototype.unsetConditionalHotkey(self, getKeyFunc)
    if not self.dynamicHotkeyFunctionMap:has(getKeyFunc) then
        error("Failed to unregister a hotkey since there is no existing hotkey defined for the submitted function.")
    end
    self.dynamicHotkeyFunctionMap:delete(getKeyFunc)
end
function CustomHotkeys.prototype.unsetHotkey(self, keyboard)
    if not self.staticHotkeyFunctionMap:has(keyboard) then
        error(((("Failed to unregister a hotkey since there is no existing hotkey defined for: Keyboard." .. tostring(Keyboard[keyboard])) .. " (") .. tostring(keyboard)) .. ")")
    end
    self.staticHotkeyFunctionMap:delete(keyboard)
end
__TS__Decorate({Exported}, CustomHotkeys.prototype, "setConditionalHotkey", true)
__TS__Decorate({Exported}, CustomHotkeys.prototype, "setHotkey", true)
__TS__Decorate({Exported}, CustomHotkeys.prototype, "unsetConditionalHotkey", true)
__TS__Decorate({Exported}, CustomHotkeys.prototype, "unsetHotkey", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.input"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__ArraySome = ____lualib.__TS__ArraySome
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction
local Controller = ____isaac_2Dtypescript_2Ddefinitions.Controller
local ControllerIndex = ____isaac_2Dtypescript_2Ddefinitions.ControllerIndex
local Keyboard = ____isaac_2Dtypescript_2Ddefinitions.Keyboard
local ____keyboardToString = require("lua_modules.isaacscript-common.dist.src.maps.keyboardToString")
local KEYBOARD_TO_STRING = ____keyboardToString.KEYBOARD_TO_STRING
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____string = require("lua_modules.isaacscript-common.dist.src.functions.string")
local trimPrefix = ____string.trimPrefix
local MODIFIER_KEYS = {
    Keyboard.LEFT_SHIFT,
    Keyboard.LEFT_CONTROL,
    Keyboard.LEFT_ALT,
    Keyboard.LEFT_SUPER,
    Keyboard.RIGHT_SHIFT,
    Keyboard.RIGHT_CONTROL,
    Keyboard.RIGHT_ALT,
    Keyboard.RIGHT_SUPER
}
local MOVEMENT_ACTIONS = {ButtonAction.LEFT, ButtonAction.RIGHT, ButtonAction.UP, ButtonAction.DOWN}
local MOVEMENT_ACTIONS_SET = __TS__New(Set, MOVEMENT_ACTIONS)
local SHOOTING_ACTIONS = {ButtonAction.SHOOT_LEFT, ButtonAction.SHOOT_RIGHT, ButtonAction.SHOOT_UP, ButtonAction.SHOOT_DOWN}
local SHOOTING_ACTIONS_SET = __TS__New(Set, SHOOTING_ACTIONS)
--- Helper function to get the enum name for the specified `Controller` value. Note that this will
-- trim off the "BUTTON_" prefix.
function ____exports.controllerToString(self, controller)
    local key = Controller[controller]
    if key == nil then
        return nil
    end
    return trimPrefix(nil, key, "BUTTON_")
end
function ____exports.getMoveActions(self)
    return MOVEMENT_ACTIONS_SET
end
function ____exports.getShootActions(self)
    return SHOOTING_ACTIONS_SET
end
--- Iterates over all inputs to determine if a particular button is pressed (i.e. held down).
function ____exports.isActionPressedOnAnyInput(self, buttonAction)
    local controllerIndexes = getEnumValues(nil, ControllerIndex)
    return __TS__ArraySome(
        controllerIndexes,
        function(____, controllerIndex) return Input.IsActionPressed(buttonAction, controllerIndex) end
    )
end
--- Iterates over all inputs to determine if a particular button is triggered (i.e. held down and
-- then released).
function ____exports.isActionTriggeredOnAnyInput(self, buttonAction)
    local controllerIndexes = getEnumValues(nil, ControllerIndex)
    return __TS__ArraySome(
        controllerIndexes,
        function(____, controllerIndex) return Input.IsActionTriggered(buttonAction, controllerIndex) end
    )
end
--- Helper function to see if a particular keyboard key is being pressed down by the player.
-- 
-- This function is variadic, meaning you can pass as many keyboard values as you want to check for.
-- This function will return true if any of the values are pressed.
function ____exports.isKeyboardPressed(self, ...)
    local keys = {...}
    return __TS__ArraySome(
        keys,
        function(____, key) return Input.IsButtonPressed(key, ControllerIndex.KEYBOARD) end
    )
end
--- Helper function to check if one or more modifier keys are being pressed down on the keyboard.
-- 
-- A modifier key is defined as shift, control, alt, or Windows.
function ____exports.isModifierKeyPressed(self)
    return ____exports.isKeyboardPressed(
        nil,
        table.unpack(MODIFIER_KEYS)
    )
end
function ____exports.isMoveAction(self, buttonAction)
    return MOVEMENT_ACTIONS_SET:has(buttonAction)
end
function ____exports.isMoveActionPressedOnAnyInput(self)
    return __TS__ArraySome(
        MOVEMENT_ACTIONS,
        function(____, moveAction) return ____exports.isActionPressedOnAnyInput(nil, moveAction) end
    )
end
function ____exports.isMoveActionTriggeredOnAnyInput(self)
    return __TS__ArraySome(
        MOVEMENT_ACTIONS,
        function(____, moveAction) return ____exports.isActionTriggeredOnAnyInput(nil, moveAction) end
    )
end
function ____exports.isShootAction(self, buttonAction)
    return SHOOTING_ACTIONS_SET:has(buttonAction)
end
function ____exports.isShootActionPressedOnAnyInput(self)
    return __TS__ArraySome(
        SHOOTING_ACTIONS,
        function(____, shootAction) return ____exports.isActionPressedOnAnyInput(nil, shootAction) end
    )
end
function ____exports.isShootActionTriggeredOnAnyInput(self)
    return __TS__ArraySome(
        SHOOTING_ACTIONS,
        function(____, shootAction) return ____exports.isActionTriggeredOnAnyInput(nil, shootAction) end
    )
end
--- Helper function to get the string that would be typed if someone pressed the corresponding key.
-- This is useful for creating in-game chat.
-- 
-- Note that this function will only work for the keyboard values that are printable. Thus, it will
-- return undefined for e.g. `Keyboard.LEFT_SHIFT` (340). If all you want is the corresponding name
-- of the key, then simply use the enum reverse mapping (e.g. `Keyboard[keyboard]`).
function ____exports.keyboardToString(self, keyboard, uppercase)
    local tuple = KEYBOARD_TO_STRING:get(keyboard)
    if tuple == nil then
        return nil
    end
    local lowercaseCharacter, uppercaseCharacter = table.unpack(tuple)
    return uppercase and uppercaseCharacter or lowercaseCharacter
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.keyboardToString"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Keyboard = ____isaac_2Dtypescript_2Ddefinitions.Keyboard
--- Maps each keyboard enum member to its corresponding lowercase and uppercase characters.
____exports.KEYBOARD_TO_STRING = __TS__New(Map, {
    {Keyboard.SPACE, {" ", " "}},
    {Keyboard.APOSTROPHE, {"'", "\""}},
    {Keyboard.COMMA, {",", "<"}},
    {Keyboard.MINUS, {"-", "_"}},
    {Keyboard.PERIOD, {".", ">"}},
    {Keyboard.SLASH, {"/", "?"}},
    {Keyboard.ZERO, {"0", ")"}},
    {Keyboard.ONE, {"1", "!"}},
    {Keyboard.TWO, {"2", "@"}},
    {Keyboard.THREE, {"3", "#"}},
    {Keyboard.FOUR, {"4", "$"}},
    {Keyboard.FIVE, {"5", "%"}},
    {Keyboard.SIX, {"6", "^"}},
    {Keyboard.SEVEN, {"7", "&"}},
    {Keyboard.EIGHT, {"8", "*"}},
    {Keyboard.NINE, {"9", "("}},
    {Keyboard.SEMICOLON, {";", ":"}},
    {Keyboard.EQUAL, {"=", "+"}},
    {Keyboard.A, {"a", "A"}},
    {Keyboard.B, {"b", "B"}},
    {Keyboard.C, {"c", "C"}},
    {Keyboard.D, {"d", "D"}},
    {Keyboard.E, {"e", "E"}},
    {Keyboard.F, {"f", "F"}},
    {Keyboard.G, {"g", "G"}},
    {Keyboard.H, {"h", "H"}},
    {Keyboard.I, {"i", "I"}},
    {Keyboard.J, {"j", "J"}},
    {Keyboard.K, {"k", "K"}},
    {Keyboard.L, {"l", "L"}},
    {Keyboard.M, {"m", "M"}},
    {Keyboard.N, {"n", "N"}},
    {Keyboard.O, {"o", "O"}},
    {Keyboard.P, {"p", "P"}},
    {Keyboard.Q, {"q", "Q"}},
    {Keyboard.R, {"r", "R"}},
    {Keyboard.S, {"s", "S"}},
    {Keyboard.T, {"t", "T"}},
    {Keyboard.U, {"u", "U"}},
    {Keyboard.V, {"v", "V"}},
    {Keyboard.W, {"w", "W"}},
    {Keyboard.X, {"x", "X"}},
    {Keyboard.Y, {"y", "Y"}},
    {Keyboard.Z, {"z", "Z"}},
    {Keyboard.KP_0, {"0", "0"}},
    {Keyboard.KP_1, {"1", "1"}},
    {Keyboard.KP_2, {"2", "2"}},
    {Keyboard.KP_3, {"3", "3"}},
    {Keyboard.KP_4, {"4", "4"}},
    {Keyboard.KP_5, {"5", "5"}},
    {Keyboard.KP_6, {"6", "6"}},
    {Keyboard.KP_7, {"7", "7"}},
    {Keyboard.KP_8, {"8", "8"}},
    {Keyboard.KP_9, {"9", "9"}},
    {Keyboard.KP_DECIMAL, {".", "."}},
    {Keyboard.KP_DIVIDE, {"/", "/"}},
    {Keyboard.KP_MULTIPLY, {"*", "*"}},
    {Keyboard.KP_SUBTRACT, {"-", "-"}},
    {Keyboard.KP_ADD, {"+", "+"}},
    {Keyboard.LEFT_BRACKET, {"[", "{"}},
    {Keyboard.BACKSLASH, {"\\", "|"}},
    {Keyboard.RIGHT_BRACKET, {"]", "}"}},
    {Keyboard.GRAVE_ACCENT, {"`", "~"}}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.CustomItemPools"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local arrayRemoveIndexInPlace = ____array.arrayRemoveIndexInPlace
local ____map = require("lua_modules.isaacscript-common.dist.src.functions.map")
local copyMap = ____map.copyMap
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local ____weighted = require("lua_modules.isaacscript-common.dist.src.functions.weighted")
local getRandomIndexFromWeightedArray = ____weighted.getRandomIndexFromWeightedArray
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.CustomItemPools = __TS__Class()
local CustomItemPools = ____exports.CustomItemPools
CustomItemPools.name = "CustomItemPools"
__TS__ClassExtends(CustomItemPools, Feature)
function CustomItemPools.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {customItemPools = __TS__New(Map)}}
    self.customItemPoolMap = __TS__New(Map)
    self.postGameStartedReordered = function(____, isContinued)
        if isContinued then
            return
        end
        self.v.run.customItemPools = copyMap(nil, self.customItemPoolMap)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_GAME_STARTED_REORDERED, {self.postGameStartedReordered}}}
end
function CustomItemPools.prototype.registerCustomItemPool(self, itemPoolTypeCustom, collectibles)
    if self.customItemPoolMap:has(itemPoolTypeCustom) then
        error(("Failed to register a custom item pool since the provided type of " .. tostring(itemPoolTypeCustom)) .. " was already registered.")
    end
    self.customItemPoolMap:set(itemPoolTypeCustom, collectibles)
end
function CustomItemPools.prototype.getCustomItemPoolCollectible(self, itemPoolTypeCustom, decrease, seedOrRNG, defaultItem)
    if decrease == nil then
        decrease = false
    end
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if defaultItem == nil then
        defaultItem = CollectibleType.NULL
    end
    local customItemPool = self.v.run.customItemPools:get(itemPoolTypeCustom)
    if customItemPool == nil then
        error("Failed to find the custom item pool of: " .. tostring(itemPoolTypeCustom))
    end
    if #customItemPool == 0 then
        return defaultItem
    end
    local randomIndex = getRandomIndexFromWeightedArray(nil, customItemPool, seedOrRNG)
    local tuple = customItemPool[randomIndex + 1]
    if decrease then
        arrayRemoveIndexInPlace(nil, customItemPool, randomIndex)
    end
    return tuple[1]
end
__TS__Decorate({Exported}, CustomItemPools.prototype, "registerCustomItemPool", true)
__TS__Decorate({Exported}, CustomItemPools.prototype, "getCustomItemPoolCollectible", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.map"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Iterator = ____lualib.__TS__Iterator
local __TS__Spread = ____lualib.__TS__Spread
local ____exports = {}
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local sumArray = ____array.sumArray
local ____string = require("lua_modules.isaacscript-common.dist.src.functions.string")
local getPartialMatch = ____string.getPartialMatch
--- Helper function to set a value for a `DefaultMap` that corresponds to an entity, assuming that
-- the map uses `PtrHash` as an index.
function ____exports.mapSetHash(self, map, entity, value)
    local hash = GetPtrHash(entity)
    map:set(hash, value)
end
--- Helper function to copy a map. (You can also use a Map constructor to accomplish this task.)
function ____exports.copyMap(self, oldMap)
    local newMap = __TS__New(Map)
    for ____, ____value in __TS__Iterator(oldMap:entries()) do
        local key = ____value[1]
        local value = ____value[2]
        newMap:set(key, value)
    end
    return newMap
end
--- Helper function to get the value from a `DefaultMap` that corresponds to an entity, assuming that
-- the map uses `PtrHash` as an index.
function ____exports.defaultMapGetHash(self, map, entity, ...)
    local ptrHash = GetPtrHash(entity)
    return map:getAndSetDefault(ptrHash, ...)
end
--- Helper function to set a value for a `DefaultMap` that corresponds to an entity, assuming that
-- the map uses `PtrHash` as an index.
-- 
-- Since `Map` and `DefaultMap` set values in the same way, this function is simply an alias for the
-- `mapSetHash` helper function.
function ____exports.defaultMapSetHash(self, map, entity, value)
    ____exports.mapSetHash(nil, map, entity, value)
end
--- Helper function to get the closest value from a map based on partial search text. For the
-- purposes of this function, both search text and map keys are converted to lowercase before
-- attempting to find a match.
-- 
-- For example:
-- 
-- ```ts
-- const map = new <string, number>Map([
--   ["foo", 123],
--   ["bar", 456],
-- ]);
-- const searchText = "f";
-- const match = getMapPartialMatch(map, searchText); // match is now equal to ["foo", 123]
-- 
-- @returns If a match was found, returns a tuple of the map key and value. If a match was not
-- found, returns undefined.
-- ```
function ____exports.getMapPartialMatch(self, searchText, map)
    local keys = {__TS__Spread(map:keys())}
    local matchingKey = getPartialMatch(nil, searchText, keys)
    if matchingKey == nil then
        return nil
    end
    local value = map:get(matchingKey)
    if value == nil then
        error("Failed to get the map value corresponding to the partial match of: " .. matchingKey)
    end
    return {matchingKey, value}
end
--- Helper function to sum every value in a map together.
function ____exports.sumMap(self, map)
    local values = {__TS__Spread(map:values())}
    return sumArray(nil, values)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.weighted"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local ____exports = {}
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local sumArray = ____array.sumArray
local ____random = require("lua_modules.isaacscript-common.dist.src.functions.random")
local getRandomFloat = ____random.getRandomFloat
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
--- Get a random index from a `WeightedArray`. (A `WeightedArray` is an array of tuples, where the
-- first element in the tuple is a value, and the second element in the tuple is a float
-- corresponding to the value's weight.)
function ____exports.getRandomIndexFromWeightedArray(self, weightedArray, seedOrRNG)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if #weightedArray == 0 then
        error("Failed to get a random index from a weighted array since the provided array was empty.")
    end
    local weights = __TS__ArrayMap(
        weightedArray,
        function(____, tuple) return tuple[2] end
    )
    local totalWeight = sumArray(nil, weights)
    local randomWeight = getRandomFloat(nil, 0, totalWeight, seedOrRNG)
    local weightAccumulator = 0
    do
        local i = 0
        while i < #weightedArray do
            local tuple = weightedArray[i + 1]
            local _element, weight = table.unpack(tuple)
            weightAccumulator = weightAccumulator + weight
            if weightAccumulator >= randomWeight then
                return i
            end
            i = i + 1
        end
    end
    error("Failed to get a random index from a weighted array.")
end
--- Get a random value from a `WeightedArray`. (A `WeightedArray` is an array of tuples, where the
-- first element in the tuple is a value, and the second element in the tuple is a float
-- corresponding to the value's weight.)
function ____exports.getRandomFromWeightedArray(self, weightedArray, seedOrRNG)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    local randomIndex = ____exports.getRandomIndexFromWeightedArray(nil, weightedArray, seedOrRNG)
    local randomElement = weightedArray[randomIndex + 1]
    return randomElement[1]
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.CustomPickups"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____LadderSubTypeCustom = require("lua_modules.isaacscript-common.dist.src.enums.LadderSubTypeCustom")
local LadderSubTypeCustom = ____LadderSubTypeCustom.LadderSubTypeCustom
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntityID = ____entities.getEntityID
local getEntityIDFromConstituents = ____entities.getEntityIDFromConstituents
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local spawnEffect = ____entitiesSpecific.spawnEffect
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
--- Normally, we would make a custom entity to represent a fading-away pickup, but we don't want to
-- interfere with the "entities2.xml" file in end-user mods. Thus, we must select a vanilla effect
-- to masquerade as a backdrop effect.
-- 
-- We arbitrarily choose a ladder for this purpose because it will not automatically despawn after
-- time passes, like most other effects.
local PICKUP_EFFECT_VARIANT = EffectVariant.LADDER
local PICKUP_EFFECT_SUB_TYPE = LadderSubTypeCustom.CUSTOM_PICKUP
____exports.CustomPickups = __TS__Class()
local CustomPickups = ____exports.CustomPickups
CustomPickups.name = "CustomPickups"
__TS__ClassExtends(CustomPickups, Feature)
function CustomPickups.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.customPickupFunctionsMap = __TS__New(Map)
    self.prePickupCollision = function(____, pickup, collider)
        local entityID = getEntityID(nil, pickup)
        local customPickupFunctions = self.customPickupFunctionsMap:get(entityID)
        if customPickupFunctions == nil then
            return nil
        end
        local player = collider:ToPlayer()
        if player == nil then
            return nil
        end
        local shouldPickup = customPickupFunctions.collisionFunc(player)
        if not shouldPickup then
            return nil
        end
        pickup:Remove()
        local pickupSprite = pickup:GetSprite()
        local fileName = pickupSprite:GetFilename()
        local effect = spawnEffect(nil, PICKUP_EFFECT_VARIANT, PICKUP_EFFECT_SUB_TYPE, pickup.Position)
        local effectSprite = effect:GetSprite()
        effectSprite:Load(fileName, true)
        effectSprite:Play("Collect", true)
        customPickupFunctions.collectFunc(player)
        return nil
    end
    self.postEffectRenderPickupEffect = function(____, effect)
        if effect.SubType ~= asNumber(nil, PICKUP_EFFECT_SUB_TYPE) then
            return
        end
        local sprite = effect:GetSprite()
        if sprite:IsFinished("Collect") then
            effect:Remove()
        end
    end
    self.callbacksUsed = {{ModCallback.PRE_PICKUP_COLLISION, {self.prePickupCollision}}, {ModCallback.POST_EFFECT_RENDER, {self.postEffectRenderPickupEffect, PICKUP_EFFECT_VARIANT}}}
end
function CustomPickups.prototype.registerCustomPickup(self, pickupVariantCustom, subType, collectFunc, collisionFunc)
    if collisionFunc == nil then
        collisionFunc = function() return true end
    end
    local entityID = getEntityIDFromConstituents(nil, EntityType.PICKUP, pickupVariantCustom, subType)
    local customPickupFunctions = {collectFunc = collectFunc, collisionFunc = collisionFunc}
    self.customPickupFunctionsMap:set(entityID, customPickupFunctions)
end
__TS__Decorate({Exported}, CustomPickups.prototype, "registerCustomPickup", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.LadderSubTypeCustom"] = function(...) 
local ____exports = {}
--- For `EntityType.EFFECT` (1000), `EffectVariant.LADDER` (8).
-- 
-- Note that vanilla ladders only use a sub-type of 0. The `isaacscript-common` library uses ladders
-- to represent custom objects, since they are non-interacting and will not automatically despawn
-- after time passes, unlike most other effects.
-- 
-- This enum tracks the kinds of custom objects that are represented by vanilla ladders. We start
-- assigning sub-types after 100 as to not interfere with any possible modded ladder variants.
____exports.LadderSubTypeCustom = {}
____exports.LadderSubTypeCustom.LADDER = 0
____exports.LadderSubTypeCustom[____exports.LadderSubTypeCustom.LADDER] = "LADDER"
____exports.LadderSubTypeCustom.CUSTOM_BACKDROP = 101
____exports.LadderSubTypeCustom[____exports.LadderSubTypeCustom.CUSTOM_BACKDROP] = "CUSTOM_BACKDROP"
____exports.LadderSubTypeCustom.CUSTOM_SHADOW = 102
____exports.LadderSubTypeCustom[____exports.LadderSubTypeCustom.CUSTOM_SHADOW] = "CUSTOM_SHADOW"
____exports.LadderSubTypeCustom.CUSTOM_PICKUP = 103
____exports.LadderSubTypeCustom[____exports.LadderSubTypeCustom.CUSTOM_PICKUP] = "CUSTOM_PICKUP"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.CustomStages"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__ObjectAssign = ____lualib.__TS__ObjectAssign
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local getRoomTypeMap
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local LevelCurse = ____isaac_2Dtypescript_2Ddefinitions.LevelCurse
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local metadataJSON = require("lua_modules.isaacscript-common.dist.src.customStageMetadata")
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____UIStreakAnimation = require("lua_modules.isaacscript-common.dist.src.enums.private.UIStreakAnimation")
local UIStreakAnimation = ____UIStreakAnimation.UIStreakAnimation
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local isArray = ____array.isArray
local ____doors = require("lua_modules.isaacscript-common.dist.src.functions.doors")
local doorSlotFlagsToDoorSlots = ____doors.doorSlotFlagsToDoorSlots
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
local removeFlag = ____flag.removeFlag
local ____logMisc = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
local logError = ____logMisc.logError
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local newRNG = ____rng.newRNG
local ____rockAlt = require("lua_modules.isaacscript-common.dist.src.functions.rockAlt")
local removeUrnRewards = ____rockAlt.removeUrnRewards
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local getRoomDataForTypeVariant = ____rooms.getRoomDataForTypeVariant
local getRoomsInsideGrid = ____rooms.getRoomsInsideGrid
local ____stage = require("lua_modules.isaacscript-common.dist.src.functions.stage")
local setStage = ____stage.setStage
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____backdrop = require("lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.backdrop")
local setCustomStageBackdrop = ____backdrop.setCustomStageBackdrop
local ____constants = require("lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.constants")
local CUSTOM_FLOOR_STAGE = ____constants.CUSTOM_FLOOR_STAGE
local CUSTOM_FLOOR_STAGE_TYPE = ____constants.CUSTOM_FLOOR_STAGE_TYPE
local DEFAULT_BASE_STAGE = ____constants.DEFAULT_BASE_STAGE
local DEFAULT_BASE_STAGE_TYPE = ____constants.DEFAULT_BASE_STAGE_TYPE
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.gridEntities")
local convertVanillaTrapdoors = ____gridEntities.convertVanillaTrapdoors
local setCustomDecorationGraphics = ____gridEntities.setCustomDecorationGraphics
local setCustomDoorGraphics = ____gridEntities.setCustomDoorGraphics
local setCustomPitGraphics = ____gridEntities.setCustomPitGraphics
local setCustomRockGraphics = ____gridEntities.setCustomRockGraphics
local ____shadows = require("lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.shadows")
local setShadows = ____shadows.setShadows
local ____streakText = require("lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.streakText")
local streakTextGetShaderParams = ____streakText.streakTextGetShaderParams
local streakTextPostRender = ____streakText.streakTextPostRender
local topStreakTextStart = ____streakText.topStreakTextStart
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.utils")
local getRandomBossRoomFromPool = ____utils.getRandomBossRoomFromPool
local getRandomCustomStageRoom = ____utils.getRandomCustomStageRoom
local ____versusScreen = require("lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.versusScreen")
local playVersusScreenAnimation = ____versusScreen.playVersusScreenAnimation
local versusScreenPostRender = ____versusScreen.versusScreenPostRender
function getRoomTypeMap(self, customStageLua)
    local roomTypeMap = __TS__New(Map)
    for ____, roomMetadata in ipairs(customStageLua.roomsMetadata) do
        local roomType = roomMetadata.type
        local roomShapeMap = roomTypeMap:get(roomType)
        if roomShapeMap == nil then
            roomShapeMap = __TS__New(Map)
            roomTypeMap:set(roomType, roomShapeMap)
        end
        local roomShape = roomMetadata.shape
        local roomDoorSlotFlagMap = roomShapeMap:get(roomShape)
        if roomDoorSlotFlagMap == nil then
            roomDoorSlotFlagMap = __TS__New(Map)
            roomShapeMap:set(roomShape, roomDoorSlotFlagMap)
        end
        local doorSlotFlags = roomMetadata.doorSlotFlags
        local rooms = roomDoorSlotFlagMap:get(doorSlotFlags)
        if rooms == nil then
            rooms = {}
            roomDoorSlotFlagMap:set(doorSlotFlags, rooms)
        end
        rooms[#rooms + 1] = roomMetadata
    end
    return roomTypeMap
end
____exports.CustomStages = __TS__Class()
local CustomStages = ____exports.CustomStages
CustomStages.name = "CustomStages"
__TS__ClassExtends(CustomStages, Feature)
function CustomStages.prototype.____constructor(self, customGridEntities, customTrapdoors, disableAllSound, gameReorderedCallbacks, pause, runInNFrames)
    Feature.prototype.____constructor(self)
    self.v = {run = {
        currentCustomStage = nil,
        firstFloor = true,
        showingBossVersusScreen = false,
        controllerIndexPushingMapRenderFrame = __TS__New(Map),
        topStreakTextStartedRenderFrame = nil,
        topStreakText = {animation = UIStreakAnimation.NONE, frame = 0, pauseFrame = false},
        bottomStreakText = {animation = UIStreakAnimation.NONE, frame = 0, pauseFrame = false}
    }}
    self.customStagesMap = __TS__New(Map)
    self.customStageCachedRoomData = __TS__New(Map)
    self.goToCustomStage = function(____, destinationStage, _destinationStageType)
        local firstFloor = destinationStage == LevelStage.BASEMENT_1
        self:setCustomStage("Slaughterhouse", firstFloor)
    end
    self.postRender = function()
        local customStage = self.v.run.currentCustomStage
        if customStage == nil then
            return
        end
        streakTextPostRender(nil, self.v)
        versusScreenPostRender(nil, self.v, self.pause, self.disableAllSound)
    end
    self.postCurseEval = function(____, curses)
        local customStage = self.v.run.currentCustomStage
        if customStage == nil then
            return nil
        end
        if hasFlag(nil, curses, LevelCurse.LABYRINTH) then
            return removeFlag(nil, curses, LevelCurse.LABYRINTH)
        end
        return nil
    end
    self.getShaderParams = function(____, shaderName)
        local customStage = self.v.run.currentCustomStage
        if customStage == nil then
            return
        end
        streakTextGetShaderParams(nil, self.v, customStage, shaderName)
        return nil
    end
    self.postGridEntityBrokenRockAlt = function(____, gridEntity)
        local customStage = self.v.run.currentCustomStage
        if customStage == nil then
            return
        end
        if customStage.rocksPNGPath == nil then
            return
        end
        removeUrnRewards(nil, gridEntity)
    end
    self.postGridEntityInit = function(____, gridEntity)
        local customStage = self.v.run.currentCustomStage
        if customStage == nil then
            return
        end
        if self.customGridEntities:isCustomGridEntity(gridEntity) then
            return
        end
        setCustomDecorationGraphics(nil, customStage, gridEntity)
        setCustomRockGraphics(nil, customStage, gridEntity)
        setCustomPitGraphics(nil, customStage, gridEntity)
        setCustomDoorGraphics(nil, customStage, gridEntity)
        convertVanillaTrapdoors(
            nil,
            customStage,
            gridEntity,
            self.v.run.firstFloor,
            self.customTrapdoors
        )
    end
    self.postNewRoomReordered = function()
        local customStage = self.v.run.currentCustomStage
        if customStage == nil then
            return
        end
        setCustomStageBackdrop(nil, customStage)
        setShadows(nil, customStage)
        playVersusScreenAnimation(
            nil,
            self.v,
            customStage,
            self.disableAllSound,
            self.pause,
            self.runInNFrames
        )
    end
    self.featuresUsed = {
        ISCFeature.CUSTOM_GRID_ENTITIES,
        ISCFeature.CUSTOM_TRAPDOORS,
        ISCFeature.DISABLE_ALL_SOUND,
        ISCFeature.GAME_REORDERED_CALLBACKS,
        ISCFeature.PAUSE,
        ISCFeature.RUN_IN_N_FRAMES
    }
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}, {ModCallback.POST_CURSE_EVAL, {self.postCurseEval}}, {ModCallback.GET_SHADER_PARAMS, {self.getShaderParams}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_GRID_ENTITY_BROKEN, {self.postGridEntityBrokenRockAlt, GridEntityType.ROCK_ALT}}, {ModCallbackCustom.POST_GRID_ENTITY_INIT, {self.postGridEntityInit}}, {ModCallbackCustom.POST_NEW_ROOM_REORDERED, {self.postNewRoomReordered}}}
    self.customGridEntities = customGridEntities
    self.customTrapdoors = customTrapdoors
    self.disableAllSound = disableAllSound
    self.gameReorderedCallbacks = gameReorderedCallbacks
    self.pause = pause
    self.runInNFrames = runInNFrames
    self:initCustomStageMetadata()
end
function CustomStages.prototype.initCustomStageMetadata(self)
    if not isArray(nil, metadataJSON) then
        error("The IsaacScript standard library attempted to read the custom stage metadata from the \"customStageMetadata.lua\" file, but it was not an array.")
    end
    local customStagesLua = metadataJSON
    for ____, customStageLua in ipairs(customStagesLua) do
        self:initRoomTypeMap(customStageLua)
        self:initCustomTrapdoorDestination(customStageLua)
    end
end
function CustomStages.prototype.initRoomTypeMap(self, customStageLua)
    local roomTypeMap = getRoomTypeMap(nil, customStageLua)
    local customStage = __TS__ObjectAssign({}, customStageLua, {roomTypeMap = roomTypeMap})
    self.customStagesMap:set(customStage.name, customStage)
end
function CustomStages.prototype.initCustomTrapdoorDestination(self, customStageLua)
    self.customTrapdoors:registerCustomTrapdoorDestination(customStageLua.name, self.goToCustomStage)
end
function CustomStages.prototype.setStageRoomsData(self, customStage, rng, verbose)
    local level = game:GetLevel()
    local startingRoomGridIndex = level:GetStartingRoomIndex()
    for ____, room in ipairs(getRoomsInsideGrid(nil)) do
        do
            if room.SafeGridIndex == startingRoomGridIndex then
                goto __continue26
            end
            if room.Data == nil then
                goto __continue26
            end
            local roomType = room.Data.Type
            local roomShapeMap = customStage.roomTypeMap:get(roomType)
            if roomShapeMap == nil then
                if roomType == RoomType.DEFAULT then
                    logError(
                        nil,
                        (((("Failed to find any custom rooms for RoomType." .. tostring(RoomType[roomType])) .. " (") .. tostring(roomType)) .. ") for custom stage: ") .. customStage.name
                    )
                end
                goto __continue26
            end
            local roomShape = room.Data.Shape
            local roomDoorSlotFlagMap = roomShapeMap:get(roomShape)
            if roomDoorSlotFlagMap == nil then
                logError(
                    nil,
                    (((((((("Failed to find any custom rooms for RoomType." .. tostring(RoomType[roomType])) .. " (") .. tostring(roomType)) .. ") + RoomShape.") .. tostring(RoomShape[roomShape])) .. " (") .. tostring(roomShape)) .. ") for custom stage: ") .. customStage.name
                )
                goto __continue26
            end
            local doorSlotFlags = room.Data.Doors
            local roomsMetadata = roomDoorSlotFlagMap:get(doorSlotFlags)
            if roomsMetadata == nil then
                logError(
                    nil,
                    (((((((((("Failed to find any custom rooms for RoomType." .. tostring(RoomType[roomType])) .. " (") .. tostring(roomType)) .. ") + RoomShape.") .. tostring(RoomShape[roomShape])) .. " (") .. tostring(roomShape)) .. ") + DoorSlotFlags ") .. tostring(doorSlotFlags)) .. " for custom stage: ") .. customStage.name
                )
                local header = ("For reference, a DoorSlotFlags of " .. tostring(doorSlotFlags)) .. " is equal to the following doors being enabled:\n"
                local doorSlots = doorSlotFlagsToDoorSlots(nil, doorSlotFlags)
                local doorSlotLines = __TS__ArrayMap(
                    doorSlots,
                    function(____, doorSlot) return ((("- DoorSlot." .. tostring(DoorSlot[doorSlot])) .. " (") .. tostring(doorSlot)) .. ")" end
                )
                local explanation = header .. table.concat(doorSlotLines, "\n")
                logError(nil, explanation)
                goto __continue26
            end
            local randomRoom
            if roomType == RoomType.BOSS then
                if customStage.bossPool == nil then
                    goto __continue26
                end
                randomRoom = getRandomBossRoomFromPool(
                    nil,
                    roomsMetadata,
                    customStage.bossPool,
                    rng,
                    verbose
                )
            else
                randomRoom = getRandomCustomStageRoom(nil, roomsMetadata, rng, verbose)
            end
            local newRoomData = self.customStageCachedRoomData:get(randomRoom.variant)
            if newRoomData == nil then
                newRoomData = getRoomDataForTypeVariant(nil, roomType, randomRoom.variant, false)
                if newRoomData == nil then
                    logError(
                        nil,
                        (("Failed to get the room data for room variant " .. tostring(randomRoom.variant)) .. " for custom stage: ") .. customStage.name
                    )
                    goto __continue26
                end
                self.customStageCachedRoomData:set(randomRoom.variant, newRoomData)
            end
            room.Data = newRoomData
        end
        ::__continue26::
    end
end
function CustomStages.prototype.setCustomStage(self, name, firstFloor, streakText, verbose)
    if firstFloor == nil then
        firstFloor = true
    end
    if streakText == nil then
        streakText = true
    end
    if verbose == nil then
        verbose = false
    end
    local customStage = self.customStagesMap:get(name)
    if customStage == nil then
        error(("Failed to set the custom stage of \"" .. name) .. "\" because it was not found in the custom stages map. (Try restarting IsaacScript / recompiling the mod / restarting the game, and try again. If that does not work, you probably forgot to define it in your \"tsconfig.json\" file.) See the website for more details on how to set up custom stages.")
    end
    local level = game:GetLevel()
    local stage = level:GetStage()
    local seeds = game:GetSeeds()
    local startSeed = seeds:GetStartSeed()
    local rng = newRNG(nil, startSeed)
    self.v.run.currentCustomStage = customStage
    self.v.run.firstFloor = firstFloor
    if stage == CUSTOM_FLOOR_STAGE then
        level:SetStage(LevelStage.BASEMENT_1, StageType.ORIGINAL)
    end
    local baseStage = customStage.baseStage == nil and DEFAULT_BASE_STAGE or customStage.baseStage
    if not firstFloor then
        baseStage = baseStage + 1
    end
    local baseStageType = customStage.baseStageType == nil and DEFAULT_BASE_STAGE_TYPE or customStage.baseStageType
    local reseed = asNumber(nil, stage) >= baseStage
    setStage(nil, baseStage, baseStageType, reseed)
    self:setStageRoomsData(customStage, rng, verbose)
    local targetStage = CUSTOM_FLOOR_STAGE
    local targetStageType = CUSTOM_FLOOR_STAGE_TYPE
    level:SetStage(targetStage, targetStageType)
    self.gameReorderedCallbacks:reorderedCallbacksSetStage(targetStage, targetStageType)
    if streakText then
        self.runInNFrames:runNextGameFrame(function()
            topStreakTextStart(nil, self.v)
        end)
    end
end
function CustomStages.prototype.disableCustomStage(self)
    self.v.run.currentCustomStage = nil
end
__TS__Decorate({Exported}, CustomStages.prototype, "setCustomStage", true)
__TS__Decorate({Exported}, CustomStages.prototype, "disableCustomStage", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.customStageMetadata"] = function(...) 
return {}
 end,
["lua_modules.isaacscript-common.dist.src.enums.private.UIStreakAnimation"] = function(...) 
local ____exports = {}
--- Corresponds to "resources/gfx/ui/ui_streak.anm2".
____exports.UIStreakAnimation = {}
____exports.UIStreakAnimation.NONE = 0
____exports.UIStreakAnimation[____exports.UIStreakAnimation.NONE] = "NONE"
____exports.UIStreakAnimation.TEXT = 1
____exports.UIStreakAnimation[____exports.UIStreakAnimation.TEXT] = "TEXT"
____exports.UIStreakAnimation.TEXT_STAY = 2
____exports.UIStreakAnimation[____exports.UIStreakAnimation.TEXT_STAY] = "TEXT_STAY"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.rockAlt"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____backdropTypeToRockAltType = require("lua_modules.isaacscript-common.dist.src.objects.backdropTypeToRockAltType")
local BACKDROP_TYPE_TO_ROCK_ALT_TYPE = ____backdropTypeToRockAltType.BACKDROP_TYPE_TO_ROCK_ALT_TYPE
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getNPCs = ____entitiesSpecific.getNPCs
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local removeEntitiesSpawnedFromGridEntity = ____gridEntities.removeEntitiesSpawnedFromGridEntity
local ____pickupsSpecific = require("lua_modules.isaacscript-common.dist.src.functions.pickupsSpecific")
local getCoins = ____pickupsSpecific.getCoins
local getCollectibles = ____pickupsSpecific.getCollectibles
local getTrinkets = ____pickupsSpecific.getTrinkets
--- Helper function to get the alternate rock type (i.e. urn, mushroom, etc.) that the current room
-- will have.
-- 
-- The rock type is based on the backdrop of the room.
-- 
-- For example, if you change the backdrop of the starting room of the run to `BackdropType.CAVES`,
-- and then spawn `GridEntityType.ROCK_ALT`, it will be a mushroom instead of an urn. Additionally,
-- if it is destroyed, it will generate mushroom-appropriate rewards.
-- 
-- On the other hand, if an urn is spawned first before the backdrop is changed to
-- `BackdropType.CAVES`, the graphic of the urn will not switch to a mushroom. However, when
-- destroyed, the urn will still generate mushroom-appropriate rewards.
function ____exports.getRockAltType(self)
    local room = game:GetRoom()
    local backdropType = room:GetBackdropType()
    return BACKDROP_TYPE_TO_ROCK_ALT_TYPE[backdropType]
end
--- Helper function to remove all coins, trinkets, and so on that spawned from breaking an urn.
-- 
-- The rewards are based on the ones from the wiki:
-- https://bindingofisaacrebirth.fandom.com/wiki/Rocks#Urns
function ____exports.removeUrnRewards(self, gridEntity)
    local coins = getCoins(nil)
    removeEntitiesSpawnedFromGridEntity(nil, coins, gridEntity)
    local quarters = getCollectibles(nil, CollectibleType.QUARTER)
    removeEntitiesSpawnedFromGridEntity(nil, quarters, gridEntity)
    local swallowedPennies = getTrinkets(nil, TrinketType.SWALLOWED_PENNY)
    removeEntitiesSpawnedFromGridEntity(nil, swallowedPennies, gridEntity)
    local spiders = getNPCs(nil, EntityType.SPIDER)
    removeEntitiesSpawnedFromGridEntity(nil, spiders, gridEntity)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.backdropTypeToRockAltType"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local BackdropType = ____isaac_2Dtypescript_2Ddefinitions.BackdropType
local ____RockAltType = require("lua_modules.isaacscript-common.dist.src.enums.RockAltType")
local RockAltType = ____RockAltType.RockAltType
--- Used by the `getRockAltType` function.
____exports.BACKDROP_TYPE_TO_ROCK_ALT_TYPE = {
    [BackdropType.BASEMENT] = RockAltType.URN,
    [BackdropType.CELLAR] = RockAltType.URN,
    [BackdropType.BURNT_BASEMENT] = RockAltType.URN,
    [BackdropType.CAVES] = RockAltType.MUSHROOM,
    [BackdropType.CATACOMBS] = RockAltType.MUSHROOM,
    [BackdropType.FLOODED_CAVES] = RockAltType.MUSHROOM,
    [BackdropType.DEPTHS] = RockAltType.SKULL,
    [BackdropType.NECROPOLIS] = RockAltType.SKULL,
    [BackdropType.DANK_DEPTHS] = RockAltType.SKULL,
    [BackdropType.WOMB] = RockAltType.POLYP,
    [BackdropType.UTERO] = RockAltType.POLYP,
    [BackdropType.SCARRED_WOMB] = RockAltType.POLYP,
    [BackdropType.BLUE_WOMB] = RockAltType.POLYP,
    [BackdropType.SHEOL] = RockAltType.SKULL,
    [BackdropType.CATHEDRAL] = RockAltType.URN,
    [BackdropType.DARK_ROOM] = RockAltType.SKULL,
    [BackdropType.CHEST] = RockAltType.URN,
    [BackdropType.MEGA_SATAN] = RockAltType.URN,
    [BackdropType.LIBRARY] = RockAltType.URN,
    [BackdropType.SHOP] = RockAltType.URN,
    [BackdropType.CLEAN_BEDROOM] = RockAltType.URN,
    [BackdropType.DIRTY_BEDROOM] = RockAltType.URN,
    [BackdropType.SECRET] = RockAltType.MUSHROOM,
    [BackdropType.DICE] = RockAltType.URN,
    [BackdropType.ARCADE] = RockAltType.URN,
    [BackdropType.ERROR_ROOM] = RockAltType.URN,
    [BackdropType.BLUE_WOMB_PASS] = RockAltType.POLYP,
    [BackdropType.GREED_SHOP] = RockAltType.URN,
    [BackdropType.DUNGEON] = RockAltType.URN,
    [BackdropType.SACRIFICE] = RockAltType.SKULL,
    [BackdropType.DOWNPOUR] = RockAltType.BUCKET_DOWNPOUR,
    [BackdropType.MINES] = RockAltType.MUSHROOM,
    [BackdropType.MAUSOLEUM] = RockAltType.SKULL,
    [BackdropType.CORPSE] = RockAltType.POLYP,
    [BackdropType.PLANETARIUM] = RockAltType.URN,
    [BackdropType.DOWNPOUR_ENTRANCE] = RockAltType.BUCKET_DOWNPOUR,
    [BackdropType.MINES_ENTRANCE] = RockAltType.MUSHROOM,
    [BackdropType.MAUSOLEUM_ENTRANCE] = RockAltType.SKULL,
    [BackdropType.CORPSE_ENTRANCE] = RockAltType.SKULL,
    [BackdropType.MAUSOLEUM_2] = RockAltType.SKULL,
    [BackdropType.MAUSOLEUM_3] = RockAltType.SKULL,
    [BackdropType.MAUSOLEUM_4] = RockAltType.SKULL,
    [BackdropType.CORPSE_2] = RockAltType.POLYP,
    [BackdropType.CORPSE_3] = RockAltType.POLYP,
    [BackdropType.DROSS] = RockAltType.BUCKET_DROSS,
    [BackdropType.ASHPIT] = RockAltType.MUSHROOM,
    [BackdropType.GEHENNA] = RockAltType.SKULL,
    [BackdropType.MORTIS] = RockAltType.POLYP,
    [BackdropType.ISAACS_BEDROOM] = RockAltType.URN,
    [BackdropType.HALLWAY] = RockAltType.URN,
    [BackdropType.MOMS_BEDROOM] = RockAltType.URN,
    [BackdropType.CLOSET] = RockAltType.URN,
    [BackdropType.CLOSET_B] = RockAltType.URN,
    [BackdropType.DOGMA] = RockAltType.URN,
    [BackdropType.DUNGEON_GIDEON] = RockAltType.URN,
    [BackdropType.DUNGEON_ROTGUT] = RockAltType.URN,
    [BackdropType.DUNGEON_BEAST] = RockAltType.URN,
    [BackdropType.MINES_SHAFT] = RockAltType.MUSHROOM,
    [BackdropType.ASHPIT_SHAFT] = RockAltType.MUSHROOM,
    [BackdropType.DARK_CLOSET] = RockAltType.SKULL
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.RockAltType"] = function(...) 
local ____exports = {}
--- This is used in the various rock alt type helper functions.
____exports.RockAltType = {}
____exports.RockAltType.URN = 0
____exports.RockAltType[____exports.RockAltType.URN] = "URN"
____exports.RockAltType.MUSHROOM = 1
____exports.RockAltType[____exports.RockAltType.MUSHROOM] = "MUSHROOM"
____exports.RockAltType.SKULL = 2
____exports.RockAltType[____exports.RockAltType.SKULL] = "SKULL"
____exports.RockAltType.POLYP = 3
____exports.RockAltType[____exports.RockAltType.POLYP] = "POLYP"
____exports.RockAltType.BUCKET_DOWNPOUR = 4
____exports.RockAltType[____exports.RockAltType.BUCKET_DOWNPOUR] = "BUCKET_DOWNPOUR"
____exports.RockAltType.BUCKET_DROSS = 5
____exports.RockAltType[____exports.RockAltType.BUCKET_DROSS] = "BUCKET_DROSS"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.backdrop"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local getBackdropPNGPath, spawnWallEntity, spawnSecondWallEntity, spawnFloorEntity, getNumFloorLayers, BackdropKind, DEFAULT_BACKDROP, ROOM_SHAPE_WALL_ANM2_LAYERS, ROOM_SHAPE_WALL_EXTRA_ANM2_LAYERS, WALL_OFFSET, L_FLOOR_ANM2_LAYERS, N_FLOOR_ANM2_LAYERS, BACKDROP_EFFECT_VARIANT, BACKDROP_EFFECT_SUB_TYPE
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant
local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
local ____LadderSubTypeCustom = require("lua_modules.isaacscript-common.dist.src.enums.LadderSubTypeCustom")
local LadderSubTypeCustom = ____LadderSubTypeCustom.LadderSubTypeCustom
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local getRandomArrayElement = ____array.getRandomArrayElement
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local spawnEffectWithSeed = ____entitiesSpecific.spawnEffectWithSeed
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local newRNG = ____rng.newRNG
local ____roomShape = require("lua_modules.isaacscript-common.dist.src.functions.roomShape")
local isLRoom = ____roomShape.isLRoom
local isNarrowRoom = ____roomShape.isNarrowRoom
local ____string = require("lua_modules.isaacscript-common.dist.src.functions.string")
local removeCharactersBefore = ____string.removeCharactersBefore
local trimPrefix = ____string.trimPrefix
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local eRange = ____utils.eRange
local iRange = ____utils.iRange
local ____constants = require("lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.constants")
local ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH = ____constants.ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH
function getBackdropPNGPath(self, customStage, backdropKind, rng)
    local backdrop = customStage.backdropPNGPaths == nil and DEFAULT_BACKDROP or customStage.backdropPNGPaths
    local pathArray = backdrop[backdropKind]
    local randomPath = getRandomArrayElement(nil, pathArray, rng)
    return removeCharactersBefore(nil, randomPath, "gfx/")
end
function spawnWallEntity(self, customStage, rng, isExtraWall)
    local room = game:GetRoom()
    local roomShape = room:GetRoomShape()
    local seed = 1
    local wallEffect = spawnEffectWithSeed(
        nil,
        BACKDROP_EFFECT_VARIANT,
        BACKDROP_EFFECT_SUB_TYPE,
        VectorZero,
        seed
    )
    wallEffect:AddEntityFlags(EntityFlag.RENDER_WALL)
    local sprite = wallEffect:GetSprite()
    sprite:Load(ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/wall-backdrop.anm2", false)
    local wallLayersArray = isExtraWall and ROOM_SHAPE_WALL_EXTRA_ANM2_LAYERS or ROOM_SHAPE_WALL_ANM2_LAYERS
    local numWallLayers = wallLayersArray[roomShape]
    if numWallLayers == nil then
        error("Failed to get the layers when creating the backdrop for custom stage: " .. customStage.name)
    end
    if isLRoom(nil, roomShape) then
        local cornerPNGPath = getBackdropPNGPath(nil, customStage, BackdropKind.CORNER, rng)
        sprite:ReplaceSpritesheet(0, cornerPNGPath)
    end
    for ____, layerID in ipairs(iRange(nil, 1, numWallLayers)) do
        local wallPNGPath = getBackdropPNGPath(nil, customStage, BackdropKind.WALL, rng)
        sprite:ReplaceSpritesheet(layerID, wallPNGPath)
    end
    local topLeftPos = room:GetTopLeftPos()
    local renderPos = topLeftPos + WALL_OFFSET
    local modifiedOffset = renderPos / 40 * 26
    wallEffect.SpriteOffset = modifiedOffset
    sprite:LoadGraphics()
    local roomShapeName = RoomShape[roomShape]
    local animation = trimPrefix(nil, roomShapeName, "SHAPE_")
    local modifiedAnimation = isExtraWall and animation .. "X" or animation
    sprite:Play(modifiedAnimation, true)
end
function spawnSecondWallEntity(self, customStage, rng)
    local room = game:GetRoom()
    local roomShape = room:GetRoomShape()
    local extraLayers = ROOM_SHAPE_WALL_EXTRA_ANM2_LAYERS[roomShape]
    local roomShapeHasExtraLayers = extraLayers ~= nil
    if roomShapeHasExtraLayers then
        spawnWallEntity(nil, customStage, rng, true)
    end
end
function spawnFloorEntity(self, customStage, rng)
    local room = game:GetRoom()
    local roomShape = room:GetRoomShape()
    local seed = 1
    local floorEffect = spawnEffectWithSeed(
        nil,
        BACKDROP_EFFECT_VARIANT,
        0,
        VectorZero,
        seed
    )
    floorEffect:AddEntityFlags(EntityFlag.RENDER_FLOOR)
    local sprite = floorEffect:GetSprite()
    sprite:Load(ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/floor-backdrop.anm2", false)
    local numFloorLayers = getNumFloorLayers(nil, roomShape)
    if numFloorLayers ~= nil then
        for ____, layerID in ipairs(eRange(nil, 0, numFloorLayers)) do
            local wallPNGPath = getBackdropPNGPath(nil, customStage, BackdropKind.WALL, rng)
            sprite:ReplaceSpritesheet(layerID, wallPNGPath)
        end
    elseif isLRoom(nil, roomShape) then
        for ____, layerID in ipairs(L_FLOOR_ANM2_LAYERS) do
            local LFloorPNGPath = getBackdropPNGPath(nil, customStage, BackdropKind.L_FLOOR, rng)
            sprite:ReplaceSpritesheet(layerID, LFloorPNGPath)
        end
    elseif isNarrowRoom(nil, roomShape) then
        for ____, layerID in ipairs(N_FLOOR_ANM2_LAYERS) do
            local NFloorPNGPath = getBackdropPNGPath(nil, customStage, BackdropKind.N_FLOOR, rng)
            sprite:ReplaceSpritesheet(layerID, NFloorPNGPath)
        end
    end
    local topLeftPos = room:GetTopLeftPos()
    local renderPos = topLeftPos
    local modifiedOffset = renderPos / 40 * 26
    floorEffect.SpriteOffset = modifiedOffset
    sprite:LoadGraphics()
    local roomShapeName = RoomShape[roomShape]
    local animation = trimPrefix(nil, roomShapeName, "SHAPE_")
    sprite:Play(animation, true)
end
function getNumFloorLayers(self, roomShape)
    repeat
        local ____switch23 = roomShape
        local ____cond23 = ____switch23 == RoomShape.SHAPE_1x1
        if ____cond23 then
            do
                return 4
            end
        end
        ____cond23 = ____cond23 or (____switch23 == RoomShape.SHAPE_1x2 or ____switch23 == RoomShape.SHAPE_2x1)
        if ____cond23 then
            do
                return 8
            end
        end
        ____cond23 = ____cond23 or ____switch23 == RoomShape.SHAPE_2x2
        if ____cond23 then
            do
                return 16
            end
        end
        do
            do
                return nil
            end
        end
    until true
end
BackdropKind = {}
BackdropKind.N_FLOOR = "nFloors"
BackdropKind.L_FLOOR = "lFloors"
BackdropKind.WALL = "walls"
BackdropKind.CORNER = "corners"
DEFAULT_BACKDROP = {nFloors = {ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/backdrop/nfloor.png"}, lFloors = {ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/backdrop/lfloor.png"}, walls = {ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/backdrop/wall.png"}, corners = {ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/backdrop/corner.png"}}
ROOM_SHAPE_WALL_ANM2_LAYERS = {
    [RoomShape.SHAPE_1x1] = 44,
    [RoomShape.IH] = 36,
    [RoomShape.IV] = 28,
    [RoomShape.SHAPE_1x2] = 58,
    [RoomShape.IIV] = 42,
    [RoomShape.SHAPE_2x1] = 63,
    [RoomShape.IIH] = 62,
    [RoomShape.SHAPE_2x2] = 63,
    [RoomShape.LTL] = 63,
    [RoomShape.LTR] = 63,
    [RoomShape.LBL] = 63,
    [RoomShape.LBR] = 63
}
ROOM_SHAPE_WALL_EXTRA_ANM2_LAYERS = {
    [RoomShape.SHAPE_2x1] = 7,
    [RoomShape.SHAPE_2x2] = 21,
    [RoomShape.LTL] = 19,
    [RoomShape.LTR] = 19,
    [RoomShape.LBL] = 19,
    [RoomShape.LBR] = 19
}
WALL_OFFSET = Vector(-80, -80)
L_FLOOR_ANM2_LAYERS = {16, 17}
N_FLOOR_ANM2_LAYERS = {18, 19}
BACKDROP_EFFECT_VARIANT = EffectVariant.LADDER
BACKDROP_EFFECT_SUB_TYPE = LadderSubTypeCustom.CUSTOM_BACKDROP
local BACKDROP_ROOM_TYPE_SET = __TS__New(Set, {RoomType.DEFAULT, RoomType.BOSS, RoomType.MINI_BOSS})
function ____exports.setCustomStageBackdrop(self, customStage)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local decorationSeed = room:GetDecorationSeed()
    local rng = newRNG(nil, decorationSeed)
    if not BACKDROP_ROOM_TYPE_SET:has(roomType) then
        return
    end
    spawnWallEntity(nil, customStage, rng, false)
    spawnSecondWallEntity(nil, customStage, rng)
    spawnFloorEntity(nil, customStage, rng)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.constants"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
____exports.CUSTOM_STAGE_FEATURE_NAME = "CustomStage"
____exports.ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH = "gfx/isaacscript-custom-stage"
____exports.DEFAULT_BASE_STAGE = LevelStage.BASEMENT_2
____exports.DEFAULT_BASE_STAGE_TYPE = StageType.ORIGINAL
--- Equal to -1. Setting the stage to an invalid stage value is useful in that it prevents backdrops
-- and shadows from loading.
____exports.CUSTOM_FLOOR_STAGE = -1
--- We must use `StageType.WRATH_OF_THE_LAMB` instead of `StageType.ORIGINAL` or else the walls will
-- not render properly. DeadInfinity suspects that this might be because it is trying to use the
-- Dark Room's backdrop (instead of The Chest).
____exports.CUSTOM_FLOOR_STAGE_TYPE = StageType.WRATH_OF_THE_LAMB
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.gridEntities"] = function(...) 
local ____exports = {}
local getNewDoorPNGPath
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local removeGridEntity = ____gridEntities.removeGridEntity
local ____stage = require("lua_modules.isaacscript-common.dist.src.functions.stage")
local calculateStageType = ____stage.calculateStageType
local ____string = require("lua_modules.isaacscript-common.dist.src.functions.string")
local removeCharactersBefore = ____string.removeCharactersBefore
local ____constants = require("lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.constants")
local DEFAULT_BASE_STAGE = ____constants.DEFAULT_BASE_STAGE
function getNewDoorPNGPath(self, customStage, fileName)
    repeat
        local ____switch26 = fileName
        local ____cond26 = ____switch26 == "gfx/grid/door_01_normaldoor.anm2"
        if ____cond26 then
            do
                local ____customStage_doorPNGPaths_normal_0 = customStage.doorPNGPaths
                if ____customStage_doorPNGPaths_normal_0 ~= nil then
                    ____customStage_doorPNGPaths_normal_0 = ____customStage_doorPNGPaths_normal_0.normal
                end
                return ____customStage_doorPNGPaths_normal_0
            end
        end
        ____cond26 = ____cond26 or ____switch26 == "gfx/grid/door_02_treasureroomdoor.anm2"
        if ____cond26 then
            do
                local ____customStage_doorPNGPaths_treasureRoom_2 = customStage.doorPNGPaths
                if ____customStage_doorPNGPaths_treasureRoom_2 ~= nil then
                    ____customStage_doorPNGPaths_treasureRoom_2 = ____customStage_doorPNGPaths_treasureRoom_2.treasureRoom
                end
                return ____customStage_doorPNGPaths_treasureRoom_2
            end
        end
        ____cond26 = ____cond26 or ____switch26 == "gfx/grid/door_03_ambushroomdoor.anm2"
        if ____cond26 then
            do
                local ____customStage_doorPNGPaths_normalChallengeRoom_4 = customStage.doorPNGPaths
                if ____customStage_doorPNGPaths_normalChallengeRoom_4 ~= nil then
                    ____customStage_doorPNGPaths_normalChallengeRoom_4 = ____customStage_doorPNGPaths_normalChallengeRoom_4.normalChallengeRoom
                end
                return ____customStage_doorPNGPaths_normalChallengeRoom_4
            end
        end
        ____cond26 = ____cond26 or ____switch26 == "gfx/grid/door_04_selfsacrificeroomdoor.anm2"
        if ____cond26 then
            do
                local ____customStage_doorPNGPaths_curseRoom_6 = customStage.doorPNGPaths
                if ____customStage_doorPNGPaths_curseRoom_6 ~= nil then
                    ____customStage_doorPNGPaths_curseRoom_6 = ____customStage_doorPNGPaths_curseRoom_6.curseRoom
                end
                return ____customStage_doorPNGPaths_curseRoom_6
            end
        end
        ____cond26 = ____cond26 or ____switch26 == "gfx/grid/door_05_arcaderoomdoor.anm2"
        if ____cond26 then
            do
                local ____customStage_doorPNGPaths_arcade_8 = customStage.doorPNGPaths
                if ____customStage_doorPNGPaths_arcade_8 ~= nil then
                    ____customStage_doorPNGPaths_arcade_8 = ____customStage_doorPNGPaths_arcade_8.arcade
                end
                return ____customStage_doorPNGPaths_arcade_8
            end
        end
        ____cond26 = ____cond26 or ____switch26 == "gfx/grid/door_07_devilroomdoor.anm2"
        if ____cond26 then
            do
                local ____customStage_doorPNGPaths_devilRoom_10 = customStage.doorPNGPaths
                if ____customStage_doorPNGPaths_devilRoom_10 ~= nil then
                    ____customStage_doorPNGPaths_devilRoom_10 = ____customStage_doorPNGPaths_devilRoom_10.devilRoom
                end
                return ____customStage_doorPNGPaths_devilRoom_10
            end
        end
        ____cond26 = ____cond26 or ____switch26 == "gfx/grid/door_07_holyroomdoor.anm2"
        if ____cond26 then
            do
                local ____customStage_doorPNGPaths_angelRoom_12 = customStage.doorPNGPaths
                if ____customStage_doorPNGPaths_angelRoom_12 ~= nil then
                    ____customStage_doorPNGPaths_angelRoom_12 = ____customStage_doorPNGPaths_angelRoom_12.angelRoom
                end
                return ____customStage_doorPNGPaths_angelRoom_12
            end
        end
        ____cond26 = ____cond26 or ____switch26 == "gfx/grid/door_08_holeinwall.anm2"
        if ____cond26 then
            do
                local ____customStage_doorPNGPaths_secretRoom_14 = customStage.doorPNGPaths
                if ____customStage_doorPNGPaths_secretRoom_14 ~= nil then
                    ____customStage_doorPNGPaths_secretRoom_14 = ____customStage_doorPNGPaths_secretRoom_14.secretRoom
                end
                return ____customStage_doorPNGPaths_secretRoom_14
            end
        end
        ____cond26 = ____cond26 or ____switch26 == "gfx/grid/door_09_bossambushroomdoor.anm2"
        if ____cond26 then
            do
                local ____customStage_doorPNGPaths_bossChallengeRoom_16 = customStage.doorPNGPaths
                if ____customStage_doorPNGPaths_bossChallengeRoom_16 ~= nil then
                    ____customStage_doorPNGPaths_bossChallengeRoom_16 = ____customStage_doorPNGPaths_bossChallengeRoom_16.bossChallengeRoom
                end
                return ____customStage_doorPNGPaths_bossChallengeRoom_16
            end
        end
        ____cond26 = ____cond26 or ____switch26 == "gfx/grid/door_10_bossroomdoor.anm2"
        if ____cond26 then
            do
                local ____customStage_doorPNGPaths_bossRoom_18 = customStage.doorPNGPaths
                if ____customStage_doorPNGPaths_bossRoom_18 ~= nil then
                    ____customStage_doorPNGPaths_bossRoom_18 = ____customStage_doorPNGPaths_bossRoom_18.bossRoom
                end
                return ____customStage_doorPNGPaths_bossRoom_18
            end
        end
        ____cond26 = ____cond26 or ____switch26 == "gfx/grid/door_15_bossrushdoor.anm2"
        if ____cond26 then
            do
                local ____customStage_doorPNGPaths_bossRush_20 = customStage.doorPNGPaths
                if ____customStage_doorPNGPaths_bossRush_20 ~= nil then
                    ____customStage_doorPNGPaths_bossRush_20 = ____customStage_doorPNGPaths_bossRush_20.bossRush
                end
                return ____customStage_doorPNGPaths_bossRush_20
            end
        end
    until true
    return nil
end
--- For `GridEntityType.DECORATION` (1).
function ____exports.setCustomDecorationGraphics(self, customStage, gridEntity)
    if customStage.decorationsPNGPath == nil and customStage.decorationsANM2Path == nil then
        return
    end
    local gridEntityType = gridEntity:GetType()
    if gridEntityType ~= GridEntityType.DECORATION then
        return
    end
    local sprite = gridEntity:GetSprite()
    local fileName = sprite:GetFilename()
    if string.lower(fileName) ~= "gfx/grid/props_01_basement.anm2" then
        return
    end
    if customStage.decorationsANM2Path ~= nil then
        local anm2Path = removeCharactersBefore(nil, customStage.decorationsANM2Path, "gfx/")
        sprite:Load(anm2Path, true)
    elseif customStage.decorationsPNGPath ~= nil then
        local pngPath = removeCharactersBefore(nil, customStage.decorationsPNGPath, "gfx/")
        sprite:ReplaceSpritesheet(0, pngPath)
        sprite:LoadGraphics()
    end
end
--- For `GridEntityType.ROCK` (2).
function ____exports.setCustomRockGraphics(self, customStage, gridEntity)
    if customStage.rocksPNGPath == nil and customStage.rocksANM2Path == nil then
        return
    end
    local gridEntityRock = gridEntity:ToRock()
    if gridEntityRock == nil then
        return
    end
    local sprite = gridEntity:GetSprite()
    local fileName = sprite:GetFilename()
    repeat
        local ____switch11 = fileName
        local ____cond11 = ____switch11 == "gfx/grid/grid_rock.anm2"
        if ____cond11 then
            do
                if customStage.rocksANM2Path ~= nil then
                    local anm2Path = removeCharactersBefore(nil, customStage.rocksANM2Path, "gfx/")
                    sprite:Load(anm2Path, true)
                elseif customStage.rocksPNGPath ~= nil then
                    local pngPath = removeCharactersBefore(nil, customStage.rocksPNGPath, "gfx/")
                    sprite:ReplaceSpritesheet(0, pngPath)
                    sprite:LoadGraphics()
                end
                break
            end
        end
        ____cond11 = ____cond11 or ____switch11 == "gfx/grid/grid_pit.anm2"
        if ____cond11 then
            do
                if customStage.rocksPNGPath ~= nil then
                    local pngPath = removeCharactersBefore(nil, customStage.rocksPNGPath, "gfx/")
                    sprite:ReplaceSpritesheet(1, pngPath)
                    sprite:LoadGraphics()
                end
                break
            end
        end
    until true
end
--- For `GridEntityType.PIT` (7).
function ____exports.setCustomPitGraphics(self, customStage, gridEntity)
    if customStage.pitsPNGPath == nil then
        return
    end
    local pngPath = removeCharactersBefore(nil, customStage.pitsPNGPath, "gfx/")
    local gridEntityPit = gridEntity:ToPit()
    if gridEntityPit == nil then
        return
    end
    local sprite = gridEntity:GetSprite()
    local fileName = sprite:GetFilename()
    if fileName == "gfx/grid/grid_pit.anm2" then
        sprite:ReplaceSpritesheet(0, pngPath)
        sprite:LoadGraphics()
    end
end
--- For `GridEntityType.DOOR` (16).
function ____exports.setCustomDoorGraphics(self, customStage, gridEntity)
    if customStage.doorPNGPaths == nil then
        return
    end
    local gridEntityDoor = gridEntity:ToDoor()
    if gridEntityDoor == nil then
        return
    end
    local sprite = gridEntity:GetSprite()
    local fileName = sprite:GetFilename()
    local doorPNGPath = getNewDoorPNGPath(nil, customStage, fileName)
    if doorPNGPath ~= nil then
        local fixedPath = removeCharactersBefore(nil, doorPNGPath, "gfx/")
        sprite:ReplaceSpritesheet(0, fixedPath)
        sprite:LoadGraphics()
    end
end
function ____exports.convertVanillaTrapdoors(self, customStage, gridEntity, isFirstFloor, customTrapdoors)
    local gridEntityType = gridEntity:GetType()
    if gridEntityType ~= GridEntityType.TRAPDOOR then
        return
    end
    removeGridEntity(nil, gridEntity, true)
    if isFirstFloor then
        customTrapdoors:spawnCustomTrapdoor(gridEntity.Position, customStage.name, LevelStage.BASEMENT_2)
    else
        local baseStage = customStage.baseStage == nil and DEFAULT_BASE_STAGE or customStage.baseStage
        local destinationStage = baseStage + 2
        local destinationStageType = calculateStageType(nil, destinationStage)
        customTrapdoors:spawnCustomTrapdoor(gridEntity.Position, nil, destinationStage, destinationStageType)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.shadows"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____LadderSubTypeCustom = require("lua_modules.isaacscript-common.dist.src.enums.LadderSubTypeCustom")
local LadderSubTypeCustom = ____LadderSubTypeCustom.LadderSubTypeCustom
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local getRandomArrayElement = ____array.getRandomArrayElement
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local spawnEffectWithSeed = ____entitiesSpecific.spawnEffectWithSeed
local ____string = require("lua_modules.isaacscript-common.dist.src.functions.string")
local removeCharactersBefore = ____string.removeCharactersBefore
local ____constants = require("lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.constants")
local ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH = ____constants.ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH
--- Normally, we would make a custom entity to represent a shadow effect, but we don't want to
-- interfere with the "entities2.xml" file in end-user mods. Thus, we must select a vanilla effect
-- to masquerade as a backdrop effect.
-- 
-- We arbitrarily choose a ladder for this purpose because it will not automatically despawn after
-- time passes, like most other effects.
local SHADOW_EFFECT_VARIANT = EffectVariant.LADDER
local SHADOW_EFFECT_SUB_TYPE = LadderSubTypeCustom.CUSTOM_SHADOW
--- The animation comes from StageAPI.
local ROOM_SHAPE_TO_SHADOW_ANIMATION = {
    [RoomShape.SHAPE_1x1] = "1x1",
    [RoomShape.IH] = "1x1",
    [RoomShape.IV] = "1x1",
    [RoomShape.SHAPE_1x2] = "1x2",
    [RoomShape.IIV] = "1x2",
    [RoomShape.SHAPE_2x1] = "2x1",
    [RoomShape.IIH] = "2x1",
    [RoomShape.SHAPE_2x2] = "2x2",
    [RoomShape.LTL] = "2x2",
    [RoomShape.LTR] = "2x2",
    [RoomShape.LBL] = "2x2",
    [RoomShape.LBR] = "2x2"
}
local FADED_BLACK = Color(0, 0, 0, 0.25)
function ____exports.setShadows(self, customStage)
    if customStage.shadows == nil then
        return
    end
    local room = game:GetRoom()
    local roomShape = room:GetRoomShape()
    local centerPos = room:GetCenterPos()
    local animation = ROOM_SHAPE_TO_SHADOW_ANIMATION[roomShape]
    local shadows = customStage.shadows[animation]
    if shadows == nil then
        return
    end
    local seed = 1
    local shadowEffect = spawnEffectWithSeed(
        nil,
        SHADOW_EFFECT_VARIANT,
        SHADOW_EFFECT_SUB_TYPE,
        centerPos,
        seed
    )
    local sprite = shadowEffect:GetSprite()
    sprite:Load(ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/stage-shadow.anm2", false)
    local decorationSeed = room:GetDecorationSeed()
    local shadow = getRandomArrayElement(nil, shadows, decorationSeed)
    local pngPath = removeCharactersBefore(nil, shadow.pngPath, "gfx/")
    sprite:ReplaceSpritesheet(0, pngPath)
    sprite:LoadGraphics()
    sprite:SetFrame(animation, 0)
    sprite.Color = shadow.color == nil and FADED_BLACK or Color(shadow.color.r, shadow.color.g, shadow.color.b, shadow.color.a)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.streakText"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Spread = ____lualib.__TS__Spread
local ____exports = {}
local checkEndTopStreakText, trackMapInputPressed, checkStartBottomStreakText, checkEndBottomStreakText, renderStreakText, UI_STREAK_ANIMATION_END_FRAMES, TEXT_STAY_FRAME, TEXT_OUT_FRAME, STREAK_TEXT_BOTTOM_Y_OFFSET, NUM_RENDER_FRAMES_MAP_HELD_BEFORE_STREAK_TEXT, TEXT_IN_ADJUSTMENTS, TEXT_OUT_ADJUSTMENTS, TEXT_IN_SCALES, TEXT_OUT_SCALES
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction
local ControllerIndex = ____isaac_2Dtypescript_2Ddefinitions.ControllerIndex
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local fonts = ____cachedClasses.fonts
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local KColorDefault = ____constants.KColorDefault
local VectorOne = ____constants.VectorOne
local ____UIStreakAnimation = require("lua_modules.isaacscript-common.dist.src.enums.private.UIStreakAnimation")
local UIStreakAnimation = ____UIStreakAnimation.UIStreakAnimation
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____ui = require("lua_modules.isaacscript-common.dist.src.functions.ui")
local getScreenBottomCenterPos = ____ui.getScreenBottomCenterPos
local getScreenTopCenterPos = ____ui.getScreenTopCenterPos
function checkEndTopStreakText(self, v)
    if v.run.topStreakTextStartedRenderFrame == nil or v.run.topStreakText.animation ~= UIStreakAnimation.TEXT_STAY then
        return
    end
    local renderFrameCount = Isaac.GetFrameCount()
    local elapsedFrames = renderFrameCount - v.run.topStreakTextStartedRenderFrame
    if elapsedFrames >= 115 then
        v.run.topStreakText.animation = UIStreakAnimation.TEXT
        v.run.topStreakText.frame = TEXT_OUT_FRAME - 2
    end
end
function trackMapInputPressed(self, v)
    for ____, controllerIndex in ipairs(getEnumValues(nil, ControllerIndex)) do
        local gameFrameCount = game:GetFrameCount()
        local oldPushedMapFrame = v.run.controllerIndexPushingMapRenderFrame:get(controllerIndex)
        local isPushingMap = Input.IsActionPressed(ButtonAction.MAP, controllerIndex)
        if isPushingMap then
            if oldPushedMapFrame == nil then
                v.run.controllerIndexPushingMapRenderFrame:set(controllerIndex, gameFrameCount)
            end
        else
            v.run.controllerIndexPushingMapRenderFrame:delete(controllerIndex)
        end
    end
end
function checkStartBottomStreakText(self, v)
    if v.run.bottomStreakText.animation ~= UIStreakAnimation.NONE then
        return
    end
    local pushedMapFrames = {__TS__Spread(v.run.controllerIndexPushingMapRenderFrame:values())}
    if #pushedMapFrames == 0 then
        return
    end
    local earliestFrame = math.min(table.unpack(pushedMapFrames))
    local gameFrameCount = game:GetFrameCount()
    local elapsedFrames = gameFrameCount - earliestFrame
    if elapsedFrames >= NUM_RENDER_FRAMES_MAP_HELD_BEFORE_STREAK_TEXT then
        v.run.bottomStreakText.animation = UIStreakAnimation.TEXT
        v.run.bottomStreakText.frame = 0
    end
end
function checkEndBottomStreakText(self, v)
    if v.run.bottomStreakText.animation ~= UIStreakAnimation.TEXT_STAY then
        return
    end
    local pushedMapFrames = {__TS__Spread(v.run.controllerIndexPushingMapRenderFrame:values())}
    if #pushedMapFrames == 0 then
        v.run.bottomStreakText.animation = UIStreakAnimation.TEXT
        v.run.bottomStreakText.frame = TEXT_OUT_FRAME - 2
    end
end
function renderStreakText(self, v, customStage, streakText, position)
    if streakText.animation == UIStreakAnimation.NONE then
        return
    end
    if streakText.animation ~= UIStreakAnimation.TEXT_STAY then
        local ____streakText_0 = streakText
        local pauseFrame = ____streakText_0.pauseFrame
        streakText.pauseFrame = not streakText.pauseFrame
        if not pauseFrame then
            streakText.frame = streakText.frame + 1
        end
    end
    local endFrame = UI_STREAK_ANIMATION_END_FRAMES[streakText.animation]
    if streakText.frame > endFrame then
        streakText.animation = UIStreakAnimation.NONE
        streakText.frame = 0
        return
    end
    if streakText.animation == UIStreakAnimation.TEXT and streakText.frame == TEXT_STAY_FRAME then
        streakText.animation = UIStreakAnimation.TEXT_STAY
        streakText.frame = 0
    end
    local isPaused = game:IsPaused()
    if isPaused then
        return
    end
    local font = fonts.upheaval
    local ____customStage_1 = customStage
    local name = ____customStage_1.name
    local numberSuffix = v.run.firstFloor and "I" or "II"
    local nameWithNumberSuffix = (name .. " ") .. numberSuffix
    local length = font:GetStringWidthUTF8(nameWithNumberSuffix)
    local centeredX = position.X - length / 2
    local adjustment = 0
    local scale = VectorOne
    if streakText.animation == UIStreakAnimation.TEXT then
        if streakText.frame < TEXT_STAY_FRAME then
            adjustment = TEXT_IN_ADJUSTMENTS[streakText.frame + 1] or 0
            scale = TEXT_IN_SCALES[streakText.frame + 1] or VectorOne
        else
            local adjustedFrame = streakText.frame - TEXT_OUT_FRAME
            adjustment = TEXT_OUT_ADJUSTMENTS[adjustedFrame + 1] or 0
            scale = TEXT_OUT_SCALES[adjustedFrame + 1] or VectorOne
        end
    end
    local adjustedX = centeredX + adjustment
    local adjustedY = position.Y + STREAK_TEXT_BOTTOM_Y_OFFSET
    font:DrawStringScaled(
        nameWithNumberSuffix,
        adjustedX,
        adjustedY,
        scale.X,
        scale.Y,
        KColorDefault
    )
end
UI_STREAK_ANIMATION_END_FRAMES = {[UIStreakAnimation.NONE] = 0, [UIStreakAnimation.TEXT] = 69, [UIStreakAnimation.TEXT_STAY] = 1}
--- This must match the name of the shader in "shaders.xml".
local EMPTY_SHADER_NAME = "IsaacScript-RenderAboveHUD"
TEXT_STAY_FRAME = 8
TEXT_OUT_FRAME = 60
--- This matches the offset that the vanilla game uses; determined via trial and error.
local STREAK_SPRITE_TOP_OFFSET = Vector(0, 47)
--- This matches the offset that the vanilla game uses; determined via trial and error.
local STREAK_SPRITE_BOTTOM_OFFSET = Vector(0, -48.25)
STREAK_TEXT_BOTTOM_Y_OFFSET = -9
NUM_RENDER_FRAMES_MAP_HELD_BEFORE_STREAK_TEXT = 11
TEXT_IN_ADJUSTMENTS = {
    -800,
    -639,
    -450,
    -250,
    -70,
    10,
    6,
    3
}
TEXT_OUT_ADJUSTMENTS = {
    0,
    -5,
    -10,
    -15,
    -20,
    144,
    308,
    472,
    636,
    800
}
TEXT_IN_SCALES = {
    Vector(3, 0.2),
    Vector(2.6, 0.36),
    Vector(2.2, 0.52),
    Vector(1.8, 0.68),
    Vector(1.4, 0.84),
    Vector(0.95, 1.05),
    Vector(0.97, 1.03),
    Vector(0.98, 1.02)
}
TEXT_OUT_SCALES = {
    Vector(1, 1),
    Vector(0.99, 1.03),
    Vector(0.98, 1.05),
    Vector(0.96, 1.08),
    Vector(0.95, 1.1),
    Vector(1.36, 0.92),
    Vector(1.77, 0.74),
    Vector(2.18, 0.56),
    Vector(2.59, 0.38),
    Vector(3, 0.2)
}
function ____exports.streakTextPostRender(self, v)
    checkEndTopStreakText(nil, v)
    trackMapInputPressed(nil, v)
    checkStartBottomStreakText(nil, v)
    checkEndBottomStreakText(nil, v)
end
function ____exports.streakTextGetShaderParams(self, v, customStage, shaderName)
    if shaderName ~= EMPTY_SHADER_NAME then
        return
    end
    local topCenterPos = getScreenTopCenterPos(nil)
    local topStreakPosition = topCenterPos + STREAK_SPRITE_TOP_OFFSET
    renderStreakText(
        nil,
        v,
        customStage,
        v.run.topStreakText,
        topStreakPosition
    )
    local bottomCenterPos = getScreenBottomCenterPos(nil)
    local bottomStreakPosition = bottomCenterPos + STREAK_SPRITE_BOTTOM_OFFSET
    renderStreakText(
        nil,
        v,
        customStage,
        v.run.bottomStreakText,
        bottomStreakPosition
    )
end
function ____exports.topStreakTextStart(self, v)
    local level = game:GetLevel()
    local renderFrameCount = Isaac.GetFrameCount()
    level:ShowName(false)
    v.run.topStreakText.animation = UIStreakAnimation.TEXT
    v.run.topStreakText.frame = 0
    v.run.topStreakTextStartedRenderFrame = renderFrameCount
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.ui"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local LevelCurse = ____isaac_2Dtypescript_2Ddefinitions.LevelCurse
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local UI_HEART_WIDTH = ____constants.UI_HEART_WIDTH
local VectorZero = ____constants.VectorZero
local ____vector = require("lua_modules.isaacscript-common.dist.src.functions.vector")
local copyVector = ____vector.copyVector
function ____exports.getScreenBottomRightPos(self)
    local screenWidth = Isaac.GetScreenWidth()
    local screenHeight = Isaac.GetScreenHeight()
    return Vector(screenWidth, screenHeight)
end
--- In the options menu, players have the ability to set a HUD offset. This uses the current HUD
-- offset to generate a vector that should be added to the corresponding position that you want to
-- draw a UI element.
-- 
-- For example:
-- - If the user does not have a HUD offset configured, this function will return `Vector(0, 0)`.
-- - If the user has a HUD offset of 1.0 configured, this function will return `Vector(20, 12)`.
function ____exports.getHUDOffsetVector(self)
    local hudOffset = math.floor(Options.HUDOffset * 10)
    if hudOffset < 1 or hudOffset > 10 then
        return copyVector(nil, VectorZero)
    end
    local x = hudOffset * 2
    local y = hudOffset
    if y >= 4 then
        y = y + 1
    end
    if y >= 9 then
        y = y + 1
    end
    return Vector(x, y)
end
--- Returns how many hearts are in the heart UI row. If the player has more than 6 hearts, this
-- function will return 6.
function ____exports.getHeartRowLength(self, player)
    local maxHearts = player:GetMaxHearts()
    local soulHearts = player:GetSoulHearts()
    local boneHearts = player:GetBoneHearts()
    local combinedHearts = maxHearts + soulHearts + boneHearts * 2
    local heartRowLength = combinedHearts / 2
    return math.min(heartRowLength, 6)
end
--- Helper function to get the width of the first player's hearts on the UI. This is useful for
-- drawing UI elements to the right of where the player's hearts are. Make sure to use this in
-- combination with the the `getHUDOffsetVector` helper function.
function ____exports.getHeartsUIWidth(self)
    local level = game:GetLevel()
    local curses = level:GetCurses()
    local player = Isaac.GetPlayer()
    local extraLives = player:GetExtraLives()
    local effects = player:GetEffects()
    local hasHolyMantleEffect = effects:HasCollectibleEffect(CollectibleType.HOLY_MANTLE)
    local heartRowLength = ____exports.getHeartRowLength(nil, player)
    if hasHolyMantleEffect then
        heartRowLength = heartRowLength + 1
    end
    if curses == LevelCurse.UNKNOWN then
        heartRowLength = 1
    end
    local width = heartRowLength * UI_HEART_WIDTH
    if extraLives > 9 then
        width = width + 20
        if player:HasCollectible(CollectibleType.GUPPYS_COLLAR) then
            width = width + 6
        end
    elseif extraLives > 0 then
        width = width + 16
        if player:HasCollectible(CollectibleType.GUPPYS_COLLAR) then
            width = width + 4
        end
    end
    return width
end
function ____exports.getScreenBottomCenterPos(self)
    local bottomRight = ____exports.getScreenBottomRightPos(nil)
    return Vector(bottomRight.X / 2, bottomRight.Y)
end
function ____exports.getScreenBottomLeftPos(self)
    local bottomRight = ____exports.getScreenBottomRightPos(nil)
    return Vector(0, bottomRight.Y)
end
function ____exports.getScreenCenterPos(self)
    local bottomRight = ____exports.getScreenBottomRightPos(nil)
    return bottomRight / 2
end
function ____exports.getScreenTopCenterPos(self)
    local bottomRight = ____exports.getScreenBottomRightPos(nil)
    return Vector(bottomRight.X / 2, 0)
end
function ____exports.getScreenTopLeftPos(self)
    return copyVector(nil, VectorZero)
end
function ____exports.getScreenTopRightPos(self)
    local bottomRight = ____exports.getScreenBottomRightPos(nil)
    return Vector(bottomRight.X, 0)
end
--- Get how many hearts are currently being shown on the hearts UI.
-- 
-- This function is originally from piber20 Helper.
function ____exports.getVisibleHearts(self, player)
    local effectiveMaxHearts = player:GetEffectiveMaxHearts()
    local soulHearts = player:GetSoulHearts()
    local boneHearts = player:GetBoneHearts()
    local maxHearts = math.max(effectiveMaxHearts, boneHearts * 2)
    local visibleHearts = math.ceil((maxHearts + soulHearts) / 2)
    if visibleHearts < 1 then
        visibleHearts = 1
    end
    return visibleHearts
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.utils"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local ____exports = {}
local getTotalWeightOfCustomStageRooms, getCustomStageRoomWithChosenWeight, getTotalWeightOfBossPool, getBossEntryWithChosenWeight
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local sumArray = ____array.sumArray
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local ____random = require("lua_modules.isaacscript-common.dist.src.functions.random")
local getRandomFloat = ____random.getRandomFloat
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
function getTotalWeightOfCustomStageRooms(self, roomsMetadata)
    local weights = __TS__ArrayMap(
        roomsMetadata,
        function(____, roomMetadata) return roomMetadata.weight end
    )
    return sumArray(nil, weights)
end
function getCustomStageRoomWithChosenWeight(self, roomsMetadata, chosenWeight)
    for ____, roomMetadata in ipairs(roomsMetadata) do
        if chosenWeight < roomMetadata.weight then
            return roomMetadata
        end
        chosenWeight = chosenWeight - roomMetadata.weight
    end
    error("Failed to get a custom stage room with chosen weight: " .. tostring(chosenWeight))
end
function getTotalWeightOfBossPool(self, bossPool)
    local weights = __TS__ArrayMap(
        bossPool,
        function(____, bossEntry) return bossEntry.weight end
    )
    return sumArray(nil, weights)
end
function getBossEntryWithChosenWeight(self, bossPool, chosenWeight)
    for ____, bossEntry in ipairs(bossPool) do
        if chosenWeight < bossEntry.weight then
            return bossEntry
        end
        chosenWeight = chosenWeight - bossEntry.weight
    end
    error("Failed to get a custom stage boss entry with chosen weight: " .. tostring(chosenWeight))
end
--- Helper function to get a random custom stage room from an array of custom stage rooms.
-- 
-- Note that this function does not simply choose a random element in the provided array; it will
-- properly account for each room weight using the algorithm from:
-- https://stackoverflow.com/questions/1761626/weighted-random-numbers
function ____exports.getRandomCustomStageRoom(self, roomsMetadata, seedOrRNG, verbose)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if verbose == nil then
        verbose = false
    end
    local totalWeight = getTotalWeightOfCustomStageRooms(nil, roomsMetadata)
    if verbose then
        log(
            nil,
            "Total weight of the custom stage rooms provided: " .. tostring(totalWeight)
        )
    end
    local chosenWeight = getRandomFloat(nil, 0, totalWeight, seedOrRNG)
    if verbose then
        log(
            nil,
            "Randomly chose weight for custom stage room: " .. tostring(chosenWeight)
        )
    end
    return getCustomStageRoomWithChosenWeight(nil, roomsMetadata, chosenWeight)
end
function ____exports.getRandomBossRoomFromPool(self, roomsMetadata, bossPool, seedOrRNG, verbose)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if verbose == nil then
        verbose = false
    end
    local totalWeight = getTotalWeightOfBossPool(nil, bossPool)
    if verbose then
        log(
            nil,
            "Total weight of the custom stage boss pool provided: " .. tostring(totalWeight)
        )
    end
    local chosenWeight = getRandomFloat(nil, 0, totalWeight, seedOrRNG)
    if verbose then
        log(
            nil,
            "Randomly chose weight for custom stage boss pool: " .. tostring(chosenWeight)
        )
    end
    local bossEntry = getBossEntryWithChosenWeight(nil, bossPool, chosenWeight)
    local roomsMetadataForBoss = __TS__ArrayFilter(
        roomsMetadata,
        function(____, roomMetadata) return roomMetadata.subType == bossEntry.subType end
    )
    return ____exports.getRandomCustomStageRoom(nil, roomsMetadataForBoss, seedOrRNG, verbose)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.versusScreen"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArraySome = ____lualib.__TS__ArraySome
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
local ____exports = {}
local willVanillaVersusScreenPlay, getPlayerPNGPaths, getBossPNGPaths, getBossPNGPathsCustom, DEFAULT_CHARACTER, PNG_PATH_PREFIX, PLAYER_PORTRAIT_PNG_PATH_PREFIX
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect
local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local sfxManager = ____cachedClasses.sfxManager
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local arrayRemove = ____array.arrayRemove
local ____bosses = require("lua_modules.isaacscript-common.dist.src.functions.bosses")
local getBosses = ____bosses.getBosses
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomSubType = ____roomData.getRoomSubType
local ____string = require("lua_modules.isaacscript-common.dist.src.functions.string")
local removeCharactersBefore = ____string.removeCharactersBefore
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local eRange = ____utils.eRange
local ____bossNamePNGFileNames = require("lua_modules.isaacscript-common.dist.src.objects.bossNamePNGFileNames")
local BOSS_NAME_PNG_FILE_NAMES = ____bossNamePNGFileNames.BOSS_NAME_PNG_FILE_NAMES
local ____bossPortraitPNGFileNames = require("lua_modules.isaacscript-common.dist.src.objects.bossPortraitPNGFileNames")
local BOSS_PORTRAIT_PNG_FILE_NAMES = ____bossPortraitPNGFileNames.BOSS_PORTRAIT_PNG_FILE_NAMES
local ____playerNamePNGFileNames = require("lua_modules.isaacscript-common.dist.src.objects.playerNamePNGFileNames")
local PLAYER_NAME_PNG_FILE_NAMES = ____playerNamePNGFileNames.PLAYER_NAME_PNG_FILE_NAMES
local ____playerPortraitPNGFileNames = require("lua_modules.isaacscript-common.dist.src.objects.playerPortraitPNGFileNames")
local PLAYER_PORTRAIT_PNG_FILE_NAMES = ____playerPortraitPNGFileNames.PLAYER_PORTRAIT_PNG_FILE_NAMES
local ____versusScreenBackgroundColors = require("lua_modules.isaacscript-common.dist.src.objects.versusScreenBackgroundColors")
local VERSUS_SCREEN_BACKGROUND_COLORS = ____versusScreenBackgroundColors.VERSUS_SCREEN_BACKGROUND_COLORS
local ____versusScreenDirtSpotColors = require("lua_modules.isaacscript-common.dist.src.objects.versusScreenDirtSpotColors")
local VERSUS_SCREEN_DIRT_SPOT_COLORS = ____versusScreenDirtSpotColors.VERSUS_SCREEN_DIRT_SPOT_COLORS
local ____constants = require("lua_modules.isaacscript-common.dist.src.classes.features.other.customStages.constants")
local CUSTOM_FLOOR_STAGE = ____constants.CUSTOM_FLOOR_STAGE
local CUSTOM_FLOOR_STAGE_TYPE = ____constants.CUSTOM_FLOOR_STAGE_TYPE
local CUSTOM_STAGE_FEATURE_NAME = ____constants.CUSTOM_STAGE_FEATURE_NAME
local DEFAULT_BASE_STAGE = ____constants.DEFAULT_BASE_STAGE
local DEFAULT_BASE_STAGE_TYPE = ____constants.DEFAULT_BASE_STAGE_TYPE
local ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH = ____constants.ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH
function willVanillaVersusScreenPlay(self)
    local bosses = getBosses(nil)
    return __TS__ArraySome(
        bosses,
        function(____, boss) return boss:GetBossID() ~= 0 end
    )
end
function getPlayerPNGPaths(self)
    local player = Isaac.GetPlayer()
    local character = player:GetPlayerType()
    local namePNGFileName = PLAYER_NAME_PNG_FILE_NAMES[character]
    if namePNGFileName == nil then
        namePNGFileName = PLAYER_NAME_PNG_FILE_NAMES[DEFAULT_CHARACTER]
    end
    local namePNGPath = (PNG_PATH_PREFIX .. "/") .. tostring(namePNGFileName)
    local portraitFileName = PLAYER_PORTRAIT_PNG_FILE_NAMES[character]
    if namePNGFileName == nil then
        portraitFileName = PLAYER_PORTRAIT_PNG_FILE_NAMES[DEFAULT_CHARACTER]
    end
    local portraitPNGPath = (PLAYER_PORTRAIT_PNG_PATH_PREFIX .. "/") .. tostring(portraitFileName)
    return {namePNGPath = namePNGPath, portraitPNGPath = portraitPNGPath}
end
function getBossPNGPaths(self, customStage)
    local paths = getBossPNGPathsCustom(nil, customStage)
    if paths ~= nil then
        return paths
    end
    local bosses = getBosses(nil)
    local firstBoss = bosses[1]
    local bossID = firstBoss == nil and 0 or firstBoss:GetBossID()
    if bossID == 0 then
        local questionMarkSprite = (PNG_PATH_PREFIX .. "/") .. BOSS_NAME_PNG_FILE_NAMES[BossID.BLUE_BABY]
        local namePNGPath = questionMarkSprite
        local portraitPNGPath = questionMarkSprite
        return {namePNGPath = namePNGPath, portraitPNGPath = portraitPNGPath}
    end
    local namePNGFileName = BOSS_NAME_PNG_FILE_NAMES[bossID]
    local namePNGPath = (PNG_PATH_PREFIX .. "/") .. namePNGFileName
    local portraitPNGFileName = BOSS_PORTRAIT_PNG_FILE_NAMES[bossID]
    local portraitPNGPath = (PNG_PATH_PREFIX .. "/") .. portraitPNGFileName
    return {namePNGPath = namePNGPath, portraitPNGPath = portraitPNGPath}
end
function getBossPNGPathsCustom(self, customStage)
    if customStage.bossPool == nil then
        return nil
    end
    local roomSubType = getRoomSubType(nil)
    local matchingBossEntry = __TS__ArrayFind(
        customStage.bossPool,
        function(____, bossEntry) return bossEntry.subType == roomSubType end
    )
    if matchingBossEntry == nil then
        return nil
    end
    return matchingBossEntry.versusScreen
end
DEFAULT_CHARACTER = PlayerType.ISAAC
local DEFAULT_STAGE_ID = StageID.BASEMENT
local VERSUS_SCREEN_ANIMATION_NAME = "Scene"
--- The layers range from 0 to 13.
local NUM_VERSUS_SCREEN_ANM2_LAYERS = 14
--- Corresponds to "resources/gfx/ui/boss/versusscreen.anm2".
local VersusScreenLayer = {}
VersusScreenLayer.BACKGROUND = 0
VersusScreenLayer[VersusScreenLayer.BACKGROUND] = "BACKGROUND"
VersusScreenLayer.FRAME = 1
VersusScreenLayer[VersusScreenLayer.FRAME] = "FRAME"
VersusScreenLayer.BOSS_SPOT = 2
VersusScreenLayer[VersusScreenLayer.BOSS_SPOT] = "BOSS_SPOT"
VersusScreenLayer.PLAYER_SPOT = 3
VersusScreenLayer[VersusScreenLayer.PLAYER_SPOT] = "PLAYER_SPOT"
VersusScreenLayer.BOSS_PORTRAIT = 4
VersusScreenLayer[VersusScreenLayer.BOSS_PORTRAIT] = "BOSS_PORTRAIT"
VersusScreenLayer.PLAYER_PORTRAIT = 5
VersusScreenLayer[VersusScreenLayer.PLAYER_PORTRAIT] = "PLAYER_PORTRAIT"
VersusScreenLayer.PLAYER_NAME = 6
VersusScreenLayer[VersusScreenLayer.PLAYER_NAME] = "PLAYER_NAME"
VersusScreenLayer.BOSS_NAME = 7
VersusScreenLayer[VersusScreenLayer.BOSS_NAME] = "BOSS_NAME"
VersusScreenLayer.VS_TEXT = 8
VersusScreenLayer[VersusScreenLayer.VS_TEXT] = "VS_TEXT"
VersusScreenLayer.BOSS_DOUBLE = 9
VersusScreenLayer[VersusScreenLayer.BOSS_DOUBLE] = "BOSS_DOUBLE"
VersusScreenLayer.DT_TEXT = 10
VersusScreenLayer[VersusScreenLayer.DT_TEXT] = "DT_TEXT"
VersusScreenLayer.OVERLAY = 11
VersusScreenLayer[VersusScreenLayer.OVERLAY] = "OVERLAY"
VersusScreenLayer.PLAYER_PORTRAIT_ALT = 12
VersusScreenLayer[VersusScreenLayer.PLAYER_PORTRAIT_ALT] = "PLAYER_PORTRAIT_ALT"
VersusScreenLayer.BOSS_PORTRAIT_GROUND = 13
VersusScreenLayer[VersusScreenLayer.BOSS_PORTRAIT_GROUND] = "BOSS_PORTRAIT_GROUND"
VersusScreenLayer.BOSS_PORTRAIT_2_GROUND = 14
VersusScreenLayer[VersusScreenLayer.BOSS_PORTRAIT_2_GROUND] = "BOSS_PORTRAIT_2_GROUND"
--- These are the non-special layers that we will render last.
local OTHER_ANM2_LAYERS = arrayRemove(
    nil,
    eRange(nil, NUM_VERSUS_SCREEN_ANM2_LAYERS),
    VersusScreenLayer.BACKGROUND,
    VersusScreenLayer.BOSS_SPOT,
    VersusScreenLayer.PLAYER_SPOT,
    VersusScreenLayer.OVERLAY,
    VersusScreenLayer.PLAYER_PORTRAIT_ALT
)
PNG_PATH_PREFIX = "gfx/ui/boss"
PLAYER_PORTRAIT_PNG_PATH_PREFIX = "gfx/ui/stage"
local VANILLA_VERSUS_PLAYBACK_SPEED = 0.5
--- We lazy load the sprite when first needed.
local versusScreenSprite = Sprite()
--- We lazy load the sprite when first needed.
-- 
-- Unfortunately, we must split the background layer into an entirely different sprite so that we
-- can color it with the `Color` field.
local versusScreenBackgroundSprite = Sprite()
--- We lazy load the sprite when first needed.
-- 
-- Unfortunately, we must split the dirt layer into an entirely different sprite so that we can
-- color it with the `Color` field.
local versusScreenDirtSpotSprite = Sprite()
function ____exports.playVersusScreenAnimation(self, v, customStage, disableAllSound, pause, runInNFrames)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local roomCleared = room:IsClear()
    local hud = game:GetHUD()
    if roomType ~= RoomType.BOSS then
        return
    end
    if roomCleared then
        return
    end
    if willVanillaVersusScreenPlay(nil) then
        local level = game:GetLevel()
        level:SetStage(DEFAULT_BASE_STAGE, DEFAULT_BASE_STAGE_TYPE)
        runInNFrames:runNextGameFrame(function()
            local futureLevel = game:GetLevel()
            futureLevel:SetStage(CUSTOM_FLOOR_STAGE, CUSTOM_FLOOR_STAGE_TYPE)
        end)
        return
    end
    v.run.showingBossVersusScreen = true
    pause:pause()
    hud:SetVisible(false)
    disableAllSound:disableAllSound(CUSTOM_STAGE_FEATURE_NAME)
    if not versusScreenSprite:IsLoaded() then
        versusScreenSprite:Load("gfx/ui/boss/versusscreen.anm2", false)
        versusScreenSprite:ReplaceSpritesheet(VersusScreenLayer.OVERLAY, ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/overlay.png")
    end
    do
        local ____getPlayerPNGPaths_result_0 = getPlayerPNGPaths(nil)
        local namePNGPath = ____getPlayerPNGPaths_result_0.namePNGPath
        local portraitPNGPath = ____getPlayerPNGPaths_result_0.portraitPNGPath
        versusScreenSprite:ReplaceSpritesheet(VersusScreenLayer.PLAYER_NAME, namePNGPath)
        versusScreenSprite:ReplaceSpritesheet(VersusScreenLayer.PLAYER_PORTRAIT, portraitPNGPath)
    end
    do
        local ____getBossPNGPaths_result_1 = getBossPNGPaths(nil, customStage)
        local namePNGPath = ____getBossPNGPaths_result_1.namePNGPath
        local portraitPNGPath = ____getBossPNGPaths_result_1.portraitPNGPath
        local trimmedNamePNGPath = removeCharactersBefore(nil, namePNGPath, "gfx/")
        versusScreenSprite:ReplaceSpritesheet(VersusScreenLayer.BOSS_NAME, trimmedNamePNGPath)
        local trimmedPortraitPNGPath = removeCharactersBefore(nil, portraitPNGPath, "gfx/")
        versusScreenSprite:ReplaceSpritesheet(VersusScreenLayer.BOSS_PORTRAIT, trimmedPortraitPNGPath)
    end
    versusScreenSprite:LoadGraphics()
    if not versusScreenBackgroundSprite:IsLoaded() then
        versusScreenBackgroundSprite:Load("gfx/ui/boss/versusscreen.anm2", true)
    end
    local backgroundColor = VERSUS_SCREEN_BACKGROUND_COLORS[DEFAULT_STAGE_ID]
    local ____customStage_versusScreen_backgroundColor_2 = customStage.versusScreen
    if ____customStage_versusScreen_backgroundColor_2 ~= nil then
        ____customStage_versusScreen_backgroundColor_2 = ____customStage_versusScreen_backgroundColor_2.backgroundColor
    end
    if ____customStage_versusScreen_backgroundColor_2 ~= nil then
        local ____customStage_versusScreen_backgroundColor_4 = customStage.versusScreen.backgroundColor
        local r = ____customStage_versusScreen_backgroundColor_4.r
        local g = ____customStage_versusScreen_backgroundColor_4.g
        local b = ____customStage_versusScreen_backgroundColor_4.b
        local a = ____customStage_versusScreen_backgroundColor_4.a
        backgroundColor = Color(r, g, b, a)
    end
    versusScreenBackgroundSprite.Color = backgroundColor
    if not versusScreenDirtSpotSprite:IsLoaded() then
        versusScreenDirtSpotSprite:Load("gfx/ui/boss/versusscreen.anm2", true)
    end
    local dirtSpotColor = VERSUS_SCREEN_DIRT_SPOT_COLORS[DEFAULT_STAGE_ID]
    local ____customStage_versusScreen_dirtSpotColor_5 = customStage.versusScreen
    if ____customStage_versusScreen_dirtSpotColor_5 ~= nil then
        ____customStage_versusScreen_dirtSpotColor_5 = ____customStage_versusScreen_dirtSpotColor_5.dirtSpotColor
    end
    if ____customStage_versusScreen_dirtSpotColor_5 ~= nil then
        local ____customStage_versusScreen_dirtSpotColor_7 = customStage.versusScreen.dirtSpotColor
        local r = ____customStage_versusScreen_dirtSpotColor_7.r
        local g = ____customStage_versusScreen_dirtSpotColor_7.g
        local b = ____customStage_versusScreen_dirtSpotColor_7.b
        dirtSpotColor = Color(r, g, b)
    end
    versusScreenDirtSpotSprite.Color = dirtSpotColor
    for ____, sprite in ipairs({versusScreenBackgroundSprite, versusScreenDirtSpotSprite, versusScreenSprite}) do
        sprite:Play(VERSUS_SCREEN_ANIMATION_NAME, true)
        sprite.PlaybackSpeed = VANILLA_VERSUS_PLAYBACK_SPEED
    end
end
local function finishVersusScreenAnimation(self, v, pause, disableAllSound)
    local hud = game:GetHUD()
    v.run.showingBossVersusScreen = false
    pause:unpause()
    hud:SetVisible(true)
    disableAllSound:enableAllSound(CUSTOM_STAGE_FEATURE_NAME)
    sfxManager:Play(SoundEffect.CASTLE_PORTCULLIS)
end
function ____exports.versusScreenPostRender(self, v, pause, disableAllSound)
    if not v.run.showingBossVersusScreen then
        return
    end
    if versusScreenSprite:IsFinished(VERSUS_SCREEN_ANIMATION_NAME) then
        finishVersusScreenAnimation(nil, v, pause, disableAllSound)
        return
    end
    local room = game:GetRoom()
    local centerPos = room:GetCenterPos()
    local position = Isaac.WorldToRenderPosition(centerPos)
    versusScreenBackgroundSprite:RenderLayer(VersusScreenLayer.BACKGROUND, position)
    versusScreenBackgroundSprite:Update()
    versusScreenSprite:RenderLayer(VersusScreenLayer.OVERLAY, position)
    versusScreenDirtSpotSprite:RenderLayer(VersusScreenLayer.BOSS_SPOT, position)
    versusScreenDirtSpotSprite:RenderLayer(VersusScreenLayer.PLAYER_SPOT, position)
    versusScreenDirtSpotSprite:Update()
    for ____, layerID in ipairs(OTHER_ANM2_LAYERS) do
        versusScreenSprite:RenderLayer(layerID, position)
    end
    versusScreenSprite:Update()
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.bosses"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local ____exports = {}
local getNumBossSegments, DEFAULT_BOSS_MULTI_SEGMENTS
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local LokiVariant = ____isaac_2Dtypescript_2Ddefinitions.LokiVariant
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
local ____bossSets = require("lua_modules.isaacscript-common.dist.src.sets.bossSets")
local ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET = ____bossSets.ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET
local ALL_BOSSES_SET = ____bossSets.ALL_BOSSES_SET
local STAGE_TO_COMBINED_BOSS_SET_MAP = ____bossSets.STAGE_TO_COMBINED_BOSS_SET_MAP
local STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP = ____bossSets.STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP
local ____sinEntityTypesSet = require("lua_modules.isaacscript-common.dist.src.sets.sinEntityTypesSet")
local SIN_ENTITY_TYPES_SET = ____sinEntityTypesSet.SIN_ENTITY_TYPES_SET
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getNPCs = ____entitiesSpecific.getNPCs
local spawnNPC = ____entitiesSpecific.spawnNPC
local ____npcs = require("lua_modules.isaacscript-common.dist.src.functions.npcs")
local getAliveNPCs = ____npcs.getAliveNPCs
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local isRNG = ____rng.isRNG
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local ____repeat = ____utils["repeat"]
function getNumBossSegments(self, entityType, variant, numSegments)
    if numSegments ~= nil then
        return numSegments
    end
    repeat
        local ____switch18 = entityType
        local ____cond18 = ____switch18 == EntityType.CHUB
        if ____cond18 then
            do
                return 3
            end
        end
        ____cond18 = ____cond18 or ____switch18 == EntityType.LOKI
        if ____cond18 then
            do
                return variant == asNumber(nil, LokiVariant.LOKII) and 2 or 1
            end
        end
        ____cond18 = ____cond18 or ____switch18 == EntityType.GURGLING
        if ____cond18 then
            do
                return 2
            end
        end
        do
            do
                return DEFAULT_BOSS_MULTI_SEGMENTS
            end
        end
    until true
end
local BOSSES_THAT_REQUIRE_MULTIPLE_SPAWNS = __TS__New(Set, {
    EntityType.LARRY_JR,
    EntityType.CHUB,
    EntityType.LOKI,
    EntityType.GURGLING,
    EntityType.TURDLET
})
DEFAULT_BOSS_MULTI_SEGMENTS = 4
--- Helper function to get all of the non-dead bosses in the room.
-- 
-- This function will not include bosses on an internal blacklist, such as Death's scythes or Big
-- Horn holes.
-- 
-- @param entityType Optional. If specified, will only get the bosses that match the type. Default
-- is -1, which matches every type.
-- @param variant Optional. If specified, will only get the bosses that match the variant. Default
-- is -1, which matches every variant.
-- @param subType Optional. If specified, will only get the bosses that match the sub-type. Default
-- is -1, which matches every sub-type.
-- @param ignoreFriendly Optional. Default is false.
function ____exports.getAliveBosses(self, entityType, variant, subType, ignoreFriendly)
    if entityType == nil then
        entityType = -1
    end
    if variant == nil then
        variant = -1
    end
    if subType == nil then
        subType = -1
    end
    if ignoreFriendly == nil then
        ignoreFriendly = false
    end
    local aliveNPCs = getAliveNPCs(
        nil,
        entityType,
        variant,
        subType,
        ignoreFriendly
    )
    return __TS__ArrayFilter(
        aliveNPCs,
        function(____, aliveNPC) return aliveNPC:IsBoss() end
    )
end
--- Helper function to get the set of every boss in the game.
-- 
-- The set contains strings with the entity type and variant, separated by a period.
-- 
-- Note that this set does not include bosses that do not appear in Boss Rooms (e.g. Krampus, Uriel,
-- and Gabriel.).
-- 
-- Also see the `getBossSet` and `getCombinedBossSet` functions.
-- 
-- @param includeStoryBosses Optional. Whether to include "story" bosses like Mom and It Lives!
-- Default is true.
function ____exports.getAllBossesSet(self, includeStoryBosses)
    if includeStoryBosses == nil then
        includeStoryBosses = true
    end
    return includeStoryBosses and ALL_BOSSES_SET or ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET
end
--- Helper function to get the set of vanilla bosses for a particular stage and stage type
-- combination.
-- 
-- The set contains strings with the entity type and variant, separated by a period.
-- 
-- Also see the `getAllBossesSet` and `getCombinedBossSet` functions.
function ____exports.getBossSet(self, stage, stageType)
    local stageTypeMap = STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP:get(stage)
    if stageTypeMap == nil then
        return nil
    end
    local bossSet = stageTypeMap:get(stageType)
    if bossSet == nil then
        return nil
    end
    return bossSet
end
--- Helper function to get all of the bosses in the room.
-- 
-- @param entityType Optional. If specified, will only get the bosses that match the type. Default
-- is -1, which matches every type.
-- @param variant Optional. If specified, will only get the bosses that match the variant. Default
-- is -1, which matches every variant.
-- @param subType Optional. If specified, will only get the bosses that match the sub-type. Default
-- is -1, which matches every sub-type.
-- @param ignoreFriendly Optional. Default is false.
function ____exports.getBosses(self, entityType, variant, subType, ignoreFriendly)
    if ignoreFriendly == nil then
        ignoreFriendly = false
    end
    local npcs = getNPCs(
        nil,
        entityType,
        variant,
        subType,
        ignoreFriendly
    )
    return __TS__ArrayFilter(
        npcs,
        function(____, npc) return npc:IsBoss() end
    )
end
--- Helper function to get the set of vanilla bosses for a particular stage across all of the stage
-- types. For example, specifying a stage of 2 will return a set with all of the bosses for
-- Basement, Cellar, Burning Basement, Downpour, and Dross.
-- 
-- The set contains strings with the entity type and variant, separated by a period.
-- 
-- Also see the `getAllBossesSet` and `getBossSet` functions.
function ____exports.getCombinedBossSet(self, stage)
    local bossSet = STAGE_TO_COMBINED_BOSS_SET_MAP:get(stage)
    if bossSet == nil then
        return nil
    end
    return bossSet
end
--- Helper function to check if the provided NPC is a Sin miniboss, such as Sloth or Lust.
function ____exports.isSin(self, npc)
    return SIN_ENTITY_TYPES_SET:has(npc.Type)
end
--- Helper function to spawn a boss.
-- 
-- Use this function instead of `spawnNPC` since it handles automatically spawning multiple segments
-- for multi-segment bosses.
-- 
-- By default, this will spawn Chub (and his variants) with 3 segments, Lokii with 2 copies,
-- Gurglings/Turdlings with 2 copies, and other multi-segment bosses with 4 segments. You can
-- customize this via the "numSegments" argument.
function ____exports.spawnBoss(self, entityType, variant, subType, position, velocity, spawner, seedOrRNG, numSegments)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    if seedOrRNG == nil then
        seedOrRNG = nil
    end
    local seed = isRNG(nil, seedOrRNG) and seedOrRNG:Next() or seedOrRNG
    local npc = spawnNPC(
        nil,
        entityType,
        variant,
        subType,
        position,
        velocity,
        spawner,
        seed
    )
    if BOSSES_THAT_REQUIRE_MULTIPLE_SPAWNS:has(entityType) then
        local numBossSegments = getNumBossSegments(nil, entityType, variant, numSegments)
        local remainingSegmentsToSpawn = numBossSegments - 1
        ____repeat(
            nil,
            remainingSegmentsToSpawn,
            function()
                spawnNPC(
                    nil,
                    entityType,
                    variant,
                    subType,
                    position,
                    velocity,
                    spawner,
                    seed
                )
            end
        )
    end
    return npc
end
--- Helper function to spawn a boss with a specific seed.
-- 
-- For more information, see the documentation for the `spawnBoss` function.
function ____exports.spawnBossWithSeed(self, entityType, variant, subType, position, seedOrRNG, velocity, spawner, numSegments)
    if velocity == nil then
        velocity = VectorZero
    end
    if spawner == nil then
        spawner = nil
    end
    local seed = isRNG(nil, seedOrRNG) and seedOrRNG:Next() or seedOrRNG
    return ____exports.spawnBoss(
        nil,
        entityType,
        variant,
        subType,
        position,
        velocity,
        spawner,
        seed,
        numSegments
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.bossSets"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__Spread = ____lualib.__TS__Spread
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
local Map = ____lualib.Map
local ____exports = {}
local getAllBossesExcludingStoryBossesSet
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local BigHornVariant = ____isaac_2Dtypescript_2Ddefinitions.BigHornVariant
local ChubVariant = ____isaac_2Dtypescript_2Ddefinitions.ChubVariant
local DaddyLongLegsVariant = ____isaac_2Dtypescript_2Ddefinitions.DaddyLongLegsVariant
local DingleVariant = ____isaac_2Dtypescript_2Ddefinitions.DingleVariant
local DukeVariant = ____isaac_2Dtypescript_2Ddefinitions.DukeVariant
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local FallenVariant = ____isaac_2Dtypescript_2Ddefinitions.FallenVariant
local FistulaVariant = ____isaac_2Dtypescript_2Ddefinitions.FistulaVariant
local GeminiVariant = ____isaac_2Dtypescript_2Ddefinitions.GeminiVariant
local GurglingVariant = ____isaac_2Dtypescript_2Ddefinitions.GurglingVariant
local HauntVariant = ____isaac_2Dtypescript_2Ddefinitions.HauntVariant
local IsaacVariant = ____isaac_2Dtypescript_2Ddefinitions.IsaacVariant
local LambVariant = ____isaac_2Dtypescript_2Ddefinitions.LambVariant
local LarryJrVariant = ____isaac_2Dtypescript_2Ddefinitions.LarryJrVariant
local LittleHornVariant = ____isaac_2Dtypescript_2Ddefinitions.LittleHornVariant
local LokiVariant = ____isaac_2Dtypescript_2Ddefinitions.LokiVariant
local MamaGurdyVariant = ____isaac_2Dtypescript_2Ddefinitions.MamaGurdyVariant
local MomsHeartVariant = ____isaac_2Dtypescript_2Ddefinitions.MomsHeartVariant
local MomVariant = ____isaac_2Dtypescript_2Ddefinitions.MomVariant
local Monstro2Variant = ____isaac_2Dtypescript_2Ddefinitions.Monstro2Variant
local PeepVariant = ____isaac_2Dtypescript_2Ddefinitions.PeepVariant
local PinVariant = ____isaac_2Dtypescript_2Ddefinitions.PinVariant
local PolycephalusVariant = ____isaac_2Dtypescript_2Ddefinitions.PolycephalusVariant
local RagManVariant = ____isaac_2Dtypescript_2Ddefinitions.RagManVariant
local RagMegaVariant = ____isaac_2Dtypescript_2Ddefinitions.RagMegaVariant
local SatanVariant = ____isaac_2Dtypescript_2Ddefinitions.SatanVariant
local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
local WarVariant = ____isaac_2Dtypescript_2Ddefinitions.WarVariant
local WidowVariant = ____isaac_2Dtypescript_2Ddefinitions.WidowVariant
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local parseEntityTypeVariantString = ____entities.parseEntityTypeVariantString
local ____set = require("lua_modules.isaacscript-common.dist.src.functions.set")
local copySet = ____set.copySet
local ____storyBossesSet = require("lua_modules.isaacscript-common.dist.src.sets.storyBossesSet")
local STORY_BOSSES_SET = ____storyBossesSet.STORY_BOSSES_SET
function getAllBossesExcludingStoryBossesSet(self)
    local allBossesExcludingStoryBossesSet = copySet(nil, ____exports.ALL_BOSSES_SET)
    local allBosses = {__TS__Spread(____exports.ALL_BOSSES_SET:values())}
    for ____, entityTypeVariantString in ipairs(allBosses) do
        local tuple = parseEntityTypeVariantString(nil, entityTypeVariantString)
        if tuple == nil then
            error("Failed to parse a boss tuple when constructing the story boss set.")
        end
        local entityType, _variant = table.unpack(tuple)
        if STORY_BOSSES_SET:has(entityType) then
            allBossesExcludingStoryBossesSet:delete(entityTypeVariantString)
        end
    end
    return allBossesExcludingStoryBossesSet
end
--- Contains just the bosses in Basement (not e.g. Burning Basement).
local BASEMENT_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.LARRY_JR) .. ".") .. tostring(LarryJrVariant.LARRY_JR),
        tostring(EntityType.MONSTRO) .. ".0",
        tostring(EntityType.FAMINE) .. ".0",
        (tostring(EntityType.DUKE) .. ".") .. tostring(DukeVariant.DUKE_OF_FLIES),
        (tostring(EntityType.GEMINI) .. ".") .. tostring(GeminiVariant.GEMINI),
        (tostring(EntityType.GEMINI) .. ".") .. tostring(GeminiVariant.STEVEN),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0",
        (tostring(EntityType.GURGLING) .. ".") .. tostring(GurglingVariant.GURGLING_BOSS),
        (tostring(EntityType.GURGLING) .. ".") .. tostring(GurglingVariant.TURDLING),
        (tostring(EntityType.DINGLE) .. ".") .. tostring(DingleVariant.DINGLE),
        (tostring(EntityType.DINGLE) .. ".") .. tostring(DingleVariant.DANGLE),
        (tostring(EntityType.LITTLE_HORN) .. ".") .. tostring(LittleHornVariant.LITTLE_HORN),
        tostring(EntityType.BABY_PLUM) .. ".0"
    }
)
--- Contains just the bosses in Cellar (not e.g. Burning Basement).
local CELLAR_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.PIN) .. ".") .. tostring(PinVariant.PIN),
        tostring(EntityType.FAMINE) .. ".0",
        (tostring(EntityType.DUKE) .. ".") .. tostring(DukeVariant.DUKE_OF_FLIES),
        (tostring(EntityType.GEMINI) .. ".") .. tostring(GeminiVariant.BLIGHTED_OVUM),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0",
        (tostring(EntityType.WIDOW) .. ".") .. tostring(WidowVariant.WIDOW),
        (tostring(EntityType.THE_HAUNT) .. ".") .. tostring(HauntVariant.HAUNT),
        tostring(EntityType.LITTLE_HORN) .. ".0",
        (tostring(EntityType.RAG_MAN) .. ".") .. tostring(RagManVariant.RAG_MAN),
        tostring(EntityType.BABY_PLUM) .. ".0"
    }
)
--- Contains just the bosses in Burning Basement (not e.g. Cellar).
local BURNING_BASEMENT_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.LARRY_JR) .. ".") .. tostring(LarryJrVariant.LARRY_JR),
        tostring(EntityType.MONSTRO) .. ".0",
        tostring(EntityType.FAMINE) .. ".0",
        (tostring(EntityType.DUKE) .. ".") .. tostring(DukeVariant.DUKE_OF_FLIES),
        (tostring(EntityType.GEMINI) .. ".") .. tostring(GeminiVariant.GEMINI),
        (tostring(EntityType.GEMINI) .. ".") .. tostring(GeminiVariant.STEVEN),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0",
        (tostring(EntityType.DINGLE) .. ".") .. tostring(DingleVariant.DINGLE),
        (tostring(EntityType.GURGLING) .. ".") .. tostring(GurglingVariant.GURGLING_BOSS),
        (tostring(EntityType.GURGLING) .. ".") .. tostring(GurglingVariant.TURDLING),
        (tostring(EntityType.DINGLE) .. ".") .. tostring(DingleVariant.DANGLE),
        tostring(EntityType.LITTLE_HORN) .. ".0",
        (tostring(EntityType.RAG_MAN) .. ".") .. tostring(RagManVariant.RAG_MAN),
        tostring(EntityType.BABY_PLUM) .. ".0"
    }
)
--- Contains just the bosses in Downpour (not e.g. Burning Basement).
local DOWNPOUR_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.PIN) .. ".") .. tostring(PinVariant.WORMWOOD),
        tostring(EntityType.LIL_BLUB) .. ".0",
        tostring(EntityType.RAINMAKER) .. ".0",
        tostring(EntityType.MIN_MIN) .. ".0"
    }
)
--- Contains just the bosses in Dross (not e.g. Burning Basement).
local DROSS_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.PIN) .. ".") .. tostring(PinVariant.WORMWOOD),
        tostring(EntityType.LIL_BLUB) .. ".0",
        tostring(EntityType.CLOG) .. ".0",
        tostring(EntityType.COLOSTOMIA) .. ".0",
        tostring(EntityType.TURDLET) .. ".0"
    }
)
local ____Set_1 = Set
local ____array_0 = __TS__SparseArrayNew(__TS__Spread(BASEMENT_BOSSES_SET:values()))
__TS__SparseArrayPush(
    ____array_0,
    __TS__Spread(CELLAR_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_0,
    __TS__Spread(BURNING_BASEMENT_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_0,
    __TS__Spread(DOWNPOUR_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_0,
    __TS__Spread(DROSS_BOSSES_SET:values())
)
--- The set of unique bosses for Basement, Cellar, and so on.
local ALL_BASEMENT_BOSSES_SET = __TS__New(
    ____Set_1,
    {__TS__SparseArraySpread(____array_0)}
)
local BASEMENT_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(Map, {
    {StageType.ORIGINAL, BASEMENT_BOSSES_SET},
    {StageType.WRATH_OF_THE_LAMB, CELLAR_BOSSES_SET},
    {StageType.AFTERBIRTH, BURNING_BASEMENT_BOSSES_SET},
    {StageType.REPENTANCE, DOWNPOUR_BOSSES_SET},
    {StageType.REPENTANCE_B, DROSS_BOSSES_SET}
})
--- Contains just the bosses in Caves (not e.g. Flooded Caves).
local CAVES_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.CHUB) .. ".") .. tostring(ChubVariant.CHUB),
        (tostring(EntityType.CHUB) .. ".") .. tostring(ChubVariant.CHAD),
        tostring(EntityType.GURDY) .. ".0",
        tostring(EntityType.PESTILENCE) .. ".0",
        tostring(EntityType.PEEP) .. ".0",
        (tostring(EntityType.FISTULA_BIG) .. ".") .. tostring(FistulaVariant.FISTULA),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0",
        tostring(EntityType.GURDY_JR) .. ".0",
        tostring(EntityType.MEGA_MAW) .. ".0",
        tostring(EntityType.MEGA_FATTY) .. ".0",
        tostring(EntityType.STAIN) .. ".0",
        (tostring(EntityType.RAG_MEGA) .. ".") .. tostring(RagMegaVariant.RAG_MEGA),
        (tostring(EntityType.BIG_HORN) .. ".") .. tostring(BigHornVariant.BIG_HORN),
        tostring(EntityType.BUMBINO) .. ".0"
    }
)
--- Contains just the bosses in Catacombs (not e.g. Flooded Caves).
local CATACOMBS_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.LARRY_JR) .. ".") .. tostring(LarryJrVariant.THE_HOLLOW),
        (tostring(EntityType.CHUB) .. ".") .. tostring(ChubVariant.CARRION_QUEEN),
        (tostring(EntityType.PIN) .. ".") .. tostring(PinVariant.FRAIL),
        tostring(EntityType.PESTILENCE) .. ".0",
        (tostring(EntityType.DUKE) .. ".") .. tostring(DukeVariant.THE_HUSK),
        (tostring(EntityType.PEEP) .. ".") .. tostring(PeepVariant.PEEP),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0",
        tostring(EntityType.GURDY_JR) .. ".0",
        (tostring(EntityType.WIDOW) .. ".") .. tostring(WidowVariant.THE_WRETCHED),
        tostring(EntityType.DARK_ONE) .. ".0",
        (tostring(EntityType.POLYCEPHALUS) .. ".") .. tostring(PolycephalusVariant.POLYCEPHALUS),
        tostring(EntityType.FORSAKEN) .. ".0",
        (tostring(EntityType.RAG_MEGA) .. ".") .. tostring(RagMegaVariant.RAG_MEGA),
        (tostring(EntityType.BIG_HORN) .. ".") .. tostring(BigHornVariant.BIG_HORN),
        tostring(EntityType.BUMBINO) .. ".0"
    }
)
--- Contains just the bosses in Flooded Caves (not e.g. Catacombs).
local FLOODED_CAVES_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.CHUB) .. ".") .. tostring(ChubVariant.CHUB),
        (tostring(EntityType.CHUB) .. ".") .. tostring(ChubVariant.CHAD),
        tostring(EntityType.GURDY) .. ".0",
        (tostring(EntityType.PIN) .. ".") .. tostring(PinVariant.FRAIL),
        tostring(EntityType.PESTILENCE) .. ".0",
        (tostring(EntityType.PEEP) .. ".") .. tostring(PeepVariant.PEEP),
        (tostring(EntityType.FISTULA_BIG) .. ".") .. tostring(FistulaVariant.FISTULA),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0",
        tostring(EntityType.GURDY_JR) .. ".0",
        tostring(EntityType.MEGA_MAW) .. ".0",
        tostring(EntityType.MEGA_FATTY) .. ".0",
        tostring(EntityType.STAIN) .. ".0",
        tostring(EntityType.FORSAKEN) .. ".0",
        (tostring(EntityType.RAG_MEGA) .. ".") .. tostring(RagMegaVariant.RAG_MEGA),
        (tostring(EntityType.BIG_HORN) .. ".") .. tostring(BigHornVariant.BIG_HORN),
        tostring(EntityType.BUMBINO) .. ".0"
    }
)
--- Contains just the bosses in Mines (not e.g. Flooded Caves).
local MINES_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.LARRY_JR) .. ".") .. tostring(LarryJrVariant.TUFF_TWIN),
        tostring(EntityType.REAP_CREEP) .. ".0",
        tostring(EntityType.HORNFEL) .. ".0",
        tostring(EntityType.GREAT_GIDEON) .. ".0"
    }
)
--- Contains just the bosses in Ashpit (not e.g. Flooded Caves).
local ASHPIT_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.LARRY_JR) .. ".") .. tostring(LarryJrVariant.THE_SHELL),
        (tostring(EntityType.POLYCEPHALUS) .. ".") .. tostring(PolycephalusVariant.THE_PILE),
        tostring(EntityType.GREAT_GIDEON) .. ".0",
        tostring(EntityType.SINGE) .. ".0",
        tostring(EntityType.CLUTCH) .. ".0"
    }
)
local ____Set_3 = Set
local ____array_2 = __TS__SparseArrayNew(__TS__Spread(CAVES_BOSSES_SET:values()))
__TS__SparseArrayPush(
    ____array_2,
    __TS__Spread(CATACOMBS_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_2,
    __TS__Spread(FLOODED_CAVES_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_2,
    __TS__Spread(MINES_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_2,
    __TS__Spread(ASHPIT_BOSSES_SET:values())
)
--- The set of unique bosses for Caves, Catacombs, and so on.
local ALL_CAVES_BOSSES_SET = __TS__New(
    ____Set_3,
    {__TS__SparseArraySpread(____array_2)}
)
local CAVES_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(Map, {
    {StageType.ORIGINAL, CAVES_BOSSES_SET},
    {StageType.WRATH_OF_THE_LAMB, CATACOMBS_BOSSES_SET},
    {StageType.AFTERBIRTH, FLOODED_CAVES_BOSSES_SET},
    {StageType.REPENTANCE, MINES_BOSSES_SET},
    {StageType.REPENTANCE_B, ASHPIT_BOSSES_SET}
})
--- Contains just the bosses in Depths (not e.g. Dank Depths).
local DEPTHS_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.MONSTRO_2) .. ".") .. tostring(Monstro2Variant.MONSTRO_2),
        (tostring(EntityType.MONSTRO_2) .. ".") .. tostring(Monstro2Variant.GISH),
        (tostring(EntityType.MOM) .. ".") .. tostring(MomVariant.MOM),
        (tostring(EntityType.WAR) .. ".") .. tostring(WarVariant.WAR),
        (tostring(EntityType.LOKI) .. ".") .. tostring(LokiVariant.LOKI),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0",
        tostring(EntityType.GATE) .. ".0",
        tostring(EntityType.CAGE) .. ".0",
        tostring(EntityType.BROWNIE) .. ".0",
        tostring(EntityType.SISTERS_VIS) .. ".0",
        tostring(EntityType.REAP_CREEP) .. ".0"
    }
)
--- Contains just the bosses in Necropolis (not e.g. Dank Depths).
local NECROPOLIS_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.MOM) .. ".") .. tostring(MomVariant.MOM),
        (tostring(EntityType.WAR) .. ".") .. tostring(WarVariant.WAR),
        (tostring(EntityType.PEEP) .. ".") .. tostring(PeepVariant.BLOAT),
        (tostring(EntityType.LOKI) .. ".") .. tostring(LokiVariant.LOKI),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0",
        tostring(EntityType.MASK_OF_INFAMY) .. ".0",
        tostring(EntityType.ADVERSARY) .. ".0",
        (tostring(EntityType.POLYCEPHALUS) .. ".") .. tostring(PolycephalusVariant.THE_PILE),
        tostring(EntityType.BROWNIE) .. ".0",
        tostring(EntityType.SISTERS_VIS) .. ".0"
    }
)
--- Contains just the bosses in Dank Depths (not e.g. Necropolis).
local DANK_DEPTHS_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.MONSTRO_2) .. ".") .. tostring(Monstro2Variant.MONSTRO_2),
        (tostring(EntityType.MONSTRO_2) .. ".") .. tostring(Monstro2Variant.GISH),
        (tostring(EntityType.MOM) .. ".") .. tostring(MomVariant.MOM),
        (tostring(EntityType.WAR) .. ".") .. tostring(WarVariant.WAR),
        (tostring(EntityType.LOKI) .. ".") .. tostring(LokiVariant.LOKI),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0",
        tostring(EntityType.GATE) .. ".0",
        tostring(EntityType.CAGE) .. ".0",
        tostring(EntityType.BROWNIE) .. ".0",
        tostring(EntityType.SISTERS_VIS) .. ".0",
        tostring(EntityType.REAP_CREEP) .. ".0"
    }
)
--- Contains just the bosses in Mausoleum (not e.g. Dank Depths).
local MAUSOLEUM_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.MOM) .. ".") .. tostring(MomVariant.MOM),
        tostring(EntityType.SIREN) .. ".0",
        tostring(EntityType.HERETIC) .. ".0"
    }
)
--- Contains just the bosses in Gehenna (not e.g. Dank Depths).
local GEHENNA_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.MOM) .. ".") .. tostring(MomVariant.MOM),
        tostring(EntityType.VISAGE) .. ".0",
        tostring(EntityType.HORNY_BOYS) .. ".0"
    }
)
local ____Set_5 = Set
local ____array_4 = __TS__SparseArrayNew(__TS__Spread(DEPTHS_BOSSES_SET:values()))
__TS__SparseArrayPush(
    ____array_4,
    __TS__Spread(NECROPOLIS_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_4,
    __TS__Spread(DANK_DEPTHS_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_4,
    __TS__Spread(MAUSOLEUM_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_4,
    __TS__Spread(GEHENNA_BOSSES_SET:values())
)
--- The set of unique bosses for Depths, Necropolis, and so on.
local ALL_DEPTHS_BOSSES_SET = __TS__New(
    ____Set_5,
    {__TS__SparseArraySpread(____array_4)}
)
local DEPTHS_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(Map, {
    {StageType.ORIGINAL, DEPTHS_BOSSES_SET},
    {StageType.WRATH_OF_THE_LAMB, NECROPOLIS_BOSSES_SET},
    {StageType.AFTERBIRTH, DANK_DEPTHS_BOSSES_SET},
    {StageType.REPENTANCE, MAUSOLEUM_BOSSES_SET},
    {StageType.REPENTANCE_B, GEHENNA_BOSSES_SET}
})
--- Contains just the bosses in Womb (not e.g. Scarred Womb).
local WOMB_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.PIN) .. ".") .. tostring(PinVariant.SCOLEX),
        (tostring(EntityType.WAR) .. ".") .. tostring(WarVariant.CONQUEST),
        tostring(EntityType.DEATH) .. ".0",
        (tostring(EntityType.LOKI) .. ".") .. tostring(LokiVariant.LOKII),
        tostring(EntityType.BLASTOCYST_BIG) .. ".0",
        (tostring(EntityType.MOMS_HEART) .. ".") .. tostring(MomsHeartVariant.MOMS_HEART),
        (tostring(EntityType.MOMS_HEART) .. ".") .. tostring(MomsHeartVariant.IT_LIVES),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0",
        tostring(EntityType.MAMA_GURDY) .. ".0",
        tostring(EntityType.MR_FRED) .. ".0",
        tostring(EntityType.MATRIARCH) .. ".0"
    }
)
--- Contains just the bosses in Utero (not e.g. Scarred Womb).
local UTERO_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.WAR) .. ".") .. tostring(WarVariant.CONQUEST),
        tostring(EntityType.DEATH) .. ".0",
        (tostring(EntityType.DADDY_LONG_LEGS) .. ".") .. tostring(DaddyLongLegsVariant.DADDY_LONG_LEGS),
        (tostring(EntityType.DADDY_LONG_LEGS) .. ".") .. tostring(DaddyLongLegsVariant.TRIACHNID),
        (tostring(EntityType.PEEP) .. ".") .. tostring(PeepVariant.BLOAT),
        (tostring(EntityType.LOKI) .. ".") .. tostring(LokiVariant.LOKII),
        (tostring(EntityType.FISTULA_BIG) .. ".") .. tostring(FistulaVariant.TERATOMA),
        (tostring(EntityType.MOMS_HEART) .. ".") .. tostring(MomsHeartVariant.MOMS_HEART),
        (tostring(EntityType.MOMS_HEART) .. ".") .. tostring(MomsHeartVariant.IT_LIVES),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0"
    }
)
--- Contains just the bosses in Scarred Womb (not e.g. Utero).
local SCARRED_WOMB_BOSSES_SET = __TS__New(
    Set,
    {
        (tostring(EntityType.PIN) .. ".") .. tostring(PinVariant.SCOLEX),
        (tostring(EntityType.WAR) .. ".") .. tostring(WarVariant.CONQUEST),
        tostring(EntityType.DEATH) .. ".0",
        (tostring(EntityType.LOKI) .. ".") .. tostring(LokiVariant.LOKII),
        tostring(EntityType.BLASTOCYST_BIG) .. ".0",
        (tostring(EntityType.MOMS_HEART) .. ".") .. tostring(MomsHeartVariant.MOMS_HEART),
        (tostring(EntityType.MOMS_HEART) .. ".") .. tostring(MomsHeartVariant.IT_LIVES),
        (tostring(EntityType.FALLEN) .. ".") .. tostring(FallenVariant.FALLEN),
        tostring(EntityType.HEADLESS_HORSEMAN) .. ".0",
        (tostring(EntityType.DADDY_LONG_LEGS) .. ".") .. tostring(DaddyLongLegsVariant.TRIACHNID),
        (tostring(EntityType.MAMA_GURDY) .. ".") .. tostring(MamaGurdyVariant.MAMA_GURDY),
        tostring(EntityType.MR_FRED) .. ".0",
        tostring(EntityType.MATRIARCH) .. ".0"
    }
)
--- Contains just the bosses in Corpse (not e.g. Scarred Womb).
local CORPSE_BOSSES_SET = __TS__New(
    Set,
    {
        tostring(EntityType.SCOURGE) .. ".0",
        tostring(EntityType.CHIMERA) .. ".0",
        tostring(EntityType.ROTGUT) .. ".0",
        tostring(EntityType.MOTHER) .. ".0"
    }
)
local ____Set_7 = Set
local ____array_6 = __TS__SparseArrayNew(__TS__Spread(WOMB_BOSSES_SET:values()))
__TS__SparseArrayPush(
    ____array_6,
    __TS__Spread(UTERO_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_6,
    __TS__Spread(SCARRED_WOMB_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_6,
    __TS__Spread(MAUSOLEUM_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_6,
    __TS__Spread(GEHENNA_BOSSES_SET:values())
)
--- The set of unique bosses for Depths, Necropolis, and so on.
local ALL_WOMB_BOSSES_SET = __TS__New(
    ____Set_7,
    {__TS__SparseArraySpread(____array_6)}
)
local WOMB_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(Map, {{StageType.ORIGINAL, WOMB_BOSSES_SET}, {StageType.WRATH_OF_THE_LAMB, UTERO_BOSSES_SET}, {StageType.AFTERBIRTH, SCARRED_WOMB_BOSSES_SET}, {StageType.REPENTANCE, CORPSE_BOSSES_SET}})
local BLUE_WOMB_BOSSES_SET = __TS__New(
    Set,
    {tostring(EntityType.HUSH) .. ".0"}
)
local BLUE_WOMB_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(Map, {{StageType.ORIGINAL, BLUE_WOMB_BOSSES_SET}})
local SHEOL_BOSSES_SET = __TS__New(
    Set,
    {(tostring(EntityType.SATAN) .. ".") .. tostring(SatanVariant.SATAN)}
)
local CATHEDRAL_BOSSES_SET = __TS__New(
    Set,
    {(tostring(EntityType.ISAAC) .. ".") .. tostring(IsaacVariant.ISAAC)}
)
local ____Set_9 = Set
local ____array_8 = __TS__SparseArrayNew(__TS__Spread(SHEOL_BOSSES_SET:values()))
__TS__SparseArrayPush(
    ____array_8,
    __TS__Spread(CATHEDRAL_BOSSES_SET:values())
)
local ALL_STAGE_10_BOSSES_SET = __TS__New(
    ____Set_9,
    {__TS__SparseArraySpread(____array_8)}
)
local STAGE_10_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(Map, {{StageType.ORIGINAL, SHEOL_BOSSES_SET}, {StageType.WRATH_OF_THE_LAMB, CATHEDRAL_BOSSES_SET}})
local DARK_ROOM_BOSSES_SET = __TS__New(
    Set,
    {(tostring(EntityType.THE_LAMB) .. ".") .. tostring(LambVariant.LAMB)}
)
local CHEST_BOSSES_SET = __TS__New(
    Set,
    {(tostring(EntityType.ISAAC) .. ".") .. tostring(IsaacVariant.BLUE_BABY)}
)
local ____Set_11 = Set
local ____array_10 = __TS__SparseArrayNew(__TS__Spread(DARK_ROOM_BOSSES_SET:values()))
__TS__SparseArrayPush(
    ____array_10,
    __TS__Spread(CHEST_BOSSES_SET:values())
)
local ALL_STAGE_11_BOSSES_SET = __TS__New(
    ____Set_11,
    {__TS__SparseArraySpread(____array_10)}
)
local STAGE_11_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(Map, {{StageType.ORIGINAL, DARK_ROOM_BOSSES_SET}, {StageType.WRATH_OF_THE_LAMB, CHEST_BOSSES_SET}})
____exports.STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(Map, {
    {1, BASEMENT_STAGE_TYPE_TO_BOSS_SET_MAP},
    {2, BASEMENT_STAGE_TYPE_TO_BOSS_SET_MAP},
    {3, CAVES_STAGE_TYPE_TO_BOSS_SET_MAP},
    {4, CAVES_STAGE_TYPE_TO_BOSS_SET_MAP},
    {5, DEPTHS_STAGE_TYPE_TO_BOSS_SET_MAP},
    {6, DEPTHS_STAGE_TYPE_TO_BOSS_SET_MAP},
    {7, WOMB_STAGE_TYPE_TO_BOSS_SET_MAP},
    {8, WOMB_STAGE_TYPE_TO_BOSS_SET_MAP},
    {9, BLUE_WOMB_STAGE_TYPE_TO_BOSS_SET_MAP},
    {10, STAGE_10_STAGE_TYPE_TO_BOSS_SET_MAP},
    {11, STAGE_11_STAGE_TYPE_TO_BOSS_SET_MAP}
})
____exports.STAGE_TO_COMBINED_BOSS_SET_MAP = __TS__New(Map, {
    {1, ALL_BASEMENT_BOSSES_SET},
    {2, ALL_BASEMENT_BOSSES_SET},
    {3, ALL_CAVES_BOSSES_SET},
    {4, ALL_CAVES_BOSSES_SET},
    {5, ALL_DEPTHS_BOSSES_SET},
    {6, ALL_DEPTHS_BOSSES_SET},
    {7, ALL_WOMB_BOSSES_SET},
    {8, ALL_WOMB_BOSSES_SET},
    {9, BLUE_WOMB_BOSSES_SET},
    {10, ALL_STAGE_10_BOSSES_SET},
    {11, ALL_STAGE_11_BOSSES_SET}
})
local ____Set_13 = Set
local ____array_12 = __TS__SparseArrayNew(__TS__Spread(ALL_BASEMENT_BOSSES_SET:values()))
__TS__SparseArrayPush(
    ____array_12,
    __TS__Spread(ALL_CAVES_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_12,
    __TS__Spread(ALL_DEPTHS_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_12,
    __TS__Spread(ALL_WOMB_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_12,
    __TS__Spread(BLUE_WOMB_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_12,
    __TS__Spread(ALL_STAGE_10_BOSSES_SET:values())
)
__TS__SparseArrayPush(
    ____array_12,
    __TS__Spread(ALL_STAGE_11_BOSSES_SET:values())
)
____exports.ALL_BOSSES_SET = __TS__New(
    ____Set_13,
    {__TS__SparseArraySpread(____array_12)}
)
____exports.ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET = getAllBossesExcludingStoryBossesSet(nil)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.sinEntityTypesSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
____exports.SIN_ENTITY_TYPES_SET = __TS__New(Set, {
    EntityType.SLOTH,
    EntityType.LUST,
    EntityType.WRATH,
    EntityType.GLUTTONY,
    EntityType.GREED,
    EntityType.ENVY,
    EntityType.PRIDE
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.npcs"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local ____exports = {}
local NON_ALIVE_NPCS_TYPE_VARIANT, NON_ALIVE_NPCS_TYPE_VARIANT_SUB_TYPE
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local BegottenVariant = ____isaac_2Dtypescript_2Ddefinitions.BegottenVariant
local BigHornVariant = ____isaac_2Dtypescript_2Ddefinitions.BigHornVariant
local ChargerSubType = ____isaac_2Dtypescript_2Ddefinitions.ChargerSubType
local ChargerVariant = ____isaac_2Dtypescript_2Ddefinitions.ChargerVariant
local DarkEsauVariant = ____isaac_2Dtypescript_2Ddefinitions.DarkEsauVariant
local DeathVariant = ____isaac_2Dtypescript_2Ddefinitions.DeathVariant
local DumpVariant = ____isaac_2Dtypescript_2Ddefinitions.DumpVariant
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local HopperVariant = ____isaac_2Dtypescript_2Ddefinitions.HopperVariant
local MamaGurdyVariant = ____isaac_2Dtypescript_2Ddefinitions.MamaGurdyVariant
local MotherSubType = ____isaac_2Dtypescript_2Ddefinitions.MotherSubType
local MotherVariant = ____isaac_2Dtypescript_2Ddefinitions.MotherVariant
local NpcState = ____isaac_2Dtypescript_2Ddefinitions.NpcState
local PeepVariant = ____isaac_2Dtypescript_2Ddefinitions.PeepVariant
local RaglingVariant = ____isaac_2Dtypescript_2Ddefinitions.RaglingVariant
local VisVariant = ____isaac_2Dtypescript_2Ddefinitions.VisVariant
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local EGGY_STATE_FRAME_OF_FINAL_SPIDER = ____constants.EGGY_STATE_FRAME_OF_FINAL_SPIDER
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getNPCs = ____entitiesSpecific.getNPCs
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
--- Checks for specific NPCs that have "CanShutDoors" set to true naturally by the game, but should
-- not actually keep the doors closed (like Death's scythes).
function ____exports.isAliveExceptionNPC(self, npc)
    local entityTypeVariant = (tostring(npc.Type) .. ".") .. tostring(npc.Variant)
    if NON_ALIVE_NPCS_TYPE_VARIANT:has(entityTypeVariant) then
        return true
    end
    local entityTypeVariantSubType = (((tostring(npc.Type) .. ".") .. tostring(npc.Variant)) .. ".") .. tostring(npc.SubType)
    if NON_ALIVE_NPCS_TYPE_VARIANT_SUB_TYPE:has(entityTypeVariantSubType) then
        return true
    end
    if ____exports.isDyingEggyWithNoSpidersLeft(nil, npc) then
        return true
    end
    if ____exports.isDaddyLongLegsChildStompEntity(nil, npc) then
        return true
    end
    if ____exports.isRaglingDeathPatch(nil, npc) then
        return true
    end
    if ____exports.isDyingDump(nil, npc) then
        return true
    end
    return false
end
--- Helper function to distinguish between a normal Daddy Long Legs / Triachnid and the child entity
-- that is spawned when the boss does the multi-stomp attack.
-- 
-- When this attack occurs, four extra copies of Daddy Long Legs will be spawned with the same
-- entity type, variant, and sub-type. The `Entity.Parent` field will be undefined in this case, so
-- the way to tell them apart is to check for a non-undefined `Entity.SpawnerEntity` field.
function ____exports.isDaddyLongLegsChildStompEntity(self, npc)
    return npc.Type == EntityType.DADDY_LONG_LEGS and npc.SpawnerEntity ~= nil
end
--- Helper function to detect the custom death state of a Dump. When Dumps die, they go to
-- `NpcState.SPECIAL`, spit out their head, and then slowly fade away while shooting a burst of
-- tears.
function ____exports.isDyingDump(self, npc)
    return npc.Type == EntityType.DUMP and npc.Variant == asNumber(nil, DumpVariant.DUMP) and npc.State == NpcState.SPECIAL
end
--- Helper function to detect the custom death state of an Eggy. Eggies are never actually marked
-- dead by the game. Instead, when Eggies take fatal damage, they go into NpcState.STATE_SUICIDE and
-- spawn 14 Swarm Spiders while their StateFrame ticks upwards.
function ____exports.isDyingEggyWithNoSpidersLeft(self, npc)
    return npc.Type == EntityType.HOPPER and npc.Variant == asNumber(nil, HopperVariant.EGGY) and npc.State == NpcState.SUICIDE and npc.StateFrame >= EGGY_STATE_FRAME_OF_FINAL_SPIDER
end
--- Helper function to detect the custom death state of a Rag Man Ragling. When Rag Man Raglings die,
-- they turn into a patch on the ground and can be revived by Rag Man at a later time. This causes
-- them to show up as an "alive" enemy, so they should usually be filtered out of lists of alive
-- enemies.
function ____exports.isRaglingDeathPatch(self, npc)
    return npc.Type == EntityType.RAGLING and npc.Variant == asNumber(nil, RaglingVariant.RAG_MANS_RAGLING) and npc.State == NpcState.SPECIAL
end
NON_ALIVE_NPCS_TYPE_VARIANT = __TS__New(
    Set,
    {
        (tostring(EntityType.VIS) .. ".") .. tostring(VisVariant.CHUBBER_PROJECTILE),
        (tostring(EntityType.DEATH) .. ".") .. tostring(DeathVariant.DEATH_SCYTHE),
        (tostring(EntityType.PEEP) .. ".") .. tostring(PeepVariant.PEEP_EYE),
        (tostring(EntityType.PEEP) .. ".") .. tostring(PeepVariant.BLOAT_EYE),
        (tostring(EntityType.BEGOTTEN) .. ".") .. tostring(BegottenVariant.BEGOTTEN_CHAIN),
        (tostring(EntityType.MAMA_GURDY) .. ".") .. tostring(MamaGurdyVariant.LEFT_HAND),
        (tostring(EntityType.MAMA_GURDY) .. ".") .. tostring(MamaGurdyVariant.RIGHT_HAND),
        (tostring(EntityType.BIG_HORN) .. ".") .. tostring(BigHornVariant.SMALL_HOLE),
        (tostring(EntityType.BIG_HORN) .. ".") .. tostring(BigHornVariant.BIG_HOLE),
        (tostring(EntityType.DARK_ESAU) .. ".") .. tostring(DarkEsauVariant.DARK_ESAU),
        (tostring(EntityType.DARK_ESAU) .. ".") .. tostring(DarkEsauVariant.PIT)
    }
)
NON_ALIVE_NPCS_TYPE_VARIANT_SUB_TYPE = __TS__New(
    Set,
    {
        (((tostring(EntityType.CHARGER) .. ".") .. tostring(ChargerVariant.CHARGER)) .. ".") .. tostring(ChargerSubType.MY_SHADOW),
        (((tostring(EntityType.MOTHER) .. ".") .. tostring(MotherVariant.MOTHER_1)) .. ".") .. tostring(MotherSubType.PHASE_2)
    }
)
--- Helper function to get all of the non-dead NPCs in the room.
-- 
-- This function will not include NPCs on an internal blacklist, such as Death's scythes or Big Horn
-- holes.
-- 
-- @param entityType Optional. If specified, will only get the NPCs that match the type. Default is
-- -1, which matches every type.
-- @param variant Optional. If specified, will only get the NPCs that match the variant. Default is
-- -1, which matches every variant.
-- @param subType Optional. If specified, will only get the NPCs that match the sub-type. Default is
-- -1, which matches every sub-type.
-- @param ignoreFriendly Optional. Default is false.
function ____exports.getAliveNPCs(self, entityType, variant, subType, ignoreFriendly)
    if entityType == nil then
        entityType = -1
    end
    if variant == nil then
        variant = -1
    end
    if subType == nil then
        subType = -1
    end
    if ignoreFriendly == nil then
        ignoreFriendly = false
    end
    local npcs = getNPCs(
        nil,
        entityType,
        variant,
        subType,
        ignoreFriendly
    )
    return __TS__ArrayFilter(
        npcs,
        function(____, npc) return not npc:IsDead() and not ____exports.isAliveExceptionNPC(nil, npc) end
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.bossNamePNGFileNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID
--- Used when rendering the "versusscreen.anm2" sprite.
____exports.BOSS_NAME_PNG_FILE_NAMES = {
    [BossID.MONSTRO] = "bossname_20.0_monstro.png",
    [BossID.LARRY_JR] = "bossname_19.0_larryjr.png",
    [BossID.CHUB] = "bossname_28.0_chub.png",
    [BossID.GURDY] = "bossname_36.0_gurdy.png",
    [BossID.MONSTRO_II] = "bossname_43.0_monstro2.png",
    [BossID.MOM] = "bossname_45.0_mom.png",
    [BossID.SCOLEX] = "bossname_62.1_scolex.png",
    [BossID.MOMS_HEART] = "bossname_78.0_momsheart.png",
    [BossID.FAMINE] = "bossname_63.0_famine.png",
    [BossID.PESTILENCE] = "bossname_64.0_pestilence.png",
    [BossID.WAR] = "bossname_65.0_war.png",
    [BossID.DEATH] = "bossname_66.0_death.png",
    [BossID.DUKE_OF_FLIES] = "bossname_67.0_dukeofflies.png",
    [BossID.PEEP] = "bossname_68.0_peep.png",
    [BossID.LOKI] = "bossname_69.0_loki.png",
    [BossID.BLASTOCYST] = "bossname_74.0_blastocyst.png",
    [BossID.GEMINI] = "bossname_79.0_gemini.png",
    [BossID.FISTULA] = "bossname_71.0_fistula.png",
    [BossID.GISH] = "bossname_43.1_gish.png",
    [BossID.STEVEN] = "bossname_79.1_steven.png",
    [BossID.CHAD] = "bossname_28.1_chad.png",
    [BossID.HEADLESS_HORSEMAN] = "bossname_82.0_headlesshorseman.png",
    [BossID.THE_FALLEN] = "bossname_81.0_thefallen.png",
    [BossID.SATAN] = "bossname_84.0_satan.png",
    [BossID.IT_LIVES] = "bossname_78.1_itlives.png",
    [BossID.THE_HOLLOW] = "bossname_19.1_thehollow.png",
    [BossID.THE_CARRION_QUEEN] = "bossname_28.2_carrionqueen.png",
    [BossID.GURDY_JR] = "bossname_99.0_gurdyjr.png",
    [BossID.THE_HUSK] = "bossname_67.1_thehusk.png",
    [BossID.THE_BLOAT] = "bossname_68.1_bloat.png",
    [BossID.LOKII] = "bossname_69.1_lokii.png",
    [BossID.THE_BLIGHTED_OVUM] = "bossname_79.2_blightedovum.png",
    [BossID.TERATOMA] = "bossname_71.1_teratoma.png",
    [BossID.THE_WIDOW] = "bossname_100.0_widow.png",
    [BossID.MASK_OF_INFAMY] = "bossname_97.0_maskofinfamy.png",
    [BossID.THE_WRETCHED] = "bossname_100.1_thewretched.png",
    [BossID.PIN] = "bossname_62.0_pin.png",
    [BossID.CONQUEST] = "bossname_65.1_conquest.png",
    [BossID.ISAAC] = "playername_01_isaac.png",
    [BossID.BLUE_BABY] = "bossname_102.1_bluebaby.png",
    [BossID.DADDY_LONG_LEGS] = "bossname_101.0_daddylonglegs.png",
    [BossID.TRIACHNID] = "bossname_101.1_triachnid.png",
    [BossID.THE_HAUNT] = "bossname_260.0_thehaunt.png",
    [BossID.DINGLE] = "bossname_261.0_dingle.png",
    [BossID.MEGA_MAW] = "bossname_262.0_megamaw.png",
    [BossID.THE_GATE] = "bossname_263.0_megamaw2.png",
    [BossID.MEGA_FATTY] = "bossname_264.0_megafatty.png",
    [BossID.THE_CAGE] = "bossname_265.0_fatty2.png",
    [BossID.MAMA_GURDY] = "bossname_266.0_mamagurdy.png",
    [BossID.DARK_ONE] = "bossname_267.0_darkone.png",
    [BossID.THE_ADVERSARY] = "bossname_268.0_darkone2.png",
    [BossID.POLYCEPHALUS] = "bossname_269.0_polycephalus.png",
    [BossID.MR_FRED] = "bossname_270.0_megafred.png",
    [BossID.THE_LAMB] = "bossname_273.0_thelamb.png",
    [BossID.MEGA_SATAN] = "bossname_274.0_megasatan.png",
    [BossID.GURGLINGS] = "bossname_276.0_gurglings.png",
    [BossID.THE_STAIN] = "bossname_401.0_thestain.png",
    [BossID.BROWNIE] = "bossname_402.0_brownie.png",
    [BossID.THE_FORSAKEN] = "bossname_403.0_theforsaken.png",
    [BossID.LITTLE_HORN] = "bossname_404.0_littlehorn.png",
    [BossID.RAG_MAN] = "bossname_405.0_ragman.png",
    [BossID.ULTRA_GREED] = "bossname_406.0_ultragreed.png",
    [BossID.HUSH] = "bossname_407.0_hush.png",
    [BossID.DANGLE] = "bossname_dangle.png",
    [BossID.TURDLING] = "bossname_turdlings.png",
    [BossID.THE_FRAIL] = "bossname_thefrail.png",
    [BossID.RAG_MEGA] = "bossname_ragmega.png",
    [BossID.SISTERS_VIS] = "bossname_sisterssvis.png",
    [BossID.BIG_HORN] = "bossname_bighorn.png",
    [BossID.DELIRIUM] = "bossname_delirium.png",
    [BossID.THE_MATRIARCH] = "bossname_matriarch.png",
    [BossID.THE_PILE] = "bossname_polycephalus2.png",
    [BossID.REAP_CREEP] = "bossname_reapcreep.png",
    [BossID.LIL_BLUB] = "bossname_beelzeblub.png",
    [BossID.WORMWOOD] = "bossname_wormwood.png",
    [BossID.RAINMAKER] = "bossname_rainmaker.png",
    [BossID.THE_VISAGE] = "bossname_visage.png",
    [BossID.THE_SIREN] = "bossname_siren.png",
    [BossID.TUFF_TWINS] = "bossname_tufftwins.png",
    [BossID.THE_HERETIC] = "bossname_heretic.png",
    [BossID.HORNFEL] = "bossname_hornfel.png",
    [BossID.GREAT_GIDEON] = "bossname_gideon.png",
    [BossID.BABY_PLUM] = "bossname_babyplum.png",
    [BossID.THE_SCOURGE] = "bossname_scourge.png",
    [BossID.CHIMERA] = "bossname_chimera.png",
    [BossID.ROTGUT] = "bossname_rotgut.png",
    [BossID.MOTHER] = "bossname_mother.png",
    [BossID.MAUSOLEUM_MOM] = "bossname_45.0_mom.png",
    [BossID.MAUSOLEUM_MOMS_HEART] = "bossname_78.0_momsheart.png",
    [BossID.MIN_MIN] = "bossname_minmin.png",
    [BossID.CLOG] = "bossname_clog.png",
    [BossID.SINGE] = "bossname_singe.png",
    [BossID.BUMBINO] = "bossname_bumbino.png",
    [BossID.COLOSTOMIA] = "bossname_colostomia.png",
    [BossID.THE_SHELL] = "bossname_shell.png",
    [BossID.TURDLET] = "bossname_turdlet.png",
    [BossID.RAGLICH] = "bossname_raglich.png",
    [BossID.DOGMA] = "bossname_dogma.png",
    [BossID.BEAST] = "bossname_dogma.png",
    [BossID.HORNY_BOYS] = "bossname_hornyboys.png",
    [BossID.CLUTCH] = "bossname_clutch.png"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.bossPortraitPNGFileNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID
--- Used when rendering the "versusscreen.anm2" sprite.
____exports.BOSS_PORTRAIT_PNG_FILE_NAMES = {
    [BossID.MONSTRO] = "portrait_20.0_monstro.png",
    [BossID.LARRY_JR] = "portrait_19.0_larryjr.png",
    [BossID.CHUB] = "portrait_28.0_chub.png",
    [BossID.GURDY] = "portrait_36.0_gurdy.png",
    [BossID.MONSTRO_II] = "portrait_43.0_monstro2.png",
    [BossID.MOM] = "portrait_45.0_mom.png",
    [BossID.SCOLEX] = "portrait_62.1_scolex.png",
    [BossID.MOMS_HEART] = "portrait_78.0_momsheart.png",
    [BossID.FAMINE] = "portrait_63.0_famine.png",
    [BossID.PESTILENCE] = "portrait_64.0_pestilence.png",
    [BossID.WAR] = "portrait_65.0_war.png",
    [BossID.DEATH] = "portrait_66.0_death.png",
    [BossID.DUKE_OF_FLIES] = "portrait_67.0_dukeofflies.png",
    [BossID.PEEP] = "portrait_68.0_peep.png",
    [BossID.LOKI] = "portrait_69.0_loki.png",
    [BossID.BLASTOCYST] = "portrait_74.0_blastocyst.png",
    [BossID.GEMINI] = "portrait_79.0_gemini.png",
    [BossID.FISTULA] = "portrait_71.0_fistula.png",
    [BossID.GISH] = "portrait_43.1_gish.png",
    [BossID.STEVEN] = "portrait_79.1_steven.png",
    [BossID.CHAD] = "portrait_28.1_chad.png",
    [BossID.HEADLESS_HORSEMAN] = "portrait_82.0_headlesshorseman.png",
    [BossID.THE_FALLEN] = "portrait_81.0_thefallen.png",
    [BossID.SATAN] = "portrait_84.0_satan.png",
    [BossID.IT_LIVES] = "portrait_78.1_itlives.png",
    [BossID.THE_HOLLOW] = "portrait_19.1_thehollow.png",
    [BossID.THE_CARRION_QUEEN] = "portrait_28.2_carrionqueen.png",
    [BossID.GURDY_JR] = "portrait_99.0_gurdyjr.png",
    [BossID.THE_HUSK] = "portrait_67.1_thehusk.png",
    [BossID.THE_BLOAT] = "portrait_68.1_bloat.png",
    [BossID.LOKII] = "portrait_69.1_lokii.png",
    [BossID.THE_BLIGHTED_OVUM] = "portrait_79.2_blightedovum.png",
    [BossID.TERATOMA] = "portrait_71.1_teratoma.png",
    [BossID.THE_WIDOW] = "portrait_100.0_widow.png",
    [BossID.MASK_OF_INFAMY] = "portrait_97.0_maskofinfamy.png",
    [BossID.THE_WRETCHED] = "portrait_100.1_thewretched.png",
    [BossID.PIN] = "portrait_62.0_pin.png",
    [BossID.CONQUEST] = "portrait_65.1_conquest.png",
    [BossID.ISAAC] = "portrait_102.0_isaac.png",
    [BossID.BLUE_BABY] = "portrait_102.1_bluebaby.png",
    [BossID.DADDY_LONG_LEGS] = "portrait_101.0_daddylonglegs.png",
    [BossID.TRIACHNID] = "portrait_101.1_triachnid.png",
    [BossID.THE_HAUNT] = "portrait_260.0_thehaunt.png",
    [BossID.DINGLE] = "portrait_261.0_dingle.png",
    [BossID.MEGA_MAW] = "portrait_262.0_megamaw.png",
    [BossID.THE_GATE] = "portrait_263.0_megamaw2.png",
    [BossID.MEGA_FATTY] = "portrait_264.0_megafatty.png",
    [BossID.THE_CAGE] = "portrait_265.0_fatty2.png",
    [BossID.MAMA_GURDY] = "portrait_266.0_mamagurdy.png",
    [BossID.DARK_ONE] = "portrait_267.0_darkone.png",
    [BossID.THE_ADVERSARY] = "portrait_268.0_darkone2.png",
    [BossID.POLYCEPHALUS] = "portrait_269.0_polycephalus.png",
    [BossID.MR_FRED] = "portrait_270.0_megafred.png",
    [BossID.THE_LAMB] = "portrait_273.0_thelamb.png",
    [BossID.MEGA_SATAN] = "portrait_274.0_megasatan.png",
    [BossID.GURGLINGS] = "portrait_276.0_gurglings.png",
    [BossID.THE_STAIN] = "portrait_401.0_thestain.png",
    [BossID.BROWNIE] = "portrait_402.0_brownie.png",
    [BossID.THE_FORSAKEN] = "portrait_403.0_theforsaken.png",
    [BossID.LITTLE_HORN] = "portrait_404.0_littlehorn.png",
    [BossID.RAG_MAN] = "portrait_405.0_ragman.png",
    [BossID.ULTRA_GREED] = "portrait_406.0_ultragreed.png",
    [BossID.HUSH] = "portrait_407.0_hush.png",
    [BossID.DANGLE] = "portrait_dangle.png",
    [BossID.TURDLING] = "portrait_turdlings.png",
    [BossID.THE_FRAIL] = "portrait_thefrail.png",
    [BossID.RAG_MEGA] = "portrait_ragmega.png",
    [BossID.SISTERS_VIS] = "portrait_sistersvis.png",
    [BossID.BIG_HORN] = "portrait_bighorn.png",
    [BossID.DELIRIUM] = "portrait_delirium.png",
    [BossID.THE_MATRIARCH] = "portrait_matriarch.png",
    [BossID.THE_PILE] = "portrait_269.1_polycephalus2.png",
    [BossID.REAP_CREEP] = "portrait_900.0_reapcreep.png",
    [BossID.LIL_BLUB] = "portrait_901.0_beelzeblub.png",
    [BossID.WORMWOOD] = "portrait_902.0_wormwood.png",
    [BossID.RAINMAKER] = "portrait_902.0_rainmaker.png",
    [BossID.THE_VISAGE] = "portrait_903.0_visage.png",
    [BossID.THE_SIREN] = "portrait_904.0_siren.png",
    [BossID.TUFF_TWINS] = "portrait_19.100_tufftwins.png",
    [BossID.THE_HERETIC] = "portrait_905.0_heretic.png",
    [BossID.HORNFEL] = "portrait_906.0_hornfel.png",
    [BossID.GREAT_GIDEON] = "portrait_907.0_gideon.png",
    [BossID.BABY_PLUM] = "portrait_908.0_babyplum.png",
    [BossID.THE_SCOURGE] = "portrait_909.0_scourge.png",
    [BossID.CHIMERA] = "portrait_910.0_chimera.png",
    [BossID.ROTGUT] = "portrait_911.0_rotgut.png",
    [BossID.MOTHER] = "portrait_mother.png",
    [BossID.MAUSOLEUM_MOM] = "portrait_45.0_mom.png",
    [BossID.MAUSOLEUM_MOMS_HEART] = "portrait_78.0_momsheart.png",
    [BossID.MIN_MIN] = "portrait_minmin.png",
    [BossID.CLOG] = "portrait_clog.png",
    [BossID.SINGE] = "portrait_singe.png",
    [BossID.BUMBINO] = "portrait_bumbino.png",
    [BossID.COLOSTOMIA] = "portrait_colostomia.png",
    [BossID.THE_SHELL] = "portrait_shell.png",
    [BossID.TURDLET] = "portrait_turdlet.png",
    [BossID.RAGLICH] = "portrait_raglich.png",
    [BossID.DOGMA] = "portrait_dogma.png",
    [BossID.BEAST] = "portrait_dogma.png",
    [BossID.HORNY_BOYS] = "portrait_hornyboys.png",
    [BossID.CLUTCH] = "portrait_clutch.png"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.playerNamePNGFileNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
--- Used when rendering the "versusscreen.anm2" sprite.
____exports.PLAYER_NAME_PNG_FILE_NAMES = {
    [PlayerType.POSSESSOR] = nil,
    [PlayerType.ISAAC] = "playername_01_isaac.png",
    [PlayerType.MAGDALENE] = "playername_02_magdalene.png",
    [PlayerType.CAIN] = "playername_03_cain.png",
    [PlayerType.JUDAS] = "playername_04_judas.png",
    [PlayerType.BLUE_BABY] = "playername_06_bluebaby.png",
    [PlayerType.EVE] = "playername_05_eve.png",
    [PlayerType.SAMSON] = "playername_07_samson.png",
    [PlayerType.AZAZEL] = "playername_08_azazel.png",
    [PlayerType.LAZARUS] = "playername_10_lazarus.png",
    [PlayerType.EDEN] = "playername_09_eden.png",
    [PlayerType.LOST] = "playername_12_thelost.png",
    [PlayerType.LAZARUS_2] = "playername_10_lazarus.png",
    [PlayerType.DARK_JUDAS] = "playername_04_judas.png",
    [PlayerType.LILITH] = "playername_13_lilith.png",
    [PlayerType.KEEPER] = "playername_14_thekeeper.png",
    [PlayerType.APOLLYON] = "playername_15_apollyon.png",
    [PlayerType.FORGOTTEN] = "playername_16_theforgotten.png",
    [PlayerType.SOUL] = "playername_16_theforgotten.png",
    [PlayerType.BETHANY] = "playername_01x_bethany.png",
    [PlayerType.JACOB] = "playername_02x_jacob_esau.png",
    [PlayerType.ESAU] = "playername_02x_jacob_esau.png",
    [PlayerType.ISAAC_B] = "playername_01_isaac.png",
    [PlayerType.MAGDALENE_B] = "playername_02_magdalene.png",
    [PlayerType.CAIN_B] = "playername_03_cain.png",
    [PlayerType.JUDAS_B] = "playername_04_judas.png",
    [PlayerType.BLUE_BABY_B] = "playername_06_bluebaby.png",
    [PlayerType.EVE_B] = "playername_05_eve.png",
    [PlayerType.SAMSON_B] = "playername_07_samson.png",
    [PlayerType.AZAZEL_B] = "playername_08_azazel.png",
    [PlayerType.LAZARUS_B] = "playername_10_lazarus.png",
    [PlayerType.EDEN_B] = "playername_09_eden.png",
    [PlayerType.LOST_B] = "playername_12_thelost.png",
    [PlayerType.LILITH_B] = "playername_13_lilith.png",
    [PlayerType.KEEPER_B] = "playername_14_thekeeper.png",
    [PlayerType.APOLLYON_B] = "playername_15_apollyon.png",
    [PlayerType.FORGOTTEN_B] = "playername_16_theforgotten.png",
    [PlayerType.BETHANY_B] = "playername_01x_bethany.png",
    [PlayerType.JACOB_B] = "playername_02x_jacob.png",
    [PlayerType.LAZARUS_2_B] = "playername_10_lazarus.png",
    [PlayerType.JACOB_2_B] = "playername_02x_jacob.png",
    [PlayerType.SOUL_B] = "playername_16_theforgotten.png"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.playerPortraitPNGFileNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
--- Used when rendering the "versusscreen.anm2" sprite.
____exports.PLAYER_PORTRAIT_PNG_FILE_NAMES = {
    [PlayerType.POSSESSOR] = nil,
    [PlayerType.ISAAC] = "playerportrait_isaac.png",
    [PlayerType.MAGDALENE] = "playerportrait_magdalene.png",
    [PlayerType.CAIN] = "playerportrait_cain.png",
    [PlayerType.JUDAS] = "playerportrait_judas.png",
    [PlayerType.BLUE_BABY] = "playerportrait_bluebaby.png",
    [PlayerType.EVE] = "playerportrait_eve.png",
    [PlayerType.SAMSON] = "playerportrait_samson.png",
    [PlayerType.AZAZEL] = "playerportrait_azazel.png",
    [PlayerType.LAZARUS] = "playerportrait_lazarus.png",
    [PlayerType.EDEN] = "playerportrait_eden.png",
    [PlayerType.LOST] = "playerportrait_thelost.png",
    [PlayerType.LAZARUS_2] = "playerportrait_lazarus2.png",
    [PlayerType.DARK_JUDAS] = "playerportrait_darkjudas.png",
    [PlayerType.LILITH] = "playerportrait_lilith.png",
    [PlayerType.KEEPER] = "playerportrait_keeper.png",
    [PlayerType.APOLLYON] = "playerportrait_apollyon.png",
    [PlayerType.FORGOTTEN] = "playerportrait_theforgotten.png",
    [PlayerType.SOUL] = "playerportrait_theforgotten.png",
    [PlayerType.BETHANY] = "playerportrait_bethany.png",
    [PlayerType.JACOB] = "playerportrait_jacob.png",
    [PlayerType.ESAU] = "playerportrait_jacob.png",
    [PlayerType.ISAAC_B] = "playerportrait_isaac_b.png",
    [PlayerType.MAGDALENE_B] = "playerportrait_magdalene_b.png",
    [PlayerType.CAIN_B] = "playerportrait_cain_b.png",
    [PlayerType.JUDAS_B] = "playerportrait_judas_b.png",
    [PlayerType.BLUE_BABY_B] = "playerportrait_bluebaby_b.png",
    [PlayerType.EVE_B] = "playerportrait_eve_b.png",
    [PlayerType.SAMSON_B] = "playerportrait_samson_b.png",
    [PlayerType.AZAZEL_B] = "playerportrait_azazel_b.png",
    [PlayerType.LAZARUS_B] = "playerportrait_lazarus_b.png",
    [PlayerType.EDEN_B] = "playerportrait_eden_b.png",
    [PlayerType.LOST_B] = "playerportrait_thelost_b.png",
    [PlayerType.LILITH_B] = "playerportrait_lilith_b.png",
    [PlayerType.KEEPER_B] = "playerportrait_keeper_b.png",
    [PlayerType.APOLLYON_B] = "playerportrait_apollyon_b.png",
    [PlayerType.FORGOTTEN_B] = "playerportrait_theforgotten_b.png",
    [PlayerType.BETHANY_B] = "playerportrait_bethany_b.png",
    [PlayerType.JACOB_B] = "playerportrait_jacob_b.png",
    [PlayerType.LAZARUS_2_B] = "playerportrait_lazarus_b_dead.png",
    [PlayerType.JACOB_2_B] = "playerportrait_jacob_b.png",
    [PlayerType.SOUL_B] = "playerportrait_theforgotten_b.png"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.versusScreenBackgroundColors"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID
--- We arbitrarily specify a default color equal to that of Basement.
local DEFAULT_COLOR = Color(26 / 255, 14 / 255, 12 / 255)
--- These values are taken from StageAPI.
____exports.VERSUS_SCREEN_BACKGROUND_COLORS = {
    [StageID.SPECIAL_ROOMS] = DEFAULT_COLOR,
    [StageID.BASEMENT] = Color(26 / 255, 14 / 255, 12 / 255),
    [StageID.CELLAR] = Color(26 / 255, 17 / 255, 13 / 255),
    [StageID.BURNING_BASEMENT] = Color(28 / 255, 12 / 255, 10 / 255),
    [StageID.CAVES] = Color(18 / 255, 13 / 255, 8 / 255),
    [StageID.CATACOMBS] = Color(15 / 255, 10 / 255, 8 / 255),
    [StageID.FLOODED_CAVES] = Color(21 / 255, 28 / 255, 35 / 255),
    [StageID.DEPTHS] = Color(8 / 255, 8 / 255, 8 / 255),
    [StageID.NECROPOLIS] = Color(10 / 255, 6 / 255, 6 / 255),
    [StageID.DANK_DEPTHS] = Color(8 / 255, 8 / 255, 8 / 255),
    [StageID.WOMB] = Color(27 / 255, 3 / 255, 3 / 255),
    [StageID.UTERO] = Color(22 / 255, 6 / 255, 5 / 255),
    [StageID.SCARRED_WOMB] = Color(42 / 255, 19 / 255, 10 / 255),
    [StageID.BLUE_WOMB] = Color(26 / 255, 32 / 255, 40 / 255),
    [StageID.SHEOL] = Color(6 / 255, 6 / 255, 6 / 255),
    [StageID.CATHEDRAL] = Color(6 / 255, 13 / 255, 17 / 255),
    [StageID.DARK_ROOM] = Color(9 / 255, 4 / 255, 3 / 255),
    [StageID.CHEST] = Color(15 / 255, 9 / 255, 6 / 255),
    [StageID.VOID] = Color(0, 0, 0),
    [StageID.DOWNPOUR] = Color(29 / 255, 30 / 255, 32 / 255),
    [StageID.DROSS] = Color(35 / 255, 35 / 255, 29 / 255),
    [StageID.MINES] = Color(17 / 255, 15 / 255, 12 / 255),
    [StageID.ASHPIT] = Color(12 / 255, 10 / 255, 10 / 255),
    [StageID.MAUSOLEUM] = Color(14 / 255, 10 / 255, 14 / 255),
    [StageID.GEHENNA] = Color(15 / 255, 4 / 255, 4 / 255),
    [StageID.CORPSE] = Color(13 / 255, 14 / 255, 12 / 255),
    [StageID.MORTIS] = Color(13 / 255, 14 / 255, 12 / 255),
    [StageID.HOME] = DEFAULT_COLOR,
    [StageID.BACKWARDS] = DEFAULT_COLOR
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.versusScreenDirtSpotColors"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID
--- We arbitrarily specify a default color equal to that of Basement.
local DEFAULT_COLOR = Color(201 / 255, 114 / 255, 96 / 255)
--- These values are taken from StageAPI.
____exports.VERSUS_SCREEN_DIRT_SPOT_COLORS = {
    [StageID.SPECIAL_ROOMS] = DEFAULT_COLOR,
    [StageID.BASEMENT] = Color(201 / 255, 114 / 255, 96 / 255),
    [StageID.CELLAR] = Color(229 / 255, 157 / 255, 111 / 255),
    [StageID.BURNING_BASEMENT] = Color(252 / 255, 108 / 255, 90 / 255),
    [StageID.CAVES] = Color(167 / 255, 111 / 255, 75 / 255),
    [StageID.CATACOMBS] = Color(135 / 255, 90 / 255, 80 / 255),
    [StageID.FLOODED_CAVES] = Color(111 / 255, 147 / 255, 180 / 255),
    [StageID.DEPTHS] = Color(70 / 255, 70 / 255, 72 / 255),
    [StageID.NECROPOLIS] = Color(88 / 255, 67 / 255, 54 / 255),
    [StageID.DANK_DEPTHS] = Color(70 / 255, 70 / 255, 72 / 255),
    [StageID.WOMB] = Color(241 / 255, 28 / 255, 28 / 255),
    [StageID.UTERO] = Color(199 / 255, 60 / 255, 48 / 255),
    [StageID.SCARRED_WOMB] = Color(247 / 255, 152 / 255, 88 / 255),
    [StageID.BLUE_WOMB] = Color(157 / 255, 209 / 255, 255 / 255),
    [StageID.SHEOL] = Color(60 / 255, 54 / 255, 54 / 255),
    [StageID.CATHEDRAL] = Color(44 / 255, 100 / 255, 111 / 255),
    [StageID.DARK_ROOM] = Color(80 / 255, 38 / 255, 20 / 255),
    [StageID.CHEST] = Color(175 / 255, 108 / 255, 72 / 255),
    [StageID.VOID] = Color(70 / 255, 5 / 255, 5 / 255),
    [StageID.DOWNPOUR] = Color(149 / 255, 157 / 255, 167 / 255),
    [StageID.DROSS] = Color(179 / 255, 179 / 255, 143 / 255),
    [StageID.MINES] = Color(93 / 255, 85 / 255, 72 / 255),
    [StageID.ASHPIT] = Color(106 / 255, 102 / 255, 94 / 255),
    [StageID.MAUSOLEUM] = Color(70 / 255, 59 / 255, 72 / 255),
    [StageID.GEHENNA] = Color(59 / 255, 41 / 255, 41 / 255),
    [StageID.CORPSE] = Color(124 / 255, 134 / 255, 111 / 255),
    [StageID.MORTIS] = Color(124 / 255, 134 / 255, 111 / 255),
    [StageID.HOME] = DEFAULT_COLOR,
    [StageID.BACKWARDS] = DEFAULT_COLOR
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.CustomTrapdoors"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__ArraySome = ____lualib.__TS__ArraySome
local ____exports = {}
local anyPlayerPlayingExtraAnimation, shouldBeClosedFromStartingInRoomWithEnemies, openCustomTrapdoor, canPlayerInteractWithTrapdoor, setPlayerAttributes, dropTaintedForgotten, goToVanillaStage, ANIMATIONS_THAT_PREVENT_STAGE_TRAVEL
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction
local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction
local EntityCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityCollisionClass
local EntityGridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityGridCollisionClass
local EntityPartition = ____isaac_2Dtypescript_2Ddefinitions.EntityPartition
local GridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.GridCollisionClass
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local RoomTransitionAnim = ____isaac_2Dtypescript_2Ddefinitions.RoomTransitionAnim
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____GridEntityTypeCustom = require("lua_modules.isaacscript-common.dist.src.enums.private.GridEntityTypeCustom")
local GridEntityTypeCustom = ____GridEntityTypeCustom.GridEntityTypeCustom
local ____StageTravelState = require("lua_modules.isaacscript-common.dist.src.enums.private.StageTravelState")
local StageTravelState = ____StageTravelState.StageTravelState
local ____TrapdoorAnimation = require("lua_modules.isaacscript-common.dist.src.enums.private.TrapdoorAnimation")
local TrapdoorAnimation = ____TrapdoorAnimation.TrapdoorAnimation
local ____easing = require("lua_modules.isaacscript-common.dist.src.functions.easing")
local easeOutSine = ____easing.easeOutSine
local ____playerCenter = require("lua_modules.isaacscript-common.dist.src.functions.playerCenter")
local movePlayersToCenter = ____playerCenter.movePlayersToCenter
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getAllPlayers = ____playerIndex.getAllPlayers
local getOtherPlayers = ____playerIndex.getOtherPlayers
local isChildPlayer = ____playerIndex.isChildPlayer
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local isCharacter = ____players.isCharacter
local ____positionVelocity = require("lua_modules.isaacscript-common.dist.src.functions.positionVelocity")
local anyPlayerCloserThan = ____positionVelocity.anyPlayerCloserThan
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomGridIndex = ____roomData.getRoomGridIndex
local getRoomListIndex = ____roomData.getRoomListIndex
local ____roomTransition = require("lua_modules.isaacscript-common.dist.src.functions.roomTransition")
local teleport = ____roomTransition.teleport
local ____stage = require("lua_modules.isaacscript-common.dist.src.functions.stage")
local setStage = ____stage.setStage
local ____tstlClass = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
local getTSTLClassName = ____tstlClass.getTSTLClassName
local ____vector = require("lua_modules.isaacscript-common.dist.src.functions.vector")
local isVector = ____vector.isVector
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
function anyPlayerPlayingExtraAnimation(self)
    local players = getAllPlayers(nil)
    return __TS__ArraySome(
        players,
        function(____, player) return not player:IsExtraAnimationFinished() end
    )
end
function shouldBeClosedFromStartingInRoomWithEnemies(self, firstSpawn, roomClear)
    return firstSpawn and not roomClear
end
function openCustomTrapdoor(self, gridEntity, trapdoorDescription)
    trapdoorDescription.open = true
    local sprite = gridEntity:GetSprite()
    sprite:Play(TrapdoorAnimation.OPEN_ANIMATION, true)
end
function canPlayerInteractWithTrapdoor(self, player)
    local sprite = player:GetSprite()
    local animation = sprite:GetAnimation()
    return not player:IsHoldingItem() and not ANIMATIONS_THAT_PREVENT_STAGE_TRAVEL:has(animation)
end
function setPlayerAttributes(self, trapdoorPlayer, position)
    trapdoorPlayer.Position = position
    for ____, player in ipairs(getAllPlayers(nil)) do
        player.ControlsEnabled = false
        player.Velocity = VectorZero
        player.EntityCollisionClass = EntityCollisionClass.NONE
        player.GridCollisionClass = EntityGridCollisionClass.NONE
        player:StopExtraAnimation()
    end
end
function dropTaintedForgotten(self, player)
    if isCharacter(nil, player, PlayerType.FORGOTTEN_B) then
        local taintedSoul = player:GetOtherTwin()
        if taintedSoul ~= nil then
            taintedSoul:ThrowHeldEntity(VectorZero)
        end
    end
end
function goToVanillaStage(self, destinationStage, destinationStageType)
    setStage(nil, destinationStage, destinationStageType)
end
--- This also applies to crawl spaces. The value was determined through trial and error.
local TRAPDOOR_OPEN_DISTANCE = 60
local TRAPDOOR_OPEN_DISTANCE_AFTER_BOSS = TRAPDOOR_OPEN_DISTANCE * 2.5
local TRAPDOOR_BOSS_REACTION_FRAMES = 30
local TRAPDOOR_TOUCH_DISTANCE = 16.5
ANIMATIONS_THAT_PREVENT_STAGE_TRAVEL = __TS__New(Set, {"Happy", "Sad", "Jump"})
local PIXELATION_TO_BLACK_FRAMES = 52
local OTHER_PLAYER_TRAPDOOR_JUMP_DELAY_GAME_FRAMES = 6
local OTHER_PLAYER_TRAPDOOR_JUMP_DURATION_GAME_FRAMES = 5
____exports.CustomTrapdoors = __TS__Class()
local CustomTrapdoors = ____exports.CustomTrapdoors
CustomTrapdoors.name = "CustomTrapdoors"
__TS__ClassExtends(CustomTrapdoors, Feature)
function CustomTrapdoors.prototype.____constructor(self, customGridEntities, disableInputs, ponyDetection, roomClearFrame, runInNFrames, runNextRoom, stageHistory)
    Feature.prototype.____constructor(self)
    self.destinationFuncMap = __TS__New(Map)
    self.v = {
        run = {state = StageTravelState.NONE, stateRenderFrame = nil, customTrapdoorActivated = nil},
        level = {trapdoors = __TS__New(
            DefaultMap,
            function() return __TS__New(Map) end
        )}
    }
    self.blackSprite = Sprite()
    self.postRender = function()
        self:checkAllPlayersJumpComplete()
        self:checkPixelationToBlackComplete()
        self:checkSecondPixelationHalfWay()
        self:checkAllPlayersLayingDownComplete()
        self:drawBlackSprite()
    end
    self.postGridEntityCustomUpdateTrapdoor = function(____, gridEntity)
        local roomListIndex = getRoomListIndex(nil)
        local gridIndex = gridEntity:GetGridIndex()
        local roomTrapdoorMap = self.v.level.trapdoors:getAndSetDefault(roomListIndex)
        local trapdoorDescription = roomTrapdoorMap:get(gridIndex)
        if trapdoorDescription == nil then
            return
        end
        self:checkCustomTrapdoorOpenClose(gridEntity, trapdoorDescription)
        self:checkCustomTrapdoorPlayerTouched(gridEntity, trapdoorDescription)
    end
    self.postPEffectUpdateReordered = function(____, player)
        self:checkJumpComplete(player)
    end
    self.featuresUsed = {
        ISCFeature.CUSTOM_GRID_ENTITIES,
        ISCFeature.DISABLE_INPUTS,
        ISCFeature.PONY_DETECTION,
        ISCFeature.ROOM_CLEAR_FRAME,
        ISCFeature.RUN_IN_N_FRAMES,
        ISCFeature.RUN_NEXT_ROOM,
        ISCFeature.STAGE_HISTORY
    }
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE, {self.postGridEntityCustomUpdateTrapdoor, GridEntityTypeCustom.TRAPDOOR_CUSTOM}}, {ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectUpdateReordered}}}
    self.customGridEntities = customGridEntities
    self.disableInputs = disableInputs
    self.ponyDetection = ponyDetection
    self.roomClearFrame = roomClearFrame
    self.runInNFrames = runInNFrames
    self.runNextRoom = runNextRoom
    self.stageHistory = stageHistory
end
function CustomTrapdoors.prototype.checkAllPlayersJumpComplete(self)
    if self.v.run.state ~= StageTravelState.PLAYERS_JUMPING_DOWN then
        return
    end
    if anyPlayerPlayingExtraAnimation(nil) then
        return
    end
    local renderFrameCount = Isaac.GetFrameCount()
    local roomGridIndex = getRoomGridIndex(nil)
    self.v.run.state = StageTravelState.PIXELATION_TO_BLACK
    self.v.run.stateRenderFrame = renderFrameCount
    teleport(nil, roomGridIndex, Direction.NO_DIRECTION, RoomTransitionAnim.PIXELATION)
end
function CustomTrapdoors.prototype.checkPixelationToBlackComplete(self)
    if self.v.run.state ~= StageTravelState.PIXELATION_TO_BLACK or self.v.run.stateRenderFrame == nil then
        return
    end
    local hud = game:GetHUD()
    local renderFrameCount = Isaac.GetFrameCount()
    local renderFrameScreenBlack = self.v.run.stateRenderFrame + PIXELATION_TO_BLACK_FRAMES
    if renderFrameCount < renderFrameScreenBlack then
        return
    end
    self.v.run.state = StageTravelState.WAITING_FOR_FIRST_PIXELATION_TO_END
    hud:SetVisible(false)
    self.runInNFrames:runNextGameFrame(function()
        local level = game:GetLevel()
        local startingRoomIndex = level:GetStartingRoomIndex()
        local futureRenderFrameCount = Isaac.GetFrameCount()
        self.v.run.state = StageTravelState.WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY
        self.v.run.stateRenderFrame = futureRenderFrameCount
        self:goToCustomTrapdoorDestination()
        teleport(nil, startingRoomIndex, Direction.NO_DIRECTION, RoomTransitionAnim.PIXELATION)
    end)
end
function CustomTrapdoors.prototype.goToCustomTrapdoorDestination(self)
    if self.v.run.customTrapdoorActivated == nil then
        self.v.run.customTrapdoorActivated = {
            destinationName = nil,
            destinationStage = LevelStage.BASEMENT_1,
            destinationStageType = StageType.ORIGINAL,
            open = true,
            firstSpawn = true
        }
    end
    local destinationFunc = self:getDestinationFunc(self.v.run.customTrapdoorActivated)
    destinationFunc(nil, self.v.run.customTrapdoorActivated.destinationStage, self.v.run.customTrapdoorActivated.destinationStageType)
end
function CustomTrapdoors.prototype.getDestinationFunc(self, customTrapdoorDescription)
    if customTrapdoorDescription.destinationName == nil then
        return goToVanillaStage
    end
    local destinationFunc = self.destinationFuncMap:get(customTrapdoorDescription.destinationName)
    if destinationFunc == nil then
        return goToVanillaStage
    end
    return destinationFunc
end
function CustomTrapdoors.prototype.checkSecondPixelationHalfWay(self)
    if self.v.run.state ~= StageTravelState.WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY or self.v.run.stateRenderFrame == nil then
        return
    end
    local hud = game:GetHUD()
    local renderFrameCount = Isaac.GetFrameCount()
    local renderFrameScreenBlack = self.v.run.stateRenderFrame + PIXELATION_TO_BLACK_FRAMES
    if renderFrameCount < renderFrameScreenBlack then
        return
    end
    self.v.run.state = StageTravelState.PIXELATION_TO_ROOM
    hud:SetVisible(true)
    self.runNextRoom:runNextRoom(function()
        self.v.run.state = StageTravelState.PLAYERS_LAYING_DOWN
        movePlayersToCenter(nil)
        for ____, player in ipairs(getAllPlayers(nil)) do
            player:AnimateAppear()
            player.EntityCollisionClass = EntityCollisionClass.ALL
            player.GridCollisionClass = EntityGridCollisionClass.GROUND
        end
    end)
end
function CustomTrapdoors.prototype.checkAllPlayersLayingDownComplete(self)
    if self.v.run.state ~= StageTravelState.PLAYERS_LAYING_DOWN then
        return
    end
    if anyPlayerPlayingExtraAnimation(nil) then
        return
    end
    self.v.run.state = StageTravelState.NONE
    local tstlClassName = getTSTLClassName(nil, self)
    if tstlClassName == nil then
        error("Failed to find get the class name for the custom trapdoor feature.")
    end
    self.disableInputs:enableAllInputs(tstlClassName)
end
function CustomTrapdoors.prototype.drawBlackSprite(self)
    if self.v.run.state ~= StageTravelState.WAITING_FOR_FIRST_PIXELATION_TO_END and self.v.run.state ~= StageTravelState.WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY then
        return
    end
    if not self.blackSprite:IsLoaded() then
        self.blackSprite:Load("gfx/ui/boss/versusscreen.anm2", true)
        self.blackSprite:SetFrame("Scene", 0)
        self.blackSprite.Scale = Vector(100, 100)
    end
    self.blackSprite:RenderLayer(0, VectorZero)
end
function CustomTrapdoors.prototype.checkCustomTrapdoorOpenClose(self, gridEntity, trapdoorDescription)
    if trapdoorDescription.open then
        return
    end
    if self:shouldTrapdoorOpen(gridEntity, trapdoorDescription.firstSpawn) then
        openCustomTrapdoor(nil, gridEntity, trapdoorDescription)
    end
end
function CustomTrapdoors.prototype.shouldTrapdoorOpen(self, gridEntity, firstSpawn)
    local room = game:GetRoom()
    local roomClear = room:IsClear()
    return not anyPlayerCloserThan(nil, gridEntity.Position, TRAPDOOR_OPEN_DISTANCE) and not self:isPlayerCloseAfterBoss(gridEntity.Position) and not shouldBeClosedFromStartingInRoomWithEnemies(nil, firstSpawn, roomClear)
end
function CustomTrapdoors.prototype.isPlayerCloseAfterBoss(self, position)
    local gameFrameCount = game:GetFrameCount()
    local room = game:GetRoom()
    local roomType = room:GetType()
    local roomClearGameFrame = self.roomClearFrame:getRoomClearGameFrame()
    if roomType ~= RoomType.BOSS or roomClearGameFrame == nil or gameFrameCount >= roomClearGameFrame + TRAPDOOR_BOSS_REACTION_FRAMES then
        return false
    end
    return anyPlayerCloserThan(nil, position, TRAPDOOR_OPEN_DISTANCE_AFTER_BOSS)
end
function CustomTrapdoors.prototype.checkCustomTrapdoorPlayerTouched(self, gridEntity, trapdoorDescription)
    if self.v.run.state ~= StageTravelState.NONE then
        return
    end
    if not trapdoorDescription.open then
        return
    end
    local playersTouching = Isaac.FindInRadius(gridEntity.Position, TRAPDOOR_TOUCH_DISTANCE, EntityPartition.PLAYER)
    for ____, playerEntity in ipairs(playersTouching) do
        do
            local player = playerEntity:ToPlayer()
            if player == nil then
                goto __continue42
            end
            if not self.ponyDetection:isPlayerUsingPony(player) and not isChildPlayer(nil, player) and canPlayerInteractWithTrapdoor(nil, player) then
                self:playerTouchedCustomTrapdoor(gridEntity, trapdoorDescription, player)
                return
            end
        end
        ::__continue42::
    end
end
function CustomTrapdoors.prototype.playerTouchedCustomTrapdoor(self, gridEntity, trapdoorDescription, player)
    self.v.run.state = StageTravelState.PLAYERS_JUMPING_DOWN
    self.v.run.customTrapdoorActivated = trapdoorDescription
    local tstlClassName = getTSTLClassName(nil, self)
    if tstlClassName == nil then
        error("Failed to find get the class name for the custom trapdoor feature.")
    end
    local whitelist = __TS__New(Set, {ButtonAction.CONSOLE})
    self.disableInputs:disableAllInputsExceptFor(tstlClassName, whitelist)
    setPlayerAttributes(nil, player, gridEntity.Position)
    dropTaintedForgotten(nil, player)
    player:PlayExtraAnimation("Trapdoor")
    local otherPlayers = getOtherPlayers(nil, player)
    __TS__ArrayForEach(
        otherPlayers,
        function(____, otherPlayer, i)
            local gameFramesToWaitBeforeJumping = OTHER_PLAYER_TRAPDOOR_JUMP_DELAY_GAME_FRAMES * (i + 1)
            local otherPlayerPtr = EntityPtr(otherPlayer)
            self.runInNFrames:runInNGameFrames(
                function()
                    self:startDelayedJump(otherPlayerPtr, gridEntity.Position)
                end,
                gameFramesToWaitBeforeJumping
            )
        end
    )
end
function CustomTrapdoors.prototype.startDelayedJump(self, entityPtr, trapdoorPosition)
    local entity = entityPtr.Ref
    if entity == nil then
        return
    end
    local player = entity:ToPlayer()
    if player == nil then
        return
    end
    player:PlayExtraAnimation("Trapdoor")
    self:adjustPlayerPositionToTrapdoor(entityPtr, player.Position, trapdoorPosition)
end
function CustomTrapdoors.prototype.adjustPlayerPositionToTrapdoor(self, entityPtr, startPos, endPos)
    if self.v.run.state ~= StageTravelState.PLAYERS_JUMPING_DOWN then
        return
    end
    local entity = entityPtr.Ref
    if entity == nil then
        return
    end
    local player = entity:ToPlayer()
    if player == nil then
        return
    end
    self.runInNFrames:runNextRenderFrame(function()
        self:adjustPlayerPositionToTrapdoor(entityPtr, startPos, endPos)
    end)
    local sprite = player:GetSprite()
    if sprite:IsFinished("Trapdoor") then
        player.Position = endPos
        player.Velocity = VectorZero
        return
    end
    local frame = sprite:GetFrame()
    if frame >= OTHER_PLAYER_TRAPDOOR_JUMP_DURATION_GAME_FRAMES then
        player.Position = endPos
        player.Velocity = VectorZero
        return
    end
    local totalDifference = endPos - startPos
    local progress = frame / OTHER_PLAYER_TRAPDOOR_JUMP_DURATION_GAME_FRAMES
    local easeProgress = easeOutSine(nil, progress)
    local differenceForThisFrame = totalDifference * easeProgress
    local targetPosition = startPos + differenceForThisFrame
    player.Position = targetPosition
    player.Velocity = VectorZero
end
function CustomTrapdoors.prototype.checkJumpComplete(self, player)
    if self.v.run.state ~= StageTravelState.PLAYERS_JUMPING_DOWN then
        return
    end
    local sprite = player:GetSprite()
    if sprite:IsFinished("Trapdoor") then
        player.Visible = false
    end
end
function CustomTrapdoors.prototype.shouldTrapdoorSpawnOpen(self, gridEntity, firstSpawn)
    local room = game:GetRoom()
    local roomFrameCount = room:GetFrameCount()
    local roomClear = room:IsClear()
    if roomFrameCount > 0 then
        return false
    end
    if not roomClear then
        return false
    end
    return self:shouldTrapdoorOpen(gridEntity, firstSpawn)
end
function CustomTrapdoors.prototype.registerCustomTrapdoorDestination(self, destinationName, destinationFunc)
    if self.destinationFuncMap:has(destinationName) then
        error(("Failed to register a custom trapdoor type of " .. destinationName) .. " since this custom trapdoor type has already been registered.")
    end
    self.destinationFuncMap:set(destinationName, destinationFunc)
end
function CustomTrapdoors.prototype.spawnCustomTrapdoor(self, gridIndexOrPosition, destinationName, destinationStage, destinationStageType, anm2Path, spawnOpen)
    if anm2Path == nil then
        anm2Path = "gfx/grid/door_11_trapdoor.anm2"
    end
    if destinationName ~= nil and not self.destinationFuncMap:has(destinationName) then
        error(("Failed to spawn a custom trapdoor with a destination of \"" .. destinationName) .. "\" since a destination with that name has not been registered with the \"registerCustomTrapdoor\" function.")
    end
    if destinationStage == nil then
        destinationStage = self.stageHistory:getNextStageWithHistory()
    end
    if destinationStageType == nil then
        destinationStageType = self.stageHistory:getNextStageTypeWithHistory()
    end
    local room = game:GetRoom()
    local roomFrameCount = room:GetFrameCount()
    local roomListIndex = getRoomListIndex(nil)
    local gridIndex = isVector(nil, gridIndexOrPosition) and room:GetGridIndex(gridIndexOrPosition) or gridIndexOrPosition
    local gridEntity = self.customGridEntities:spawnCustomGridEntity(
        GridEntityTypeCustom.TRAPDOOR_CUSTOM,
        gridIndexOrPosition,
        GridCollisionClass.NONE,
        anm2Path,
        TrapdoorAnimation.OPENED
    )
    local firstSpawn = roomFrameCount ~= 0
    local ____temp_0
    if spawnOpen == nil then
        ____temp_0 = self:shouldTrapdoorSpawnOpen(gridEntity, firstSpawn)
    else
        ____temp_0 = spawnOpen
    end
    local open = ____temp_0
    local roomTrapdoorMap = self.v.level.trapdoors:getAndSetDefault(roomListIndex)
    local customTrapdoorDescription = {
        destinationName = destinationName,
        destinationStage = destinationStage,
        destinationStageType = destinationStageType,
        open = open,
        firstSpawn = firstSpawn
    }
    roomTrapdoorMap:set(gridIndex, customTrapdoorDescription)
    local sprite = gridEntity:GetSprite()
    local animation = open and TrapdoorAnimation.OPENED or TrapdoorAnimation.CLOSED
    sprite:Play(animation, true)
    return gridEntity
end
__TS__Decorate({Exported}, CustomTrapdoors.prototype, "registerCustomTrapdoorDestination", true)
__TS__Decorate({Exported}, CustomTrapdoors.prototype, "spawnCustomTrapdoor", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.private.GridEntityTypeCustom"] = function(...) 
local ____exports = {}
____exports.GridEntityTypeCustom = {TRAPDOOR_CUSTOM = 1000}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.private.StageTravelState"] = function(...) 
local ____exports = {}
____exports.StageTravelState = {}
____exports.StageTravelState.NONE = 0
____exports.StageTravelState[____exports.StageTravelState.NONE] = "NONE"
____exports.StageTravelState.PLAYERS_JUMPING_DOWN = 1
____exports.StageTravelState[____exports.StageTravelState.PLAYERS_JUMPING_DOWN] = "PLAYERS_JUMPING_DOWN"
____exports.StageTravelState.PIXELATION_TO_BLACK = 2
____exports.StageTravelState[____exports.StageTravelState.PIXELATION_TO_BLACK] = "PIXELATION_TO_BLACK"
____exports.StageTravelState.WAITING_FOR_FIRST_PIXELATION_TO_END = 3
____exports.StageTravelState[____exports.StageTravelState.WAITING_FOR_FIRST_PIXELATION_TO_END] = "WAITING_FOR_FIRST_PIXELATION_TO_END"
____exports.StageTravelState.WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY = 4
____exports.StageTravelState[____exports.StageTravelState.WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY] = "WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY"
____exports.StageTravelState.PIXELATION_TO_ROOM = 5
____exports.StageTravelState[____exports.StageTravelState.PIXELATION_TO_ROOM] = "PIXELATION_TO_ROOM"
____exports.StageTravelState.PLAYERS_LAYING_DOWN = 6
____exports.StageTravelState[____exports.StageTravelState.PLAYERS_LAYING_DOWN] = "PLAYERS_LAYING_DOWN"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.private.TrapdoorAnimation"] = function(...) 
local ____exports = {}
____exports.TrapdoorAnimation = {}
____exports.TrapdoorAnimation.OPENED = "Opened"
____exports.TrapdoorAnimation.CLOSED = "Closed"
____exports.TrapdoorAnimation.OPEN_ANIMATION = "Open Animation"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.easing"] = function(...) 
local ____exports = {}
--- From: https://easings.net/#easeInOutSine
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeOutBounce(self, time)
    local n1 = 7.5625
    local d1 = 2.75
    if time < 1 / d1 then
        return n1 * time * time
    end
    if time < 2 / d1 then
        time = time - 1.5 / d1
        return n1 * time * time + 0.75
    end
    if time < 2.5 / d1 then
        time = time - 2.25 / d1
        return n1 * time * time + 0.9375
    end
    time = time - 2.625 / d1
    return n1 * time * time + 0.984375
end
--- From: https://easings.net/#easeInSine
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInSine(self, time)
    return 1 - math.cos(time * math.pi / 2)
end
--- From: https://easings.net/#easeOutSine
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeOutSine(self, time)
    return math.sin(time * math.pi / 2)
end
--- From: https://easings.net/#easeInOutSine
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInOutSine(self, time)
    return -(math.cos(math.pi * time) - 1) / 2
end
--- From: https://easings.net/#easeInCubic
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInCubic(self, time)
    return time * time * time
end
--- From: https://easings.net/#easeOutCubic
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeOutCubic(self, time)
    return 1 - (1 - time) ^ 3
end
--- From: https://easings.net/#easeInOutCubic
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInOutCubic(self, time)
    return time < 0.5 and 4 * time * time * time or 1 - (-2 * time + 2) ^ 3 / 2
end
--- From: https://easings.net/#easeInQuint
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInQuint(self, time)
    return time * time * time * time * time
end
--- From: https://easings.net/#easeOutQuint
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeOutQuint(self, time)
    return 1 - (1 - time) ^ 5
end
--- From: https://easings.net/#easeInOutQuint
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInOutQuint(self, time)
    return time < 0.5 and 16 * time * time * time * time * time or 1 - (-2 * time + 2) ^ 5 / 2
end
--- From: https://easings.net/#easeInCirc
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInCirc(self, time)
    return 1 - math.sqrt(1 - time ^ 2)
end
--- From: https://easings.net/#easeOutCirc
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeOutCirc(self, time)
    return math.sqrt(1 - (time - 1) ^ 2)
end
--- From: https://easings.net/#easeInOutCirc
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInOutCirc(self, time)
    return time < 0.5 and (1 - math.sqrt(1 - (2 * time) ^ 2)) / 2 or (math.sqrt(1 - (-2 * time + 2) ^ 2) + 1) / 2
end
--- From: https://easings.net/#easeInElastic
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInElastic(self, time)
    local c4 = 2 * math.pi / 3
    return time == 0 and 0 or (time == 1 and 1 or -2 ^ (10 * time - 10) * math.sin((time * 10 - 10.75) * c4))
end
--- From: https://easings.net/#easeOutElastic
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeOutElastic(self, time)
    local c4 = 2 * math.pi / 3
    return time == 0 and 0 or (time == 1 and 1 or 2 ^ (-10 * time) * math.sin((time * 10 - 0.75) * c4) + 1)
end
--- From: https://easings.net/#easeInOutElastic
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInOutElastic(self, time)
    local c5 = 2 * math.pi / 4.5
    return time == 0 and 0 or (time == 1 and 1 or (time < 0.5 and -(2 ^ (20 * time - 10) * math.sin((20 * time - 11.125) * c5)) / 2 or 2 ^ (-20 * time + 10) * math.sin((20 * time - 11.125) * c5) / 2 + 1))
end
--- From: https://easings.net/#easeInQuad
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInQuad(self, time)
    return time * time
end
--- From: https://easings.net/#easeOutQuad
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeOutQuad(self, time)
    return 1 - (1 - time) * (1 - time)
end
--- From: https://easings.net/#easeInOutQuad
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInOutQuad(self, time)
    return time < 0.5 and 2 * time * time or 1 - (-2 * time + 2) ^ 2 / 2
end
--- From: https://easings.net/#easeInQuart
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInQuart(self, time)
    return time * time * time * time
end
--- From: https://easings.net/#easeOutQuart
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeOutQuart(self, time)
    return 1 - (1 - time) ^ 4
end
--- From: https://easings.net/#easeInOutQuart
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInOutQuart(self, time)
    return time < 0.5 and 8 * time * time * time * time or 1 - (-2 * time + 2) ^ 4 / 2
end
--- From: https://easings.net/#easeInExpo
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInExpo(self, time)
    return time == 0 and 0 or 2 ^ (10 * time - 10)
end
--- From: https://easings.net/#easeOutExpo
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeOutExpo(self, time)
    return time == 1 and 1 or 1 - 2 ^ (-10 * time)
end
--- From: https://easings.net/#easeInOutExpo
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInOutExpo(self, time)
    return time == 0 and 0 or (time == 1 and 1 or (time < 0.5 and 2 ^ (20 * time - 10) / 2 or (2 - 2 ^ (-20 * time + 10)) / 2))
end
--- From: https://easings.net/#easeInBack
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInBack(self, time)
    local c1 = 1.70158
    local c3 = c1 + 1
    return c3 * time * time * time - c1 * time * time
end
--- From: https://easings.net/#easeOutBack
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeOutBack(self, time)
    local c1 = 1.70158
    local c3 = c1 + 1
    return 1 + c3 * (time - 1) ^ 3 + c1 * (time - 1) ^ 2
end
--- From: https://easings.net/#easeInOutBack
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInOutBack(self, time)
    local c1 = 1.70158
    local c2 = c1 * 1.525
    return time < 0.5 and (2 * time) ^ 2 * ((c2 + 1) * 2 * time - c2) / 2 or ((2 * time - 2) ^ 2 * ((c2 + 1) * (time * 2 - 2) + c2) + 2) / 2
end
--- From: https://easings.net/#easeInBounce
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInBounce(self, time)
    return 1 - ____exports.easeOutBounce(nil, 1 - time)
end
--- From: https://easings.net/#easeInOutBounce
-- 
-- @param time A value between 0 and 1 that represents how far along you are in the transition.
function ____exports.easeInOutBounce(self, time)
    return time < 0.5 and (1 - ____exports.easeOutBounce(nil, 1 - 2 * time)) / 2 or (1 + ____exports.easeOutBounce(nil, 2 * time - 1)) / 2
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.playerCenter"] = function(...) 
local ____exports = {}
local movePlayerAndTheirFamiliars
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local NEW_FLOOR_STARTING_POSITION_GREED_MODE = ____constants.NEW_FLOOR_STARTING_POSITION_GREED_MODE
local NEW_FLOOR_STARTING_POSITION_NORMAL_MODE = ____constants.NEW_FLOOR_STARTING_POSITION_NORMAL_MODE
local ____familiars = require("lua_modules.isaacscript-common.dist.src.functions.familiars")
local getPlayerFamiliars = ____familiars.getPlayerFamiliars
local ____math = require("lua_modules.isaacscript-common.dist.src.functions.math")
local getCircleDiscretizedPoints = ____math.getCircleDiscretizedPoints
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getAllPlayers = ____playerIndex.getAllPlayers
function movePlayerAndTheirFamiliars(self, player, position)
    player.Position = position
    local familiars = getPlayerFamiliars(nil, player)
    for ____, familiar in ipairs(familiars) do
        familiar.Position = position
    end
end
local CIRCLE_RADIUS_BETWEEN_PLAYERS = 50
--- Helper function to move all of the players to where they would normally go when arriving at a new
-- floor. (In normal mode, this is the center of the room. In Greed Mode, this is below the top
-- door.)
-- 
-- If there is more than one player, they will be distributed around the center in a circle.
-- 
-- This function emulates what happens in the vanilla game when you travel to a new floor.
function ____exports.movePlayersToCenter(self)
    local isGreedMode = game:IsGreedMode()
    local startingPosition = isGreedMode and NEW_FLOOR_STARTING_POSITION_GREED_MODE or NEW_FLOOR_STARTING_POSITION_NORMAL_MODE
    local players = getAllPlayers(nil)
    local firstPlayer = players[1]
    if firstPlayer == nil then
        return
    end
    if #players == 1 then
        movePlayerAndTheirFamiliars(nil, firstPlayer, startingPosition)
        return
    end
    local circlePoints = getCircleDiscretizedPoints(
        nil,
        startingPosition,
        CIRCLE_RADIUS_BETWEEN_PLAYERS,
        #players,
        1,
        1,
        Direction.LEFT
    )
    do
        local i = 0
        while i < #players do
            local player = players[i + 1]
            local circlePosition = circlePoints[i + 1]
            if player ~= nil and circlePosition ~= nil then
                player.Position = circlePosition
            end
            i = i + 1
        end
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.familiars"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local itemConfig = ____cachedClasses.itemConfig
local ____familiarsThatShootPlayerTearsSet = require("lua_modules.isaacscript-common.dist.src.sets.familiarsThatShootPlayerTearsSet")
local FAMILIARS_THAT_SHOOT_PLAYER_TEARS_SET = ____familiarsThatShootPlayerTearsSet.FAMILIARS_THAT_SHOOT_PLAYER_TEARS_SET
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntities = ____entities.getEntities
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getFamiliars = ____entitiesSpecific.getFamiliars
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local newRNG = ____rng.newRNG
--- Instead of generating a new RNG object every time we need to spawn a new familiar, we instead
-- re-use the same RNG object. This makes it less likely that the `InitSeed` of the familiar will
-- overlap, since we are "nexting" instead of doing a fresh reroll.
local familiarGenerationRNG = newRNG(nil)
--- Helper function to add and remove familiars based on a target amount that you specify.
-- 
-- This is a convenience wrapper around the `EntityPlayer.CheckFamiliar` method. Use this helper
-- function instead so that you do not have to retrieve the `ItemConfigItem` and so that you do not
-- specify an incorrect RNG object. (The vanilla method is bugged in that it does not increment the
-- RNG object; see the documentation of the method for more details.)
-- 
-- This function is meant to be called in the `EVALUATE_CACHE` callback (when the cache flag is
-- equal to `CacheFlag.FAMILIARS`).
-- 
-- Note that this function is only meant to be used in special circumstances where the familiar
-- count is completely custom and does not correspond to the amount of collectibles. For the general
-- case, use the `checkFamiliarFromCollectibles` helper function instead.
-- 
-- Note that this will spawn familiars with a completely random `InitSeed`. When calculating random
-- events for this familiar, you should use a data structure that maps familiar `InitSeed` to RNG
-- objects that are initialized based on the seed from
-- `EntityPlayer.GetCollectibleRNG(collectibleType)`.
-- 
-- @param player The player that owns the familiars.
-- @param collectibleType The collectible type of the collectible associated with this familiar.
-- @param targetCount The number of familiars that should exist. This function will add or remove
-- familiars until it matches the target count.
-- @param familiarVariant The variant of the familiar to spawn or remove.
-- @param familiarSubType Optional. The sub-type of the familiar to spawn or remove. If not
-- specified, it will search for existing familiars of all sub-types, and
-- spawn new familiars with a sub-type of 0.
function ____exports.checkFamiliar(self, player, collectibleType, targetCount, familiarVariant, familiarSubType)
    familiarGenerationRNG:Next()
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    player:CheckFamiliar(
        familiarVariant,
        targetCount,
        familiarGenerationRNG,
        itemConfigItem,
        familiarSubType
    )
end
--- Helper function to add and remove familiars based on the amount of associated collectibles that a
-- player has.
-- 
-- Use this helper function instead of invoking the `EntityPlayer.CheckFamiliar` method directly so
-- that the target count is handled automatically.
-- 
-- This function is meant to be called in the `EVALUATE_CACHE` callback (when the cache flag is
-- equal to `CacheFlag.FAMILIARS`).
-- 
-- Use this function when the amount of familiars should be equal to the amount of associated
-- collectibles that the player has (plus any extras from having used Box of Friends or Monster
-- Manual). If you instead need to have a custom amount of familiars, use the `checkFamiliars`
-- function instead.
-- 
-- Note that this will spawn familiars with a completely random `InitSeed`. When calculating random
-- events for this familiar, you should use a data structure that maps familiar `InitSeed` to RNG
-- objects that are initialized based on the seed from
-- `EntityPlayer.GetCollectibleRNG(collectibleType)`.
-- 
-- @param player The player that owns the familiars and collectibles.
-- @param collectibleType The collectible type of the collectible associated with this familiar.
-- @param familiarVariant The variant of the familiar to spawn or remove.
-- @param familiarSubType Optional. The sub-type of the familiar to spawn or remove. If not
-- specified, it will search for existing familiars of all sub-types, and
-- spawn new familiars with a sub-type of 0.
function ____exports.checkFamiliarFromCollectibles(self, player, collectibleType, familiarVariant, familiarSubType)
    local numCollectibles = player:GetCollectibleNum(collectibleType)
    local effects = player:GetEffects()
    local numCollectibleEffects = effects:GetCollectibleEffectNum(collectibleType)
    local targetCount = numCollectibles + numCollectibleEffects
    ____exports.checkFamiliar(
        nil,
        player,
        collectibleType,
        targetCount,
        familiarVariant,
        familiarSubType
    )
end
--- Helper function to get only the familiars that belong to a specific player.
function ____exports.getPlayerFamiliars(self, player)
    local playerPtrHash = GetPtrHash(player)
    local familiars = getFamiliars(nil)
    return __TS__ArrayFilter(
        familiars,
        function(____, familiar)
            local familiarPlayerPtrHash = GetPtrHash(familiar.Player)
            return familiarPlayerPtrHash == playerPtrHash
        end
    )
end
--- Helper function to get the corresponding "Siren Helper" entity for a stolen familiar.
-- 
-- When The Siren boss "steals" your familiars, a hidden "Siren Helper" entity is spawned to control
-- each familiar stolen. (Checking for the presence of this entity seems to be the only way to
-- detect when the Siren steals a familiar.)
-- 
-- @param familiar The familiar to be checked.
-- @returns Returns the hidden "Siren Helper" entity corresponding to the given familiar, if it
-- exists. Returns undefined otherwise.
function ____exports.getSirenHelper(self, familiar)
    local familiarPtrHash = GetPtrHash(familiar)
    local sirenHelpers = getEntities(nil, EntityType.SIREN_HELPER)
    return __TS__ArrayFind(
        sirenHelpers,
        function(____, sirenHelper) return sirenHelper.Target ~= nil and GetPtrHash(sirenHelper.Target) == familiarPtrHash end
    )
end
--- Helper function to detect if the given familiar is "stolen" by The Siren boss.
-- 
-- This function is useful because some familiars may need to behave differently when under The
-- Siren's control (e.g. if they auto-target enemies).
function ____exports.isFamiliarStolenBySiren(self, familiar)
    local sirenHelper = ____exports.getSirenHelper(nil, familiar)
    return sirenHelper ~= nil
end
--- Helper function to check if a familiar is the type that shoots tears that mimic the players
-- tears, like Incubus, Fate's Reward, Sprinkler, and so on.
function ____exports.isFamiliarThatShootsPlayerTears(self, familiar)
    return FAMILIARS_THAT_SHOOT_PLAYER_TEARS_SET:has(familiar.Variant)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.sets.familiarsThatShootPlayerTearsSet"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant
____exports.FAMILIARS_THAT_SHOOT_PLAYER_TEARS_SET = __TS__New(Set, {
    FamiliarVariant.SCISSORS,
    FamiliarVariant.INCUBUS,
    FamiliarVariant.FATES_REWARD,
    FamiliarVariant.SPRINKLER,
    FamiliarVariant.LOST_SOUL,
    FamiliarVariant.TWISTED_BABY,
    FamiliarVariant.BLOOD_BABY,
    FamiliarVariant.DECAP_ATTACK
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.DebugDisplay"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local printEnabled = ____utils.printEnabled
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____DebugDisplayBomb = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayBomb")
local DebugDisplayBomb = ____DebugDisplayBomb.DebugDisplayBomb
local ____DebugDisplayDoor = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayDoor")
local DebugDisplayDoor = ____DebugDisplayDoor.DebugDisplayDoor
local ____DebugDisplayEffect = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayEffect")
local DebugDisplayEffect = ____DebugDisplayEffect.DebugDisplayEffect
local ____DebugDisplayFamiliar = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayFamiliar")
local DebugDisplayFamiliar = ____DebugDisplayFamiliar.DebugDisplayFamiliar
local ____DebugDisplayKnife = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayKnife")
local DebugDisplayKnife = ____DebugDisplayKnife.DebugDisplayKnife
local ____DebugDisplayLaser = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayLaser")
local DebugDisplayLaser = ____DebugDisplayLaser.DebugDisplayLaser
local ____DebugDisplayNPC = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayNPC")
local DebugDisplayNPC = ____DebugDisplayNPC.DebugDisplayNPC
local ____DebugDisplayPickup = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayPickup")
local DebugDisplayPickup = ____DebugDisplayPickup.DebugDisplayPickup
local ____DebugDisplayPit = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayPit")
local DebugDisplayPit = ____DebugDisplayPit.DebugDisplayPit
local ____DebugDisplayPlayer = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayPlayer")
local DebugDisplayPlayer = ____DebugDisplayPlayer.DebugDisplayPlayer
local ____DebugDisplayPoop = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayPoop")
local DebugDisplayPoop = ____DebugDisplayPoop.DebugDisplayPoop
local ____DebugDisplayPressurePlate = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayPressurePlate")
local DebugDisplayPressurePlate = ____DebugDisplayPressurePlate.DebugDisplayPressurePlate
local ____DebugDisplayProjectile = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayProjectile")
local DebugDisplayProjectile = ____DebugDisplayProjectile.DebugDisplayProjectile
local ____DebugDisplayRock = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayRock")
local DebugDisplayRock = ____DebugDisplayRock.DebugDisplayRock
local ____DebugDisplaySlot = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplaySlot")
local DebugDisplaySlot = ____DebugDisplaySlot.DebugDisplaySlot
local ____DebugDisplaySpikes = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplaySpikes")
local DebugDisplaySpikes = ____DebugDisplaySpikes.DebugDisplaySpikes
local ____DebugDisplayTear = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayTear")
local DebugDisplayTear = ____DebugDisplayTear.DebugDisplayTear
local ____DebugDisplayTNT = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayTNT")
local DebugDisplayTNT = ____DebugDisplayTNT.DebugDisplayTNT
____exports.DebugDisplay = __TS__Class()
local DebugDisplay = ____exports.DebugDisplay
DebugDisplay.name = "DebugDisplay"
__TS__ClassExtends(DebugDisplay, Feature)
function DebugDisplay.prototype.____constructor(self, mod)
    Feature.prototype.____constructor(self)
    self.player = __TS__New(DebugDisplayPlayer)
    self.tear = __TS__New(DebugDisplayTear)
    self.familiar = __TS__New(DebugDisplayFamiliar)
    self.bomb = __TS__New(DebugDisplayBomb)
    self.pickup = __TS__New(DebugDisplayPickup)
    self.slot = __TS__New(DebugDisplaySlot)
    self.laser = __TS__New(DebugDisplayLaser)
    self.knife = __TS__New(DebugDisplayKnife)
    self.projectile = __TS__New(DebugDisplayProjectile)
    self.effect = __TS__New(DebugDisplayEffect)
    self.npc = __TS__New(DebugDisplayNPC)
    self.rock = __TS__New(DebugDisplayRock)
    self.pit = __TS__New(DebugDisplayPit)
    self.spikes = __TS__New(DebugDisplaySpikes)
    self.tnt = __TS__New(DebugDisplayTNT)
    self.poop = __TS__New(DebugDisplayPoop)
    self.door = __TS__New(DebugDisplayDoor)
    self.pressurePlate = __TS__New(DebugDisplayPressurePlate)
    self.mod = mod
end
function DebugDisplay.prototype.setPlayerDisplay(self, textCallback)
    self.player.textCallback = textCallback
end
function DebugDisplay.prototype.setTearDisplay(self, textCallback)
    self.tear.textCallback = textCallback
end
function DebugDisplay.prototype.setFamiliarDisplay(self, textCallback)
    self.familiar.textCallback = textCallback
end
function DebugDisplay.prototype.setBombDisplay(self, textCallback)
    self.bomb.textCallback = textCallback
end
function DebugDisplay.prototype.setPickupDisplay(self, textCallback)
    self.pickup.textCallback = textCallback
end
function DebugDisplay.prototype.setSlotDisplay(self, textCallback)
    self.slot.textCallback = textCallback
end
function DebugDisplay.prototype.setLaserDisplay(self, textCallback)
    self.laser.textCallback = textCallback
end
function DebugDisplay.prototype.setKnifeDisplay(self, textCallback)
    self.knife.textCallback = textCallback
end
function DebugDisplay.prototype.setProjectileDisplay(self, textCallback)
    self.projectile.textCallback = textCallback
end
function DebugDisplay.prototype.setEffectDisplay(self, textCallback)
    self.effect.textCallback = textCallback
end
function DebugDisplay.prototype.setNPCDisplay(self, textCallback)
    self.npc.textCallback = textCallback
end
function DebugDisplay.prototype.setRockDisplay(self, textCallback)
    self.rock.textCallback = textCallback
end
function DebugDisplay.prototype.setPitDisplay(self, textCallback)
    self.pit.textCallback = textCallback
end
function DebugDisplay.prototype.setSpikesDisplay(self, textCallback)
    self.spikes.textCallback = textCallback
end
function DebugDisplay.prototype.setTNTDisplay(self, textCallback)
    self.tnt.textCallback = textCallback
end
function DebugDisplay.prototype.setPoopDisplay(self, textCallback)
    self.poop.textCallback = textCallback
end
function DebugDisplay.prototype.setDoorDisplay(self, textCallback)
    self.door.textCallback = textCallback
end
function DebugDisplay.prototype.setPressurePlateDisplay(self, textCallback)
    self.pressurePlate.textCallback = textCallback
end
function DebugDisplay.prototype.toggleFeature(self, feature, featureName)
    if feature.initialized then
        self.mod:uninitFeature(feature)
    else
        self.mod:initFeature(feature)
    end
    printEnabled(nil, feature.initialized, featureName .. " display")
end
function DebugDisplay.prototype.togglePlayerDisplay(self)
    self:toggleFeature(self.player, "player")
end
function DebugDisplay.prototype.toggleTearDisplay(self)
    self:toggleFeature(self.tear, "tear")
end
function DebugDisplay.prototype.toggleFamiliarDisplay(self)
    self:toggleFeature(self.familiar, "familiar")
end
function DebugDisplay.prototype.toggleBombDisplay(self)
    self:toggleFeature(self.bomb, "bomb")
end
function DebugDisplay.prototype.togglePickupDisplay(self)
    self:toggleFeature(self.pickup, "pickup")
end
function DebugDisplay.prototype.toggleSlotDisplay(self)
    self:toggleFeature(self.slot, "slot")
end
function DebugDisplay.prototype.toggleLaserDisplay(self)
    self:toggleFeature(self.laser, "laser")
end
function DebugDisplay.prototype.toggleKnifeDisplay(self)
    self:toggleFeature(self.knife, "knife")
end
function DebugDisplay.prototype.toggleProjectileDisplay(self)
    self:toggleFeature(self.projectile, "projectile")
end
function DebugDisplay.prototype.toggleEffectDisplay(self)
    self:toggleFeature(self.effect, "effect")
end
function DebugDisplay.prototype.toggleNPCDisplay(self)
    self:toggleFeature(self.npc, "NPC")
end
function DebugDisplay.prototype.toggleRockDisplay(self)
    self:toggleFeature(self.rock, "rock")
end
function DebugDisplay.prototype.togglePitDisplay(self)
    self:toggleFeature(self.pit, "pit")
end
function DebugDisplay.prototype.toggleSpikesDisplay(self)
    self:toggleFeature(self.spikes, "spikes")
end
function DebugDisplay.prototype.toggleTNTDisplay(self)
    self:toggleFeature(self.tnt, "tnt")
end
function DebugDisplay.prototype.togglePoopDisplay(self)
    self:toggleFeature(self.poop, "poop")
end
function DebugDisplay.prototype.toggleDoorDisplay(self)
    self:toggleFeature(self.door, "door")
end
function DebugDisplay.prototype.togglePressurePlateDisplay(self)
    self:toggleFeature(self.pressurePlate, "pressure plate")
end
__TS__Decorate({Exported}, DebugDisplay.prototype, "setPlayerDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setTearDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setFamiliarDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setBombDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setPickupDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setSlotDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setLaserDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setKnifeDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setProjectileDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setEffectDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setNPCDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setRockDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setPitDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setSpikesDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setTNTDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setPoopDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setDoorDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "setPressurePlateDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "togglePlayerDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleTearDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleFamiliarDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleBombDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "togglePickupDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleSlotDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleLaserDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleKnifeDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleProjectileDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleEffectDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleNPCDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleRockDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "togglePitDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleSpikesDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleTNTDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "togglePoopDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "toggleDoorDisplay", true)
__TS__Decorate({Exported}, DebugDisplay.prototype, "togglePressurePlateDisplay", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayBomb"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayBomb = __TS__Class()
local DebugDisplayBomb = ____exports.DebugDisplayBomb
DebugDisplayBomb.name = "DebugDisplayBomb"
__TS__ClassExtends(DebugDisplayBomb, Feature)
function DebugDisplayBomb.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultEntityDisplayCallback
    self.postBombRender = function(____, bomb)
        local text = self:textCallback(bomb)
        renderTextOnEntity(nil, bomb, text)
    end
    self.callbacksUsed = {{ModCallback.POST_BOMB_RENDER, {self.postBombRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils"] = function(...) 
local ____exports = {}
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntityID = ____entities.getEntityID
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local getGridEntityID = ____gridEntities.getGridEntityID
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local isReflectionRender = ____utils.isReflectionRender
function ____exports.defaultEntityDisplayCallback(self, entity)
    return getEntityID(nil, entity)
end
function ____exports.defaultGridEntityDisplayCallback(self, gridEntity)
    return getGridEntityID(nil, gridEntity)
end
function ____exports.renderTextOnEntity(self, entity, text)
    if isReflectionRender(nil) then
        return
    end
    local position = Isaac.WorldToScreen(entity.Position)
    Isaac.RenderText(
        text,
        position.X,
        position.Y,
        1,
        1,
        1,
        1
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayDoor"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayDoor = __TS__Class()
local DebugDisplayDoor = ____exports.DebugDisplayDoor
DebugDisplayDoor.name = "DebugDisplayDoor"
__TS__ClassExtends(DebugDisplayDoor, Feature)
function DebugDisplayDoor.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultGridEntityDisplayCallback
    self.postDoorRender = function(____, door)
        local text = self:textCallback(door)
        renderTextOnEntity(nil, door, text)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_DOOR_RENDER, {self.postDoorRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayEffect"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayEffect = __TS__Class()
local DebugDisplayEffect = ____exports.DebugDisplayEffect
DebugDisplayEffect.name = "DebugDisplayEffect"
__TS__ClassExtends(DebugDisplayEffect, Feature)
function DebugDisplayEffect.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultEntityDisplayCallback
    self.postEffectRender = function(____, effect)
        local text = self:textCallback(effect)
        renderTextOnEntity(nil, effect, text)
    end
    self.callbacksUsed = {{ModCallback.POST_EFFECT_RENDER, {self.postEffectRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayFamiliar"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayFamiliar = __TS__Class()
local DebugDisplayFamiliar = ____exports.DebugDisplayFamiliar
DebugDisplayFamiliar.name = "DebugDisplayFamiliar"
__TS__ClassExtends(DebugDisplayFamiliar, Feature)
function DebugDisplayFamiliar.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultEntityDisplayCallback
    self.postFamiliarRender = function(____, familiar)
        local text = self:textCallback(familiar)
        renderTextOnEntity(nil, familiar, text)
    end
    self.callbacksUsed = {{ModCallback.POST_FAMILIAR_RENDER, {self.postFamiliarRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayKnife"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayKnife = __TS__Class()
local DebugDisplayKnife = ____exports.DebugDisplayKnife
DebugDisplayKnife.name = "DebugDisplayKnife"
__TS__ClassExtends(DebugDisplayKnife, Feature)
function DebugDisplayKnife.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultEntityDisplayCallback
    self.postKnifeRender = function(____, knife)
        local text = self:textCallback(knife)
        renderTextOnEntity(nil, knife, text)
    end
    self.callbacksUsed = {{ModCallback.POST_KNIFE_RENDER, {self.postKnifeRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayLaser"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayLaser = __TS__Class()
local DebugDisplayLaser = ____exports.DebugDisplayLaser
DebugDisplayLaser.name = "DebugDisplayLaser"
__TS__ClassExtends(DebugDisplayLaser, Feature)
function DebugDisplayLaser.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultEntityDisplayCallback
    self.postLaserRender = function(____, laser)
        local text = self:textCallback(laser)
        renderTextOnEntity(nil, laser, text)
    end
    self.callbacksUsed = {{ModCallback.POST_LASER_RENDER, {self.postLaserRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayNPC"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayNPC = __TS__Class()
local DebugDisplayNPC = ____exports.DebugDisplayNPC
DebugDisplayNPC.name = "DebugDisplayNPC"
__TS__ClassExtends(DebugDisplayNPC, Feature)
function DebugDisplayNPC.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultEntityDisplayCallback
    self.postNPCRender = function(____, npc)
        local text = self:textCallback(npc)
        renderTextOnEntity(nil, npc, text)
    end
    self.callbacksUsed = {{ModCallback.POST_NPC_RENDER, {self.postNPCRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayPickup"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayPickup = __TS__Class()
local DebugDisplayPickup = ____exports.DebugDisplayPickup
DebugDisplayPickup.name = "DebugDisplayPickup"
__TS__ClassExtends(DebugDisplayPickup, Feature)
function DebugDisplayPickup.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultEntityDisplayCallback
    self.postPickupRender = function(____, pickup)
        local text = self:textCallback(pickup)
        renderTextOnEntity(nil, pickup, text)
    end
    self.callbacksUsed = {{ModCallback.POST_PICKUP_RENDER, {self.postPickupRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayPit"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayPit = __TS__Class()
local DebugDisplayPit = ____exports.DebugDisplayPit
DebugDisplayPit.name = "DebugDisplayPit"
__TS__ClassExtends(DebugDisplayPit, Feature)
function DebugDisplayPit.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultGridEntityDisplayCallback
    self.postPitRender = function(____, pit)
        local text = self:textCallback(pit)
        renderTextOnEntity(nil, pit, text)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PIT_RENDER, {self.postPitRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayPlayer"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayPlayer = __TS__Class()
local DebugDisplayPlayer = ____exports.DebugDisplayPlayer
DebugDisplayPlayer.name = "DebugDisplayPlayer"
__TS__ClassExtends(DebugDisplayPlayer, Feature)
function DebugDisplayPlayer.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultEntityDisplayCallback
    self.postPlayerRender = function(____, player)
        local text = self:textCallback(player)
        renderTextOnEntity(nil, player, text)
    end
    self.callbacksUsed = {{ModCallback.POST_PLAYER_RENDER, {self.postPlayerRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayPoop"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayPoop = __TS__Class()
local DebugDisplayPoop = ____exports.DebugDisplayPoop
DebugDisplayPoop.name = "DebugDisplayPoop"
__TS__ClassExtends(DebugDisplayPoop, Feature)
function DebugDisplayPoop.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultGridEntityDisplayCallback
    self.postPoopRender = function(____, poop)
        local text = self:textCallback(poop)
        renderTextOnEntity(nil, poop, text)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_POOP_RENDER, {self.postPoopRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayPressurePlate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayPressurePlate = __TS__Class()
local DebugDisplayPressurePlate = ____exports.DebugDisplayPressurePlate
DebugDisplayPressurePlate.name = "DebugDisplayPressurePlate"
__TS__ClassExtends(DebugDisplayPressurePlate, Feature)
function DebugDisplayPressurePlate.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultGridEntityDisplayCallback
    self.postPressurePlateRender = function(____, pressurePlate)
        local text = self:textCallback(pressurePlate)
        renderTextOnEntity(nil, pressurePlate, text)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PRESSURE_PLATE_RENDER, {self.postPressurePlateRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayProjectile"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayProjectile = __TS__Class()
local DebugDisplayProjectile = ____exports.DebugDisplayProjectile
DebugDisplayProjectile.name = "DebugDisplayProjectile"
__TS__ClassExtends(DebugDisplayProjectile, Feature)
function DebugDisplayProjectile.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultEntityDisplayCallback
    self.postProjectileRender = function(____, projectile)
        local text = self:textCallback(projectile)
        renderTextOnEntity(nil, projectile, text)
    end
    self.callbacksUsed = {{ModCallback.POST_PROJECTILE_RENDER, {self.postProjectileRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayRock"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayRock = __TS__Class()
local DebugDisplayRock = ____exports.DebugDisplayRock
DebugDisplayRock.name = "DebugDisplayRock"
__TS__ClassExtends(DebugDisplayRock, Feature)
function DebugDisplayRock.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultGridEntityDisplayCallback
    self.postRockRender = function(____, rock)
        local text = self:textCallback(rock)
        renderTextOnEntity(nil, rock, text)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_ROCK_RENDER, {self.postRockRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplaySlot"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplaySlot = __TS__Class()
local DebugDisplaySlot = ____exports.DebugDisplaySlot
DebugDisplaySlot.name = "DebugDisplaySlot"
__TS__ClassExtends(DebugDisplaySlot, Feature)
function DebugDisplaySlot.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultEntityDisplayCallback
    self.postSlotRender = function(____, slot)
        local text = self:textCallback(slot)
        renderTextOnEntity(nil, slot, text)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_SLOT_RENDER, {self.postSlotRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplaySpikes"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplaySpikes = __TS__Class()
local DebugDisplaySpikes = ____exports.DebugDisplaySpikes
DebugDisplaySpikes.name = "DebugDisplaySpikes"
__TS__ClassExtends(DebugDisplaySpikes, Feature)
function DebugDisplaySpikes.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultGridEntityDisplayCallback
    self.postSpikesRender = function(____, spikes)
        local text = self:textCallback(spikes)
        renderTextOnEntity(nil, spikes, text)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_SPIKES_RENDER, {self.postSpikesRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayTear"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayTear = __TS__Class()
local DebugDisplayTear = ____exports.DebugDisplayTear
DebugDisplayTear.name = "DebugDisplayTear"
__TS__ClassExtends(DebugDisplayTear, Feature)
function DebugDisplayTear.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultEntityDisplayCallback
    self.postTearRender = function(____, tear)
        local text = self:textCallback(tear)
        renderTextOnEntity(nil, tear, text)
    end
    self.callbacksUsed = {{ModCallback.POST_TEAR_RENDER, {self.postTearRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.DebugDisplayTNT"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____utils = require("lua_modules.isaacscript-common.dist.src.classes.features.other.debugDisplay.utils")
local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback
local renderTextOnEntity = ____utils.renderTextOnEntity
____exports.DebugDisplayTNT = __TS__Class()
local DebugDisplayTNT = ____exports.DebugDisplayTNT
DebugDisplayTNT.name = "DebugDisplayTNT"
__TS__ClassExtends(DebugDisplayTNT, Feature)
function DebugDisplayTNT.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.textCallback = defaultGridEntityDisplayCallback
    self.postTNTRender = function(____, tnt)
        local text = self:textCallback(tnt)
        renderTextOnEntity(nil, tnt, text)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_TNT_RENDER, {self.postTNTRender}}}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.DeployJSONRoom"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local Map = ____lualib.Map
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local spawnGridEntityForJSONRoom, fixPitGraphics, getPitMap, getPitFrame
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityCollisionClass
local EntityGridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityGridCollisionClass
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local GridEntityXMLType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityXMLType
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local PitfallVariant = ____isaac_2Dtypescript_2Ddefinitions.PitfallVariant
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____emptyRoom = require("lua_modules.isaacscript-common.dist.src.functions.emptyRoom")
local emptyRoom = ____emptyRoom.emptyRoom
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntityIDFromConstituents = ____entities.getEntityIDFromConstituents
local spawnWithSeed = ____entities.spawnWithSeed
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local convertXMLGridEntityType = ____gridEntities.convertXMLGridEntityType
local getGridEntities = ____gridEntities.getGridEntities
local spawnGridEntityWithVariant = ____gridEntities.spawnGridEntityWithVariant
local ____jsonRoom = require("lua_modules.isaacscript-common.dist.src.functions.jsonRoom")
local getRandomJSONEntity = ____jsonRoom.getRandomJSONEntity
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local isRNG = ____rng.isRNG
local newRNG = ____rng.newRNG
local ____roomGrid = require("lua_modules.isaacscript-common.dist.src.functions.roomGrid")
local gridCoordinatesToWorldPosition = ____roomGrid.gridCoordinatesToWorldPosition
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local setRoomCleared = ____rooms.setRoomCleared
local setRoomUncleared = ____rooms.setRoomUncleared
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asCollectibleType = ____types.asCollectibleType
local asNumber = ____types.asNumber
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
function spawnGridEntityForJSONRoom(self, gridEntityXMLType, gridEntityXMLVariant, x, y)
    local room = game:GetRoom()
    local gridEntityTuple = convertXMLGridEntityType(nil, gridEntityXMLType, gridEntityXMLVariant)
    if gridEntityTuple == nil then
        return nil
    end
    local gridEntityType, variant = table.unpack(gridEntityTuple)
    local position = gridCoordinatesToWorldPosition(nil, x, y)
    local gridIndex = room:GetGridIndex(position)
    local gridEntity = spawnGridEntityWithVariant(nil, gridEntityType, variant, gridIndex)
    if gridEntity == nil then
        return gridEntity
    end
    if gridEntityType == GridEntityType.POOP then
        local sprite = gridEntity:GetSprite()
        sprite:Play("State1", true)
        sprite:SetLastFrame()
    end
    return gridEntity
end
function fixPitGraphics(self)
    local room = game:GetRoom()
    local gridWidth = room:GetGridWidth()
    local pitMap = getPitMap(nil)
    for ____, ____value in __TS__Iterator(pitMap:entries()) do
        local gridIndex = ____value[1]
        local gridEntity = ____value[2]
        local gridIndexLeft = gridIndex - 1
        local L = pitMap:has(gridIndexLeft)
        local gridIndexRight = gridIndex + 1
        local R = pitMap:has(gridIndexRight)
        local gridIndexUp = gridIndex - gridWidth
        local U = pitMap:has(gridIndexUp)
        local gridIndexDown = gridIndex + gridWidth
        local D = pitMap:has(gridIndexDown)
        local gridIndexUpLeft = gridIndex - gridWidth - 1
        local UL = pitMap:has(gridIndexUpLeft)
        local gridIndexUpRight = gridIndex - gridWidth + 1
        local UR = pitMap:has(gridIndexUpRight)
        local gridIndexDownLeft = gridIndex + gridWidth - 1
        local DL = pitMap:has(gridIndexDownLeft)
        local gridIndexDownRight = gridIndex + gridWidth + 1
        local DR = pitMap:has(gridIndexDownRight)
        local pitFrame = getPitFrame(
            nil,
            L,
            R,
            U,
            D,
            UL,
            UR,
            DL,
            DR
        )
        local sprite = gridEntity:GetSprite()
        sprite:SetFrame(pitFrame)
    end
end
function getPitMap(self)
    local pitMap = __TS__New(Map)
    for ____, gridEntity in ipairs(getGridEntities(nil, GridEntityType.PIT)) do
        local gridIndex = gridEntity:GetGridIndex()
        pitMap:set(gridIndex, gridEntity)
    end
    return pitMap
end
function getPitFrame(self, L, R, U, D, UL, UR, DL, DR)
    local F = 0
    if L then
        F = F | 1
    end
    if U then
        F = F | 2
    end
    if R then
        F = F | 4
    end
    if D then
        F = F | 8
    end
    if U and L and not UL and not R and not D then
        F = 17
    end
    if U and R and not UR and not L and not D then
        F = 18
    end
    if L and D and not DL and not U and not R then
        F = 19
    end
    if R and D and not DR and not L and not U then
        F = 20
    end
    if L and U and R and D and not UL then
        F = 21
    end
    if L and U and R and D and not UR then
        F = 22
    end
    if U and R and D and not L and not UR then
        F = 25
    end
    if L and U and D and not R and not UL then
        F = 26
    end
    if L and U and R and D and not DL and not DR then
        F = 24
    end
    if L and U and R and D and not UR and not UL then
        F = 23
    end
    if L and U and R and UL and not UR and not D then
        F = 27
    end
    if L and U and R and UR and not UL and not D then
        F = 28
    end
    if L and U and R and not D and not UR and not UL then
        F = 29
    end
    if L and R and D and DL and not U and not DR then
        F = 30
    end
    if L and R and D and DR and not U and not DL then
        F = 31
    end
    if L and R and D and not U and not DL and not DR then
        F = 32
    end
    return F
end
local gridEntityXMLTypes = getEnumValues(nil, GridEntityXMLType)
local GRID_ENTITY_XML_TYPE_SET = __TS__New(Set, gridEntityXMLTypes)
____exports.DeployJSONRoom = __TS__Class()
local DeployJSONRoom = ____exports.DeployJSONRoom
DeployJSONRoom.name = "DeployJSONRoom"
__TS__ClassExtends(DeployJSONRoom, Feature)
function DeployJSONRoom.prototype.____constructor(self, preventGridEntityRespawn, spawnCollectible)
    Feature.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.PREVENT_GRID_ENTITY_RESPAWN, ISCFeature.SPAWN_COLLECTIBLE}
    self.preventGridEntityRespawn = preventGridEntityRespawn
    self.spawnCollectible = spawnCollectible
end
function DeployJSONRoom.prototype.spawnAllEntities(self, jsonRoom, rng, verbose)
    if verbose == nil then
        verbose = false
    end
    local shouldUnclearRoom = false
    for ____, jsonSpawn in ipairs(jsonRoom.spawn) do
        local xString = jsonSpawn["$"].x
        local x = tonumber(xString)
        if x == nil then
            error("Failed to convert the following x coordinate to a number (for a spawn): " .. xString)
        end
        local yString = jsonSpawn["$"].y
        local y = tonumber(yString)
        if y == nil then
            error("Failed to convert the following y coordinate to a number (for a spawn): " .. yString)
        end
        local jsonEntity = getRandomJSONEntity(nil, jsonSpawn.entity)
        local entityTypeString = jsonEntity["$"].type
        local entityTypeNumber = tonumber(entityTypeString)
        if entityTypeNumber == nil then
            error("Failed to convert the entity type to a number: " .. entityTypeString)
        end
        local variantString = jsonEntity["$"].variant
        local variant = tonumber(variantString)
        if variant == nil then
            error("Failed to convert the entity variant to a number: " .. tostring(variant))
        end
        local subTypeString = jsonEntity["$"].subtype
        local subType = tonumber(subTypeString)
        if subType == nil then
            error("Failed to convert the entity sub-type to a number: " .. tostring(subType))
        end
        local isGridEntity = GRID_ENTITY_XML_TYPE_SET:has(entityTypeNumber)
        if isGridEntity then
            local gridEntityXMLType = entityTypeNumber
            if verbose then
                log(
                    nil,
                    ((((((("Spawning grid entity " .. tostring(gridEntityXMLType)) .. ".") .. tostring(variant)) .. " at: (") .. tostring(x)) .. ", ") .. tostring(y)) .. ")"
                )
            end
            spawnGridEntityForJSONRoom(
                nil,
                gridEntityXMLType,
                variant,
                x,
                y
            )
        else
            local entityType = entityTypeNumber
            if verbose then
                local entityID = getEntityIDFromConstituents(nil, entityType, variant, subType)
                log(
                    nil,
                    ((((("Spawning normal entity " .. entityID) .. " at: (") .. tostring(x)) .. ", ") .. tostring(y)) .. ")"
                )
            end
            local entity = self:spawnNormalEntityForJSONRoom(
                entityType,
                variant,
                subType,
                x,
                y,
                rng
            )
            local npc = entity:ToNPC()
            if npc ~= nil and npc.CanShutDoors then
                shouldUnclearRoom = true
            end
        end
    end
    if shouldUnclearRoom then
        if verbose then
            log(nil, "Setting the room to be uncleared since there were one or more battle NPCs spawned.")
        end
        setRoomUncleared(nil)
    elseif verbose then
        log(nil, "Leaving the room cleared since there were no battle NPCs spawned.")
    end
end
function DeployJSONRoom.prototype.spawnNormalEntityForJSONRoom(self, entityType, variant, subType, x, y, rng)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local position = gridCoordinatesToWorldPosition(nil, x, y)
    local seed = rng:Next()
    local entity
    if entityType == EntityType.PICKUP and variant == asNumber(nil, PickupVariant.COLLECTIBLE) then
        local options = roomType == RoomType.ANGEL
        entity = self.spawnCollectible:spawnCollectible(
            asCollectibleType(nil, subType),
            position,
            seed,
            options
        )
    else
        entity = spawnWithSeed(
            nil,
            entityType,
            variant,
            subType,
            position,
            seed
        )
    end
    if entityType == EntityType.PITFALL and variant == asNumber(nil, PitfallVariant.PITFALL) then
        entity.EntityCollisionClass = EntityCollisionClass.ENEMIES
        entity.GridCollisionClass = EntityGridCollisionClass.WALLS
    end
    return entity
end
function DeployJSONRoom.prototype.deployJSONRoom(self, jsonRoom, seedOrRNG, verbose)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if verbose == nil then
        verbose = false
    end
    local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG)
    if verbose then
        log(nil, "Starting to empty the room of entities and grid entities.")
    end
    emptyRoom(nil)
    if verbose then
        log(nil, "Finished emptying the room of entities and grid entities.")
    end
    setRoomCleared(nil)
    if verbose then
        log(nil, "Starting to spawn all of the new entities and grid entities.")
    end
    self:spawnAllEntities(jsonRoom, rng, verbose)
    if verbose then
        log(nil, "Finished spawning all of the new entities and grid entities.")
    end
    fixPitGraphics(nil)
    self.preventGridEntityRespawn:preventGridEntityRespawn()
end
__TS__Decorate({Exported}, DeployJSONRoom.prototype, "deployJSONRoom", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.emptyRoom"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local emptyRoomEntities, EMPTY_ROOM_BLACKLIST_ENTITY_SET
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntities = ____entities.getEntities
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local getGridEntities = ____gridEntities.getGridEntities
local removeGridEntity = ____gridEntities.removeGridEntity
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local roomUpdateSafe = ____rooms.roomUpdateSafe
local ____roomShapeWalls = require("lua_modules.isaacscript-common.dist.src.functions.roomShapeWalls")
local isVanillaWallGridIndex = ____roomShapeWalls.isVanillaWallGridIndex
function emptyRoomEntities(self)
    local room = game:GetRoom()
    for ____, entity in ipairs(getEntities(nil)) do
        do
            if EMPTY_ROOM_BLACKLIST_ENTITY_SET:has(entity.Type) then
                goto __continue4
            end
            if entity:HasEntityFlags(EntityFlag.CHARM) or entity:HasEntityFlags(EntityFlag.FRIENDLY) or entity:HasEntityFlags(EntityFlag.PERSISTENT) then
                goto __continue4
            end
            entity:ClearEntityFlags(EntityFlag.APPEAR)
            entity:Remove()
            if entity.Type == EntityType.FIREPLACE then
                local gridIndex = room:GetGridIndex(entity.Position)
                room:SetGridPath(gridIndex, 0)
            end
        end
        ::__continue4::
    end
end
--- Helper function to remove all grid entities from a room except for doors, and walls.
function ____exports.emptyRoomGridEntities(self)
    local removedOneOrMoreGridEntities = false
    for ____, gridEntity in ipairs(getGridEntities(nil)) do
        do
            local gridEntityType = gridEntity:GetType()
            local gridIndex = gridEntity:GetGridIndex()
            if gridEntityType == GridEntityType.WALL and isVanillaWallGridIndex(nil, gridIndex) then
                goto __continue10
            end
            if gridEntityType == GridEntityType.DOOR then
                goto __continue10
            end
            removeGridEntity(nil, gridEntity, false)
            removedOneOrMoreGridEntities = true
        end
        ::__continue10::
    end
    if removedOneOrMoreGridEntities then
        roomUpdateSafe(nil)
    end
end
EMPTY_ROOM_BLACKLIST_ENTITY_SET = __TS__New(Set, {
    EntityType.PLAYER,
    EntityType.TEAR,
    EntityType.FAMILIAR,
    EntityType.LASER,
    EntityType.KNIFE,
    EntityType.PROJECTILE,
    EntityType.DARK_ESAU
})
--- Helper function to remove all naturally spawning entities and grid entities from a room. Notably,
-- this will not remove players (1), tears (2), familiars (3), lasers (7), knives (8), projectiles
-- (9), blacklisted NPCs such as Dark Esau, charmed NPCs, friendly NPCs, persistent NPCs, most
-- effects (1000), doors, and walls.
function ____exports.emptyRoom(self)
    emptyRoomEntities(nil)
    ____exports.emptyRoomGridEntities(nil)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.roomShapeWalls"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
local Set = ____lualib.Set
local ____exports = {}
local getRoomShapeToWallGridIndexSet, getVanillaWallGridIndexSetForRoomShape, getWallGridIndexSetForRectangleRoomShape
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____CornerType = require("lua_modules.isaacscript-common.dist.src.enums.CornerType")
local CornerType = ____CornerType.CornerType
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____gridIndex = require("lua_modules.isaacscript-common.dist.src.functions.gridIndex")
local getGridIndexesBetween = ____gridIndex.getGridIndexesBetween
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local inBossRoomOf = ____rooms.inBossRoomOf
local inHomeCloset = ____rooms.inHomeCloset
local ____roomShape = require("lua_modules.isaacscript-common.dist.src.functions.roomShape")
local getRoomShapeCorners = ____roomShape.getRoomShapeCorners
local isLRoom = ____roomShape.isLRoom
function getRoomShapeToWallGridIndexSet(self)
    local roomShapeToWallGridIndexSet = __TS__New(Map)
    for ____, roomShape in ipairs(getEnumValues(nil, RoomShape)) do
        local gridIndexSet = getVanillaWallGridIndexSetForRoomShape(nil, roomShape)
        roomShapeToWallGridIndexSet:set(roomShape, gridIndexSet)
    end
    return roomShapeToWallGridIndexSet
end
function getVanillaWallGridIndexSetForRoomShape(self, roomShape)
    local corners = getRoomShapeCorners(nil, roomShape)
    local lRoom = isLRoom(nil, roomShape)
    if lRoom and #corners ~= 6 then
        error(((("Failed to get the correct amount of corners for: RoomShape." .. tostring(RoomShape[roomShape])) .. " (") .. tostring(roomShape)) .. ")")
    end
    repeat
        local ____switch7 = roomShape
        local ____cond7 = ____switch7 == RoomShape.LTL
        if ____cond7 then
            do
                local topMiddle, topRight, middleLeft, middle, bottomLeft, bottomRight = table.unpack(corners)
                local ____Set_1 = Set
                local ____array_0 = __TS__SparseArrayNew(table.unpack(getGridIndexesBetween(nil, topMiddle.gridIndex, topRight.gridIndex, roomShape)))
                __TS__SparseArrayPush(
                    ____array_0,
                    table.unpack(getGridIndexesBetween(nil, middleLeft.gridIndex, middle.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_0,
                    table.unpack(getGridIndexesBetween(nil, bottomLeft.gridIndex, bottomRight.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_0,
                    table.unpack(getGridIndexesBetween(nil, middleLeft.gridIndex, bottomLeft.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_0,
                    table.unpack(getGridIndexesBetween(nil, topMiddle.gridIndex, middle.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_0,
                    table.unpack(getGridIndexesBetween(nil, topRight.gridIndex, bottomRight.gridIndex, roomShape))
                )
                return __TS__New(
                    ____Set_1,
                    {__TS__SparseArraySpread(____array_0)}
                )
            end
        end
        ____cond7 = ____cond7 or ____switch7 == RoomShape.LTR
        if ____cond7 then
            do
                local topLeft, topMiddle, middle, middleRight, bottomLeft, bottomRight = table.unpack(corners)
                local ____Set_3 = Set
                local ____array_2 = __TS__SparseArrayNew(table.unpack(getGridIndexesBetween(nil, topLeft.gridIndex, topMiddle.gridIndex, roomShape)))
                __TS__SparseArrayPush(
                    ____array_2,
                    table.unpack(getGridIndexesBetween(nil, middle.gridIndex, middleRight.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_2,
                    table.unpack(getGridIndexesBetween(nil, bottomLeft.gridIndex, bottomRight.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_2,
                    table.unpack(getGridIndexesBetween(nil, topLeft.gridIndex, bottomLeft.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_2,
                    table.unpack(getGridIndexesBetween(nil, topMiddle.gridIndex, middle.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_2,
                    table.unpack(getGridIndexesBetween(nil, middleRight.gridIndex, bottomRight.gridIndex, roomShape))
                )
                return __TS__New(
                    ____Set_3,
                    {__TS__SparseArraySpread(____array_2)}
                )
            end
        end
        ____cond7 = ____cond7 or ____switch7 == RoomShape.LBL
        if ____cond7 then
            do
                local topLeft, topRight, middleLeft, middle, bottomMiddle, bottomRight = table.unpack(corners)
                local ____Set_5 = Set
                local ____array_4 = __TS__SparseArrayNew(table.unpack(getGridIndexesBetween(nil, topLeft.gridIndex, topRight.gridIndex, roomShape)))
                __TS__SparseArrayPush(
                    ____array_4,
                    table.unpack(getGridIndexesBetween(nil, middleLeft.gridIndex, middle.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_4,
                    table.unpack(getGridIndexesBetween(nil, bottomMiddle.gridIndex, bottomRight.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_4,
                    table.unpack(getGridIndexesBetween(nil, topLeft.gridIndex, middleLeft.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_4,
                    table.unpack(getGridIndexesBetween(nil, middle.gridIndex, bottomMiddle.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_4,
                    table.unpack(getGridIndexesBetween(nil, topRight.gridIndex, bottomRight.gridIndex, roomShape))
                )
                return __TS__New(
                    ____Set_5,
                    {__TS__SparseArraySpread(____array_4)}
                )
            end
        end
        ____cond7 = ____cond7 or ____switch7 == RoomShape.LBR
        if ____cond7 then
            do
                local topLeft, topRight, middle, middleRight, bottomLeft, bottomMiddle = table.unpack(corners)
                local ____Set_7 = Set
                local ____array_6 = __TS__SparseArrayNew(table.unpack(getGridIndexesBetween(nil, topLeft.gridIndex, topRight.gridIndex, roomShape)))
                __TS__SparseArrayPush(
                    ____array_6,
                    table.unpack(getGridIndexesBetween(nil, middle.gridIndex, middleRight.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_6,
                    table.unpack(getGridIndexesBetween(nil, bottomLeft.gridIndex, bottomMiddle.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_6,
                    table.unpack(getGridIndexesBetween(nil, topLeft.gridIndex, bottomLeft.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_6,
                    table.unpack(getGridIndexesBetween(nil, middle.gridIndex, bottomMiddle.gridIndex, roomShape))
                )
                __TS__SparseArrayPush(
                    ____array_6,
                    table.unpack(getGridIndexesBetween(nil, topRight.gridIndex, middleRight.gridIndex, roomShape))
                )
                return __TS__New(
                    ____Set_7,
                    {__TS__SparseArraySpread(____array_6)}
                )
            end
        end
        do
            do
                return getWallGridIndexSetForRectangleRoomShape(nil, roomShape, corners)
            end
        end
    until true
end
function getWallGridIndexSetForRectangleRoomShape(self, roomShape, corners)
    if #corners ~= 4 then
        error("Failed to get the correct amount of corners for rectangular room shape.")
    end
    local topLeft, topRight, bottomLeft, bottomRight = table.unpack(corners)
    local ____Set_9 = Set
    local ____array_8 = __TS__SparseArrayNew(table.unpack(getGridIndexesBetween(nil, topLeft.gridIndex, topRight.gridIndex, roomShape)))
    __TS__SparseArrayPush(
        ____array_8,
        table.unpack(getGridIndexesBetween(nil, bottomLeft.gridIndex, bottomRight.gridIndex, roomShape))
    )
    __TS__SparseArrayPush(
        ____array_8,
        table.unpack(getGridIndexesBetween(nil, topLeft.gridIndex, bottomLeft.gridIndex, roomShape))
    )
    __TS__SparseArrayPush(
        ____array_8,
        table.unpack(getGridIndexesBetween(nil, topRight.gridIndex, bottomRight.gridIndex, roomShape))
    )
    return __TS__New(
        ____Set_9,
        {__TS__SparseArraySpread(____array_8)}
    )
end
local ROOM_SHAPE_TO_WALL_GRID_INDEX_SET = getRoomShapeToWallGridIndexSet(nil)
--- The Home closet is is 9x3, which is different from `RoomShape.IH` (which is 13x3).
local HOME_CLOSET_CORNERS = {
    {
        type = CornerType.TOP_LEFT,
        gridIndex = 30,
        position = Vector(60, 220)
    },
    {
        type = CornerType.TOP_RIGHT,
        gridIndex = 38,
        position = Vector(340, 220)
    },
    {
        type = CornerType.BOTTOM_LEFT,
        gridIndex = 90,
        position = Vector(60, 340)
    },
    {
        type = CornerType.BOTTOM_RIGHT,
        gridIndex = 98,
        position = Vector(340, 340)
    }
}
local HOME_CLOSET_CORNERS_SET = getWallGridIndexSetForRectangleRoomShape(nil, RoomShape.IH, HOME_CLOSET_CORNERS)
--- The Mother Boss Room is 15x11, which is different from `RoomShape.SHAPE_1x2` (which is 15x16).
local MOTHER_ROOM_CORNERS = {
    {
        type = CornerType.TOP_LEFT,
        gridIndex = 0,
        position = Vector(60, 140)
    },
    {
        type = CornerType.TOP_RIGHT,
        gridIndex = 14,
        position = Vector(580, 140)
    },
    {
        type = CornerType.BOTTOM_LEFT,
        gridIndex = 150,
        position = Vector(60, 500)
    },
    {
        type = CornerType.BOTTOM_RIGHT,
        gridIndex = 164,
        position = Vector(580, 500)
    }
}
local MOTHER_ROOM_CORNERS_SET = getWallGridIndexSetForRectangleRoomShape(nil, RoomShape.SHAPE_1x2, MOTHER_ROOM_CORNERS)
--- Helper function to determine if a given grid index should have a wall generated by the vanilla
-- game. This is useful as a mechanism to distinguish between real walls and custom walls spawned by
-- mods.
-- 
-- This function properly handles the special cases of the Mother boss room and the Home closet
-- rooms, which are both non-standard room shapes.
function ____exports.isVanillaWallGridIndex(self, gridIndex)
    local room = game:GetRoom()
    local roomShape = room:GetRoomShape()
    local wallGridIndexSet
    if inHomeCloset(nil) then
        wallGridIndexSet = HOME_CLOSET_CORNERS_SET
    elseif inBossRoomOf(nil, BossID.MOTHER) then
        wallGridIndexSet = MOTHER_ROOM_CORNERS_SET
    else
        wallGridIndexSet = ROOM_SHAPE_TO_WALL_GRID_INDEX_SET:get(roomShape)
    end
    if wallGridIndexSet == nil then
        error(((("Failed to find the wall grid index set for: RoomShape." .. tostring(RoomShape[roomShape])) .. " (") .. tostring(roomShape)) .. ")")
    end
    return wallGridIndexSet:has(gridIndex)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.gridIndex"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ____roomShape = require("lua_modules.isaacscript-common.dist.src.functions.roomShape")
local getRoomShapeWidth = ____roomShape.getRoomShapeWidth
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local iRange = ____utils.iRange
--- Helper function to get all of the grid indexes between two grid indexes on either a horizontal or
-- vertical line, inclusive on both ends.
-- 
-- This function will throw a run-time error if the two provided grid indexes are not on the same
-- horizontal or vertical line.
function ____exports.getGridIndexesBetween(self, gridIndex1, gridIndex2, roomShape)
    if gridIndex1 > gridIndex2 then
        local oldGridIndex1 = gridIndex1
        local oldGridIndex2 = gridIndex2
        gridIndex1 = oldGridIndex2
        gridIndex2 = oldGridIndex1
    end
    local delta = gridIndex2 - gridIndex1
    local gridWidth = getRoomShapeWidth(nil, roomShape)
    local isOnHorizontalLine = delta <= gridWidth
    if isOnHorizontalLine then
        return iRange(nil, gridIndex1, gridIndex2)
    end
    local isOnVerticalLine = delta % gridWidth == 0
    if isOnVerticalLine then
        return iRange(nil, gridIndex1, gridIndex2, gridWidth)
    end
    error(((((((("Failed to get the grid indexes between " .. tostring(gridIndex1)) .. " and ") .. tostring(gridIndex2)) .. " for RoomShape.") .. tostring(RoomShape[roomShape])) .. " (") .. tostring(roomShape)) .. ") since they are not on the same horizontal or vertical line.")
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.jsonRoom"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local ____exports = {}
local getTotalWeightOfJSONObject, getJSONObjectWithChosenWeight
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DoorSlotFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlagZero
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local sumArray = ____array.sumArray
local ____doors = require("lua_modules.isaacscript-common.dist.src.functions.doors")
local doorSlotToDoorSlotFlag = ____doors.doorSlotToDoorSlotFlag
local getRoomShapeDoorSlot = ____doors.getRoomShapeDoorSlot
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local addFlag = ____flag.addFlag
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local ____random = require("lua_modules.isaacscript-common.dist.src.functions.random")
local getRandomFloat = ____random.getRandomFloat
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
function getTotalWeightOfJSONObject(self, jsonOjectArray)
    local weights = __TS__ArrayMap(
        jsonOjectArray,
        function(____, jsonObject)
            local weightString = jsonObject["$"].weight
            local weight = tonumber(weightString)
            if weight == nil then
                error(("Failed to parse the weight of a JSON object: " .. tostring(weightString)) .. ".")
            end
            return weight
        end
    )
    return sumArray(nil, weights)
end
function getJSONObjectWithChosenWeight(self, jsonOjectArray, chosenWeight)
    local weightAccumulator = 0
    for ____, jsonObject in ipairs(jsonOjectArray) do
        local weightString = jsonObject["$"].weight
        local weight = tonumber(weightString)
        if weight == nil then
            error("Failed to parse the weight of a JSON object: " .. tostring(weightString))
        end
        weightAccumulator = weightAccumulator + weight
        if weightAccumulator >= chosenWeight then
            return jsonObject
        end
    end
    return nil
end
--- Helper function to calculate what the resulting `BitFlags<DoorSlotFlag>` value would be for a
-- given JSON room.
-- 
-- (A JSON room is an XML file converted to JSON so that it can be directly imported into your mod.)
function ____exports.getJSONRoomDoorSlotFlags(self, jsonRoom)
    local roomShapeString = jsonRoom["$"].shape
    local roomShapeNumber = tonumber(roomShapeString)
    if roomShapeNumber == nil then
        error("Failed to parse the \"shape\" field of a JSON room: " .. roomShapeString)
    end
    local roomShape = roomShapeNumber
    local doorSlotFlags = DoorSlotFlagZero
    for ____, door in ipairs(jsonRoom.door) do
        do
            local existsString = door["$"].exists
            if existsString ~= "True" and existsString ~= "False" then
                error("Failed to parse the \"exists\" field of a JSON room door: " .. existsString)
            end
            if existsString == "False" then
                goto __continue4
            end
            local xString = door["$"].x
            local x = tonumber(xString)
            if x == nil then
                error("Failed to parse the \"x\" field of a JSON room door: " .. xString)
            end
            local yString = door["$"].y
            local y = tonumber(yString)
            if y == nil then
                error("Failed to parse the \"y\" field of a JSON room door: " .. yString)
            end
            local doorSlot = getRoomShapeDoorSlot(nil, roomShape, x, y)
            if doorSlot == nil then
                error(((("Failed to retrieve the door slot for a JSON room door at coordinates: [" .. tostring(x)) .. ", ") .. tostring(y)) .. "]")
            end
            local doorSlotFlag = doorSlotToDoorSlotFlag(nil, doorSlot)
            doorSlotFlags = addFlag(nil, doorSlotFlags, doorSlotFlag)
        end
        ::__continue4::
    end
    return doorSlotFlags
end
--- Helper function to find a specific room from an array of JSON rooms.
-- 
-- (A JSON room is an XML file converted to JSON so that it can be directly imported into your mod.)
-- 
-- @param jsonRooms The array of rooms to search through.
-- @param variant The room variant to select. (The room variant can be thought of as the ID of the
-- room.)
function ____exports.getJSONRoomOfVariant(self, jsonRooms, variant)
    local jsonRoomsOfVariant = __TS__ArrayFilter(
        jsonRooms,
        function(____, jsonRoom)
            local roomVariantString = jsonRoom["$"].variant
            local roomVariant = tonumber(roomVariantString)
            return roomVariant == variant
        end
    )
    if #jsonRoomsOfVariant == 0 then
        return nil
    end
    if #jsonRoomsOfVariant == 1 then
        return jsonRoomsOfVariant[1]
    end
    error(((("Found " .. tostring(#jsonRoomsOfVariant)) .. " JSON rooms with a variant of ") .. tostring(variant)) .. ", when there should only be 1.")
end
--- Helper function to find all of the JSON rooms that match the sub-type provided.
-- 
-- (A JSON room is an XML file converted to JSON so that it can be directly imported into your mod.)
-- 
-- @param jsonRooms The array of rooms to search through.
-- @param subType The sub-type to match.
function ____exports.getJSONRoomsOfSubType(self, jsonRooms, subType)
    return __TS__ArrayFilter(
        jsonRooms,
        function(____, jsonRoom)
            local roomSubTypeString = jsonRoom["$"].subtype
            local roomSubType = tonumber(roomSubTypeString)
            return roomSubType == subType
        end
    )
end
--- Helper function to get a random JSON entity from an array of JSON entities.
-- 
-- (A JSON entity is an entity inside of a JSON room. A JSON room is an XML file converted to JSON
-- so that it can be directly imported into your mod.)
-- 
-- Note that this function does not simply choose a random element in the provided array; it will
-- properly account for each room weight using the algorithm from:
-- https://stackoverflow.com/questions/1761626/weighted-random-numbers
-- 
-- @param jsonEntities The array of entities to randomly choose between.
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param verbose Optional. If specified, will write entries to the "log.txt" file that describe
-- what the function is doing. Default is false.
function ____exports.getRandomJSONEntity(self, jsonEntities, seedOrRNG, verbose)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if verbose == nil then
        verbose = false
    end
    local totalWeight = getTotalWeightOfJSONObject(nil, jsonEntities)
    if verbose then
        log(
            nil,
            "Total weight of the JSON entities provided: " .. tostring(totalWeight)
        )
    end
    local chosenWeight = getRandomFloat(nil, 0, totalWeight, seedOrRNG)
    if verbose then
        log(
            nil,
            "Randomly chose weight for JSON entity: " .. tostring(chosenWeight)
        )
    end
    local randomJSONEntity = getJSONObjectWithChosenWeight(nil, jsonEntities, chosenWeight)
    if randomJSONEntity == nil then
        error("Failed to get a JSON entity with chosen weight: " .. tostring(chosenWeight))
    end
    return randomJSONEntity
end
--- Helper function to get a random JSON room from an array of JSON rooms.
-- 
-- (A JSON room is an XML file converted to JSON so that it can be directly imported into your mod.)
-- 
-- Note that this function does not simply choose a random element in the provided array; it will
-- properly account for each room weight using the algorithm from:
-- https://stackoverflow.com/questions/1761626/weighted-random-numbers
-- 
-- @param jsonRooms The array of rooms to randomly choose between.
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param verbose Optional. If specified, will write entries to the "log.txt" file that describe
-- what the function is doing. Default is false.
function ____exports.getRandomJSONRoom(self, jsonRooms, seedOrRNG, verbose)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if verbose == nil then
        verbose = false
    end
    local totalWeight = getTotalWeightOfJSONObject(nil, jsonRooms)
    if verbose then
        log(
            nil,
            "Total weight of the JSON rooms provided: " .. tostring(totalWeight)
        )
    end
    local chosenWeight = getRandomFloat(nil, 0, totalWeight, seedOrRNG)
    if verbose then
        log(
            nil,
            "Randomly chose weight for JSON room: " .. tostring(chosenWeight)
        )
    end
    local randomJSONRoom = getJSONObjectWithChosenWeight(nil, jsonRooms, chosenWeight)
    if randomJSONRoom == nil then
        error("Failed to get a JSON room with chosen weight: " .. tostring(chosenWeight))
    end
    return randomJSONRoom
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.roomGrid"] = function(...) 
local ____exports = {}
local isValidGridPositionNormal, isValidGridPositionLRoom
local ____LRoomShapeToRectangles = require("lua_modules.isaacscript-common.dist.src.objects.LRoomShapeToRectangles")
local L_ROOM_SHAPE_TO_RECTANGLES = ____LRoomShapeToRectangles.L_ROOM_SHAPE_TO_RECTANGLES
local ____math = require("lua_modules.isaacscript-common.dist.src.functions.math")
local inRectangle = ____math.inRectangle
local ____roomShape = require("lua_modules.isaacscript-common.dist.src.functions.roomShape")
local getRoomShapeBottomRightPosition = ____roomShape.getRoomShapeBottomRightPosition
local getRoomShapeTopLeftPosition = ____roomShape.getRoomShapeTopLeftPosition
local getRoomShapeWidth = ____roomShape.getRoomShapeWidth
local isLRoom = ____roomShape.isLRoom
--- Helper function to convert a grid position `Vector` to a world position `Vector`.
-- 
-- For example, the coordinates of (0, 0) are equal to `Vector(80, 160)`.
function ____exports.gridPositionToWorldPosition(self, gridPosition)
    local x = (gridPosition.X + 2) * 40
    local y = (gridPosition.Y + 4) * 40
    return Vector(x, y)
end
function isValidGridPositionNormal(self, gridPosition, roomShape)
    local topLeft = getRoomShapeTopLeftPosition(nil, roomShape)
    local bottomRight = getRoomShapeBottomRightPosition(nil, roomShape)
    return inRectangle(nil, gridPosition, topLeft, bottomRight)
end
function isValidGridPositionLRoom(self, gridPosition, roomShape)
    local rectangles = L_ROOM_SHAPE_TO_RECTANGLES[roomShape]
    if rectangles == nil then
        return false
    end
    local verticalTopLeft, verticalBottomRight, horizontalTopLeft, horizontalBottomRight = table.unpack(rectangles)
    return inRectangle(nil, gridPosition, verticalTopLeft, verticalBottomRight) or inRectangle(nil, gridPosition, horizontalTopLeft, horizontalBottomRight)
end
--- Helper function to convert grid coordinates to a world position `Vector`.
-- 
-- For example, the coordinates of (0, 0) are equal to `Vector(80, 160)`.
function ____exports.gridCoordinatesToWorldPosition(self, x, y)
    local gridPosition = Vector(x, y)
    return ____exports.gridPositionToWorldPosition(nil, gridPosition)
end
--- Helper function to convert a grid index to a grid position.
-- 
-- For example, in a 1x1 room, grid index 0 is equal to "Vector(-1, -1) and grid index 16 is equal
-- to "Vector(0, 0)".
function ____exports.gridIndexToGridPosition(self, gridIndex, roomShape)
    local gridWidth = getRoomShapeWidth(nil, roomShape)
    local x = gridIndex % gridWidth - 1
    local y = math.floor(gridIndex / gridWidth) - 1
    return Vector(x, y)
end
--- Test if a grid position is actually in the given `RoomShape`.
-- 
-- In this context, the grid position of the top-left wall is "Vector(-1, -1)".
function ____exports.isValidGridPosition(self, gridPosition, roomShape)
    local ____isLRoom_result_0
    if isLRoom(nil, roomShape) then
        ____isLRoom_result_0 = isValidGridPositionLRoom(nil, gridPosition, roomShape)
    else
        ____isLRoom_result_0 = isValidGridPositionNormal(nil, gridPosition, roomShape)
    end
    return ____isLRoom_result_0
end
--- Helper function to convert a world position `Vector` to a grid position `Vector`.
-- 
-- In this context, the grid position of the top-left wall is "Vector(-1, -1)".
function ____exports.worldPositionToGridPosition(self, worldPos)
    local x = math.floor(worldPos.X / 40 - 2 + 0.5)
    local y = math.floor(worldPos.Y / 40 - 4 + 0.5)
    return Vector(x, y)
end
--- Helper function to convert a world position `Vector` to a grid position `Vector`.
-- 
-- In this context, the grid position of the top-left wall is "Vector(-1, -1)".
-- 
-- This is similar to the `worldPositionToGridPosition` function, but the values are not rounded.
function ____exports.worldPositionToGridPositionFast(self, worldPos)
    local x = worldPos.X / 40 - 2
    local y = worldPos.Y / 40 - 4
    return Vector(x, y)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.LRoomShapeToRectangles"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
local TWO_BY_TWO_BOTTOM_RIGHT = Vector(25, 13)
--- "Vector(0, 0)" corresponds to the top left tile of a room, not including the walls. (The top-left
-- wall would be at "Vector(-1, -1)".)
____exports.L_ROOM_SHAPE_TO_RECTANGLES = {
    [RoomShape.LTL] = {
        Vector(13, 0),
        Vector(25, 13),
        Vector(0, 7),
        TWO_BY_TWO_BOTTOM_RIGHT
    },
    [RoomShape.LTR] = {
        VectorZero,
        Vector(12, 13),
        Vector(0, 7),
        TWO_BY_TWO_BOTTOM_RIGHT
    },
    [RoomShape.LBL] = {
        VectorZero,
        Vector(25, 6),
        Vector(13, 0),
        TWO_BY_TWO_BOTTOM_RIGHT
    },
    [RoomShape.LBR] = {
        VectorZero,
        Vector(25, 6),
        VectorZero,
        Vector(12, 13)
    }
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.DisableAllSound"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local musicManager = ____cachedClasses.musicManager
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____sound = require("lua_modules.isaacscript-common.dist.src.functions.sound")
local stopAllSoundEffects = ____sound.stopAllSoundEffects
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.DisableAllSound = __TS__Class()
local DisableAllSound = ____exports.DisableAllSound
DisableAllSound.name = "DisableAllSound"
__TS__ClassExtends(DisableAllSound, Feature)
function DisableAllSound.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {disableSoundSet = __TS__New(Set)}}
    self.musicWasEnabled = false
    self.postRender = function()
        if self.v.run.disableSoundSet.size == 0 then
            return
        end
        stopAllSoundEffects(nil)
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
end
function DisableAllSound.prototype.enableAllSound(self, key)
    if not self.v.run.disableSoundSet:has(key) then
        return
    end
    self.v.run.disableSoundSet:delete(key)
    if self.v.run.disableSoundSet.size == 0 and self.musicWasEnabled then
        musicManager:Enable()
    end
    stopAllSoundEffects(nil)
end
function DisableAllSound.prototype.disableAllSound(self, key)
    if self.v.run.disableSoundSet.size == 0 then
        self.musicWasEnabled = musicManager:IsEnabled()
    end
    self.v.run.disableSoundSet:add(key)
    stopAllSoundEffects(nil)
end
__TS__Decorate({Exported}, DisableAllSound.prototype, "enableAllSound", true)
__TS__Decorate({Exported}, DisableAllSound.prototype, "disableAllSound", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.sound"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local sfxManager = ____cachedClasses.sfxManager
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
function ____exports.stopAllSoundEffects(self)
    for ____, soundEffect in ipairs(getEnumValues(nil, SoundEffect)) do
        sfxManager:Stop(soundEffect)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.DisableInputs"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Iterator = ____lualib.__TS__Iterator
local __TS__Decorate = ____lualib.__TS__Decorate
local Set = ____lualib.Set
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local InputHook = ____isaac_2Dtypescript_2Ddefinitions.InputHook
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____input = require("lua_modules.isaacscript-common.dist.src.functions.input")
local getMoveActions = ____input.getMoveActions
local getShootActions = ____input.getShootActions
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.DisableInputs = __TS__Class()
local DisableInputs = ____exports.DisableInputs
DisableInputs.name = "DisableInputs"
__TS__ClassExtends(DisableInputs, Feature)
function DisableInputs.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {
        disableInputs = __TS__New(Map),
        enableAllInputsWithBlacklistMap = __TS__New(Map),
        disableAllInputsWithWhitelistMap = __TS__New(Map)
    }}
    self.isActionPressed = function(____, _entity, _inputHook, buttonAction) return self:getReturnValue(buttonAction, true) end
    self.isActionTriggered = function(____, _entity, _inputHook, buttonAction) return self:getReturnValue(buttonAction, true) end
    self.getActionValue = function(____, _entity, _inputHook, buttonAction) return self:getReturnValue(buttonAction, false) end
    self.callbacksUsed = {{ModCallback.INPUT_ACTION, {self.isActionPressed, InputHook.IS_ACTION_PRESSED}}, {ModCallback.INPUT_ACTION, {self.isActionTriggered, InputHook.IS_ACTION_TRIGGERED}}, {ModCallback.INPUT_ACTION, {self.getActionValue, InputHook.GET_ACTION_VALUE}}}
end
function DisableInputs.prototype.getReturnValue(self, buttonAction, booleanCallback)
    local ____booleanCallback_0
    if booleanCallback then
        ____booleanCallback_0 = false
    else
        ____booleanCallback_0 = 0
    end
    local disableValue = ____booleanCallback_0
    for ____, blacklist in __TS__Iterator(self.v.run.disableInputs:values()) do
        if blacklist:has(buttonAction) then
            return disableValue
        end
    end
    for ____, whitelist in __TS__Iterator(self.v.run.disableAllInputsWithWhitelistMap:values()) do
        if not whitelist:has(buttonAction) then
            return disableValue
        end
    end
    for ____, blacklist in __TS__Iterator(self.v.run.enableAllInputsWithBlacklistMap:values()) do
        if blacklist:has(buttonAction) then
            return disableValue
        end
    end
    return nil
end
function DisableInputs.prototype.enableAllInputs(self, key)
    self.v.run.disableAllInputsWithWhitelistMap:delete(key)
    self.v.run.enableAllInputsWithBlacklistMap:delete(key)
end
function DisableInputs.prototype.disableInputs(self, key, ...)
    local buttonActions = {...}
    local buttonActionsSet = __TS__New(Set, buttonActions)
    self.v.run.disableInputs:set(key, buttonActionsSet)
end
function DisableInputs.prototype.disableAllInputs(self, key)
    self.v.run.disableAllInputsWithWhitelistMap:set(
        key,
        __TS__New(Set)
    )
    self.v.run.enableAllInputsWithBlacklistMap:delete(key)
end
function DisableInputs.prototype.enableAllInputsExceptFor(self, key, blacklist)
    self.v.run.disableAllInputsWithWhitelistMap:delete(key)
    self.v.run.enableAllInputsWithBlacklistMap:set(key, blacklist)
end
function DisableInputs.prototype.disableAllInputsExceptFor(self, key, whitelist)
    self.v.run.disableAllInputsWithWhitelistMap:set(key, whitelist)
    self.v.run.enableAllInputsWithBlacklistMap:delete(key)
end
function DisableInputs.prototype.disableMovementInputs(self, key)
    local moveActions = getMoveActions(nil)
    self:enableAllInputsExceptFor(key, moveActions)
end
function DisableInputs.prototype.disableShootingInputs(self, key)
    local shootActions = getShootActions(nil)
    self:enableAllInputsExceptFor(key, shootActions)
end
__TS__Decorate({Exported}, DisableInputs.prototype, "enableAllInputs", true)
__TS__Decorate({Exported}, DisableInputs.prototype, "disableInputs", true)
__TS__Decorate({Exported}, DisableInputs.prototype, "disableAllInputs", true)
__TS__Decorate({Exported}, DisableInputs.prototype, "enableAllInputsExceptFor", true)
__TS__Decorate({Exported}, DisableInputs.prototype, "disableAllInputsExceptFor", true)
__TS__Decorate({Exported}, DisableInputs.prototype, "disableMovementInputs", true)
__TS__Decorate({Exported}, DisableInputs.prototype, "disableShootingInputs", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.ExtraConsoleCommands"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local LevelCurse = ____isaac_2Dtypescript_2Ddefinitions.LevelCurse
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local addFlag = ____flag.addFlag
local bitFlags = ____flag.bitFlags
local ____map = require("lua_modules.isaacscript-common.dist.src.functions.map")
local getMapPartialMatch = ____map.getMapPartialMatch
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local isVanillaConsoleCommand = ____utils.isVanillaConsoleCommand
local printConsole = ____utils.printConsole
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local commands = require("lua_modules.isaacscript-common.dist.src.classes.features.other.extraConsoleCommands.commands")
local ____v = require("lua_modules.isaacscript-common.dist.src.classes.features.other.extraConsoleCommands.v")
local v = ____v.v
____exports.ExtraConsoleCommands = __TS__Class()
local ExtraConsoleCommands = ____exports.ExtraConsoleCommands
ExtraConsoleCommands.name = "ExtraConsoleCommands"
__TS__ClassExtends(ExtraConsoleCommands, Feature)
function ExtraConsoleCommands.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = v
    self.commandFunctionMap = __TS__New(Map)
    self.postUpdate = function()
        if self.v.persistent.spamBloodRights then
            local player = Isaac.GetPlayer()
            player:UseActiveItem(CollectibleType.BLOOD_RIGHTS)
        end
    end
    self.evaluateCacheDamage = function(____, player)
        if self.v.persistent.damage then
            player.Damage = self.v.persistent.damageAmount
        end
    end
    self.evaluateCacheFireDelay = function(____, player)
        if self.v.persistent.tears then
            player.FireDelay = self.v.persistent.tearsAmount
        end
    end
    self.evaluateCacheSpeed = function(____, player)
        if self.v.persistent.speed then
            player.MoveSpeed = self.v.persistent.speedAmount
        end
    end
    self.evaluateCacheFlying = function(____, player)
        if self.v.persistent.flight then
            player.CanFly = true
        end
    end
    self.entityTakeDmgPlayer = function(____, _entity, _damageAmount, _damageFlags, _damageSource, _damageCountdownFrames)
        if self.v.persistent.spamBloodRights then
            return false
        end
        return nil
    end
    self.postCurseEval = function(____, curses)
        if self.v.persistent.disableCurses then
            return bitFlags(nil, LevelCurse.NONE)
        end
        local newCurses = curses
        if self.v.persistent.darkness then
            newCurses = addFlag(nil, newCurses, LevelCurse.DARKNESS)
        end
        if self.v.persistent.labyrinth then
            newCurses = addFlag(nil, newCurses, LevelCurse.LABYRINTH)
        end
        if self.v.persistent.lost then
            newCurses = addFlag(nil, newCurses, LevelCurse.LOST)
        end
        if self.v.persistent.unknown then
            newCurses = addFlag(nil, newCurses, LevelCurse.UNKNOWN)
        end
        if self.v.persistent.cursed then
            newCurses = addFlag(nil, newCurses, LevelCurse.CURSED)
        end
        if self.v.persistent.maze then
            newCurses = addFlag(nil, newCurses, LevelCurse.MAZE)
        end
        if self.v.persistent.blind then
            newCurses = addFlag(nil, newCurses, LevelCurse.BLIND)
        end
        if self.v.persistent.giant then
            newCurses = addFlag(nil, newCurses, LevelCurse.GIANT)
        end
        local ____temp_0
        if curses == newCurses then
            ____temp_0 = nil
        else
            ____temp_0 = newCurses
        end
        return ____temp_0
    end
    self.executeCmd = function(____, command, params)
        local resultTuple = getMapPartialMatch(nil, command, self.commandFunctionMap)
        if resultTuple == nil then
            printConsole(nil, "That is an invalid console command.")
            return
        end
        local commandName, commandFunction = table.unpack(resultTuple)
        printConsole(nil, "Command: " .. commandName)
        commandFunction(nil, params)
    end
    self.postFireTear = function(____, tear)
        if self.v.persistent.chaosCardTears then
            tear:ChangeVariant(TearVariant.CHAOS_CARD)
        end
    end
    self.callbacksUsed = {
        {ModCallback.POST_UPDATE, {self.postUpdate}},
        {ModCallback.EVALUATE_CACHE, {self.evaluateCacheDamage, CacheFlag.DAMAGE}},
        {ModCallback.EVALUATE_CACHE, {self.evaluateCacheFireDelay, CacheFlag.FIRE_DELAY}},
        {ModCallback.EVALUATE_CACHE, {self.evaluateCacheSpeed, CacheFlag.SPEED}},
        {ModCallback.EVALUATE_CACHE, {self.evaluateCacheFlying, CacheFlag.FLYING}},
        {ModCallback.ENTITY_TAKE_DMG, {self.entityTakeDmgPlayer, EntityType.PLAYER}},
        {ModCallback.POST_CURSE_EVAL, {self.postCurseEval}},
        {ModCallback.EXECUTE_CMD, {self.executeCmd}},
        {ModCallback.POST_FIRE_TEAR, {self.postFireTear}}
    }
    for ____, ____value in ipairs(__TS__ObjectEntries(commands)) do
        local funcName = ____value[1]
        local func = ____value[2]
        self.commandFunctionMap:set(funcName, func)
    end
end
function ExtraConsoleCommands.prototype.addConsoleCommand(self, commandName, commandFunction)
    if isVanillaConsoleCommand(nil, commandName) then
        error(("Failed to add a new console command of \"" .. commandName) .. "\" because that name already belongs to a vanilla command. You must pick a non-colliding name.")
    end
    if self.commandFunctionMap:has(commandName) then
        error(("Failed to add a new console command of \"" .. commandName) .. "\" because there is already an existing custom command by that name. If you want to overwrite a command from the standard library, you can use the \"removeExtraConsoleCommand\" function.")
    end
    self.commandFunctionMap:set(commandName, commandFunction)
end
function ExtraConsoleCommands.prototype.removeConsoleCommand(self, commandName)
    if not self.commandFunctionMap:has(commandName) then
        error(("Failed to remove the console command of \"" .. commandName) .. "\", since it does not already exist in the map.")
    end
    self.commandFunctionMap:delete(commandName)
end
__TS__Decorate({Exported}, ExtraConsoleCommands.prototype, "addConsoleCommand", true)
__TS__Decorate({Exported}, ExtraConsoleCommands.prototype, "removeConsoleCommand", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.extraConsoleCommands.commands"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__StringSplit = ____lualib.__TS__StringSplit
local __TS__StringSlice = ____lualib.__TS__StringSlice
local __TS__ArrayIncludes = ____lualib.__TS__ArrayIncludes
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot
local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag
local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction
local DisplayFlag = ____isaac_2Dtypescript_2Ddefinitions.DisplayFlag
local GameStateFlag = ____isaac_2Dtypescript_2Ddefinitions.GameStateFlag
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local sfxManager = ____cachedClasses.sfxManager
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local DOGMA_ROOM_GRID_INDEX = ____constants.DOGMA_ROOM_GRID_INDEX
local MAX_LEVEL_GRID_INDEX = ____constants.MAX_LEVEL_GRID_INDEX
local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.src.core.constantsFirstLast")
local FIRST_CARD_TYPE = ____constantsFirstLast.FIRST_CARD_TYPE
local FIRST_CHARACTER = ____constantsFirstLast.FIRST_CHARACTER
local FIRST_PILL_COLOR = ____constantsFirstLast.FIRST_PILL_COLOR
local FIRST_PILL_EFFECT = ____constantsFirstLast.FIRST_PILL_EFFECT
local FIRST_ROOM_TYPE = ____constantsFirstLast.FIRST_ROOM_TYPE
local FIRST_STAGE = ____constantsFirstLast.FIRST_STAGE
local LAST_ROOM_TYPE = ____constantsFirstLast.LAST_ROOM_TYPE
local LAST_STAGE = ____constantsFirstLast.LAST_STAGE
local LAST_VANILLA_CARD_TYPE = ____constantsFirstLast.LAST_VANILLA_CARD_TYPE
local LAST_VANILLA_CHARACTER = ____constantsFirstLast.LAST_VANILLA_CHARACTER
local LAST_VANILLA_PILL_EFFECT = ____constantsFirstLast.LAST_VANILLA_PILL_EFFECT
local ____HealthType = require("lua_modules.isaacscript-common.dist.src.enums.HealthType")
local HealthType = ____HealthType.HealthType
local ____cards = require("lua_modules.isaacscript-common.dist.src.functions.cards")
local getCardName = ____cards.getCardName
local ____characters = require("lua_modules.isaacscript-common.dist.src.functions.characters")
local getCharacterName = ____characters.getCharacterName
local ____charge = require("lua_modules.isaacscript-common.dist.src.functions.charge")
local addCharge = ____charge.addCharge
local getTotalCharge = ____charge.getTotalCharge
local ____collectibles = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
local isValidCollectibleType = ____collectibles.isValidCollectibleType
local ____deepCopyTests = require("lua_modules.isaacscript-common.dist.src.functions.deepCopyTests")
local runDeepCopyTests = ____deepCopyTests.runDeepCopyTests
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getNPCs = ____entitiesSpecific.getNPCs
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local addFlag = ____flag.addFlag
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local spawnGridEntity = ____gridEntities.spawnGridEntity
local ____levelGrid = require("lua_modules.isaacscript-common.dist.src.functions.levelGrid")
local getRoomGridIndexesForType = ____levelGrid.getRoomGridIndexesForType
local ____logMisc = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
local logPlayerEffects = ____logMisc.logPlayerEffects
local logRoom = ____logMisc.logRoom
local logSeedEffects = ____logMisc.logSeedEffects
local logSounds = ____logMisc.logSounds
local ____map = require("lua_modules.isaacscript-common.dist.src.functions.map")
local getMapPartialMatch = ____map.getMapPartialMatch
local ____mergeTests = require("lua_modules.isaacscript-common.dist.src.functions.mergeTests")
local runMergeTests = ____mergeTests.runMergeTests
local ____pickupsSpecific = require("lua_modules.isaacscript-common.dist.src.functions.pickupsSpecific")
local spawnCard = ____pickupsSpecific.spawnCard
local spawnPill = ____pickupsSpecific.spawnPill
local spawnTrinketFunction = ____pickupsSpecific.spawnTrinket
local ____pills = require("lua_modules.isaacscript-common.dist.src.functions.pills")
local getPillEffectName = ____pills.getPillEffectName
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getPlayers = ____playerIndex.getPlayers
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local addCollectibleCostume = ____players.addCollectibleCostume
local getPlayerName = ____players.getPlayerName
local removeCollectibleCostume = ____players.removeCollectibleCostume
local useActiveItemTemp = ____players.useActiveItemTemp
local ____roomGrid = require("lua_modules.isaacscript-common.dist.src.functions.roomGrid")
local gridCoordinatesToWorldPosition = ____roomGrid.gridCoordinatesToWorldPosition
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local changeRoom = ____rooms.changeRoom
local ____roomTransition = require("lua_modules.isaacscript-common.dist.src.functions.roomTransition")
local reloadRoomFunction = ____roomTransition.reloadRoom
local ____run = require("lua_modules.isaacscript-common.dist.src.functions.run")
local onSetSeed = ____run.onSetSeed
local restart = ____run.restart
local setUnseeded = ____run.setUnseeded
local ____spawnCollectible = require("lua_modules.isaacscript-common.dist.src.functions.spawnCollectible")
local spawnCollectibleUnsafe = ____spawnCollectible.spawnCollectibleUnsafe
local ____stage = require("lua_modules.isaacscript-common.dist.src.functions.stage")
local setStage = ____stage.setStage
local ____trinkets = require("lua_modules.isaacscript-common.dist.src.functions.trinkets")
local getGoldenTrinketType = ____trinkets.getGoldenTrinketType
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asCardType = ____types.asCardType
local asCollectibleType = ____types.asCollectibleType
local asTrinketType = ____types.asTrinketType
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local iRange = ____utils.iRange
local printConsole = ____utils.printConsole
local printEnabled = ____utils.printEnabled
local ____cardNameToTypeMap = require("lua_modules.isaacscript-common.dist.src.maps.cardNameToTypeMap")
local CARD_NAME_TO_TYPE_MAP = ____cardNameToTypeMap.CARD_NAME_TO_TYPE_MAP
local ____characterNameToTypeMap = require("lua_modules.isaacscript-common.dist.src.maps.characterNameToTypeMap")
local CHARACTER_NAME_TO_TYPE_MAP = ____characterNameToTypeMap.CHARACTER_NAME_TO_TYPE_MAP
local ____collectibleNameToTypeMap = require("lua_modules.isaacscript-common.dist.src.maps.collectibleNameToTypeMap")
local COLLECTIBLE_NAME_TO_TYPE_MAP = ____collectibleNameToTypeMap.COLLECTIBLE_NAME_TO_TYPE_MAP
local ____pillNameToEffectMap = require("lua_modules.isaacscript-common.dist.src.maps.pillNameToEffectMap")
local PILL_NAME_TO_EFFECT_MAP = ____pillNameToEffectMap.PILL_NAME_TO_EFFECT_MAP
local ____roomNameToTypeMap = require("lua_modules.isaacscript-common.dist.src.maps.roomNameToTypeMap")
local ROOM_NAME_TO_TYPE_MAP = ____roomNameToTypeMap.ROOM_NAME_TO_TYPE_MAP
local ____trinketNameToTypeMap = require("lua_modules.isaacscript-common.dist.src.maps.trinketNameToTypeMap")
local TRINKET_NAME_TO_TYPE_MAP = ____trinketNameToTypeMap.TRINKET_NAME_TO_TYPE_MAP
local ____subroutines = require("lua_modules.isaacscript-common.dist.src.classes.features.other.extraConsoleCommands.subroutines")
local addHeart = ____subroutines.addHeart
local devilAngel = ____subroutines.devilAngel
local listEntities = ____subroutines.listEntities
local listGridEntities = ____subroutines.listGridEntities
local movePlayer = ____subroutines.movePlayer
local spawnTrapdoorOrCrawlSpace = ____subroutines.spawnTrapdoorOrCrawlSpace
local warpNextToRoomType = ____subroutines.warpNextToRoomType
local warpToRoomType = ____subroutines.warpToRoomType
local ____v = require("lua_modules.isaacscript-common.dist.src.classes.features.other.extraConsoleCommands.v")
local v = ____v.v
--- Warps to the first Boss Room on the floor.
function ____exports.bossRoom(self)
    warpToRoomType(nil, RoomType.BOSS)
end
--- Toggles Chaos Card tears for the player. Useful for killing enemies very fast without using
-- "debug 10".
function ____exports.chaosCardTears(self)
    v.persistent.chaosCardTears = not v.persistent.chaosCardTears
    printEnabled(nil, v.persistent.chaosCardTears, "Chaos Card tears")
end
--- Warps to the Devil Room for the floor. If the Angel Room has already been visited or initialized,
-- this will uninitialize it and make an Devil Room instead.
function ____exports.devilRoom(self)
    devilAngel(nil, true)
end
--- Gives the player a golden bomb.
function ____exports.goldenBomb(self)
    local player = Isaac.GetPlayer()
    player:AddGoldenBomb()
end
--- Gives a golden heart. Provide a number to give a custom amount of hearts. (You can use negative
-- numbers to remove hearts.)
function ____exports.goldenHearts(self, params)
    addHeart(nil, params, HealthType.GOLDEN)
end
--- Gives the player a golden key.
function ____exports.goldenKey(self)
    local player = Isaac.GetPlayer()
    player:AddGoldenKey()
end
--- Alias for the "debug 2" command. Useful for seeing the grid costs of each tile in the room.
function ____exports.gridCosts(self)
    Isaac.ExecuteCommand("debug 2")
end
--- Warps to the I AM ERROR room for the floor.
function ____exports.iAmErrorRoom(self)
    changeRoom(nil, GridRoom.ERROR)
end
--- Sets every NPC in the room to 1 HP.
function ____exports.oneHP(self)
    for ____, npc in ipairs(getNPCs(nil)) do
        npc.HitPoints = 1
    end
    printConsole(nil, "Set every NPC to 1 HP.")
end
--- Gives a poop mana charge. This only affects Tainted Blue Baby. Provide a number to give a custom
-- amount of charges. (You can use negative numbers to remove charges.)
function ____exports.poopMana(self, params)
    local charges = 1
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of mana to add.")
            return
        end
        charges = num
    end
    local player = Isaac.GetPlayer()
    player:AddPoopMana(charges)
end
--- Play the supplied sound effect.
-- 
-- For example:
-- - sound 1 - Plays the 1-Up sound effect.
function ____exports.sound(self, params)
    local soundEffect = tonumber(params)
    if soundEffect == nil then
        printConsole(nil, "That is an invalid sound effect ID.")
        return
    end
    sfxManager:Play(soundEffect)
end
--- Warps to the starting room of the floor.
function ____exports.startingRoom(self)
    local level = game:GetLevel()
    local startingRoomIndex = level:GetStartingRoomIndex()
    changeRoom(nil, startingRoomIndex)
end
--- Adds a single charge to the player's specified active item. You must provide the active slot
-- number. Provide a second number to give a custom amount of charges. (You can use negative numbers
-- to remove charge.)
function ____exports.addCharges(self, params)
    if params == "" then
        printConsole(nil, "You must specify a slot number. (Use 0 for the primary slot, 1 for the Schoolbag slot, 2 for the pocket item slot, and 3 for the Dice Bag slot.)")
        return
    end
    local args = __TS__StringSplit(params, " ")
    if #args ~= 1 and #args ~= 2 then
        printConsole(nil, "That is an invalid amount of arguments.")
        return
    end
    local activeSlotString, numChargeString = table.unpack(args)
    local activeSlot = tonumber(activeSlotString)
    if activeSlot == nil then
        printConsole(
            nil,
            "The provided slot number is invalid: " .. tostring(activeSlotString)
        )
        return
    end
    if activeSlot < ActiveSlot.PRIMARY or activeSlot > ActiveSlot.POCKET_SINGLE_USE then
        printConsole(
            nil,
            "The provided slot number is invalid: " .. tostring(activeSlot)
        )
        return
    end
    local numCharges = 1
    if numChargeString ~= nil then
        local numChargesAttempt = tonumber(numChargeString)
        if numChargesAttempt == nil then
            printConsole(nil, "The provided charge amount is invalid: " .. numChargeString)
            return
        end
        numCharges = numChargesAttempt
    end
    local player = Isaac.GetPlayer()
    addCharge(nil, player, activeSlot, numCharges)
end
--- Warps to the Angel Room for the floor. If the Devil Room has already been visited or initialized,
-- this will uninitialize it and make an Angel Room instead.
function ____exports.angelRoom(self)
    devilAngel(nil, false)
end
--- Activates the flags for the Ascent (i.e. Backwards Path).
function ____exports.ascent(self)
    game:SetStateFlag(GameStateFlag.BACKWARDS_PATH_INIT, true)
    game:SetStateFlag(GameStateFlag.BACKWARDS_PATH, true)
    printConsole(nil, "Set Ascent flags.")
end
--- Warps to the first Clean Bedroom or Dirty Bedroom on the floor.
function ____exports.bedroom(self)
    local cleanBedroomGridIndexes = getRoomGridIndexesForType(nil, RoomType.CLEAN_BEDROOM)
    if #cleanBedroomGridIndexes > 0 then
        warpToRoomType(nil, RoomType.CLEAN_BEDROOM)
        return
    end
    local dirtyBedroomGridIndexes = getRoomGridIndexesForType(nil, RoomType.DIRTY_BEDROOM)
    if #dirtyBedroomGridIndexes > 0 then
        warpToRoomType(nil, RoomType.DIRTY_BEDROOM)
        return
    end
    printConsole(nil, "There are no Clean Bedrooms or Dirty Bedrooms on this floor.")
end
--- Gives a half black heart. Provide a number to give a custom amount of hearts. (You can use
-- negative numbers to remove hearts.)
function ____exports.blackHearts(self, params)
    addHeart(nil, params, HealthType.BLACK)
end
--- Warps to the Black Market for the floor.
function ____exports.blackMarket(self)
    changeRoom(nil, GridRoom.BLACK_MARKET)
end
--- Toggles permanent Curse of the Blind.
function ____exports.blind(self)
    v.persistent.blind = not v.persistent.blind
    printEnabled(nil, v.persistent.blind, "permanent Curse of the Blind")
end
--- Gives a blood charge. This only affects Bethany. Provide a number to give a custom amount of
-- charges. (You can use negative numbers to remove charges.)
function ____exports.bloodCharges(self, params)
    local charges = 1
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of charges to add.")
            return
        end
        charges = num
    end
    local player = Isaac.GetPlayer()
    player:AddBloodCharge(charges)
end
--- Alias for the "blackMarket" command.
function ____exports.bm(self)
    ____exports.blackMarket(nil)
end
--- Gives a bomb. Provide a number to give a custom amount of bombs. (You can use negative numbers to
-- remove bombs.)
function ____exports.bomb(self, params)
    local numBombs = 1
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of bombs to add.")
            return
        end
        numBombs = num
    end
    local player = Isaac.GetPlayer()
    player:AddBombs(numBombs)
end
--- Gives 99 bombs. Provide a number to give a custom amount of bombs. (You can use negative numbers
-- to remove bombs.)
function ____exports.bombs(self, params)
    local numBombs = 99
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of bombs to add.")
            return
        end
        numBombs = num
    end
    local player = Isaac.GetPlayer()
    player:AddBombs(numBombs)
end
--- Gives a bone heart. Provide a number to give a custom amount of hearts. (You can use negative
-- numbers to remove hearts.)
function ____exports.boneHearts(self, params)
    addHeart(nil, params, HealthType.BONE)
end
--- Alias for the "bossRoom" command.
function ____exports.boss(self)
    ____exports.bossRoom(nil)
end
--- Warps to the room next to the first Boss Room on the floor.
function ____exports.bossNextRoom(self)
    warpNextToRoomType(nil, RoomType.BOSS)
end
--- Warps to the Boss Rush for the floor.
function ____exports.bossRush(self)
    changeRoom(nil, GridRoom.BOSS_RUSH)
end
--- Gives a broken heart. Provide a number to give a custom amount of hearts. (You can use negative
-- numbers to remove hearts.)
function ____exports.brokenHearts(self, params)
    addHeart(nil, params, HealthType.BROKEN)
end
--- Gives the specified card. Accepts either the card sub-type or the partial name of the card.
-- 
-- For example:
-- - card 5 - Gives The Emperor.
-- - card spa - Gives 2 of Spades.
function ____exports.card(self, params)
    if params == "" then
        printConsole(nil, "You must specify a card name or number.")
        return
    end
    local cardType
    local num = tonumber(params)
    if num == nil then
        local match = getMapPartialMatch(nil, params, CARD_NAME_TO_TYPE_MAP)
        if match == nil then
            printConsole(nil, "Unknown card: " .. params)
            return
        end
        cardType = match[2]
    else
        if num < FIRST_CARD_TYPE or num > LAST_VANILLA_CARD_TYPE then
            printConsole(
                nil,
                "Invalid card sub-type: " .. tostring(num)
            )
            return
        end
        cardType = num
    end
    local cardName = getCardName(nil, cardType)
    Isaac.ExecuteCommand("g k" .. tostring(cardType))
    printConsole(
        nil,
        ((("Gave card: " .. cardName) .. " (") .. tostring(cardType)) .. ")"
    )
end
--- Spawns every card on the ground, starting at the top-left-most tile.
function ____exports.cards(self)
    local cardType = FIRST_CARD_TYPE
    do
        local y = 0
        while y <= 6 do
            do
                local x = 0
                while x <= 12 do
                    if cardType > LAST_VANILLA_CARD_TYPE then
                        return
                    end
                    local worldPosition = gridCoordinatesToWorldPosition(nil, x, y)
                    spawnCard(
                        nil,
                        asCardType(nil, cardType),
                        worldPosition
                    )
                    cardType = cardType + 1
                    x = x + 1
                end
            end
            y = y + 1
        end
    end
end
--- Alias for the "chaosCardTears" command.
function ____exports.cc(self)
    ____exports.chaosCardTears(nil)
end
--- Restart as the specified character. Accepts either the character sub-type or the partial name of
-- the character.
-- 
-- For example:
-- - character 2 - Restarts as Cain.
-- - character ta - Restarts as Tainted Azazel.
function ____exports.character(self, params)
    if params == "" then
        printConsole(nil, "You must specify a character name or number.")
        return
    end
    local playerType
    local num = tonumber(params)
    if num == nil then
        local match = getMapPartialMatch(nil, params, CHARACTER_NAME_TO_TYPE_MAP)
        if match == nil then
            printConsole(nil, "Unknown character: " .. params)
            return
        end
        playerType = match[2]
    else
        if num < FIRST_CHARACTER or num > LAST_VANILLA_CHARACTER then
            printConsole(
                nil,
                "Invalid player sub-type: " .. tostring(num)
            )
            return
        end
        playerType = num
    end
    local characterName = getCharacterName(nil, playerType)
    restart(nil, playerType)
    printConsole(
        nil,
        ((("Restarting as character: " .. characterName) .. " (") .. tostring(playerType)) .. ")"
    )
end
--- Alias for the "addCharges" command.
function ____exports.charge(self, params)
    ____exports.addCharges(nil, params)
end
--- Warps to the first Clean Bedroom on the floor.
function ____exports.cleanBedroom(self)
    warpToRoomType(nil, RoomType.CLEAN_BEDROOM)
end
--- Gives a coin. Provide a number to give a custom amount of coins. (You can use negative numbers to
-- remove coins.)
function ____exports.coin(self, params)
    local numCoins = 1
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of coins to add.")
            return
        end
        numCoins = num
    end
    local player = Isaac.GetPlayer()
    player:AddCoins(numCoins)
end
--- Gives 999 coins. Provide a number to give a custom amount of coins. (You can use negative numbers
-- to remove coins.)
function ____exports.coins(self, params)
    local numCoins = 999
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of coins to add.")
            return
        end
        numCoins = num
    end
    local player = Isaac.GetPlayer()
    player:AddCoins(numCoins)
end
--- Creates a crawl space next to the player.
function ____exports.crawlSpace(self)
    spawnTrapdoorOrCrawlSpace(nil, false)
end
--- Toggles permanent Curse of the Cursed.
function ____exports.cursed(self)
    v.persistent.cursed = not v.persistent.cursed
    printEnabled(nil, v.persistent.cursed, "permanent Curse of the Cursed")
end
--- Uses the D20.
function ____exports.d20(self)
    local player = Isaac.GetPlayer()
    useActiveItemTemp(nil, player, CollectibleType.D20)
end
--- Uses the D6.
function ____exports.d6(self)
    local player = Isaac.GetPlayer()
    useActiveItemTemp(nil, player, CollectibleType.D6)
end
--- Warps to the Mausoleum 2 Boss Room that has Dad's Note in it.
function ____exports.dadsNote(self)
    game:SetStateFlag(GameStateFlag.BACKWARDS_PATH_INIT, true)
    setStage(nil, LevelStage.DEPTHS_2, StageType.REPENTANCE)
    ____exports.bossRoom(nil)
end
--- Toggles a set damage stat for the player. You can provide an optional argument to this command in
-- order to set the damage to a specific amount. Default is 500.
function ____exports.damage(self, params)
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "The provided damage amount is invalid: " .. params)
            return
        end
        v.persistent.damageAmount = num
    end
    v.persistent.damage = not v.persistent.damage
    local player = Isaac.GetPlayer()
    player:AddCacheFlags(CacheFlag.DAMAGE)
    player:EvaluateItems()
    printEnabled(nil, v.persistent.damage, "set damage")
end
--- Toggles permanent Curse of Darkness.
function ____exports.darkness(self)
    v.persistent.darkness = not v.persistent.darkness
    printEnabled(nil, v.persistent.darkness, "permanent Curse of Darkness")
end
--- Alias for the "devil" command.
function ____exports.dd(self)
    ____exports.devilRoom(nil)
end
--- Warps to the first Dirty Bedroom on the floor.
function ____exports.dirtyBedroom(self)
    warpToRoomType(nil, RoomType.DIRTY_BEDROOM)
end
--- Toggles whether or not curses can appear.
function ____exports.disableCurses(self)
    v.persistent.disableCurses = not v.persistent.disableCurses
    printEnabled(nil, not v.persistent.disableCurses, "curses")
end
--- Warps to the Dogma Boss Room.
function ____exports.dogma(self)
    setStage(nil, LevelStage.HOME, StageType.WRATH_OF_THE_LAMB)
    changeRoom(nil, DOGMA_ROOM_GRID_INDEX)
end
--- Moves the player 0.5 units down. Provide a number to move a custom amount of units.
function ____exports.down(self, params)
    movePlayer(nil, params, Direction.DOWN)
end
--- Warps to the Dungeon (i.e. the crawl space room) for the floor.
function ____exports.dungeon(self)
    changeRoom(nil, GridRoom.DUNGEON)
end
--- Logs the player's current temporary effects to the "log.txt" file.
function ____exports.effects(self)
    local player = Isaac.GetPlayer()
    logPlayerEffects(nil, player)
    printConsole(nil, "Logged the player's effects to the \"log.txt\" file.")
end
--- Alias for the "iAmError" command.
function ____exports.errorRoom(self)
    ____exports.iAmErrorRoom(nil)
end
--- Gives an eternal heart. Provide a number to give a custom amount of hearts. (You can use negative
-- numbers to remove hearts.)
function ____exports.eternalHearts(self, params)
    addHeart(nil, params, HealthType.ETERNAL)
end
--- Toggles flight for the player.
function ____exports.flight(self, params)
    local player = Isaac.GetPlayer()
    v.persistent.flight = not v.persistent.flight
    if params == "true" then
        v.persistent.flight = true
    elseif params == "false" then
        v.persistent.flight = false
    end
    player:AddCacheFlags(CacheFlag.FLYING)
    player:EvaluateItems()
    local collectibleUsedToShowFlight = CollectibleType.FATE
    if v.persistent.flight then
        addCollectibleCostume(nil, player, collectibleUsedToShowFlight)
    else
        removeCollectibleCostume(nil, player, collectibleUsedToShowFlight)
    end
    printEnabled(nil, v.persistent.speed, "set speed")
end
--- Alias for the "startingRoom" command.
function ____exports.fool(self)
    ____exports.startingRoom(nil)
end
--- Displays the current challenge, if any.
function ____exports.getChallenge(self)
    local challenge = Isaac.GetChallenge()
    local challengeName = Challenge[challenge]
    local challengeDescription = challengeName == nil and tostring(challenge) .. " (custom)" or ((("Challenge." .. challengeName) .. " (") .. tostring(challenge)) .. ")"
    printConsole(nil, "The current challenge is: " .. challengeDescription)
end
--- Prints the charge for the specified slot. By default, will use `ActiveSlot.PRIMARY`.
function ____exports.getCharge(self, params)
    local activeSlot = ActiveSlot.PRIMARY
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "The provided slot number is invalid: " .. params)
            return
        end
        activeSlot = num
    end
    local player = Isaac.GetPlayer()
    local totalCharge = getTotalCharge(nil, player, activeSlot)
    printConsole(
        nil,
        (((("Total charge for ActiveSlot." .. tostring(ActiveSlot[activeSlot])) .. " (") .. tostring(activeSlot)) .. ") is: ") .. tostring(totalCharge)
    )
end
--- Prints the current position of all players.
function ____exports.getPosition(self)
    for ____, player in ipairs(getPlayers(nil)) do
        local playerName = getPlayerName(nil, player)
        printConsole(
            nil,
            ((((("Player position for " .. playerName) .. ": (") .. tostring(player.Position.X)) .. ", ") .. tostring(player.Position.Y)) .. ")"
        )
    end
end
--- Toggles permanent Curse of the Giant.
function ____exports.giant(self)
    v.persistent.giant = not v.persistent.giant
    printEnabled(nil, v.persistent.giant, "permanent Curse of the Giant")
end
--- Gives a Giga Bomb. Provide a number to give a custom amount of Giga Bombs. (You can use negative
-- numbers to remove bombs.)
function ____exports.gigaBomb(self, params)
    local numBombs = 1
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of Giga Bombs to add.")
            return
        end
        numBombs = num
    end
    local player = Isaac.GetPlayer()
    player:AddGigaBombs(numBombs)
end
--- Alias for the "goldenBomb" command.
function ____exports.goldBomb(self)
    ____exports.goldenBomb(nil)
end
--- Alias for the "goldenHearts" command.
function ____exports.goldHearts(self, params)
    ____exports.goldenHearts(nil, params)
end
--- Alias for the "goldenKey" command.
function ____exports.goldKey(self)
    ____exports.goldenKey(nil)
end
--- Alias for the "debug 11" command. Useful for seeing the coordinates and grid index of each tile
-- in the room.
function ____exports.grid(self)
    Isaac.ExecuteCommand("debug 11")
end
--- Alias for the "gridCosts" command.
function ____exports.grid2(self)
    ____exports.gridCosts(nil)
end
--- Spawns every grid entity, starting at the top-left-most tile.
function ____exports.gridEntities(self)
    local gridEntityTypes = getEnumValues(nil, GridEntityType)
    local gridEntityTypeIndex = -1
    do
        local y = 0
        while y <= 6 do
            do
                local x = 0
                while x <= 12 do
                    gridEntityTypeIndex = gridEntityTypeIndex + 1
                    local gridEntityType = gridEntityTypes[gridEntityTypeIndex + 1]
                    if gridEntityType == nil then
                        return
                    end
                    local worldPosition = gridCoordinatesToWorldPosition(nil, x, y)
                    spawnGridEntity(nil, gridEntityType, worldPosition)
                    x = x + 1
                end
            end
            y = y + 1
        end
    end
end
--- Gives a half red heart. Provide a number to give a custom amount of hearts. (You can use negative
-- numbers to remove hearts.)
function ____exports.hearts(self, params)
    addHeart(nil, params, HealthType.RED)
end
--- Alias for the "debug 6" command.
function ____exports.hitboxes(self)
    Isaac.ExecuteCommand("debug 6")
end
--- Warps to the Blue Womb Boss Room.
function ____exports.hush(self)
    setStage(nil, LevelStage.BLUE_WOMB, StageType.ORIGINAL)
    ____exports.bossRoom(nil)
end
--- Gives a key. Provide a number to give a custom amount of key. (You can use negative numbers to
-- remove keys.)
function ____exports.key(self, params)
    local numKeys = 1
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of keys to add.")
            return
        end
        numKeys = num
    end
    local player = Isaac.GetPlayer()
    player:AddKeys(numKeys)
end
--- Gives 99 keys. Provide a number to give a custom amount of coins. (You can use negative numbers
-- to remove keys.)
function ____exports.keys(self, params)
    local numKeys = 99
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of keys to add.")
            return
        end
        numKeys = num
    end
    local player = Isaac.GetPlayer()
    player:AddKeys(numKeys)
end
--- Toggles permanent Curse of the Labyrinth.
function ____exports.labyrinth(self)
    v.persistent.labyrinth = not v.persistent.labyrinth
    printEnabled(nil, v.persistent.labyrinth, "permanent Curse of the Labyrinth")
end
--- Moves the player 0.5 units left. Provide a number to move a custom amount of units.
function ____exports.left(self, params)
    movePlayer(nil, params, Direction.LEFT)
end
--- Warps to the first Library on the floor.
function ____exports.library(self)
    warpToRoomType(nil, RoomType.LIBRARY)
end
--- Logs the entities in the room to the "log.txt" file. Provide a number to only log that specific
-- `EntityType`.
-- 
-- By default, this command will exclude background effects. If that is not desired, use the
-- "listAll" command instead.
function ____exports.list(self, params)
    listEntities(nil, params, false)
end
--- Logs the entities in the room to the "log.txt" file. Provide a number to only log that specific
-- `EntityType`.
function ____exports.listAll(self, params)
    listEntities(nil, params, true)
end
--- Logs the grid entities in the room to the "log.txt" file. Provide a number to only log that
-- specific `GridEntityType`.
-- 
-- By default, this command will exclude walls. If that is not desired, use the "listGridAll"
-- command instead.
function ____exports.listGrid(self, params)
    listGridEntities(nil, params, false)
end
--- Logs the grid entities in the room to the "log.txt" file. Provide a number to only log that
-- specific `GridEntityType`.
function ____exports.listGridAll(self, params)
    listGridEntities(nil, params, true)
end
--- Toggles permanent Curse of the Lost.
function ____exports.lost(self)
    v.persistent.lost = not v.persistent.lost
    printEnabled(nil, v.persistent.lost, "permanent Curse of the Lost")
end
--- Alias for the "1hp" command.
function ____exports.lowHP(self)
    ____exports.oneHP(nil)
end
--- Alias for "debug 9".
function ____exports.luck(self)
    Isaac.ExecuteCommand("debug 9")
end
--- Alias for the "poopMana" command.
function ____exports.mana(self, params)
    ____exports.poopMana(nil, params)
end
--- Completely reveals the entire map, including the Ultra Secret Room.
function ____exports.map(self)
    local level = game:GetLevel()
    local displayFlags = addFlag(nil, DisplayFlag.VISIBLE, DisplayFlag.SHADOW, DisplayFlag.SHOW_ICON)
    for ____, roomGridIndex in ipairs(iRange(nil, MAX_LEVEL_GRID_INDEX)) do
        local roomDesc = level:GetRoomByIdx(roomGridIndex)
        roomDesc.DisplayFlags = displayFlags
    end
    level:UpdateVisibility()
end
--- Gives a heart container. Provide a number to give a custom amount of heart containers. (You can
-- use negative numbers to remove heart containers.)
function ____exports.maxHearts(self, params)
    addHeart(nil, params, HealthType.MAX_HEARTS)
end
--- Toggles permanent Curse of the Maze.
function ____exports.maze(self)
    v.persistent.maze = not v.persistent.maze
    printEnabled(nil, v.persistent.maze, "permanent Curse of the Maze")
end
--- Warps to the first Miniboss Room on the floor.
function ____exports.miniboss(self)
    warpToRoomType(nil, RoomType.MINI_BOSS)
end
--- Alias for the "disableCurses" command.
function ____exports.noCurses(self)
    ____exports.disableCurses(nil)
end
--- Gives a pill with the specified pill effect. Accepts either the effect ID or the partial name of
-- the effect.
-- 
-- For example:
-- 
-- - `pill 5` - Gives a "Full Health" pill.
-- - `pill suns` - Gives a "Feels like I'm walking on sunshine" pill.
function ____exports.pill(self, params)
    if params == "" then
        printConsole(nil, "You must specify a pill name or number.")
        return
    end
    local pillEffect
    local num = tonumber(params)
    if num == nil then
        local match = getMapPartialMatch(nil, params, PILL_NAME_TO_EFFECT_MAP)
        if match == nil then
            printConsole(nil, "Unknown pill effect: " .. params)
            return
        end
        pillEffect = match[2]
    else
        if num < FIRST_PILL_EFFECT or num > LAST_VANILLA_PILL_EFFECT then
            printConsole(
                nil,
                "Invalid pill effect ID: " .. tostring(num)
            )
            return
        end
        pillEffect = num
    end
    local pillEffectName = getPillEffectName(nil, pillEffect)
    Isaac.ExecuteCommand("g p" .. tostring(pillEffect))
    printConsole(
        nil,
        ((("Gave pill: " .. pillEffectName) .. " (") .. tostring(pillEffect)) .. ")"
    )
end
--- Spawns every pill on the ground, starting at the top-left-most tile.
function ____exports.pills(self)
    local pillColor = FIRST_PILL_COLOR
    do
        local y = 0
        while y <= 6 do
            do
                local x = 0
                while x <= 12 do
                    if pillColor > PillColor.GOLD then
                        return
                    end
                    local worldPosition = gridCoordinatesToWorldPosition(nil, x, y)
                    spawnPill(nil, pillColor, worldPosition)
                    pillColor = pillColor + 1
                    x = x + 1
                end
            end
            y = y + 1
        end
    end
end
--- Warps to the first Planetarium on the floor.
function ____exports.planetarium(self)
    warpToRoomType(nil, RoomType.PLANETARIUM)
end
--- Alias for the "sound" command.
function ____exports.playSound(self, params)
    ____exports.sound(nil, params)
end
--- Sets the player's pocket item to the specified collectible type.
function ____exports.pocket(self, params)
    if params == "" then
        printConsole(nil, "You must supply a collectible type to put as the pocket item.")
        return
    end
    local collectibleType = tonumber(params)
    if collectibleType == nil then
        printConsole(nil, "That is an invalid collectible type.")
        return
    end
    if not isValidCollectibleType(nil, collectibleType) then
        printConsole(nil, "That is an invalid collectible type.")
        return
    end
    local player = Isaac.GetPlayer()
    player:SetPocketActiveItem(collectibleType, ActiveSlot.POCKET)
end
--- Alias for the "getPosition" command.
function ____exports.position(self)
    ____exports.getPosition(nil)
end
--- Alias for the "hearts" command.
function ____exports.redHearts(self, params)
    ____exports.hearts(nil, params)
end
--- Starts a room transition to the same room that you are already in.
function ____exports.reloadRoom(self)
    reloadRoomFunction(nil)
end
--- Moves the player 0.5 units right. Provide a number to move a custom amount of units.
function ____exports.right(self, params)
    movePlayer(nil, params, Direction.RIGHT)
end
--- Logs information about the room to the "log.txt" file.
function ____exports.room(self)
    logRoom(nil)
    printConsole(nil, "Logged room information to the \"log.txt\" file.")
end
--- Gives a rotten heart. Provide a number to give a custom amount of hearts. (You can use negative
-- numbers to remove hearts.)
function ____exports.rottenHearts(self, params)
    addHeart(nil, params, HealthType.ROTTEN)
end
--- Run the suite of tests that prove that the "deepCopy" helper function and the "merge" function
-- work properly. For more information, see the `runDeepCopyTests` and the `runMergeTests`
-- functions.
-- 
-- In general, running the tests is only useful if you are troubleshooting the save data manager.
function ____exports.runTests(self)
    runDeepCopyTests(nil)
    runMergeTests(nil)
end
--- Alias for the "stage" command.
-- 
-- For example:
-- - s 3 - Warps to Caves 1.
-- - s 1c - Warps to Downpour 1.
function ____exports.s(self, params)
    if params == "" then
        printConsole(nil, "You must specify a stage number.")
        return
    end
    local finalCharacter = string.sub(params, -1)
    local stageString
    local stageTypeLetter
    if finalCharacter == "a" or finalCharacter == "b" or finalCharacter == "c" or finalCharacter == "d" then
        stageString = __TS__StringSlice(params, 0, #params - 1)
        stageTypeLetter = finalCharacter
    else
        stageString = params
        stageTypeLetter = ""
    end
    local stage = tonumber(stageString)
    if stage == nil then
        printConsole(
            nil,
            "That is an invalid stage number: " .. tostring(stage)
        )
        return
    end
    if stage < FIRST_STAGE or stage > LAST_STAGE then
        printConsole(
            nil,
            ((("Invalid stage number; must be between " .. tostring(FIRST_STAGE)) .. " and ") .. tostring(LAST_STAGE)) .. "."
        )
        return
    end
    Isaac.ExecuteCommand(("stage " .. tostring(stage)) .. stageTypeLetter)
end
--- Warps to the first Sacrifice Room on the floor.
function ____exports.sacrificeRoom(self)
    warpToRoomType(nil, RoomType.SACRIFICE)
end
--- Warps to the first Secret Room on the floor.
function ____exports.secretRoom(self)
    warpToRoomType(nil, RoomType.SECRET)
end
--- Changes to a seeded run, using the seed of the current run.
function ____exports.seedStick(self)
    local seedsClass = game:GetSeeds()
    local startSeedString = seedsClass:GetStartSeedString()
    Isaac.ExecuteCommand("seed " .. startSeedString)
end
--- Logs all of the current run's seed effects to the "log.txt" file.
function ____exports.seeds(self)
    logSeedEffects(nil)
    printConsole(nil, "Logged the seed effects to the \"log.txt\" file.")
end
--- Sets a charge to the player's specified active item. You must provide the active slot number and
-- the number of charges to set.
function ____exports.setCharges(self, params)
    if params == "" then
        printConsole(nil, "You must specify a slot number and a charge amount. (Use 0 for the primary slot, 1 for the Schoolbag slot, 2 for the pocket item slot, and 3 for the Dice Bag slot.)")
        return
    end
    local args = __TS__StringSplit(params, " ")
    if #args == 1 then
        printConsole(nil, "You must specify the amount of charge to set.")
        return
    end
    if #args ~= 2 then
        printConsole(nil, "That is an invalid amount of arguments.")
        return
    end
    local activeSlotString, chargeString = table.unpack(args)
    local activeSlot = tonumber(activeSlotString)
    if activeSlot == nil then
        printConsole(
            nil,
            "The provided slot number is invalid: " .. tostring(activeSlotString)
        )
        return
    end
    local activeSlots = getEnumValues(nil, ActiveSlot)
    if not __TS__ArrayIncludes(activeSlots, activeSlot) then
        printConsole(
            nil,
            "The provided slot number is invalid: " .. tostring(activeSlot)
        )
        return
    end
    local chargeNum = tonumber(chargeString)
    if chargeNum == nil then
        printConsole(
            nil,
            "The provided charge amount is invalid: " .. tostring(chargeString)
        )
        return
    end
    if chargeNum < 0 then
        printConsole(
            nil,
            "The provided charge amount is invalid: " .. tostring(chargeNum)
        )
        return
    end
    local player = Isaac.GetPlayer()
    player:SetActiveCharge(chargeNum, activeSlot)
end
--- Moves the first player to the specified position.
-- 
-- For example:
-- - setPosition 100 50
function ____exports.setPosition(self, params)
    if params == "" then
        printConsole(nil, "You must specify a position. (e.g. \"setPosition 100 50\")")
        return
    end
    local args = __TS__StringSplit(params, " ")
    if #args ~= 2 then
        printConsole(nil, "You must specify a position. (e.g. \"setPosition 100 50\")")
        return
    end
    local xString, yString = table.unpack(args)
    local x = tonumber(xString)
    if x == nil then
        printConsole(
            nil,
            "That is an invalid x value: " .. tostring(xString)
        )
        return
    end
    local y = tonumber(yString)
    if y == nil then
        printConsole(
            nil,
            "That is an invalid y value: " .. tostring(yString)
        )
        return
    end
    local player = Isaac.GetPlayer()
    local newPosition = Vector(x, y)
    player.Position = newPosition
end
--- Warps to the first shop on the floor.
function ____exports.shop(self)
    warpToRoomType(nil, RoomType.SHOP)
end
--- Uses the Smelter to smelt the current player's trinket.
function ____exports.smelt(self)
    local player = Isaac.GetPlayer()
    useActiveItemTemp(nil, player, CollectibleType.SMELTER)
end
--- Gives a soul charge. This only affects Tainted Bethany. Provide a number to give a custom amount
-- of charges. (You can use negative numbers to remove charges.)
function ____exports.soulCharges(self, params)
    local charges = 1
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of charges to add.")
            return
        end
        charges = num
    end
    local player = Isaac.GetPlayer()
    player:AddSoulCharge(charges)
end
--- Gives a half soul heart. Provide a number to give a custom amount of hearts. (You can use
-- negative numbers to remove hearts.)
function ____exports.soulHearts(self, params)
    addHeart(nil, params, HealthType.SOUL)
end
--- Logs all of the currently playing sound effects to the "log.txt" file.
function ____exports.sounds(self)
    logSounds(nil)
    printConsole(nil, "Logged the currently playing sound effects to the \"log.txt\" file.")
end
--- Toggles spamming Blood Rights on every frame. Useful for killing enemies very fast without using
-- "debug 10".
function ____exports.spam(self)
    v.persistent.spamBloodRights = not v.persistent.spamBloodRights
    printEnabled(nil, v.persistent.spamBloodRights, "spamming Blood Rights")
end
function ____exports.spawnCollectible(self, params)
    if params == "" then
        printConsole(nil, "You must specify the name or number corresponding to the collectible type.")
        return
    end
    local collectibleTypeNumber = tonumber(params)
    local collectibleType
    if collectibleTypeNumber == nil then
        local match = getMapPartialMatch(nil, params, COLLECTIBLE_NAME_TO_TYPE_MAP)
        if match == nil then
            printConsole(nil, "Unknown collectible: " .. params)
            return
        end
        collectibleType = match[2]
    else
        collectibleType = asCollectibleType(nil, collectibleTypeNumber)
    end
    local roomClass = game:GetRoom()
    local centerPos = roomClass:GetCenterPos()
    spawnCollectibleUnsafe(nil, collectibleType, centerPos)
end
--- Spawns a golden version of the specified trinket type.
function ____exports.spawnGoldenTrinket(self, params)
    if params == "" then
        printConsole(nil, "You must specify the name or number corresponding to the trinket type.")
        return
    end
    local trinketTypeNumber = tonumber(params)
    local trinketType
    if trinketTypeNumber == nil then
        local match = getMapPartialMatch(nil, params, TRINKET_NAME_TO_TYPE_MAP)
        if match == nil then
            printConsole(nil, "Unknown trinket: " .. params)
            return
        end
        trinketType = match[2]
    else
        trinketType = asTrinketType(nil, trinketTypeNumber)
    end
    local roomClass = game:GetRoom()
    local centerPos = roomClass:GetCenterPos()
    local goldenTrinketType = getGoldenTrinketType(nil, trinketType)
    spawnTrinketFunction(nil, goldenTrinketType, centerPos)
end
function ____exports.spawnTrinket(self, params)
    if params == "" then
        printConsole(nil, "You must specify the name or number corresponding to the trinket type.")
        return
    end
    local trinketTypeNumber = tonumber(params)
    local trinketType
    if trinketTypeNumber == nil then
        local match = getMapPartialMatch(nil, params, TRINKET_NAME_TO_TYPE_MAP)
        if match == nil then
            printConsole(nil, "Unknown trinket: " .. params)
            return
        end
        trinketType = match[2]
    else
        trinketType = asTrinketType(nil, trinketTypeNumber)
    end
    local roomClass = game:GetRoom()
    local centerPos = roomClass:GetCenterPos()
    spawnTrinketFunction(nil, trinketType, centerPos)
end
--- Toggles a set movement speed and flight for the player. You can provide an optional argument to
-- this command in order to set the speed to a specific amount. Default is 2.0 (which is the maximum
-- that the stat can be set to).
function ____exports.speed(self, params)
    local player = Isaac.GetPlayer()
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "The provided speed amount is invalid: " .. params)
            return
        end
        v.persistent.damageAmount = num
    end
    v.persistent.speed = not v.persistent.speed
    player:AddCacheFlags(CacheFlag.SPEED)
    player:EvaluateItems()
    local value = tostring(v.persistent.speed)
    ____exports.flight(nil, value)
    printEnabled(nil, v.persistent.speed, "set speed and flight")
end
--- Alias for the "startingRoom" command.
function ____exports.startRoom(self)
    ____exports.startingRoom(nil)
end
--- Warps to the first Super Secret Room on the floor.
function ____exports.superSecretRoom(self)
    warpToRoomType(nil, RoomType.SUPER_SECRET)
end
--- Toggles a set tear delay (e.g. fire rate) for the player. You can provide an optional argument to
-- this command in order to set the tear delay to a specific amount. Default is 1 (which is
-- equivalent to the Soy Milk tear rate).
function ____exports.tears(self, params)
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "The provided tear delay amount is invalid: " .. params)
            return
        end
        v.persistent.tearsAmount = num
    end
    v.persistent.tears = not v.persistent.tears
    local player = Isaac.GetPlayer()
    player:AddCacheFlags(CacheFlag.FIRE_DELAY)
    player:EvaluateItems()
    printEnabled(nil, v.persistent.damage, "set tear delay")
end
--- Alias for the "runTests" command.
function ____exports.tests(self)
    ____exports.runTests(nil)
end
--- Creates a trapdoor next to the player.
function ____exports.trapdoor(self)
    spawnTrapdoorOrCrawlSpace(nil, true)
end
--- Warps to the first Treasure Room on the floor.
function ____exports.treasureRoom(self)
    warpToRoomType(nil, RoomType.TREASURE)
end
--- Warps to the first Ultra Secret Room on the floor.
function ____exports.ultraSecretRoom(self)
    warpToRoomType(nil, RoomType.ULTRA_SECRET)
end
--- Toggles permanent Curse of the Unknown.
function ____exports.unknown(self)
    v.persistent.unknown = not v.persistent.unknown
    printEnabled(nil, v.persistent.unknown, "permanent Curse of the Unknown")
end
--- If currently on a set seed, changes to an unseeded state and restarts the game.
function ____exports.unseed(self)
    if not onSetSeed(nil) then
        printConsole(nil, "You are not on a set seed, so you cannot unseed the run.")
        return
    end
    setUnseeded(nil)
    restart(nil)
end
--- Moves the player 0.5 units up. Provide a number to move a custom amount of units.
function ____exports.up(self, params)
    movePlayer(nil, params, Direction.UP)
end
--- Warps to the specified room type. Accepts either the room type number or the partial name of the
-- room type.
-- 
-- For example:
-- - warp 5 - Warps to the first Boss Room on the floor, if any.
-- - warp tr - Warps to the first Treasure Room on the floor, if any.
function ____exports.warp(self, params)
    if params == "" then
        printConsole(nil, "You must specify a room type name or number.")
        return
    end
    local roomType
    local num = tonumber(params)
    if num == nil then
        local match = getMapPartialMatch(nil, params, ROOM_NAME_TO_TYPE_MAP)
        if match == nil then
            printConsole(nil, "Unknown room type: " .. params)
            return
        end
        roomType = match[2]
    else
        if num < FIRST_ROOM_TYPE or num > LAST_ROOM_TYPE then
            printConsole(
                nil,
                "Invalid room type: " .. tostring(num)
            )
            return
        end
        roomType = num
    end
    warpToRoomType(nil, roomType)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.cards"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local Set = ____lualib.Set
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local lazyInitCardMapsSets, ITEM_CONFIG_CARD_TYPE_TO_CARD_TYPE_MAP, CARD_SET
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
local ItemConfigCardType = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigCardType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local itemConfig = ____cachedClasses.itemConfig
local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.src.core.constantsFirstLast")
local FIRST_CARD_TYPE = ____constantsFirstLast.FIRST_CARD_TYPE
local LAST_VANILLA_CARD_TYPE = ____constantsFirstLast.LAST_VANILLA_CARD_TYPE
local ____cardDescriptions = require("lua_modules.isaacscript-common.dist.src.objects.cardDescriptions")
local CARD_DESCRIPTIONS = ____cardDescriptions.CARD_DESCRIPTIONS
local DEFAULT_CARD_DESCRIPTION = ____cardDescriptions.DEFAULT_CARD_DESCRIPTION
local ____cardNames = require("lua_modules.isaacscript-common.dist.src.objects.cardNames")
local CARD_NAMES = ____cardNames.CARD_NAMES
local DEFAULT_CARD_NAME = ____cardNames.DEFAULT_CARD_NAME
local ____cardTypeToItemConfigCardType = require("lua_modules.isaacscript-common.dist.src.objects.cardTypeToItemConfigCardType")
local CARD_TYPE_TO_ITEM_CONFIG_CARD_TYPE = ____cardTypeToItemConfigCardType.CARD_TYPE_TO_ITEM_CONFIG_CARD_TYPE
local DEFAULT_CARD_TYPE = ____cardTypeToItemConfigCardType.DEFAULT_CARD_TYPE
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local ____set = require("lua_modules.isaacscript-common.dist.src.functions.set")
local addSetsToSet = ____set.addSetsToSet
local getRandomSetElement = ____set.getRandomSetElement
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local iRange = ____utils.iRange
function lazyInitCardMapsSets(self)
    for ____, cardType in ipairs(getEnumValues(nil, ItemConfigCardType)) do
        ITEM_CONFIG_CARD_TYPE_TO_CARD_TYPE_MAP:set(
            cardType,
            __TS__New(Set)
        )
    end
    for ____, card in ipairs(____exports.getVanillaCardTypes(nil)) do
        local itemConfigCardType = ____exports.getItemConfigCardType(nil, card)
        local cardTypeSet = ITEM_CONFIG_CARD_TYPE_TO_CARD_TYPE_MAP:get(itemConfigCardType)
        if cardTypeSet == nil then
            error("Failed to get the card set for item config card type: " .. tostring(itemConfigCardType))
        end
        cardTypeSet:add(card)
    end
    local cards = ____exports.getCardTypesOfType(
        nil,
        ItemConfigCardType.TAROT,
        ItemConfigCardType.SUIT,
        ItemConfigCardType.SPECIAL,
        ItemConfigCardType.TAROT_REVERSE
    )
    addSetsToSet(nil, CARD_SET, cards)
end
--- Helper function to get a set of card types matching the `ItemConfigCardType`.
-- 
-- This function is variadic, meaning that you can you can specify N card types to get a set
-- containing cards that match any of the specified types.
function ____exports.getCardTypesOfType(self, ...)
    local itemConfigCardTypes = {...}
    if ITEM_CONFIG_CARD_TYPE_TO_CARD_TYPE_MAP.size == 0 then
        lazyInitCardMapsSets(nil)
    end
    local matchingCardTypes = __TS__New(Set)
    for ____, itemConfigCardType in ipairs(itemConfigCardTypes) do
        local cardTypeSet = ITEM_CONFIG_CARD_TYPE_TO_CARD_TYPE_MAP:get(itemConfigCardType)
        if cardTypeSet == nil then
            error("Failed to get the card type set for item config type: " .. tostring(itemConfigCardType))
        end
        for ____, cardType in __TS__Iterator(cardTypeSet:values()) do
            matchingCardTypes:add(cardType)
        end
    end
    return matchingCardTypes
end
function ____exports.getItemConfigCardType(self, cardType)
    local itemConfigCardType = CARD_TYPE_TO_ITEM_CONFIG_CARD_TYPE[cardType]
    return itemConfigCardType == nil and DEFAULT_CARD_TYPE or itemConfigCardType
end
--- Helper function to get an array with every valid vanilla card sub-type.
function ____exports.getVanillaCardTypes(self)
    return iRange(nil, FIRST_CARD_TYPE, LAST_VANILLA_CARD_TYPE)
end
--- Returns true for any vanilla card or rune.
function ____exports.isVanillaCardType(self, cardType)
    return cardType <= LAST_VANILLA_CARD_TYPE
end
ITEM_CONFIG_CARD_TYPE_TO_CARD_TYPE_MAP = __TS__New(Map)
CARD_SET = __TS__New(Set)
--- Helper function to get a card description from a Card enum value.
-- 
-- For example, `getCardDescription(card)` returns "Where journey begins".
function ____exports.getCardDescription(self, cardType)
    local cardDescription = CARD_DESCRIPTIONS[cardType]
    if cardDescription ~= nil then
        return cardDescription
    end
    local itemConfigCard = itemConfig:GetCard(cardType)
    if itemConfigCard ~= nil then
        return itemConfigCard.Description
    end
    return DEFAULT_CARD_DESCRIPTION
end
--- Helper function to get a card name from a Card.
-- 
-- For example, `getCardName(Card.FOOL)` would return "0 - The Fool".
function ____exports.getCardName(self, cardType)
    local cardName = CARD_NAMES[cardType]
    if cardName ~= nil then
        return cardName
    end
    local itemConfigCard = itemConfig:GetCard(cardType)
    if itemConfigCard ~= nil then
        return itemConfigCard.Name
    end
    return DEFAULT_CARD_NAME
end
--- Has an equal chance of returning any card (e.g. Fool, Reverse Fool, Wild Card, etc.).
-- 
-- This will not return:
-- - any runes
-- - any objects like Dice Shard
-- - any modded cards (since there is not a way to distinguish between modded cards and modded
--   runes/objects)
-- 
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param exceptions Optional. An array of cards to not select.
function ____exports.getRandomCard(self, seedOrRNG, exceptions)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if exceptions == nil then
        exceptions = {}
    end
    return getRandomSetElement(nil, CARD_SET, seedOrRNG, exceptions)
end
---
-- @param itemConfigCardType The item config card type that represents the pool of cards to select
-- from.
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param exceptions Optional. An array of cards to not select.
function ____exports.getRandomCardTypeOfType(self, itemConfigCardType, seedOrRNG, exceptions)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if exceptions == nil then
        exceptions = {}
    end
    local cardTypeSet = ____exports.getCardTypesOfType(nil, itemConfigCardType)
    return getRandomSetElement(nil, cardTypeSet, seedOrRNG, exceptions)
end
--- Has an equal chance of returning any rune (e.g. Rune of Hagalaz, Blank Rune, Black Rune, Soul of
-- Isaac, etc.). This will never return a Rune Shard.
-- 
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param exceptions Optional. An array of runes to not select.
function ____exports.getRandomRune(self, seedOrRNG, exceptions)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if exceptions == nil then
        exceptions = {}
    end
    local runesSet = ____exports.getCardTypesOfType(nil, ItemConfigCardType.RUNE)
    runesSet:delete(CardType.RUNE_SHARD)
    return getRandomSetElement(nil, runesSet, seedOrRNG, exceptions)
end
--- Returns true for cards that have the following card type:
-- - CardType.TAROT
-- - CardType.SUIT
-- - CardType.SPECIAL
-- - CardType.TAROT_REVERSE
function ____exports.isCard(self, cardType)
    return CARD_SET:has(cardType)
end
--- Returns whether or not the given card type matches the specified item config card type.
function ____exports.isCardType(self, cardType, itemConfigCardType)
    return itemConfigCardType == ____exports.getItemConfigCardType(nil, cardType)
end
--- Returns true for any card or rune added by a mod.
function ____exports.isModdedCardType(self, cardType)
    return not ____exports.isVanillaCardType(nil, cardType)
end
--- Returns true for cards that have `ItemConfigCardType.SPECIAL_OBJECT`.
function ____exports.isPocketItemObject(self, cardType)
    return ____exports.isCardType(nil, cardType, ItemConfigCardType.SPECIAL_OBJECT)
end
--- Returns true for cards that have `ItemConfigCardType.TAROT_REVERSE`.
function ____exports.isReverseTarotCard(self, cardType)
    return ____exports.isCardType(nil, cardType, ItemConfigCardType.TAROT_REVERSE)
end
--- Returns true for cards that have `CardType.RUNE`.
function ____exports.isRune(self, cardType)
    return ____exports.isCardType(nil, cardType, ItemConfigCardType.RUNE)
end
--- Returns true for cards that have `CardType.SPECIAL`.
function ____exports.isSpecialCard(self, cardType)
    return ____exports.isCardType(nil, cardType, ItemConfigCardType.SPECIAL)
end
--- Returns true for cards that have `CardType.SUIT`.
function ____exports.isSuitCard(self, cardType)
    return ____exports.isCardType(nil, cardType, ItemConfigCardType.SUIT)
end
--- Returns true for cards that have `CardType.TAROT`.
function ____exports.isTarotCard(self, cardType)
    return ____exports.isCardType(nil, cardType, ItemConfigCardType.TAROT)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.cardDescriptions"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
____exports.DEFAULT_CARD_DESCRIPTION = "Unknown"
____exports.CARD_DESCRIPTIONS = {
    [CardType.NULL] = ____exports.DEFAULT_CARD_DESCRIPTION,
    [CardType.FOOL] = "Where journey begins",
    [CardType.MAGICIAN] = "May you never miss your goal",
    [CardType.HIGH_PRIESTESS] = "Mother is watching you",
    [CardType.EMPRESS] = "May your rage bring power",
    [CardType.EMPEROR] = "Challenge me!",
    [CardType.HIEROPHANT] = "Two prayers for the lost",
    [CardType.LOVERS] = "May you prosper and be in good health",
    [CardType.CHARIOT] = "May nothing stand before you",
    [CardType.JUSTICE] = "May your future become balanced",
    [CardType.HERMIT] = "May you see what life has to offer",
    [CardType.WHEEL_OF_FORTUNE] = "Spin the wheel of destiny",
    [CardType.STRENGTH] = "May your power bring rage",
    [CardType.HANGED_MAN] = "May you find enlightenment ",
    [CardType.DEATH] = "Lay waste to all that oppose you ",
    [CardType.TEMPERANCE] = "May you be pure in heart",
    [CardType.DEVIL] = "Revel in the power of darkness",
    [CardType.TOWER] = "Destruction brings creation",
    [CardType.STARS] = "May you find what you desire ",
    [CardType.MOON] = "May you find all you have lost",
    [CardType.SUN] = "May the light heal and enlighten you",
    [CardType.JUDGEMENT] = "Judge lest ye be judged",
    [CardType.WORLD] = "Open your eyes and see",
    [CardType.CLUBS_2] = "Item multiplier",
    [CardType.DIAMONDS_2] = "Item multiplier",
    [CardType.SPADES_2] = "Item multiplier",
    [CardType.HEARTS_2] = "Item multiplier",
    [CardType.ACE_OF_CLUBS] = "Convert all",
    [CardType.ACE_OF_DIAMONDS] = "Convert all",
    [CardType.ACE_OF_SPADES] = "Convert all",
    [CardType.ACE_OF_HEARTS] = "Convert all",
    [CardType.JOKER] = "???",
    [CardType.RUNE_HAGALAZ] = "Destruction",
    [CardType.RUNE_JERA] = "Abundance",
    [CardType.RUNE_EHWAZ] = "Passage",
    [CardType.RUNE_DAGAZ] = "Purity",
    [CardType.RUNE_ANSUZ] = "Vision",
    [CardType.RUNE_PERTHRO] = "Change",
    [CardType.RUNE_BERKANO] = "Companionship",
    [CardType.RUNE_ALGIZ] = "Resistance",
    [CardType.RUNE_BLANK] = "???",
    [CardType.RUNE_BLACK] = "Void",
    [CardType.CHAOS] = "???",
    [CardType.CREDIT] = "Charge it!",
    [CardType.RULES] = "???",
    [CardType.AGAINST_HUMANITY] = "Something stinks...",
    [CardType.SUICIDE_KING] = "A true ending?",
    [CardType.GET_OUT_OF_JAIL_FREE] = "Open Sesame",
    [CardType.QUESTION_MARK] = "Double active",
    [CardType.DICE_SHARD] = "D6 + D20",
    [CardType.EMERGENCY_CONTACT] = "Help from above",
    [CardType.HOLY] = "You feel protected",
    [CardType.HUGE_GROWTH] = "Become immense!",
    [CardType.ANCIENT_RECALL] = "Draw 3 cards",
    [CardType.ERA_WALK] = "Savor the moment",
    [CardType.RUNE_SHARD] = "It still glows faintly",
    [CardType.REVERSE_FOOL] = "Let go and move on",
    [CardType.REVERSE_MAGICIAN] = "May no harm come to you",
    [CardType.REVERSE_HIGH_PRIESTESS] = "Run",
    [CardType.REVERSE_EMPRESS] = "May your love bring protection",
    [CardType.REVERSE_EMPEROR] = "May you find a worthy opponent",
    [CardType.REVERSE_HIEROPHANT] = "Two prayers for the forgotten",
    [CardType.REVERSE_LOVERS] = "May your heart shatter into pieces",
    [CardType.REVERSE_CHARIOT] = "May nothing walk past you",
    [CardType.REVERSE_JUSTICE] = "May your sins come back to torment you",
    [CardType.REVERSE_HERMIT] = "May you see the value of all things in life",
    [CardType.REVERSE_WHEEL_OF_FORTUNE] = "Throw the dice of fate",
    [CardType.REVERSE_STRENGTH] = "May you break their resolve",
    [CardType.REVERSE_HANGED_MAN] = "May your greed know no bounds",
    [CardType.REVERSE_DEATH] = "May life spring forth from the fallen",
    [CardType.REVERSE_TEMPERANCE] = "May your hunger be satiated",
    [CardType.REVERSE_DEVIL] = "Bask in the light of your mercy",
    [CardType.REVERSE_TOWER] = "Creation brings destruction",
    [CardType.REVERSE_STARS] = "May your loss bring fortune",
    [CardType.REVERSE_MOON] = "May you remember lost memories",
    [CardType.REVERSE_SUN] = "May the darkness swallow all around you",
    [CardType.REVERSE_JUDGEMENT] = "May you redeem those found wanting",
    [CardType.REVERSE_WORLD] = "Step into the abyss",
    [CardType.CRACKED_KEY] = "???",
    [CardType.QUEEN_OF_HEARTS] = "<3",
    [CardType.WILD] = "Again",
    [CardType.SOUL_ISAAC] = "Reroll... or not",
    [CardType.SOUL_MAGDALENE] = "Give me your love!",
    [CardType.SOUL_CAIN] = "Opens the unopenable",
    [CardType.SOUL_JUDAS] = "Right behind you",
    [CardType.SOUL_BLUE_BABY] = "Chemical warfare",
    [CardType.SOUL_EVE] = "Your very own murder",
    [CardType.SOUL_SAMSON] = "Slay a thousand",
    [CardType.SOUL_AZAZEL] = "Demon rage!",
    [CardType.SOUL_LAZARUS] = "Life after death",
    [CardType.SOUL_EDEN] = "Embrace chaos",
    [CardType.SOUL_LOST] = "Leave your body behind",
    [CardType.SOUL_LILITH] = "Motherhood",
    [CardType.SOUL_KEEPER] = "$$$",
    [CardType.SOUL_APOLLYON] = "Bringer of calamity",
    [CardType.SOUL_FORGOTTEN] = "Skeletal protector",
    [CardType.SOUL_BETHANY] = "Friends from beyond",
    [CardType.SOUL_JACOB] = "Bound by blood"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.cardNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
____exports.DEFAULT_CARD_NAME = "Unknown"
____exports.CARD_NAMES = {
    [CardType.NULL] = ____exports.DEFAULT_CARD_NAME,
    [CardType.FOOL] = "0 - The Fool",
    [CardType.MAGICIAN] = "I - The Magician",
    [CardType.HIGH_PRIESTESS] = "II - The High Priestess",
    [CardType.EMPRESS] = "III - The Empress",
    [CardType.EMPEROR] = "IV - The Emperor",
    [CardType.HIEROPHANT] = "V - The Hierophant",
    [CardType.LOVERS] = "VI - The Lovers",
    [CardType.CHARIOT] = "VII - The Chariot",
    [CardType.JUSTICE] = "VIII - Justice",
    [CardType.HERMIT] = "IX - The Hermit",
    [CardType.WHEEL_OF_FORTUNE] = "X - Wheel of Fortune",
    [CardType.STRENGTH] = "XI - Strength",
    [CardType.HANGED_MAN] = "XII - The Hanged Man",
    [CardType.DEATH] = "XIII - Death",
    [CardType.TEMPERANCE] = "XIV - Temperance",
    [CardType.DEVIL] = "XV - The Devil",
    [CardType.TOWER] = "XVI - The Tower",
    [CardType.STARS] = "XVII - The Stars",
    [CardType.MOON] = "XVIII - The Moon",
    [CardType.SUN] = "XIX - The Sun",
    [CardType.JUDGEMENT] = "XX - Judgement",
    [CardType.WORLD] = "XXI - The World",
    [CardType.CLUBS_2] = "2 of Clubs",
    [CardType.DIAMONDS_2] = "2 of Diamonds",
    [CardType.SPADES_2] = "2 of Spades",
    [CardType.HEARTS_2] = "2 of Hearts",
    [CardType.ACE_OF_CLUBS] = "Ace of Clubs",
    [CardType.ACE_OF_DIAMONDS] = "Ace of Diamonds",
    [CardType.ACE_OF_SPADES] = "Ace of Spades",
    [CardType.ACE_OF_HEARTS] = "Ace of Hearts",
    [CardType.JOKER] = "Joker",
    [CardType.RUNE_HAGALAZ] = "Hagalaz",
    [CardType.RUNE_JERA] = "Jera",
    [CardType.RUNE_EHWAZ] = "Ehwaz",
    [CardType.RUNE_DAGAZ] = "Dagaz",
    [CardType.RUNE_ANSUZ] = "Ansuz",
    [CardType.RUNE_PERTHRO] = "Perthro",
    [CardType.RUNE_BERKANO] = "Berkano",
    [CardType.RUNE_ALGIZ] = "Algiz",
    [CardType.RUNE_BLANK] = "Blank Rune",
    [CardType.RUNE_BLACK] = "Black Rune",
    [CardType.CHAOS] = "Chaos Card",
    [CardType.CREDIT] = "Credit Card",
    [CardType.RULES] = "Rules Card",
    [CardType.AGAINST_HUMANITY] = "A Card Against Humanity",
    [CardType.SUICIDE_KING] = "Suicide King",
    [CardType.GET_OUT_OF_JAIL_FREE] = "Get Out Of Jail Free Card",
    [CardType.QUESTION_MARK] = "? Card",
    [CardType.DICE_SHARD] = "Dice Shard",
    [CardType.EMERGENCY_CONTACT] = "Emergency Contact",
    [CardType.HOLY] = "Holy Card",
    [CardType.HUGE_GROWTH] = "Huge Growth",
    [CardType.ANCIENT_RECALL] = "Ancient Recall",
    [CardType.ERA_WALK] = "Era Walk",
    [CardType.RUNE_SHARD] = "Rune Shard",
    [CardType.REVERSE_FOOL] = "0 - The Fool?",
    [CardType.REVERSE_MAGICIAN] = "I - The Magician?",
    [CardType.REVERSE_HIGH_PRIESTESS] = "II - The High Priestess?",
    [CardType.REVERSE_EMPRESS] = "III - The Empress?",
    [CardType.REVERSE_EMPEROR] = "IV - The Emperor?",
    [CardType.REVERSE_HIEROPHANT] = "V - The Hierophant?",
    [CardType.REVERSE_LOVERS] = "VI - The Lovers?",
    [CardType.REVERSE_CHARIOT] = "VII - The Chariot?",
    [CardType.REVERSE_JUSTICE] = "VIII - Justice?",
    [CardType.REVERSE_HERMIT] = "IX - The Hermit?",
    [CardType.REVERSE_WHEEL_OF_FORTUNE] = "X - Wheel of Fortune?",
    [CardType.REVERSE_STRENGTH] = "XI - Strength?",
    [CardType.REVERSE_HANGED_MAN] = "XII - The Hanged Man?",
    [CardType.REVERSE_DEATH] = "XIII - Death?",
    [CardType.REVERSE_TEMPERANCE] = "XIV - Temperance?",
    [CardType.REVERSE_DEVIL] = "XV - The Devil?",
    [CardType.REVERSE_TOWER] = "XVI - The Tower?",
    [CardType.REVERSE_STARS] = "XVII - The Stars?",
    [CardType.REVERSE_MOON] = "XVIII - The Moon?",
    [CardType.REVERSE_SUN] = "XIX - The Sun?",
    [CardType.REVERSE_JUDGEMENT] = "XX - Judgement?",
    [CardType.REVERSE_WORLD] = "XXI - The World?",
    [CardType.CRACKED_KEY] = "Cracked Key",
    [CardType.QUEEN_OF_HEARTS] = "Queen of Hearts",
    [CardType.WILD] = "Wild Card",
    [CardType.SOUL_ISAAC] = "Soul of Isaac",
    [CardType.SOUL_MAGDALENE] = "Soul of Magdalene",
    [CardType.SOUL_CAIN] = "Soul of Cain",
    [CardType.SOUL_JUDAS] = "Soul of Judas",
    [CardType.SOUL_BLUE_BABY] = "Soul of ???",
    [CardType.SOUL_EVE] = "Soul of Eve",
    [CardType.SOUL_SAMSON] = "Soul of Samson",
    [CardType.SOUL_AZAZEL] = "Soul of Azazel",
    [CardType.SOUL_LAZARUS] = "Soul of Lazarus",
    [CardType.SOUL_EDEN] = "Soul of Eden",
    [CardType.SOUL_LOST] = "Soul of the Lost",
    [CardType.SOUL_LILITH] = "Soul of Lilith",
    [CardType.SOUL_KEEPER] = "Soul of the Keeper",
    [CardType.SOUL_APOLLYON] = "Soul of Apollyon",
    [CardType.SOUL_FORGOTTEN] = "Soul of the Forgotten",
    [CardType.SOUL_BETHANY] = "Soul of Bethany",
    [CardType.SOUL_JACOB] = "Soul of Jacob and Esau"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.cardTypeToItemConfigCardType"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
local ItemConfigCardType = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigCardType
____exports.DEFAULT_CARD_TYPE = ItemConfigCardType.MODDED
____exports.CARD_TYPE_TO_ITEM_CONFIG_CARD_TYPE = {
    [CardType.NULL] = ItemConfigCardType.NULL,
    [CardType.FOOL] = ItemConfigCardType.TAROT,
    [CardType.MAGICIAN] = ItemConfigCardType.TAROT,
    [CardType.HIGH_PRIESTESS] = ItemConfigCardType.TAROT,
    [CardType.EMPRESS] = ItemConfigCardType.TAROT,
    [CardType.EMPEROR] = ItemConfigCardType.TAROT,
    [CardType.HIEROPHANT] = ItemConfigCardType.TAROT,
    [CardType.LOVERS] = ItemConfigCardType.TAROT,
    [CardType.CHARIOT] = ItemConfigCardType.TAROT,
    [CardType.JUSTICE] = ItemConfigCardType.TAROT,
    [CardType.HERMIT] = ItemConfigCardType.TAROT,
    [CardType.WHEEL_OF_FORTUNE] = ItemConfigCardType.TAROT,
    [CardType.STRENGTH] = ItemConfigCardType.TAROT,
    [CardType.HANGED_MAN] = ItemConfigCardType.TAROT,
    [CardType.DEATH] = ItemConfigCardType.TAROT,
    [CardType.TEMPERANCE] = ItemConfigCardType.TAROT,
    [CardType.DEVIL] = ItemConfigCardType.TAROT,
    [CardType.TOWER] = ItemConfigCardType.TAROT,
    [CardType.STARS] = ItemConfigCardType.TAROT,
    [CardType.MOON] = ItemConfigCardType.TAROT,
    [CardType.SUN] = ItemConfigCardType.TAROT,
    [CardType.JUDGEMENT] = ItemConfigCardType.TAROT,
    [CardType.WORLD] = ItemConfigCardType.TAROT,
    [CardType.CLUBS_2] = ItemConfigCardType.SUIT,
    [CardType.DIAMONDS_2] = ItemConfigCardType.SUIT,
    [CardType.SPADES_2] = ItemConfigCardType.SUIT,
    [CardType.HEARTS_2] = ItemConfigCardType.SUIT,
    [CardType.ACE_OF_CLUBS] = ItemConfigCardType.SUIT,
    [CardType.ACE_OF_DIAMONDS] = ItemConfigCardType.SUIT,
    [CardType.ACE_OF_SPADES] = ItemConfigCardType.SUIT,
    [CardType.ACE_OF_HEARTS] = ItemConfigCardType.SUIT,
    [CardType.JOKER] = ItemConfigCardType.SUIT,
    [CardType.RUNE_HAGALAZ] = ItemConfigCardType.RUNE,
    [CardType.RUNE_JERA] = ItemConfigCardType.RUNE,
    [CardType.RUNE_EHWAZ] = ItemConfigCardType.RUNE,
    [CardType.RUNE_DAGAZ] = ItemConfigCardType.RUNE,
    [CardType.RUNE_ANSUZ] = ItemConfigCardType.RUNE,
    [CardType.RUNE_PERTHRO] = ItemConfigCardType.RUNE,
    [CardType.RUNE_BERKANO] = ItemConfigCardType.RUNE,
    [CardType.RUNE_ALGIZ] = ItemConfigCardType.RUNE,
    [CardType.RUNE_BLANK] = ItemConfigCardType.RUNE,
    [CardType.RUNE_BLACK] = ItemConfigCardType.RUNE,
    [CardType.CHAOS] = ItemConfigCardType.SPECIAL,
    [CardType.CREDIT] = ItemConfigCardType.SPECIAL,
    [CardType.RULES] = ItemConfigCardType.SPECIAL,
    [CardType.AGAINST_HUMANITY] = ItemConfigCardType.SPECIAL,
    [CardType.SUICIDE_KING] = ItemConfigCardType.SPECIAL,
    [CardType.GET_OUT_OF_JAIL_FREE] = ItemConfigCardType.SPECIAL,
    [CardType.QUESTION_MARK] = ItemConfigCardType.SPECIAL,
    [CardType.DICE_SHARD] = ItemConfigCardType.SPECIAL_OBJECT,
    [CardType.EMERGENCY_CONTACT] = ItemConfigCardType.SPECIAL_OBJECT,
    [CardType.HOLY] = ItemConfigCardType.SPECIAL,
    [CardType.HUGE_GROWTH] = ItemConfigCardType.SPECIAL,
    [CardType.ANCIENT_RECALL] = ItemConfigCardType.SPECIAL,
    [CardType.ERA_WALK] = ItemConfigCardType.SPECIAL,
    [CardType.RUNE_SHARD] = ItemConfigCardType.RUNE,
    [CardType.REVERSE_FOOL] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_MAGICIAN] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_HIGH_PRIESTESS] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_EMPRESS] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_EMPEROR] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_HIEROPHANT] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_LOVERS] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_CHARIOT] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_JUSTICE] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_HERMIT] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_WHEEL_OF_FORTUNE] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_STRENGTH] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_HANGED_MAN] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_DEATH] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_TEMPERANCE] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_DEVIL] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_TOWER] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_STARS] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_MOON] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_SUN] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_JUDGEMENT] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.REVERSE_WORLD] = ItemConfigCardType.TAROT_REVERSE,
    [CardType.CRACKED_KEY] = ItemConfigCardType.SPECIAL_OBJECT,
    [CardType.QUEEN_OF_HEARTS] = ItemConfigCardType.SUIT,
    [CardType.WILD] = ItemConfigCardType.SPECIAL,
    [CardType.SOUL_ISAAC] = ItemConfigCardType.RUNE,
    [CardType.SOUL_MAGDALENE] = ItemConfigCardType.RUNE,
    [CardType.SOUL_CAIN] = ItemConfigCardType.RUNE,
    [CardType.SOUL_JUDAS] = ItemConfigCardType.RUNE,
    [CardType.SOUL_BLUE_BABY] = ItemConfigCardType.RUNE,
    [CardType.SOUL_EVE] = ItemConfigCardType.RUNE,
    [CardType.SOUL_SAMSON] = ItemConfigCardType.RUNE,
    [CardType.SOUL_AZAZEL] = ItemConfigCardType.RUNE,
    [CardType.SOUL_LAZARUS] = ItemConfigCardType.RUNE,
    [CardType.SOUL_EDEN] = ItemConfigCardType.RUNE,
    [CardType.SOUL_LOST] = ItemConfigCardType.RUNE,
    [CardType.SOUL_LILITH] = ItemConfigCardType.RUNE,
    [CardType.SOUL_KEEPER] = ItemConfigCardType.RUNE,
    [CardType.SOUL_APOLLYON] = ItemConfigCardType.RUNE,
    [CardType.SOUL_FORGOTTEN] = ItemConfigCardType.RUNE,
    [CardType.SOUL_BETHANY] = ItemConfigCardType.RUNE,
    [CardType.SOUL_JACOB] = ItemConfigCardType.RUNE
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.deepCopyTests"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__TypeOf = ____lualib.__TS__TypeOf
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local Set = ____lualib.Set
local ____exports = {}
local copiedObjectIsTable, copiedObjectHasKeyAndValueString, copiedTableHasKeyAndValueNumber, copiedTableDoesNotCoerceTypes, copiedObjectHasNoReferencesForPrimitivesForward, copiedObjectHasNoReferencesForPrimitivesBackward, copiedObjectHasNoReferencesForArray, copiedObjectHasChildObject, copiedMapIsMap, copiedMapHasValue, copiedSetIsSet, copiedSetHasValue, copiedMapHasChildMap, copiedDefaultMapHasChildDefaultMap, copiedDefaultMapHasBrand, copiedSerializedMapHasStringKey, copiedSerializedMapHasNumberKey, copiedSerializedDefaultMapHasStringKey, copiedSerializedDefaultMapHasNumberKey
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.src.enums.SerializationBrand")
local SerializationBrand = ____SerializationBrand.SerializationBrand
local ____SerializationType = require("lua_modules.isaacscript-common.dist.src.enums.SerializationType")
local SerializationType = ____SerializationType.SerializationType
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local arrayEquals = ____array.arrayEquals
local ____deepCopy = require("lua_modules.isaacscript-common.dist.src.functions.deepCopy")
local deepCopy = ____deepCopy.deepCopy
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local ____tstlClass = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
local isDefaultMap = ____tstlClass.isDefaultMap
local isTSTLMap = ____tstlClass.isTSTLMap
local isTSTLSet = ____tstlClass.isTSTLSet
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isNumber = ____types.isNumber
local isString = ____types.isString
local isTable = ____types.isTable
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local printConsole = ____utils.printConsole
function copiedObjectIsTable(self)
    local oldObject = {abc = "def"}
    local newObject = deepCopy(nil, oldObject, SerializationType.NONE, "copiedObjectIsTable")
    if not isTable(nil, newObject) then
        error("The copied object had a type of: " .. __TS__TypeOf(newObject))
    end
end
function copiedObjectHasKeyAndValueString(self)
    local keyToLookFor = "abc"
    local valueToLookFor = "def"
    local oldObject = {abc = valueToLookFor}
    local newObject = deepCopy(nil, oldObject, SerializationType.NONE, "copiedObjectHasKeyAndValueString")
    local value = newObject[keyToLookFor]
    if value == nil then
        error("The copied object did not have a key of: " .. keyToLookFor)
    end
    if not isString(nil, value) then
        error("The copied object had a value type of: " .. __TS__TypeOf(value))
    end
    if value ~= valueToLookFor then
        error("The copied object had a value of: " .. value)
    end
end
function copiedTableHasKeyAndValueNumber(self)
    local keyToLookFor = 123
    local valueToLookFor = 456
    local oldTable = {}
    oldTable[keyToLookFor] = valueToLookFor
    local newTable = deepCopy(nil, oldTable, SerializationType.NONE, "copiedTableHasKeyAndValueNumber")
    local value = newTable[keyToLookFor]
    if value == nil then
        error("The copied object did not have a key of: " .. tostring(keyToLookFor))
    end
    if not isNumber(nil, value) then
        error("The copied object had a value type of: " .. __TS__TypeOf(value))
    end
    if value ~= valueToLookFor then
        error("The copied object had a value of: " .. tostring(value))
    end
end
function copiedTableDoesNotCoerceTypes(self)
    local keyToLookFor = 123
    local valueToLookFor = 456
    local oldTable = {}
    oldTable[keyToLookFor] = valueToLookFor
    local newTable = deepCopy(nil, oldTable, SerializationType.NONE, "copiedTableDoesNotCoerceTypes")
    local keyString = tostring(keyToLookFor)
    local valueString = tostring(valueToLookFor)
    local valueFromString = newTable[keyString]
    if valueFromString ~= nil then
        error("The copied object had a string key of: " .. keyString)
    end
    local value = newTable[keyToLookFor]
    if value == valueString then
        error("The copied object had a value that incorrectly matched the string of: " .. valueString)
    end
end
function copiedObjectHasNoReferencesForPrimitivesForward(self)
    local originalStringValue = "abcdef"
    local originalNumberValue = 123
    local oldObject = {abc = originalStringValue, def = originalNumberValue}
    local newObject = deepCopy(nil, oldObject, SerializationType.NONE, "copiedObjectHasNoReferencesForPrimitivesForward")
    oldObject.abc = "newValue"
    if oldObject.abc == newObject.abc then
        error("The copied object has a string reference going forward.")
    end
    oldObject.def = 456
    if oldObject.def == newObject.def then
        error("The copied object has a number reference going forward.")
    end
end
function copiedObjectHasNoReferencesForPrimitivesBackward(self)
    local originalStringValue = "abcdef"
    local originalNumberValue = 123
    local oldObject = {abc = originalStringValue, def = originalNumberValue}
    local newObject = deepCopy(nil, oldObject, SerializationType.NONE, "copiedObjectHasNoReferencesForPrimitivesBackward")
    newObject.abc = "newValue"
    if newObject.abc == oldObject.abc then
        error("The copied object has a string reference going backward.")
    end
    newObject.def = 456
    if newObject.def == oldObject.def then
        error("The copied object has a number reference going backward.")
    end
end
function copiedObjectHasNoReferencesForArray(self)
    local oldObject = {abc = {1, 2, 3}}
    local newObject = deepCopy(nil, oldObject, SerializationType.NONE, "copiedObjectHasNoReferencesForArray")
    if oldObject.abc == newObject.abc then
        error("The copied object has the same point to the child array.")
    end
    if not arrayEquals(nil, oldObject.abc, newObject.abc) then
        error("The copied object does not have an equal array.")
    end
    local ____oldObject_abc_0, ____1_1 = oldObject.abc, 1
    ____oldObject_abc_0[____1_1] = ____oldObject_abc_0[____1_1] + 1
    if arrayEquals(nil, oldObject.abc, newObject.abc) then
        error("The copied object has an equal array after a modification to the old array.")
    end
    local ____oldObject_abc_2, ____1_3 = oldObject.abc, 1
    ____oldObject_abc_2[____1_3] = ____oldObject_abc_2[____1_3] - 1
    local ____newObject_abc_4, ____1_5 = newObject.abc, 1
    ____newObject_abc_4[____1_5] = ____newObject_abc_4[____1_5] + 1
    if arrayEquals(nil, oldObject.abc, newObject.abc) then
        error("The copied object has an equal array after a modification to the new array.")
    end
    local ____newObject_abc_6, ____1_7 = newObject.abc, 1
    ____newObject_abc_6[____1_7] = ____newObject_abc_6[____1_7] - 1
end
function copiedObjectHasChildObject(self)
    local childObjectIndex = "abc"
    local keyToLookFor = "def"
    local valueToLookFor = "ghi"
    local oldObject = {abc = {def = valueToLookFor}}
    local newObject = deepCopy(nil, oldObject, SerializationType.NONE, "copiedObjectHasChildObject")
    local childObject = newObject[childObjectIndex]
    if childObject == nil then
        error("Failed to find the child object at index: " .. childObjectIndex)
    end
    if not isTable(nil, childObject) then
        error("The copied child object had a type of: " .. __TS__TypeOf(childObject))
    end
    local value = childObject[keyToLookFor]
    if value == nil then
        error("The child object did not have a key of: " .. keyToLookFor)
    end
    if not isString(nil, value) then
        error("The child object value had a type of: " .. __TS__TypeOf(value))
    end
    if value ~= valueToLookFor then
        error("The child object value was: " .. valueToLookFor)
    end
end
function copiedMapIsMap(self)
    local keyToLookFor = "abc"
    local valueToLookFor = "def"
    local oldMap = __TS__New(Map)
    oldMap:set(keyToLookFor, valueToLookFor)
    local newMap = deepCopy(nil, oldMap, SerializationType.NONE, "copiedMapIsMap")
    if not isTSTLMap(nil, newMap) then
        error("The copied Map was not a Map and has a type of: " .. __TS__TypeOf(newMap))
    end
end
function copiedMapHasValue(self)
    local keyToLookFor = "abc"
    local valueToLookFor = "def"
    local oldMap = __TS__New(Map)
    oldMap:set(keyToLookFor, valueToLookFor)
    local newMap = deepCopy(nil, oldMap, SerializationType.NONE, "copiedMapHasValue")
    if not isTSTLMap(nil, newMap) then
        error("The copied Map was not a Map and has a type of: " .. __TS__TypeOf(newMap))
    end
    local value = newMap:get(keyToLookFor)
    if value == nil then
        error("The copied Map did not have a key of: " .. keyToLookFor)
    end
    if value ~= valueToLookFor then
        error("The copied Map did not have a value of: " .. valueToLookFor)
    end
end
function copiedSetIsSet(self)
    local valueToLookFor = "abc"
    local oldSet = __TS__New(Set)
    oldSet:add(valueToLookFor)
    local newSet = deepCopy(nil, oldSet, SerializationType.NONE, "copiedSetIsSet")
    if not isTSTLSet(nil, newSet) then
        error("The copied Set was not a Set and has a type of: " .. __TS__TypeOf(newSet))
    end
end
function copiedSetHasValue(self)
    local valueToLookFor = "abc"
    local oldSet = __TS__New(Set)
    oldSet:add(valueToLookFor)
    local newSet = deepCopy(nil, oldSet, SerializationType.NONE, "copiedSetHasValue")
    if not isTSTLSet(nil, newSet) then
        error("The copied Set was not a Set and has a type of: " .. __TS__TypeOf(newSet))
    end
    local hasValue = newSet:has(valueToLookFor)
    if not hasValue then
        error("The copied Set did not have a value of: " .. valueToLookFor)
    end
end
function copiedMapHasChildMap(self)
    local childMapKey = 123
    local childMapValue = 456
    local oldChildMap = __TS__New(Map)
    oldChildMap:set(childMapKey, childMapValue)
    local keyToLookFor = "childMap"
    local oldMap = __TS__New(Map)
    oldMap:set(keyToLookFor, oldChildMap)
    local newMap = deepCopy(nil, oldMap, SerializationType.NONE, "copiedMapHasChildMap")
    if not isTSTLMap(nil, newMap) then
        error("The copied Map was not a Map and had a type of: " .. __TS__TypeOf(newMap))
    end
    local newChildMap = newMap:get(keyToLookFor)
    if newChildMap == nil then
        error("The copied Map did not have a child map at key: " .. keyToLookFor)
    end
    if not isTSTLMap(nil, newChildMap) then
        error("The copied child Map was not a Map and had a type of: " .. __TS__TypeOf(newChildMap))
    end
    local value = newChildMap:get(childMapKey)
    if value == nil then
        error("The copied child Map did not have a key of: " .. tostring(childMapKey))
    end
    if value ~= childMapValue then
        error("The copied child Map did not have a value of: " .. tostring(childMapValue))
    end
end
function copiedDefaultMapHasChildDefaultMap(self)
    local parentMapKey = "abc"
    local childMapKey1 = 123
    local childMapKey2 = 456
    local childMapDefaultValue = 1
    local childMapCustomValue = 2
    local oldParentMap = __TS__New(
        DefaultMap,
        function() return __TS__New(DefaultMap, childMapDefaultValue) end
    )
    local oldChildMap = oldParentMap:getAndSetDefault(parentMapKey)
    oldChildMap:getAndSetDefault(childMapKey1)
    oldChildMap:set(childMapKey2, childMapCustomValue)
    local newParentMap = deepCopy(nil, oldParentMap, SerializationType.NONE, "copiedDefaultMapHasChildDefaultMap")
    if not isDefaultMap(nil, newParentMap) then
        error("The copied parent DefaultMap was not a DefaultMap and had a type of: " .. __TS__TypeOf(newParentMap))
    end
    local newChildMap = newParentMap:get(parentMapKey)
    if newChildMap == nil then
        error("The copied DefaultMap did not have a child map at key: " .. parentMapKey)
    end
    if not isDefaultMap(nil, newChildMap) then
        error("The copied child DefaultMap was not a DefaultMap and had a type of: " .. __TS__TypeOf(newChildMap))
    end
    local newChildMapValue1 = newChildMap:get(childMapKey1)
    if newChildMapValue1 == nil then
        error("The copied child DefaultMap did not have a key of: " .. tostring(childMapKey1))
    end
    if newChildMapValue1 ~= childMapDefaultValue then
        error("The copied child Map did not have a default value of: " .. tostring(childMapDefaultValue))
    end
    local newChildMapValue2 = newChildMap:get(childMapKey2)
    if newChildMapValue2 == nil then
        error("The copied child DefaultMap did not have a key of: " .. tostring(childMapKey2))
    end
    if newChildMapValue2 ~= childMapCustomValue then
        error("The copied child Map did not have a custom value of: " .. tostring(childMapCustomValue))
    end
end
function copiedDefaultMapHasBrand(self)
    local oldDefaultValue = "foo"
    local oldDefaultMap = __TS__New(DefaultMap, oldDefaultValue)
    local newTable = deepCopy(nil, oldDefaultMap, SerializationType.SERIALIZE, "copiedDefaultMapHasBrand")
    if not isTable(nil, newTable) then
        error("The copied DefaultMap was not a table and had a type of: " .. __TS__TypeOf(newTable))
    end
    if not (newTable[SerializationBrand.DEFAULT_MAP] ~= nil) then
        error("The copied DefaultMap does not have the brand: " .. SerializationBrand.DEFAULT_MAP)
    end
end
function copiedSerializedMapHasStringKey(self)
    local mapKey = "123"
    local mapValue = 456
    local oldMap = __TS__New(Map)
    oldMap:set(mapKey, mapValue)
    local serializedOldMap = deepCopy(nil, oldMap, SerializationType.SERIALIZE, "copiedSerializedMapHasStringKey-serialize")
    local newTable = deepCopy(nil, serializedOldMap, SerializationType.DESERIALIZE, "copiedSerializedMapHasStringKey-deserialize")
    local newMap = newTable
    if not newMap:has(mapKey) then
        local keyType = type(mapKey)
        error((("The copied Map did not have a key of: " .. mapKey) .. " with type ") .. keyType)
    end
end
function copiedSerializedMapHasNumberKey(self)
    local mapKey = 123
    local mapValue = 456
    local oldMap = __TS__New(Map)
    oldMap:set(mapKey, mapValue)
    local serializedOldMap = deepCopy(nil, oldMap, SerializationType.SERIALIZE, "copiedSerializedMapHasNumberKey-serialize")
    local newTable = deepCopy(nil, serializedOldMap, SerializationType.DESERIALIZE, "copiedSerializedMapHasNumberKey-deserialize")
    local newMap = newTable
    if not newMap:has(mapKey) then
        local keyType = type(mapKey)
        error((("The copied Map did not have a key of: " .. tostring(mapKey)) .. " with type ") .. keyType)
    end
end
function copiedSerializedDefaultMapHasStringKey(self)
    local mapKey = "123"
    local oldDefaultMap = __TS__New(DefaultMap, 456)
    oldDefaultMap:getAndSetDefault(mapKey)
    local serializedOldDefaultMap = deepCopy(nil, oldDefaultMap, SerializationType.SERIALIZE, "copiedSerializedDefaultMapHasStringKey-serialize")
    local newTable = deepCopy(nil, serializedOldDefaultMap, SerializationType.DESERIALIZE, "copiedSerializedDefaultMapHasStringKey-deserialize")
    local newDefaultMap = newTable
    if not newDefaultMap:has(mapKey) then
        local keyType = type(mapKey)
        error((("The copied DefaultMap did not have a key of \"" .. mapKey) .. "\" with type: ") .. keyType)
    end
end
function copiedSerializedDefaultMapHasNumberKey(self)
    local mapKey = 123
    local oldDefaultMap = __TS__New(DefaultMap, 456)
    oldDefaultMap:getAndSetDefault(mapKey)
    local serializedOldDefaultMap = deepCopy(nil, oldDefaultMap, SerializationType.SERIALIZE, "copiedSerializedDefaultMapHasNumberKey-serialize")
    local newTable = deepCopy(nil, serializedOldDefaultMap, SerializationType.DESERIALIZE, "copiedSerializedDefaultMapHasNumberKey-deserialize")
    local newDefaultMap = newTable
    if not newDefaultMap:has(mapKey) then
        local keyType = type(mapKey)
        error((("The copied DefaultMap did not have a key of: " .. tostring(mapKey)) .. " with type ") .. keyType)
    end
end
--- Run the suite of tests that prove that the "deepCopy" helper function works properly.
-- 
-- This function is only useful if you are troubleshooting the "deepCopy" function.
function ____exports.runDeepCopyTests(self)
    copiedObjectIsTable(nil)
    copiedObjectHasKeyAndValueString(nil)
    copiedTableHasKeyAndValueNumber(nil)
    copiedTableDoesNotCoerceTypes(nil)
    copiedObjectHasNoReferencesForPrimitivesForward(nil)
    copiedObjectHasNoReferencesForPrimitivesBackward(nil)
    copiedObjectHasNoReferencesForArray(nil)
    copiedObjectHasChildObject(nil)
    copiedMapIsMap(nil)
    copiedMapHasValue(nil)
    copiedSetIsSet(nil)
    copiedSetHasValue(nil)
    copiedMapHasChildMap(nil)
    copiedDefaultMapHasChildDefaultMap(nil)
    copiedDefaultMapHasBrand(nil)
    copiedSerializedMapHasStringKey(nil)
    copiedSerializedMapHasNumberKey(nil)
    copiedSerializedDefaultMapHasStringKey(nil)
    copiedSerializedDefaultMapHasNumberKey(nil)
    local successText = "All deep copy tests passed!"
    log(nil, successText)
    printConsole(nil, successText)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.levelGrid"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local Map = ____lualib.Map
local __TS__Iterator = ____lualib.__TS__Iterator
local __TS__New = ____lualib.__TS__New
local Set = ____lualib.Set
local ____exports = {}
local ADJACENT_ROOM_GRID_INDEX_DELTAS
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DisplayFlag = ____isaac_2Dtypescript_2Ddefinitions.DisplayFlag
local DownpourRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.DownpourRoomSubType
local LevelStateFlag = ____isaac_2Dtypescript_2Ddefinitions.LevelStateFlag
local MinesRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.MinesRoomSubType
local RoomDescriptorFlag = ____isaac_2Dtypescript_2Ddefinitions.RoomDescriptorFlag
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local ALL_DISPLAY_FLAGS = ____constants.ALL_DISPLAY_FLAGS
local LEVEL_GRID_ROW_WIDTH = ____constants.LEVEL_GRID_ROW_WIDTH
local MAX_LEVEL_GRID_INDEX = ____constants.MAX_LEVEL_GRID_INDEX
local ____roomShapeToDoorSlotsToGridIndexDelta = require("lua_modules.isaacscript-common.dist.src.objects.roomShapeToDoorSlotsToGridIndexDelta")
local ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA = ____roomShapeToDoorSlotsToGridIndexDelta.ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local getRandomArrayElement = ____array.getRandomArrayElement
local ____doors = require("lua_modules.isaacscript-common.dist.src.functions.doors")
local doorSlotToDoorSlotFlag = ____doors.doorSlotToDoorSlotFlag
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local addFlag = ____flag.addFlag
local hasFlag = ____flag.hasFlag
local removeFlag = ____flag.removeFlag
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local isRNG = ____rng.isRNG
local newRNG = ____rng.newRNG
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomAllowedDoors = ____roomData.getRoomAllowedDoors
local getRoomData = ____roomData.getRoomData
local getRoomDescriptor = ____roomData.getRoomDescriptor
local getRoomGridIndex = ____roomData.getRoomGridIndex
local getRoomShape = ____roomData.getRoomShape
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local getRooms = ____rooms.getRooms
local getRoomsInsideGrid = ____rooms.getRoomsInsideGrid
local ____roomShape = require("lua_modules.isaacscript-common.dist.src.functions.roomShape")
local getGridIndexDelta = ____roomShape.getGridIndexDelta
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
--- Helper function to get only the adjacent room grid indexes that exist (i.e. have room data).
-- 
-- This is just a filtering of the results of the `getAdjacentExistingRoomGridIndexes` function. See
-- that function for more information.
function ____exports.getAdjacentExistingRoomGridIndexes(self, roomGridIndex)
    local adjacentRoomGridIndexes = ____exports.getAdjacentRoomGridIndexes(nil, roomGridIndex)
    return __TS__ArrayFilter(
        adjacentRoomGridIndexes,
        function(____, adjacentRoomGridIndex) return getRoomData(nil, adjacentRoomGridIndex) ~= nil end
    )
end
--- Helper function to get all of the room grid indexes that are adjacent to a given room grid index
-- (even if those room grid indexes do not have any rooms in them).
-- 
-- Adjacent room grid indexes that are outside of the grid will not be included in the returned
-- array.
-- 
-- If a room grid index is provided that is outside of the grid, then an empty array will be
-- returned.
-- 
-- Note that this function does not take the shape of the room into account; it only looks at a
-- single room grid index.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
function ____exports.getAdjacentRoomGridIndexes(self, roomGridIndex)
    local roomGridIndexToUse = roomGridIndex == nil and getRoomGridIndex(nil) or roomGridIndex
    if not ____exports.isRoomInsideGrid(nil, roomGridIndexToUse) then
        return {}
    end
    local adjacentRoomGridIndexes = __TS__ArrayMap(
        ADJACENT_ROOM_GRID_INDEX_DELTAS,
        function(____, delta) return roomGridIndexToUse + delta end
    )
    return __TS__ArrayFilter(
        adjacentRoomGridIndexes,
        function(____, adjacentRoomGridIndex) return ____exports.isRoomInsideGrid(nil, adjacentRoomGridIndex) end
    )
end
--- Helper function to iterate through the possible doors for a room and see if any of them would be
-- a valid spot to insert a brand new room on the floor. (Any potential new rooms cannot be
-- connected to any other existing rooms on the floor.)
-- 
-- @param roomGridIndex Optional. Default is the current room index.
-- @returns A array of tuples of `DoorSlot` and room grid index.
function ____exports.getNewRoomCandidatesBesideRoom(self, roomGridIndex)
    local roomDescriptor = getRoomDescriptor(nil, roomGridIndex)
    if not ____exports.isRoomInsideGrid(nil, roomDescriptor.SafeGridIndex) then
        return {}
    end
    local roomData = roomDescriptor.Data
    if roomData == nil then
        return {}
    end
    local doorSlotToRoomGridIndexes = ____exports.getRoomShapeAdjacentNonExistingGridIndexes(nil, roomDescriptor.SafeGridIndex, roomData.Shape)
    local roomCandidates = {}
    for ____, ____value in __TS__Iterator(doorSlotToRoomGridIndexes:entries()) do
        local doorSlot = ____value[1]
        local adjacentRoomGridIndex = ____value[2]
        do
            local doorSlotFlag = doorSlotToDoorSlotFlag(nil, doorSlot)
            if not hasFlag(nil, roomData.Doors, doorSlotFlag) then
                goto __continue17
            end
            if not ____exports.isDeadEnd(nil, adjacentRoomGridIndex) then
                goto __continue17
            end
            roomCandidates[#roomCandidates + 1] = {doorSlot, adjacentRoomGridIndex}
        end
        ::__continue17::
    end
    return roomCandidates
end
--- Helper function to search through all of the rooms on the floor for a spot to insert a brand new
-- room.
-- 
-- @returns A array of tuples containing the adjacent room grid index, the `DoorSlot`, and the new
-- room grid index.
function ____exports.getNewRoomCandidatesForLevel(self)
    local rooms = getRoomsInsideGrid(nil)
    local normalRooms = __TS__ArrayFilter(
        rooms,
        function(____, room) return room.Data ~= nil and room.Data.Type == RoomType.DEFAULT and room.Data.Subtype ~= asNumber(nil, DownpourRoomSubType.MIRROR) and room.Data.Subtype ~= asNumber(nil, MinesRoomSubType.MINESHAFT_ENTRANCE) end
    )
    local newRoomCandidates = {}
    for ____, room in ipairs(normalRooms) do
        local newRoomCandidatesBesideRoom = ____exports.getNewRoomCandidatesBesideRoom(nil, room.SafeGridIndex)
        for ____, ____value in ipairs(newRoomCandidatesBesideRoom) do
            local doorSlot = ____value[1]
            local newRoomGridIndex = ____value[2]
            newRoomCandidates[#newRoomCandidates + 1] = {room.SafeGridIndex, doorSlot, newRoomGridIndex}
        end
    end
    return newRoomCandidates
end
--- Helper function to get only the adjacent room grid indexes for a room shape that exist (i.e. have
-- room data).
-- 
-- This is just a filtering of the results of the `getRoomShapeAdjacentGridIndexes` function. See
-- that function for more information.
function ____exports.getRoomShapeAdjacentExistingGridIndexes(self, safeRoomGridIndex, roomShape)
    local roomShapeAdjacentGridIndexes = ____exports.getRoomShapeAdjacentGridIndexes(nil, safeRoomGridIndex, roomShape)
    for ____, ____value in __TS__Iterator(roomShapeAdjacentGridIndexes:entries()) do
        local doorSlot = ____value[1]
        local roomGridIndex = ____value[2]
        local roomData = getRoomData(nil, roomGridIndex)
        if roomData == nil then
            roomShapeAdjacentGridIndexes:delete(doorSlot)
        end
    end
    return roomShapeAdjacentGridIndexes
end
--- Helper function to get the room grid index delta that each hypothetical door in a given room
-- shape would go to.
-- 
-- This is used by the `getRoomShapeAdjacentGridIndexes` function.
-- 
-- @returns A map of `DoorSlot` to the corresponding room grid index delta.
function ____exports.getRoomShapeAdjacentGridIndexDeltas(self, roomShape)
    return ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA[roomShape]
end
--- Helper function to get the room grid index that each hypothetical door in a given room shape
-- would go to. (This will not include room grid indexes that are outside of the grid.)
-- 
-- @param safeRoomGridIndex This must be the room safe grid index (i.e. the top-left room grid index
-- for the respective room).
-- @param roomShape The shape of the room.
-- @returns A map of `DoorSlot` to the corresponding room grid index.
function ____exports.getRoomShapeAdjacentGridIndexes(self, safeRoomGridIndex, roomShape)
    local roomShapeAdjacentGridIndexDeltas = ____exports.getRoomShapeAdjacentGridIndexDeltas(nil, roomShape)
    local adjacentGridIndexes = __TS__New(Map)
    for ____, ____value in __TS__Iterator(roomShapeAdjacentGridIndexDeltas:entries()) do
        local doorSlot = ____value[1]
        local delta = ____value[2]
        local roomGridIndex = safeRoomGridIndex + delta
        if ____exports.isRoomInsideGrid(nil, roomGridIndex) then
            adjacentGridIndexes:set(doorSlot, roomGridIndex)
        end
    end
    return adjacentGridIndexes
end
--- Helper function to get only the adjacent room grid indexes for a room shape that do not exist
-- (i.e. do not have room data).
-- 
-- This is just a filtering of the results of the `getRoomShapeAdjacentGridIndexes` function. See
-- that function for more information.
function ____exports.getRoomShapeAdjacentNonExistingGridIndexes(self, safeRoomGridIndex, roomShape)
    local roomShapeAdjacentGridIndexes = ____exports.getRoomShapeAdjacentGridIndexes(nil, safeRoomGridIndex, roomShape)
    for ____, ____value in __TS__Iterator(roomShapeAdjacentGridIndexes:entries()) do
        local doorSlot = ____value[1]
        local roomGridIndex = ____value[2]
        local roomData = getRoomData(nil, roomGridIndex)
        if roomData ~= nil then
            roomShapeAdjacentGridIndexes:delete(doorSlot)
        end
    end
    return roomShapeAdjacentGridIndexes
end
--- Helper function to check if the given room grid index is a dead end. Specifically, this is
-- defined as having only one adjacent room that exists.
-- 
-- Note that this function does not take the shape of the room into account; it only looks at a
-- single room grid index.
-- 
-- This function does not care if the given room grid index actually exists, so you can use it to
-- check if a hypothetical room would be a dead end.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
function ____exports.isDeadEnd(self, roomGridIndex)
    local adjacentExistingRoomGridIndexes = ____exports.getAdjacentExistingRoomGridIndexes(nil, roomGridIndex)
    return #adjacentExistingRoomGridIndexes == 1
end
--- Helper function to determine if a given room grid index is inside of the normal 13x13 level grid.
-- 
-- For example, Devil Rooms and the Mega Satan room are not considered to be inside the grid.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
function ____exports.isRoomInsideGrid(self, roomGridIndex)
    if roomGridIndex == nil then
        roomGridIndex = getRoomGridIndex(nil)
    end
    return roomGridIndex >= 0 and roomGridIndex <= MAX_LEVEL_GRID_INDEX
end
--- Helper function to check if a room exists at the given room grid index. (A room will exist if it
-- has non-undefined data in the room descriptor.)
function ____exports.roomExists(self, roomGridIndex)
    local roomData = getRoomData(nil, roomGridIndex)
    return roomData ~= nil
end
local LEFT = -1
local UP = -LEVEL_GRID_ROW_WIDTH
local RIGHT = 1
local DOWN = LEVEL_GRID_ROW_WIDTH
ADJACENT_ROOM_GRID_INDEX_DELTAS = {LEFT, UP, RIGHT, DOWN}
--- Helper function to get only the adjacent room grid indexes that do not exist (i.e. do not have
-- room data).
-- 
-- This is just a filtering of the results of the `getAdjacentExistingRoomGridIndexes` function. See
-- that function for more information.
function ____exports.getAdjacentNonExistingRoomGridIndexes(self, roomGridIndex)
    local adjacentRoomGridIndexes = ____exports.getAdjacentRoomGridIndexes(nil, roomGridIndex)
    return __TS__ArrayFilter(
        adjacentRoomGridIndexes,
        function(____, adjacentRoomGridIndex) return getRoomData(nil, adjacentRoomGridIndex) == nil end
    )
end
--- Helper function to get the room safe grid index for every room on the entire floor.
function ____exports.getAllRoomGridIndexes(self)
    local rooms = getRooms(nil)
    return __TS__ArrayMap(
        rooms,
        function(____, roomDescriptor) return roomDescriptor.SafeGridIndex end
    )
end
--- Helper function to pick a random valid spot on the floor to insert a brand new room. Note that
-- some floors will not have any valid spots. If this is the case, this function will return
-- undefined.
-- 
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @returns Either a tuple of adjacent room grid index, `DoorSlot`, and new room grid index, or
-- undefined.
function ____exports.getNewRoomCandidate(self, seedOrRNG)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    local newRoomCandidatesForLevel = ____exports.getNewRoomCandidatesForLevel(nil)
    if #newRoomCandidatesForLevel == 0 then
        return nil
    end
    return getRandomArrayElement(nil, newRoomCandidatesForLevel, seedOrRNG)
end
--- Helper function to get the grid indexes of all the rooms connected to the given room index,
-- taking the shape of the room into account. (This will only include rooms with valid data.)
-- 
-- Returns an empty map if the provided room grid index is out of bounds or has no associated room
-- data.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
-- @returns A map of `DoorSlot` to the corresponding room grid index.
function ____exports.getRoomAdjacentGridIndexes(self, roomGridIndex)
    local roomDescriptor = getRoomDescriptor(nil, roomGridIndex)
    if not ____exports.isRoomInsideGrid(nil, roomDescriptor.SafeGridIndex) then
        return __TS__New(Map)
    end
    local roomData = roomDescriptor.Data
    if roomData == nil then
        return __TS__New(Map)
    end
    return ____exports.getRoomShapeAdjacentExistingGridIndexes(nil, roomDescriptor.SafeGridIndex, roomData.Shape)
end
--- Helper function to get an array of all of the safe grid indexes for rooms that match the
-- specified room type.
-- 
-- This function only searches through rooms in the current dimension.
-- 
-- This function is variadic, meaning that you can specify N arguments to get the combined grid
-- indexes for N room types.
function ____exports.getRoomGridIndexesForType(self, ...)
    local roomTypesSet = __TS__New(Set, {...})
    local rooms = getRoomsInsideGrid(nil)
    local matchingRooms = __TS__ArrayFilter(
        rooms,
        function(____, roomDescriptor) return roomDescriptor.Data ~= nil and roomTypesSet:has(roomDescriptor.Data.Type) end
    )
    return __TS__ArrayMap(
        matchingRooms,
        function(____, roomDescriptor) return roomDescriptor.SafeGridIndex end
    )
end
function ____exports.isDoorSlotValidAtGridIndex(self, doorSlot, roomGridIndex)
    local allowedDoors = getRoomAllowedDoors(nil, roomGridIndex)
    return allowedDoors:has(doorSlot)
end
function ____exports.isDoorSlotValidAtGridIndexForRedRoom(self, doorSlot, roomGridIndex)
    local doorSlotValidAtGridIndex = ____exports.isDoorSlotValidAtGridIndex(nil, doorSlot, roomGridIndex)
    if not doorSlotValidAtGridIndex then
        return false
    end
    local roomShape = getRoomShape(nil, roomGridIndex)
    if roomShape == nil then
        return false
    end
    local delta = getGridIndexDelta(nil, roomShape, doorSlot)
    if delta == nil then
        return false
    end
    local redRoomGridIndex = roomGridIndex + delta
    return not ____exports.roomExists(nil, redRoomGridIndex) and ____exports.isRoomInsideGrid(nil, redRoomGridIndex)
end
--- Helper function to detect if the provided room was created by the Red Key item. Under the hood,
-- this checks for the `RoomDescriptorFlag.FLAG_RED_ROOM` flag.
-- 
-- @param roomGridIndex Optional. Default is the current room index.
function ____exports.isRedKeyRoom(self, roomGridIndex)
    local roomDescriptor = getRoomDescriptor(nil, roomGridIndex)
    return hasFlag(nil, roomDescriptor.Flags, RoomDescriptorFlag.RED_ROOM)
end
--- Helper function to generate a new room on the floor at a valid dead end attached to a normal
-- room.
-- 
-- Under the hood, this function uses the `Level.MakeRedRoomDoor` method to create the room.
-- 
-- The newly created room will have data corresponding to the game's randomly generated red room. If
-- you want to modify this, use the `setRoomData` helper function.
-- 
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `Level.GetDungeonPlacementSeed`.
-- @returns The room grid index of the new room or undefined if the floor had no valid dead ends to
-- place a room.
function ____exports.newRoom(self, seedOrRNG)
    local level = game:GetLevel()
    if seedOrRNG == nil then
        seedOrRNG = level:GetDungeonPlacementSeed()
    end
    local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG)
    local newRoomCandidate = ____exports.getNewRoomCandidate(nil, rng)
    if newRoomCandidate == nil then
        return nil
    end
    local adjacentRoomGridIndex, doorSlot, newRoomGridIndex = table.unpack(newRoomCandidate)
    level:MakeRedRoomDoor(adjacentRoomGridIndex, doorSlot)
    local roomDescriptor = getRoomDescriptor(nil, newRoomGridIndex)
    roomDescriptor.Flags = removeFlag(nil, roomDescriptor.Flags, RoomDescriptorFlag.RED_ROOM)
    local roomData = roomDescriptor.Data
    if roomData ~= nil then
        local hasFullMap = level:GetStateFlag(LevelStateFlag.FULL_MAP_EFFECT)
        local hasCompass = level:GetStateFlag(LevelStateFlag.COMPASS_EFFECT)
        local hasBlueMap = level:GetStateFlag(LevelStateFlag.BLUE_MAP_EFFECT)
        local roomType = roomData.Type
        local isSecretRoom = roomType == RoomType.SECRET or roomType == RoomType.SUPER_SECRET
        if hasFullMap then
            roomDescriptor.DisplayFlags = ALL_DISPLAY_FLAGS
        elseif not isSecretRoom and hasCompass then
            roomDescriptor.DisplayFlags = addFlag(nil, DisplayFlag.VISIBLE, DisplayFlag.SHOW_ICON)
        elseif isSecretRoom and hasBlueMap then
            roomDescriptor.DisplayFlags = addFlag(nil, DisplayFlag.VISIBLE, DisplayFlag.SHOW_ICON)
        end
    end
    return newRoomGridIndex
end
--- Helper function to get the coordinates of a given grid index. The floor is represented by a 13x13
-- grid.
-- 
-- - Since the starting room is in the center, the starting room grid index of 84 is equal to
--   coordinates of (6, 6).
-- - The top-left grid index of 0 is equal to coordinates of: (12, 0)
-- - The top-right grid index of 12 is equal to coordinates of: (0, 0)
-- - The bottom-left grid index of 156 is equal to coordinates of: (0, 12)
-- - The bottom-right grid index of 168 is equal to coordinates of: (12, 12)
function ____exports.roomGridIndexToXY(self, roomGridIndex)
    local x = roomGridIndex % LEVEL_GRID_ROW_WIDTH
    local y = math.floor(roomGridIndex / LEVEL_GRID_ROW_WIDTH)
    return {x, y}
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.mergeTests"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local oldTableHasUpdatedValue, newTableHasSameValue, oldTableHasUpdatedValueFromNull, oldTableHasSerializedIsaacAPIClass, oldTableHasFilledChildTable, oldTableHasFilledMap, oldTableHasFilledDefaultMap, oldTableHasVector, oldTableHasVectorSerialized, oldTableHasRNG, oldTableHasRNGSerialized
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____SerializationType = require("lua_modules.isaacscript-common.dist.src.enums.SerializationType")
local SerializationType = ____SerializationType.SerializationType
local ____deepCopy = require("lua_modules.isaacscript-common.dist.src.functions.deepCopy")
local deepCopy = ____deepCopy.deepCopy
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local ____merge = require("lua_modules.isaacscript-common.dist.src.functions.merge")
local merge = ____merge.merge
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local isRNG = ____rng.isRNG
local newRNG = ____rng.newRNG
local ____serialization = require("lua_modules.isaacscript-common.dist.src.functions.serialization")
local isSerializedIsaacAPIClass = ____serialization.isSerializedIsaacAPIClass
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local printConsole = ____utils.printConsole
local ____vector = require("lua_modules.isaacscript-common.dist.src.functions.vector")
local isVector = ____vector.isVector
local serializeVector = ____vector.serializeVector
function oldTableHasUpdatedValue(self)
    local key = "foo"
    local oldValue = "bar"
    local newValue = "baz"
    local oldTable = {foo = oldValue}
    local newTable = {foo = newValue}
    merge(nil, oldTable, newTable, "oldTableHasUpdatedValue")
    local oldTableValue = oldTable[key]
    if oldTableValue ~= newValue then
        error("The old table does not have a value of: " .. newValue)
    end
end
function newTableHasSameValue(self)
    local key = "foo"
    local oldValue = "bar"
    local newValue = "baz"
    local oldTable = {foo = oldValue}
    local newTable = {foo = newValue}
    merge(nil, oldTable, newTable, "newTableHasSameValue")
    local newTableValue = newTable[key]
    if newTableValue ~= newValue then
        error("The new table does not have a value of: " .. newValue)
    end
end
function oldTableHasUpdatedValueFromNull(self)
    local key = "foo"
    local newValue = "baz"
    local oldTable = {foo = nil}
    local newTable = {foo = newValue}
    merge(nil, oldTable, newTable, "oldTableHasUpdatedValueFromNull")
    local oldTableValue = oldTable[key]
    if oldTableValue ~= newValue then
        error("The old table does not have a value of: " .. newValue)
    end
end
function oldTableHasSerializedIsaacAPIClass(self)
    local x = 50
    local y = 60
    local vector = Vector(x, y)
    local vectorSerialized = serializeVector(nil, vector)
    if not isSerializedIsaacAPIClass(nil, vectorSerialized) then
        error("The \"isSerializedIsaacAPIClass\" function says that a serialized vector is not serialized.")
    end
end
function oldTableHasFilledChildTable(self)
    local key = "foo"
    local newValue = "baz"
    local oldTable = {foo = nil}
    local foo = {bar = newValue}
    local newTable = {foo = foo}
    merge(nil, oldTable, newTable, "oldTableHasFilledChildTable")
    local oldTableValue = oldTable[key]
    if oldTableValue == nil then
        error(("The old table's key of \"" .. key) .. "\" was not filled.")
    end
    if oldTableValue.bar ~= newValue then
        error("The old table's key of \"bar\" was not filled.")
    end
end
function oldTableHasFilledMap(self)
    local v = {run = {myMap = __TS__New(Map)}}
    local saveData = {run = {myMap = __TS__New(Map, {{"foo1", "bar1"}, {"foo2", "bar2"}, {"foo3", "bar3"}})}}
    local serializedSaveData = deepCopy(nil, saveData, SerializationType.SERIALIZE)
    merge(nil, v, serializedSaveData, "oldTableHasFilledMap")
    local expectedSize = 3
    if v.run.myMap.size ~= expectedSize then
        error((("The size of the merged map was equal to " .. tostring(v.run.myMap.size)) .. ", but it should be equal to: ") .. tostring(expectedSize))
    end
    do
        local key = "foo1"
        local expectedValue = "bar1"
        local value = v.run.myMap:get(key)
        if value ~= expectedValue then
            error((((("The old table's map key of \"" .. key) .. "\" was not equal to \"") .. expectedValue) .. "\" and was instead equal to: ") .. tostring(value))
        end
    end
    do
        local key = "foo2"
        local expectedValue = "bar2"
        local value = v.run.myMap:get(key)
        if value ~= expectedValue then
            error((((("The old table's map key of \"" .. key) .. "\" was not equal to \"") .. expectedValue) .. "\" and was instead equal to: ") .. tostring(value))
        end
    end
    do
        local key = "foo3"
        local expectedValue = "bar3"
        local value = v.run.myMap:get(key)
        if value ~= expectedValue then
            error((((("The old table's map key of \"" .. key) .. "\" was not equal to \"") .. expectedValue) .. "\" and was instead equal to: ") .. tostring(value))
        end
    end
end
function oldTableHasFilledDefaultMap(self)
    local v = {run = {myDefaultMap = __TS__New(DefaultMap, "default")}}
    local saveData = {run = {myDefaultMap = __TS__New(DefaultMap, "default", {{"foo1", "bar1"}, {"foo2", "bar2"}, {"foo3", "bar3"}})}}
    local serializedSaveData = deepCopy(nil, saveData, SerializationType.SERIALIZE)
    merge(nil, v, serializedSaveData, "oldTableHasFilledDefaultMap")
    local expectedSize = 3
    if v.run.myDefaultMap.size ~= expectedSize then
        error((("The size of the merged default map was equal to " .. tostring(v.run.myDefaultMap.size)) .. ", but it should be equal to: ") .. tostring(expectedSize))
    end
    do
        local key = "foo1"
        local expectedValue = "bar1"
        local value = v.run.myDefaultMap:get(key)
        if value ~= expectedValue then
            error((((("The old table's default map key of \"" .. key) .. "\" was not equal to \"") .. expectedValue) .. "\" and was instead equal to: ") .. tostring(value))
        end
    end
    do
        local key = "foo2"
        local expectedValue = "bar2"
        local value = v.run.myDefaultMap:get(key)
        if value ~= expectedValue then
            error((((("The old table's default map key of \"" .. key) .. "\" was not equal to \"") .. expectedValue) .. "\" and was instead equal to: ") .. tostring(value))
        end
    end
    do
        local key = "foo3"
        local expectedValue = "bar3"
        local value = v.run.myDefaultMap:get(key)
        if value ~= expectedValue then
            error((((("The old table's default map key of \"" .. key) .. "\" was not equal to \"") .. expectedValue) .. "\" and was instead equal to: ") .. tostring(value))
        end
    end
end
function oldTableHasVector(self)
    local key = "foo"
    local x = 50
    local y = 60
    local newValue = Vector(x, y)
    local oldTable = {foo = nil}
    local foo = {bar = newValue}
    local newTable = {foo = foo}
    merge(nil, oldTable, newTable, "oldTableHasVector")
    local oldTableValue = oldTable[key]
    if oldTableValue == nil then
        error(("The old table's key of \"" .. key) .. "\" was not filled.")
    end
    if oldTableValue.bar.X ~= x then
        error("The old table's value for \"x\" does not match: " .. tostring(x))
    end
    if oldTableValue.bar.Y ~= y then
        error("The old table's value for \"y\" does not match: " .. tostring(y))
    end
    if not isVector(nil, oldTableValue.bar) then
        error("The old table's value is not a Vector object.")
    end
end
function oldTableHasVectorSerialized(self)
    local key = "foo"
    local x = 50
    local y = 60
    local newValue = Vector(x, y)
    local oldTable = {foo = nil}
    local foo = {bar = newValue}
    local newTable = {foo = foo}
    local newTableSerialized = deepCopy(nil, newTable, SerializationType.SERIALIZE, "oldTableHasVectorSerialized")
    merge(nil, oldTable, newTableSerialized, "oldTableHasVectorSerialized")
    local oldTableValue = oldTable[key]
    if oldTableValue == nil then
        error(("The old table's key of \"" .. key) .. "\" was not filled.")
    end
    if oldTableValue.bar.X ~= x then
        error("The old table's value for \"x\" does not match: " .. tostring(x))
    end
    if oldTableValue.bar.Y ~= y then
        error("The old table's value for \"y\" does not match: " .. tostring(y))
    end
    if not isVector(nil, oldTableValue.bar) then
        error("The old table's value is not a Vector object (during the serialized test).")
    end
end
function oldTableHasRNG(self)
    local key = "foo"
    local seed = 50
    local newValue = newRNG(nil, seed)
    local oldTable = {foo = nil}
    local foo = {bar = newValue}
    local newTable = {foo = foo}
    merge(nil, oldTable, newTable, "oldTableHasRNG")
    local oldTableValue = oldTable[key]
    if oldTableValue == nil then
        error(("The old table's key of \"" .. key) .. "\" was not filled.")
    end
    if not isRNG(nil, oldTableValue.bar) then
        error("The old table's value is not an RNG object.")
    end
    local newSeed = oldTableValue.bar:GetSeed()
    if newSeed ~= seed then
        error("The old table's seed not match: " .. tostring(seed))
    end
end
function oldTableHasRNGSerialized(self)
    local key = "foo"
    local seed = 50
    local newValue = newRNG(nil, seed)
    local oldTable = {foo = nil}
    local foo = {bar = newValue}
    local newTable = {foo = foo}
    local newTableSerialized = deepCopy(nil, newTable, SerializationType.SERIALIZE, "oldTableHasRNGSerialized")
    merge(nil, oldTable, newTableSerialized, "oldTableHasRNGSerialized")
    local oldTableValue = oldTable[key]
    if oldTableValue == nil then
        error(("The old table's key of \"" .. key) .. "\" was not filled.")
    end
    if not isRNG(nil, oldTableValue.bar) then
        error("The old table's value is not an RNG object (during the serialized test).")
    end
    local newSeed = oldTableValue.bar:GetSeed()
    if newSeed ~= seed then
        error("The old table's seed not match: " .. tostring(seed))
    end
end
--- Run the suite of tests that prove that the "merge" function works properly.
-- 
-- This function is only useful if you are troubleshooting the save data manager.
function ____exports.runMergeTests(self)
    oldTableHasUpdatedValue(nil)
    newTableHasSameValue(nil)
    oldTableHasUpdatedValueFromNull(nil)
    oldTableHasSerializedIsaacAPIClass(nil)
    oldTableHasFilledChildTable(nil)
    oldTableHasFilledMap(nil)
    oldTableHasFilledDefaultMap(nil)
    oldTableHasVector(nil)
    oldTableHasVectorSerialized(nil)
    oldTableHasRNG(nil)
    oldTableHasRNGSerialized(nil)
    local successText = "All merge tests passed!"
    log(nil, successText)
    printConsole(nil, successText)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.merge"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local Map = ____lualib.Map
local ____exports = {}
local mergeSerializedArray, mergeSerializedTSTLObject, mergeSerializedTable
local ____constants = require("lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.constants")
local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG
local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.src.enums.SerializationBrand")
local SerializationBrand = ____SerializationBrand.SerializationBrand
local ____SerializationType = require("lua_modules.isaacscript-common.dist.src.enums.SerializationType")
local SerializationType = ____SerializationType.SerializationType
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local isArray = ____array.isArray
local ____deepCopy = require("lua_modules.isaacscript-common.dist.src.functions.deepCopy")
local deepCopy = ____deepCopy.deepCopy
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local ____serialization = require("lua_modules.isaacscript-common.dist.src.functions.serialization")
local deserializeIsaacAPIClass = ____serialization.deserializeIsaacAPIClass
local isSerializationBrand = ____serialization.isSerializationBrand
local isSerializedIsaacAPIClass = ____serialization.isSerializedIsaacAPIClass
local ____table = require("lua_modules.isaacscript-common.dist.src.functions.table")
local clearTable = ____table.clearTable
local iterateTableInOrder = ____table.iterateTableInOrder
local ____tstlClass = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
local isDefaultMap = ____tstlClass.isDefaultMap
local isTSTLMap = ____tstlClass.isTSTLMap
local isTSTLSet = ____tstlClass.isTSTLSet
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isTable = ____types.isTable
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local getTraversalDescription = ____utils.getTraversalDescription
--- `merge` takes the values from a new table and recursively merges them into an old object (while
-- performing appropriate deserialization).
-- 
-- This function is used to merge incoming data from the "save#.dat" file into a mod's variables.
-- Merging is useful instead of blowing away a table entirely because mod code often relies on the
-- local table/object references.
-- 
-- This function always assumes that the new table is serialized data and will attempt to perform
-- deserialization on the objects within. In other words, unlike the `deepCopy` function, the
-- `merge` function will always operates in the mode of `SerializationType.DESERIALIZE`. For the
-- types of objects that will be deserialized, see the documentation for the `deepCopy` function.
-- 
-- This function does not iterate over the old object, like you would naively expect. This is
-- because it is common for a variable to have a type of `something | null`. If this is the case,
-- the key would not appear when iterating over the old object (because a value of null transpiles
-- to nil, which means the table key does not exist). Thus, we must instead iterate over the new
-- object and copy the values backwards. The consequence of this is that `merge` can copy over old
-- variables that are no longer used in the code, or copy over old variables of a different type,
-- which can cause run-time errors. In such cases, users will have to manually delete their save
-- data.
-- 
-- @param oldObject The old object to merge the values into. This can be either a Lua table, a TSTL
-- map, or a TSTL set.
-- @param newTable The new table to merge the values from. This must be a Lua table that represents
-- serialized data. In other words, it should be created with the `deepCopy`
-- function using `SerializationType.SERIALIZE`.
-- @param traversalDescription Used to track the current key that we are operating on for debugging
-- purposes. Use a name that corresponds to the name of the merging
-- table.
-- @param classConstructors Optional. A Lua table that maps the name of a user-defined TSTL class to
-- its corresponding constructor. If the `deepCopy` function finds any
-- user-defined TSTL classes when recursively iterating through the given
-- object, it will use this map to instantiate a new class. Default is an
-- empty Lua table.
function ____exports.merge(self, oldObject, newTable, traversalDescription, classConstructors)
    if classConstructors == nil then
        classConstructors = {}
    end
    if SAVE_DATA_MANAGER_DEBUG then
        log(nil, "merge is traversing: " .. traversalDescription)
    end
    if not isTable(nil, oldObject) then
        error("The first argument given to the merge function is not a table.")
    end
    if not isTable(nil, newTable) then
        error("The second argument given to the merge function is not a table.")
    end
    if isArray(nil, oldObject) and isArray(nil, newTable) then
        mergeSerializedArray(
            nil,
            oldObject,
            newTable,
            traversalDescription,
            classConstructors
        )
        return
    end
    if isTSTLMap(nil, oldObject) or isTSTLSet(nil, oldObject) or isDefaultMap(nil, oldObject) then
        mergeSerializedTSTLObject(
            nil,
            oldObject,
            newTable,
            traversalDescription,
            classConstructors
        )
    else
        mergeSerializedTable(
            nil,
            oldObject,
            newTable,
            traversalDescription,
            classConstructors
        )
    end
end
function mergeSerializedArray(self, oldArray, newArray, traversalDescription, classConstructors)
    if SAVE_DATA_MANAGER_DEBUG then
        log(nil, "merge encountered an array: " .. traversalDescription)
    end
    clearTable(nil, oldArray)
    iterateTableInOrder(
        nil,
        newArray,
        function(____, key, value)
            local deserializedValue = deepCopy(
                nil,
                value,
                SerializationType.DESERIALIZE,
                traversalDescription,
                classConstructors
            )
            oldArray[key] = deserializedValue
        end,
        SAVE_DATA_MANAGER_DEBUG
    )
end
function mergeSerializedTSTLObject(self, oldObject, newTable, traversalDescription, classConstructors)
    if SAVE_DATA_MANAGER_DEBUG then
        log(nil, "merge encountered a TSTL object: " .. traversalDescription)
    end
    oldObject:clear()
    local convertStringKeysToNumbers = newTable[SerializationBrand.OBJECT_WITH_NUMBER_KEYS] ~= nil
    iterateTableInOrder(
        nil,
        newTable,
        function(____, key, value)
            if isSerializationBrand(nil, key) then
                return
            end
            local keyToUse = key
            if convertStringKeysToNumbers then
                local numberKey = tonumber(key)
                if numberKey == nil then
                    return
                end
                keyToUse = numberKey
            end
            if isTSTLMap(nil, oldObject) or isDefaultMap(nil, oldObject) then
                local deserializedValue = deepCopy(
                    nil,
                    value,
                    SerializationType.DESERIALIZE,
                    traversalDescription,
                    classConstructors
                )
                oldObject:set(keyToUse, deserializedValue)
            elseif isTSTLSet(nil, oldObject) then
                oldObject:add(keyToUse)
            end
        end,
        SAVE_DATA_MANAGER_DEBUG
    )
end
function mergeSerializedTable(self, oldTable, newTable, traversalDescription, classConstructors)
    if SAVE_DATA_MANAGER_DEBUG then
        log(nil, "merge encountered a Lua table: " .. traversalDescription)
    end
    iterateTableInOrder(
        nil,
        newTable,
        function(____, key, value)
            if SAVE_DATA_MANAGER_DEBUG then
                local valueToPrint = value == "" and "(empty string)" or tostring(value)
                log(nil, (("merge is merging: " .. traversalDescription) .. " --> ") .. valueToPrint)
            end
            if isSerializationBrand(nil, key) then
                return
            end
            if isSerializedIsaacAPIClass(nil, value) then
                if SAVE_DATA_MANAGER_DEBUG then
                    log(nil, "merge found a serialized Isaac API class.")
                end
                local deserializedObject = deserializeIsaacAPIClass(nil, value)
                oldTable[key] = deserializedObject
                return
            end
            if isTable(nil, value) then
                local oldValue = oldTable[key]
                if not isTable(nil, oldValue) then
                    oldValue = {}
                    oldTable[key] = oldValue
                end
                traversalDescription = getTraversalDescription(nil, key, traversalDescription)
                ____exports.merge(
                    nil,
                    oldValue,
                    value,
                    traversalDescription,
                    classConstructors
                )
            else
                oldTable[key] = value
            end
        end,
        SAVE_DATA_MANAGER_DEBUG
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.pills"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArraySlice = ____lualib.__TS__ArraySlice
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local itemConfig = ____cachedClasses.itemConfig
local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.src.core.constantsFirstLast")
local FIRST_HORSE_PILL_COLOR = ____constantsFirstLast.FIRST_HORSE_PILL_COLOR
local FIRST_PILL_COLOR = ____constantsFirstLast.FIRST_PILL_COLOR
local FIRST_PILL_EFFECT = ____constantsFirstLast.FIRST_PILL_EFFECT
local LAST_HORSE_PILL_COLOR = ____constantsFirstLast.LAST_HORSE_PILL_COLOR
local LAST_NORMAL_PILL_COLOR = ____constantsFirstLast.LAST_NORMAL_PILL_COLOR
local LAST_VANILLA_PILL_EFFECT = ____constantsFirstLast.LAST_VANILLA_PILL_EFFECT
local ____falsePHDPillConversions = require("lua_modules.isaacscript-common.dist.src.maps.falsePHDPillConversions")
local FALSE_PHD_PILL_CONVERSIONS = ____falsePHDPillConversions.FALSE_PHD_PILL_CONVERSIONS
local ____PHDPillConversions = require("lua_modules.isaacscript-common.dist.src.maps.PHDPillConversions")
local PHD_PILL_CONVERSIONS = ____PHDPillConversions.PHD_PILL_CONVERSIONS
local ____pillEffectClasses = require("lua_modules.isaacscript-common.dist.src.objects.pillEffectClasses")
local DEFAULT_PILL_EFFECT_CLASS = ____pillEffectClasses.DEFAULT_PILL_EFFECT_CLASS
local PILL_EFFECT_CLASSES = ____pillEffectClasses.PILL_EFFECT_CLASSES
local ____pillEffectNames = require("lua_modules.isaacscript-common.dist.src.objects.pillEffectNames")
local DEFAULT_PILL_EFFECT_NAME = ____pillEffectNames.DEFAULT_PILL_EFFECT_NAME
local PILL_EFFECT_NAMES = ____pillEffectNames.PILL_EFFECT_NAMES
local ____pillEffectTypes = require("lua_modules.isaacscript-common.dist.src.objects.pillEffectTypes")
local DEFAULT_PILL_EFFECT_TYPE = ____pillEffectTypes.DEFAULT_PILL_EFFECT_TYPE
local PILL_EFFECT_TYPES = ____pillEffectTypes.PILL_EFFECT_TYPES
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
local asPillColor = ____types.asPillColor
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local iRange = ____utils.iRange
function ____exports.isVanillaPillEffect(self, pillEffect)
    return pillEffect <= LAST_VANILLA_PILL_EFFECT
end
--- Add this to a `PillColor` to get the corresponding giant pill color.
-- 
-- Corresponds to the vanilla `PillColor.GIANT_FLAG` value.
-- 
-- 1 << 11
local HORSE_PILL_ADJUSTMENT = 2048
--- Helper function to get an array with every non-null pill color. This includes all gold colors and
-- all horse colors.
function ____exports.getAllPillColors(self)
    local pillColors = getEnumValues(nil, PillColor)
    __TS__ArraySlice(pillColors)
    return pillColors
end
--- Helper function to get the associated pill effect after False PHD is acquired. If a pill effect
-- is not altered by False PHD, then the same pill effect will be returned.
function ____exports.getFalsePHDPillEffect(self, pillEffect)
    local convertedPillEffect = FALSE_PHD_PILL_CONVERSIONS:get(pillEffect)
    return convertedPillEffect == nil and pillEffect or convertedPillEffect
end
--- Helper function to get the corresponding horse pill color from a normal pill color.
-- 
-- For example, passing `PillColor.BLUE_BLUE` would result in 2049, which is the value that
-- corresponds to the horse pill color for blue/blue.
function ____exports.getHorsePillColor(self, pillColor)
    return asNumber(nil, pillColor) + HORSE_PILL_ADJUSTMENT
end
--- Helper function to get an array with every non-gold horse pill color.
function ____exports.getHorsePillColors(self)
    return iRange(nil, FIRST_HORSE_PILL_COLOR, LAST_HORSE_PILL_COLOR)
end
--- Helper function to get the corresponding normal pill color from a horse pill color.
-- 
-- For example, passing 2049 would result in `PillColor.BLUE_BLUE`.
-- 
-- If called with a non-horse pill color, this function will return back the same color.
function ____exports.getNormalPillColorFromHorse(self, pillColor)
    local normalPillColor = asPillColor(
        nil,
        asNumber(nil, pillColor) - HORSE_PILL_ADJUSTMENT
    )
    return normalPillColor > PillColor.NULL and normalPillColor or pillColor
end
--- Helper function to get an array with every non-gold and non-horse pill color.
function ____exports.getNormalPillColors(self)
    return iRange(nil, FIRST_PILL_COLOR, LAST_NORMAL_PILL_COLOR)
end
--- Helper function to get the associated pill effect after PHD is acquired. If a pill effect is not
-- altered by PHD, then the same pill effect will be returned.
function ____exports.getPHDPillEffect(self, pillEffect)
    local convertedPillEffect = PHD_PILL_CONVERSIONS:get(pillEffect)
    return convertedPillEffect == nil and pillEffect or convertedPillEffect
end
--- Helper function to get a pill effect class from a PillEffect enum value. In this context, the
-- class is equal to the numerical prefix in the "class" tag in the "pocketitems.xml" file. Use the
-- `getPillEffectType` helper function to determine whether or not the pill effect is positive,
-- negative, or neutral.
-- 
-- Due to limitations in the API, this function will not work properly for modded pill effects, and
-- will always return `DEFAULT_PILL_EFFECT_CLASS` in those cases.
function ____exports.getPillEffectClass(self, pillEffect)
    local pillEffectClass = PILL_EFFECT_CLASSES[pillEffect]
    return pillEffectClass == nil and DEFAULT_PILL_EFFECT_CLASS or pillEffectClass
end
--- Helper function to get a pill effect name from a PillEffect enum value.
-- 
-- For example, `getPillEffectName(PillEffect.BAD_GAS)` would return "Bad Gas".
function ____exports.getPillEffectName(self, pillEffect)
    local pillEffectName = PILL_EFFECT_NAMES[pillEffect]
    if pillEffectName ~= nil then
        return pillEffectName
    end
    local itemConfigPillEffect = itemConfig:GetPillEffect(pillEffect)
    if itemConfigPillEffect ~= nil then
        return itemConfigPillEffect.Name
    end
    return DEFAULT_PILL_EFFECT_NAME
end
--- Helper function to get a pill effect type from a PillEffect enum value. In this context, the type
-- is equal to positive, negative, or neutral. This is derived from the suffix of the the "class"
-- tag in the "pocketitems.xml" file. Use the `getPillEffectClass` helper function to determine the
-- "power" of the pill.
-- 
-- Due to limitations in the API, this function will not work properly for modded pill effects, and
-- will always return `DEFAULT_PILL_EFFECT_TYPE` in those cases.
function ____exports.getPillEffectType(self, pillEffect)
    local pillEffectClass = PILL_EFFECT_TYPES[pillEffect]
    return pillEffectClass == nil and DEFAULT_PILL_EFFECT_TYPE or pillEffectClass
end
--- Helper function to get an array with every vanilla pill effect.
function ____exports.getVanillaPillEffects(self)
    return iRange(nil, FIRST_PILL_EFFECT, LAST_VANILLA_PILL_EFFECT)
end
function ____exports.isHorsePill(self, pillColor)
    return asNumber(nil, pillColor) > HORSE_PILL_ADJUSTMENT
end
function ____exports.isModdedPillEffect(self, pillEffect)
    return not ____exports.isVanillaPillEffect(nil, pillEffect)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.falsePHDPillConversions"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect
____exports.FALSE_PHD_PILL_CONVERSIONS = __TS__New(Map, {
    {PillEffect.BAD_GAS, PillEffect.HEALTH_DOWN},
    {PillEffect.BALLS_OF_STEEL, PillEffect.BAD_TRIP},
    {PillEffect.BOMBS_ARE_KEYS, PillEffect.TEARS_DOWN},
    {PillEffect.EXPLOSIVE_DIARRHEA, PillEffect.RANGE_DOWN},
    {PillEffect.FULL_HEALTH, PillEffect.BAD_TRIP},
    {PillEffect.HEALTH_UP, PillEffect.HEALTH_DOWN},
    {PillEffect.PRETTY_FLY, PillEffect.LUCK_DOWN},
    {PillEffect.RANGE_UP, PillEffect.RANGE_DOWN},
    {PillEffect.SPEED_UP, PillEffect.SPEED_DOWN},
    {PillEffect.TEARS_UP, PillEffect.TEARS_DOWN},
    {PillEffect.LUCK_UP, PillEffect.LUCK_DOWN},
    {PillEffect.TELEPILLS, PillEffect.QUESTION_MARKS},
    {PillEffect.FORTY_EIGHT_HOUR_ENERGY, PillEffect.SPEED_DOWN},
    {PillEffect.HEMATEMESIS, PillEffect.BAD_TRIP},
    {PillEffect.I_CAN_SEE_FOREVER, PillEffect.AMNESIA},
    {PillEffect.PHEROMONES, PillEffect.PARALYSIS},
    {PillEffect.LEMON_PARTY, PillEffect.AMNESIA},
    {PillEffect.PERCS, PillEffect.ADDICTED},
    {PillEffect.ONE_MAKES_YOU_LARGER, PillEffect.RANGE_DOWN},
    {PillEffect.ONE_MAKES_YOU_SMALL, PillEffect.SPEED_DOWN},
    {PillEffect.INFESTED_EXCLAMATION, PillEffect.TEARS_DOWN},
    {PillEffect.INFESTED_QUESTION, PillEffect.LUCK_DOWN},
    {PillEffect.POWER, PillEffect.R_U_A_WIZARD},
    {PillEffect.FRIENDS_TILL_THE_END, PillEffect.HEALTH_DOWN},
    {PillEffect.SOMETHINGS_WRONG, PillEffect.X_LAX},
    {PillEffect.IM_DROWSY, PillEffect.IM_EXCITED},
    {PillEffect.GULP, PillEffect.HORF},
    {PillEffect.FEELS_LIKE_IM_WALKING_ON_SUNSHINE, PillEffect.RETRO_VISION},
    {PillEffect.VURP, PillEffect.HORF},
    {PillEffect.SHOT_SPEED_UP, PillEffect.SHOT_SPEED_DOWN}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.PHDPillConversions"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect
____exports.PHD_PILL_CONVERSIONS = __TS__New(Map, {
    {PillEffect.BAD_TRIP, PillEffect.BALLS_OF_STEEL},
    {PillEffect.HEALTH_DOWN, PillEffect.HEALTH_UP},
    {PillEffect.RANGE_DOWN, PillEffect.RANGE_UP},
    {PillEffect.SPEED_DOWN, PillEffect.SPEED_UP},
    {PillEffect.TEARS_DOWN, PillEffect.TEARS_UP},
    {PillEffect.LUCK_DOWN, PillEffect.LUCK_UP},
    {PillEffect.PARALYSIS, PillEffect.PHEROMONES},
    {PillEffect.AMNESIA, PillEffect.I_CAN_SEE_FOREVER},
    {PillEffect.R_U_A_WIZARD, PillEffect.POWER},
    {PillEffect.ADDICTED, PillEffect.PERCS},
    {PillEffect.QUESTION_MARKS, PillEffect.TELEPILLS},
    {PillEffect.RETRO_VISION, PillEffect.I_CAN_SEE_FOREVER},
    {PillEffect.X_LAX, PillEffect.SOMETHINGS_WRONG},
    {PillEffect.IM_EXCITED, PillEffect.IM_DROWSY},
    {PillEffect.HORF, PillEffect.GULP},
    {PillEffect.SHOT_SPEED_DOWN, PillEffect.SHOT_SPEED_UP}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.pillEffectClasses"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ItemConfigPillEffectClass = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigPillEffectClass
local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect
____exports.DEFAULT_PILL_EFFECT_CLASS = ItemConfigPillEffectClass.MODDED
____exports.PILL_EFFECT_CLASSES = {
    [PillEffect.BAD_GAS] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.BAD_TRIP] = ItemConfigPillEffectClass.MEDIUM,
    [PillEffect.BALLS_OF_STEEL] = ItemConfigPillEffectClass.MEDIUM,
    [PillEffect.BOMBS_ARE_KEYS] = ItemConfigPillEffectClass.MEDIUM,
    [PillEffect.EXPLOSIVE_DIARRHEA] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.FULL_HEALTH] = ItemConfigPillEffectClass.MEDIUM,
    [PillEffect.HEALTH_DOWN] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.HEALTH_UP] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.I_FOUND_PILLS] = ItemConfigPillEffectClass.JOKE,
    [PillEffect.PUBERTY] = ItemConfigPillEffectClass.JOKE,
    [PillEffect.PRETTY_FLY] = ItemConfigPillEffectClass.MEDIUM,
    [PillEffect.RANGE_DOWN] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.RANGE_UP] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.SPEED_DOWN] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.SPEED_UP] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.TEARS_DOWN] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.TEARS_UP] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.LUCK_DOWN] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.LUCK_UP] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.TELEPILLS] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.FORTY_EIGHT_HOUR_ENERGY] = ItemConfigPillEffectClass.MEDIUM,
    [PillEffect.HEMATEMESIS] = ItemConfigPillEffectClass.MEDIUM,
    [PillEffect.PARALYSIS] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.I_CAN_SEE_FOREVER] = ItemConfigPillEffectClass.MEDIUM,
    [PillEffect.PHEROMONES] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.AMNESIA] = ItemConfigPillEffectClass.MEDIUM,
    [PillEffect.LEMON_PARTY] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.R_U_A_WIZARD] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.PERCS] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.ADDICTED] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.RELAX] = ItemConfigPillEffectClass.JOKE,
    [PillEffect.QUESTION_MARKS] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.ONE_MAKES_YOU_LARGER] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.ONE_MAKES_YOU_SMALL] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.INFESTED_EXCLAMATION] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.INFESTED_QUESTION] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.POWER] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.RETRO_VISION] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.FRIENDS_TILL_THE_END] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.X_LAX] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.SOMETHINGS_WRONG] = ItemConfigPillEffectClass.JOKE,
    [PillEffect.IM_DROWSY] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.IM_EXCITED] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.GULP] = ItemConfigPillEffectClass.MEDIUM,
    [PillEffect.HORF] = ItemConfigPillEffectClass.JOKE,
    [PillEffect.FEELS_LIKE_IM_WALKING_ON_SUNSHINE] = ItemConfigPillEffectClass.MINOR,
    [PillEffect.VURP] = ItemConfigPillEffectClass.MEDIUM,
    [PillEffect.SHOT_SPEED_DOWN] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.SHOT_SPEED_UP] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.EXPERIMENTAL] = ItemConfigPillEffectClass.MAJOR,
    [PillEffect.EXPERIMENTAL] = ItemConfigPillEffectClass.MAJOR
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.pillEffectNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect
____exports.DEFAULT_PILL_EFFECT_NAME = "Unknown"
____exports.PILL_EFFECT_NAMES = {
    [PillEffect.BAD_GAS] = "Bad Gas",
    [PillEffect.BAD_TRIP] = "Bad Trip",
    [PillEffect.BALLS_OF_STEEL] = "Balls of Steel",
    [PillEffect.BOMBS_ARE_KEYS] = "Bombs Are Key",
    [PillEffect.EXPLOSIVE_DIARRHEA] = "Explosive Diarrhea",
    [PillEffect.FULL_HEALTH] = "Full Health",
    [PillEffect.HEALTH_DOWN] = "Health Down",
    [PillEffect.HEALTH_UP] = "Health Up",
    [PillEffect.I_FOUND_PILLS] = "I Found Pills",
    [PillEffect.PUBERTY] = "Puberty",
    [PillEffect.PRETTY_FLY] = "Pretty Fly",
    [PillEffect.RANGE_DOWN] = "Range Down",
    [PillEffect.RANGE_UP] = "Range Up",
    [PillEffect.SPEED_DOWN] = "Speed Down",
    [PillEffect.SPEED_UP] = "Speed Up",
    [PillEffect.TEARS_DOWN] = "Tears Down",
    [PillEffect.TEARS_UP] = "Tears Up",
    [PillEffect.LUCK_DOWN] = "Luck Down",
    [PillEffect.LUCK_UP] = "Luck Up",
    [PillEffect.TELEPILLS] = "Telepills",
    [PillEffect.FORTY_EIGHT_HOUR_ENERGY] = "48 Hour Energy",
    [PillEffect.HEMATEMESIS] = "Hematemesis",
    [PillEffect.PARALYSIS] = "Paralysis",
    [PillEffect.I_CAN_SEE_FOREVER] = "I can see forever!",
    [PillEffect.PHEROMONES] = "Pheromones",
    [PillEffect.AMNESIA] = "Amnesia",
    [PillEffect.LEMON_PARTY] = "Lemon Party",
    [PillEffect.R_U_A_WIZARD] = "R U a Wizard?",
    [PillEffect.PERCS] = "Percs!",
    [PillEffect.ADDICTED] = "Addicted!",
    [PillEffect.RELAX] = "Re-Lax",
    [PillEffect.QUESTION_MARKS] = "???",
    [PillEffect.ONE_MAKES_YOU_LARGER] = "One makes you larger",
    [PillEffect.ONE_MAKES_YOU_SMALL] = "One makes you small",
    [PillEffect.INFESTED_EXCLAMATION] = "Infested!",
    [PillEffect.INFESTED_QUESTION] = "Infested?",
    [PillEffect.POWER] = "Power Pill!",
    [PillEffect.RETRO_VISION] = "Retro Vision",
    [PillEffect.FRIENDS_TILL_THE_END] = "Friends Till The End!",
    [PillEffect.X_LAX] = "X-Lax",
    [PillEffect.SOMETHINGS_WRONG] = "Something's wrong...",
    [PillEffect.IM_DROWSY] = "I'm Drowsy...",
    [PillEffect.IM_EXCITED] = "I'm Excited!!!",
    [PillEffect.GULP] = "Gulp!",
    [PillEffect.HORF] = "Horf!",
    [PillEffect.FEELS_LIKE_IM_WALKING_ON_SUNSHINE] = "Feels like I'm walking on sunshine!",
    [PillEffect.VURP] = "Vurp!",
    [PillEffect.SHOT_SPEED_DOWN] = "Shot Speed Down",
    [PillEffect.SHOT_SPEED_UP] = "Shot Speed Up",
    [PillEffect.EXPERIMENTAL] = "Experimental Pill"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.pillEffectTypes"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ItemConfigPillEffectType = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigPillEffectType
local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect
____exports.DEFAULT_PILL_EFFECT_TYPE = ItemConfigPillEffectType.MODDED
____exports.PILL_EFFECT_TYPES = {
    [PillEffect.BAD_GAS] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.BAD_TRIP] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.BALLS_OF_STEEL] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.BOMBS_ARE_KEYS] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.EXPLOSIVE_DIARRHEA] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.FULL_HEALTH] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.HEALTH_DOWN] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.HEALTH_UP] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.I_FOUND_PILLS] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.PUBERTY] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.PRETTY_FLY] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.RANGE_DOWN] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.RANGE_UP] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.SPEED_DOWN] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.SPEED_UP] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.TEARS_DOWN] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.TEARS_UP] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.LUCK_DOWN] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.LUCK_UP] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.TELEPILLS] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.FORTY_EIGHT_HOUR_ENERGY] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.HEMATEMESIS] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.PARALYSIS] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.I_CAN_SEE_FOREVER] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.PHEROMONES] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.AMNESIA] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.LEMON_PARTY] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.R_U_A_WIZARD] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.PERCS] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.ADDICTED] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.RELAX] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.QUESTION_MARKS] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.ONE_MAKES_YOU_LARGER] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.ONE_MAKES_YOU_SMALL] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.INFESTED_EXCLAMATION] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.INFESTED_QUESTION] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.POWER] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.RETRO_VISION] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.FRIENDS_TILL_THE_END] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.X_LAX] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.SOMETHINGS_WRONG] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.IM_DROWSY] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.IM_EXCITED] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.GULP] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.HORF] = ItemConfigPillEffectType.NEUTRAL,
    [PillEffect.FEELS_LIKE_IM_WALKING_ON_SUNSHINE] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.VURP] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.SHOT_SPEED_DOWN] = ItemConfigPillEffectType.NEGATIVE,
    [PillEffect.SHOT_SPEED_UP] = ItemConfigPillEffectType.POSITIVE,
    [PillEffect.EXPERIMENTAL] = ItemConfigPillEffectType.NEUTRAL
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.spawnCollectible"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
local ____collectibles = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
local setCollectibleEmpty = ____collectibles.setCollectibleEmpty
local ____collectibleTag = require("lua_modules.isaacscript-common.dist.src.functions.collectibleTag")
local isQuestCollectible = ____collectibleTag.isQuestCollectible
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local spawnPickupWithSeed = ____entitiesSpecific.spawnPickupWithSeed
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local anyPlayerIs = ____players.anyPlayerIs
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local isRNG = ____rng.isRNG
--- Helper function to spawn a collectible.
-- 
-- Use this instead of the `Game.Spawn` method because it handles the cases of Tainted Keeper
-- collectibles costing coins.
-- 
-- This function is unsafe because it will not correctly handle quest items being rotated by Tainted
-- Isaac's rotation mechanic. To handle that, use the `spawnCollectible` helper function instead
-- (which is provided by `ISCFeature.SPAWN_COLLECTIBLE`).
-- 
-- @param collectibleType The collectible type to spawn.
-- @param position The position to spawn the collectible at.
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
-- @param options Optional. Set to true to make the collectible a "There's Options" style
-- collectible. Default is false.
-- @param forceFreeItem Optional. Set to true to disable the logic that gives the item a price for
-- Tainted Keeper. Default is false.
-- @param spawner Optional.
function ____exports.spawnCollectibleUnsafe(self, collectibleType, position, seedOrRNG, options, forceFreeItem, spawner)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if options == nil then
        options = false
    end
    if forceFreeItem == nil then
        forceFreeItem = false
    end
    local seed = isRNG(nil, seedOrRNG) and seedOrRNG:Next() or seedOrRNG
    local collectible = spawnPickupWithSeed(
        nil,
        PickupVariant.COLLECTIBLE,
        collectibleType,
        position,
        seed,
        VectorZero,
        spawner
    )
    if options then
        collectible.OptionsPickupIndex = 1
    end
    if anyPlayerIs(nil, PlayerType.KEEPER_B) and not isQuestCollectible(nil, collectibleType) and not forceFreeItem then
        collectible.ShopItemId = -1
        collectible.Price = 15
    end
    return collectible
end
--- Helper function to spawn an empty collectible. Doing this is tricky since spawning a collectible
-- with `CollectibleType.NULL` will result in spawning a collectible with a random type from the
-- current room's item pool.
-- 
-- Instead, this function arbitrarily spawns a collectible with `CollectibleType.SAD_ONION`, and
-- then converts it to an empty pedestal afterward.
-- 
-- @param position The position to spawn the empty collectible at.
-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
function ____exports.spawnEmptyCollectible(self, position, seedOrRNG)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    local collectible = ____exports.spawnCollectibleUnsafe(
        nil,
        CollectibleType.SAD_ONION,
        position,
        seedOrRNG,
        false,
        true
    )
    setCollectibleEmpty(nil, collectible)
    return collectible
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.collectibleTag"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ItemConfigTag = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigTag
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local itemConfig = ____cachedClasses.itemConfig
function ____exports.collectibleHasTag(self, collectibleType, tag)
    local itemConfigItem = itemConfig:GetCollectible(collectibleType)
    if itemConfigItem == nil then
        return false
    end
    return itemConfigItem:HasTags(tag)
end
function ____exports.isQuestCollectible(self, collectibleType)
    return ____exports.collectibleHasTag(nil, collectibleType, ItemConfigTag.QUEST)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.cardNameToTypeMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
--- Maps card names to the values of the `CardType` enum.
____exports.CARD_NAME_TO_TYPE_MAP = __TS__New(Map, {
    {"fool", CardType.FOOL},
    {"magician", CardType.MAGICIAN},
    {"mag", CardType.MAGICIAN},
    {"highPriestess", CardType.HIGH_PRIESTESS},
    {"priestess", CardType.HIGH_PRIESTESS},
    {"priest", CardType.HIGH_PRIESTESS},
    {"hp", CardType.HIGH_PRIESTESS},
    {"empress", CardType.EMPRESS},
    {"emperor", CardType.EMPEROR},
    {"emp", CardType.EMPEROR},
    {"hierophant", CardType.HIEROPHANT},
    {"hi", CardType.HIEROPHANT},
    {"lovers", CardType.LOVERS},
    {"chariot", CardType.CHARIOT},
    {"justice", CardType.JUSTICE},
    {"hermit", CardType.HERMIT},
    {"wheelOfFortune", CardType.WHEEL_OF_FORTUNE},
    {"wheel", CardType.WHEEL_OF_FORTUNE},
    {"fortune", CardType.WHEEL_OF_FORTUNE},
    {"strength", CardType.STRENGTH},
    {"str", CardType.STRENGTH},
    {"hangedMan", CardType.HANGED_MAN},
    {"hanged", CardType.HANGED_MAN},
    {"death", CardType.DEATH},
    {"temperance", CardType.TEMPERANCE},
    {"devil", CardType.DEVIL},
    {"tower", CardType.TOWER},
    {"stars", CardType.STARS},
    {"moon", CardType.MOON},
    {"sun", CardType.SUN},
    {"judgement", CardType.JUDGEMENT},
    {"judge", CardType.JUDGEMENT},
    {"world", CardType.WORLD},
    {"2OfClubs", CardType.CLUBS_2},
    {"2Clubs", CardType.CLUBS_2},
    {"2OfDiamonds", CardType.DIAMONDS_2},
    {"2Diamonds", CardType.DIAMONDS_2},
    {"2OfSpades", CardType.SPADES_2},
    {"2Spades", CardType.SPADES_2},
    {"2OfHearts", CardType.HEARTS_2},
    {"2Hearts", CardType.HEARTS_2},
    {"aceOfClubs", CardType.ACE_OF_CLUBS},
    {"aceClubs", CardType.ACE_OF_CLUBS},
    {"aceOfDiamonds", CardType.ACE_OF_DIAMONDS},
    {"aceDiamonds", CardType.ACE_OF_DIAMONDS},
    {"aceOfSpades", CardType.ACE_OF_SPADES},
    {"aceSpades", CardType.ACE_OF_SPADES},
    {"aceOfHearts", CardType.ACE_OF_HEARTS},
    {"aceHearts", CardType.ACE_OF_HEARTS},
    {"joker", CardType.JOKER},
    {"hagalaz", CardType.RUNE_HAGALAZ},
    {"destruction", CardType.RUNE_HAGALAZ},
    {"jera", CardType.RUNE_JERA},
    {"abundance", CardType.RUNE_JERA},
    {"ehwaz", CardType.RUNE_EHWAZ},
    {"passage", CardType.RUNE_EHWAZ},
    {"dagaz", CardType.RUNE_DAGAZ},
    {"purity", CardType.RUNE_DAGAZ},
    {"ansuz", CardType.RUNE_ANSUZ},
    {"vision", CardType.RUNE_ANSUZ},
    {"perthro", CardType.RUNE_PERTHRO},
    {"change", CardType.RUNE_PERTHRO},
    {"berkano", CardType.RUNE_BERKANO},
    {"companionship", CardType.RUNE_BERKANO},
    {"algiz", CardType.RUNE_ALGIZ},
    {"resistance", CardType.RUNE_ALGIZ},
    {"shield", CardType.RUNE_ALGIZ},
    {"blankRune", CardType.RUNE_BLANK},
    {"blackRune", CardType.RUNE_BLACK},
    {"chaos", CardType.CHAOS},
    {"credit", CardType.CREDIT},
    {"rules", CardType.RULES},
    {"againstHumanity", CardType.AGAINST_HUMANITY},
    {"humanity", CardType.AGAINST_HUMANITY},
    {"suicideKing", CardType.SUICIDE_KING},
    {"suicide", CardType.SUICIDE_KING},
    {"getOutOfJailFree", CardType.GET_OUT_OF_JAIL_FREE},
    {"jail", CardType.GET_OUT_OF_JAIL_FREE},
    {"?", CardType.QUESTION_MARK},
    {"diceShard", CardType.DICE_SHARD},
    {"shard", CardType.DICE_SHARD},
    {"emergencyContact", CardType.EMERGENCY_CONTACT},
    {"contact", CardType.EMERGENCY_CONTACT},
    {"holy", CardType.HOLY},
    {"hugeGrowth", CardType.HUGE_GROWTH},
    {"growth", CardType.HUGE_GROWTH},
    {"ancientRecall", CardType.ANCIENT_RECALL},
    {"recall", CardType.ANCIENT_RECALL},
    {"eraWalk", CardType.ERA_WALK},
    {"walk", CardType.ERA_WALK},
    {"runeShard", CardType.RUNE_SHARD},
    {"shard", CardType.RUNE_SHARD},
    {"fool?", CardType.REVERSE_FOOL},
    {"magician?", CardType.REVERSE_MAGICIAN},
    {"magi?", CardType.REVERSE_MAGICIAN},
    {"mag?", CardType.REVERSE_MAGICIAN},
    {"highPriestess?", CardType.REVERSE_HIGH_PRIESTESS},
    {"high?", CardType.REVERSE_HIGH_PRIESTESS},
    {"hi?", CardType.REVERSE_HIGH_PRIESTESS},
    {"priestess?", CardType.REVERSE_HIGH_PRIESTESS},
    {"priest?", CardType.REVERSE_HIGH_PRIESTESS},
    {"hp?", CardType.REVERSE_HIGH_PRIESTESS},
    {"empress?", CardType.REVERSE_EMPRESS},
    {"emperor?", CardType.REVERSE_EMPEROR},
    {"emp?", CardType.REVERSE_EMPEROR},
    {"hierophant?", CardType.REVERSE_HIEROPHANT},
    {"hiero?", CardType.REVERSE_HIEROPHANT},
    {"lovers?", CardType.REVERSE_LOVERS},
    {"chariot?", CardType.REVERSE_CHARIOT},
    {"justice?", CardType.REVERSE_JUSTICE},
    {"hermit?", CardType.REVERSE_HERMIT},
    {"wheelOfFortune?", CardType.REVERSE_WHEEL_OF_FORTUNE},
    {"wheel?", CardType.REVERSE_WHEEL_OF_FORTUNE},
    {"fortune?", CardType.REVERSE_WHEEL_OF_FORTUNE},
    {"strength?", CardType.REVERSE_STRENGTH},
    {"str?", CardType.REVERSE_STRENGTH},
    {"hangedMan?", CardType.REVERSE_HANGED_MAN},
    {"hanged?", CardType.REVERSE_HANGED_MAN},
    {"death?", CardType.REVERSE_DEATH},
    {"temperance?", CardType.REVERSE_TEMPERANCE},
    {"devil?", CardType.REVERSE_DEVIL},
    {"tower?", CardType.REVERSE_TOWER},
    {"stars?", CardType.REVERSE_STARS},
    {"moon?", CardType.REVERSE_MOON},
    {"sun?", CardType.REVERSE_SUN},
    {"judgement?", CardType.REVERSE_JUDGEMENT},
    {"judge?", CardType.REVERSE_JUDGEMENT},
    {"world?", CardType.REVERSE_WORLD},
    {"crackedKey", CardType.CRACKED_KEY},
    {"key", CardType.CRACKED_KEY},
    {"queenOfHearts", CardType.QUEEN_OF_HEARTS},
    {"queenHearts", CardType.QUEEN_OF_HEARTS},
    {"wildcard", CardType.WILD},
    {"soulOfIsaac", CardType.SOUL_ISAAC},
    {"soulIsaac", CardType.SOUL_ISAAC},
    {"isaac", CardType.SOUL_ISAAC},
    {"soulOfMagdalene", CardType.SOUL_MAGDALENE},
    {"soulMagdalene", CardType.SOUL_MAGDALENE},
    {"magdalene", CardType.SOUL_MAGDALENE},
    {"soulOfCain", CardType.SOUL_CAIN},
    {"soulCain", CardType.SOUL_CAIN},
    {"cain", CardType.SOUL_CAIN},
    {"soulOfJudas", CardType.SOUL_JUDAS},
    {"soulJudas", CardType.SOUL_JUDAS},
    {"judas", CardType.SOUL_JUDAS},
    {"soulOf???", CardType.SOUL_BLUE_BABY},
    {"soul???", CardType.SOUL_BLUE_BABY},
    {"???", CardType.SOUL_BLUE_BABY},
    {"soulOfBlueBaby", CardType.SOUL_BLUE_BABY},
    {"soulBlueBaby", CardType.SOUL_BLUE_BABY},
    {"blueBaby", CardType.SOUL_BLUE_BABY},
    {"soulOfEve", CardType.SOUL_EVE},
    {"soulEve", CardType.SOUL_EVE},
    {"eve", CardType.SOUL_EVE},
    {"soulOfSamson", CardType.SOUL_SAMSON},
    {"soulSamson", CardType.SOUL_SAMSON},
    {"samson", CardType.SOUL_SAMSON},
    {"soulOfAzazel", CardType.SOUL_AZAZEL},
    {"soulAzazel", CardType.SOUL_AZAZEL},
    {"azazel", CardType.SOUL_AZAZEL},
    {"soulOfLazarus", CardType.SOUL_LAZARUS},
    {"soulLazarus", CardType.SOUL_LAZARUS},
    {"lazarus", CardType.SOUL_LAZARUS},
    {"soulOfEden", CardType.SOUL_EDEN},
    {"soulEden", CardType.SOUL_EDEN},
    {"eden", CardType.SOUL_EDEN},
    {"soulOfTheLost", CardType.SOUL_LOST},
    {"soulTheLost", CardType.SOUL_LOST},
    {"theLost", CardType.SOUL_LOST},
    {"soulOfLost", CardType.SOUL_LOST},
    {"soulLost", CardType.SOUL_LOST},
    {"lost", CardType.SOUL_LOST},
    {"soulOfLilith", CardType.SOUL_LILITH},
    {"soulLilith", CardType.SOUL_LILITH},
    {"lilith", CardType.SOUL_LILITH},
    {"soulOfTheKeeper", CardType.SOUL_KEEPER},
    {"soulTheKeeper", CardType.SOUL_KEEPER},
    {"theKeeper", CardType.SOUL_KEEPER},
    {"soulOfKeeper", CardType.SOUL_KEEPER},
    {"soulKeeper", CardType.SOUL_KEEPER},
    {"keeper", CardType.SOUL_KEEPER},
    {"soulOfApollyon", CardType.SOUL_APOLLYON},
    {"soulApollyon", CardType.SOUL_APOLLYON},
    {"apollyon", CardType.SOUL_APOLLYON},
    {"soulOfTheForgotten", CardType.SOUL_FORGOTTEN},
    {"soulTheForgotten", CardType.SOUL_FORGOTTEN},
    {"theForgotten", CardType.SOUL_FORGOTTEN},
    {"soulOfForgotten", CardType.SOUL_FORGOTTEN},
    {"soulForgotten", CardType.SOUL_FORGOTTEN},
    {"forgotten", CardType.SOUL_FORGOTTEN},
    {"soulOfBethany", CardType.SOUL_BETHANY},
    {"soulBethany", CardType.SOUL_BETHANY},
    {"bethany", CardType.SOUL_BETHANY},
    {"soulOfJacobAndEsau", CardType.SOUL_JACOB},
    {"soulJacobAndEsau", CardType.SOUL_JACOB},
    {"jacobAndEsau", CardType.SOUL_JACOB},
    {"soulOfJacob&Esau", CardType.SOUL_JACOB},
    {"soulJacob&Esau", CardType.SOUL_JACOB},
    {"jacob&Esau", CardType.SOUL_JACOB},
    {"soulOfJacob", CardType.SOUL_JACOB},
    {"soulJacob", CardType.SOUL_JACOB},
    {"jacob", CardType.SOUL_JACOB}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.characterNameToTypeMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
--- Maps character names to the values of the `PlayerType` enum.
____exports.CHARACTER_NAME_TO_TYPE_MAP = __TS__New(Map, {
    {"isaac", PlayerType.ISAAC},
    {"magdalene", PlayerType.MAGDALENE},
    {"maggy", PlayerType.MAGDALENE},
    {"cain", PlayerType.CAIN},
    {"judas", PlayerType.JUDAS},
    {"blueBaby", PlayerType.BLUE_BABY},
    {"bb", PlayerType.BLUE_BABY},
    {"eve", PlayerType.EVE},
    {"samson", PlayerType.SAMSON},
    {"azazel", PlayerType.AZAZEL},
    {"lazarus", PlayerType.LAZARUS},
    {"laz", PlayerType.LAZARUS},
    {"eden", PlayerType.EDEN},
    {"theLost", PlayerType.LOST},
    {"lost", PlayerType.LOST},
    {"lazarus2", PlayerType.LAZARUS_2},
    {"laz2", PlayerType.LAZARUS_2},
    {"darkJudas", PlayerType.DARK_JUDAS},
    {"dJudas", PlayerType.DARK_JUDAS},
    {"blackJudas", PlayerType.DARK_JUDAS},
    {"bJudas", PlayerType.DARK_JUDAS},
    {"lilith", PlayerType.LILITH},
    {"keeper", PlayerType.KEEPER},
    {"apollyon", PlayerType.APOLLYON},
    {"theForgotten", PlayerType.FORGOTTEN},
    {"forgotten", PlayerType.FORGOTTEN},
    {"theSoul", PlayerType.SOUL},
    {"soul", PlayerType.SOUL},
    {"bethany", PlayerType.BETHANY},
    {"jacob", PlayerType.JACOB},
    {"esau", PlayerType.ESAU},
    {"taintedIsaac", PlayerType.ISAAC_B},
    {"tIsaac", PlayerType.ISAAC_B},
    {"taintedMagdalene", PlayerType.MAGDALENE_B},
    {"tMagdalene", PlayerType.MAGDALENE_B},
    {"taintedMaggy", PlayerType.MAGDALENE_B},
    {"tMaggy", PlayerType.MAGDALENE_B},
    {"taintedCain", PlayerType.CAIN_B},
    {"tCain", PlayerType.CAIN_B},
    {"taintedJudas", PlayerType.JUDAS_B},
    {"tJudas", PlayerType.JUDAS_B},
    {"taintedBlueBaby", PlayerType.BLUE_BABY_B},
    {"tBlueBaby", PlayerType.BLUE_BABY_B},
    {"tbb", PlayerType.BLUE_BABY_B},
    {"taintedEve", PlayerType.EVE_B},
    {"tEve", PlayerType.EVE_B},
    {"taintedSamson", PlayerType.SAMSON_B},
    {"tSamson", PlayerType.SAMSON_B},
    {"taintedAzazel", PlayerType.AZAZEL_B},
    {"tAzazel", PlayerType.AZAZEL_B},
    {"taintedLazarus", PlayerType.LAZARUS_B},
    {"tLazarus", PlayerType.LAZARUS_B},
    {"taintedLaz", PlayerType.LAZARUS_B},
    {"tLaz", PlayerType.LAZARUS_B},
    {"taintedEden", PlayerType.EDEN_B},
    {"tEden", PlayerType.EDEN_B},
    {"taintedLost", PlayerType.LOST_B},
    {"tLost", PlayerType.LOST_B},
    {"taintedLilith", PlayerType.LILITH_B},
    {"tLilith", PlayerType.LILITH_B},
    {"taintedKeeper", PlayerType.KEEPER_B},
    {"tKeeper", PlayerType.KEEPER_B},
    {"taintedApollyon", PlayerType.APOLLYON_B},
    {"tApollyon", PlayerType.APOLLYON_B},
    {"taintedForgotten", PlayerType.FORGOTTEN_B},
    {"tForgotten", PlayerType.FORGOTTEN_B},
    {"taintedBethany", PlayerType.BETHANY_B},
    {"tBethany", PlayerType.BETHANY_B},
    {"taintedJacob", PlayerType.JACOB_B},
    {"tJacob", PlayerType.JACOB_B},
    {"taintedLazarusDead", PlayerType.LAZARUS_2_B},
    {"tLazarusDead", PlayerType.LAZARUS_2_B},
    {"taintedLazDead", PlayerType.LAZARUS_2_B},
    {"tLazDead", PlayerType.LAZARUS_2_B},
    {"deadTaintedLazarus", PlayerType.LAZARUS_2_B},
    {"deadTLazarus", PlayerType.LAZARUS_2_B},
    {"deadTaintedLaz", PlayerType.LAZARUS_2_B},
    {"deadTLaz", PlayerType.LAZARUS_2_B},
    {"taintedJacobGhost", PlayerType.JACOB_2_B},
    {"tJacobGhost", PlayerType.JACOB_2_B},
    {"taintedSoul", PlayerType.SOUL_B},
    {"tSoul", PlayerType.SOUL_B}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.collectibleNameToTypeMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local ____string = require("lua_modules.isaacscript-common.dist.src.functions.string")
local removeNonAlphanumericCharacters = ____string.removeNonAlphanumericCharacters
local ____collectibleTypeToNameMap = require("lua_modules.isaacscript-common.dist.src.maps.collectibleTypeToNameMap")
local COLLECTIBLE_TYPE_TO_NAME_MAP = ____collectibleTypeToNameMap.COLLECTIBLE_TYPE_TO_NAME_MAP
--- Maps collectible names to the values of the `CollectibleType` enum.
-- 
-- For a mapping of `CollectibleType` to name, see `COLLECTIBLE_TYPE_TO_NAME_MAP`.
local collectibleNameToTypeMap = __TS__New(Map)
for ____, ____value in __TS__Iterator(COLLECTIBLE_TYPE_TO_NAME_MAP) do
    local collectibleType = ____value[1]
    local name = ____value[2]
    local simpleString = removeNonAlphanumericCharacters(nil, name)
    collectibleNameToTypeMap:set(simpleString, collectibleType)
end
____exports.COLLECTIBLE_NAME_TO_TYPE_MAP = collectibleNameToTypeMap
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.pillNameToEffectMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect
--- Maps pill effect names to the values of the `PillEffect` enum.
____exports.PILL_NAME_TO_EFFECT_MAP = __TS__New(Map, {
    {"badGas", PillEffect.BAD_GAS},
    {"gas", PillEffect.BAD_GAS},
    {"badTrip", PillEffect.BAD_TRIP},
    {"trip", PillEffect.BAD_TRIP},
    {"ballsOfSteel", PillEffect.BALLS_OF_STEEL},
    {"ballsSteel", PillEffect.BALLS_OF_STEEL},
    {"steel", PillEffect.BALLS_OF_STEEL},
    {"bombsAreKey", PillEffect.BOMBS_ARE_KEYS},
    {"bombsKey", PillEffect.BOMBS_ARE_KEYS},
    {"key", PillEffect.BOMBS_ARE_KEYS},
    {"explosiveDiarrhea", PillEffect.EXPLOSIVE_DIARRHEA},
    {"diarrhea", PillEffect.EXPLOSIVE_DIARRHEA},
    {"fullHealth", PillEffect.FULL_HEALTH},
    {"healthDown", PillEffect.HEALTH_DOWN},
    {"healthUp", PillEffect.HEALTH_UP},
    {"iFoundPills", PillEffect.I_FOUND_PILLS},
    {"foundPills", PillEffect.I_FOUND_PILLS},
    {"pills", PillEffect.I_FOUND_PILLS},
    {"puberty", PillEffect.PUBERTY},
    {"prettyFly", PillEffect.PRETTY_FLY},
    {"fly", PillEffect.PRETTY_FLY},
    {"rangeDown", PillEffect.RANGE_DOWN},
    {"rangeUp", PillEffect.RANGE_UP},
    {"speedDown", PillEffect.SPEED_DOWN},
    {"speedUp", PillEffect.SPEED_UP},
    {"tearsDown", PillEffect.TEARS_DOWN},
    {"tearsUp", PillEffect.TEARS_UP},
    {"luckDown", PillEffect.LUCK_DOWN},
    {"luckUp", PillEffect.LUCK_UP},
    {"telepills", PillEffect.TELEPILLS},
    {"48HourEnergy", PillEffect.FORTY_EIGHT_HOUR_ENERGY},
    {"energy", PillEffect.FORTY_EIGHT_HOUR_ENERGY},
    {"48", PillEffect.FORTY_EIGHT_HOUR_ENERGY},
    {"hematemesis", PillEffect.HEMATEMESIS},
    {"paralysis", PillEffect.PARALYSIS},
    {"iCanSeeForever!", PillEffect.I_CAN_SEE_FOREVER},
    {"canSee", PillEffect.I_CAN_SEE_FOREVER},
    {"see", PillEffect.I_CAN_SEE_FOREVER},
    {"pheromones", PillEffect.PHEROMONES},
    {"amnesia", PillEffect.AMNESIA},
    {"lemonParty", PillEffect.LEMON_PARTY},
    {"party", PillEffect.LEMON_PARTY},
    {"RUAWizard", PillEffect.R_U_A_WIZARD},
    {"areYouAWizard", PillEffect.R_U_A_WIZARD},
    {"wizard", PillEffect.R_U_A_WIZARD},
    {"percs!", PillEffect.PERCS},
    {"addicted!", PillEffect.ADDICTED},
    {"relax", PillEffect.RELAX},
    {"???", PillEffect.QUESTION_MARKS},
    {"oneMakesYouLarger", PillEffect.ONE_MAKES_YOU_LARGER},
    {"larger", PillEffect.ONE_MAKES_YOU_LARGER},
    {"oneMakesYouSmaller", PillEffect.ONE_MAKES_YOU_SMALL},
    {"smaller", PillEffect.ONE_MAKES_YOU_SMALL},
    {"infested!", PillEffect.INFESTED_EXCLAMATION},
    {"infest!", PillEffect.INFESTED_EXCLAMATION},
    {"inf!", PillEffect.INFESTED_EXCLAMATION},
    {"infested?", PillEffect.INFESTED_QUESTION},
    {"infest?", PillEffect.INFESTED_QUESTION},
    {"inf?", PillEffect.INFESTED_QUESTION},
    {"powerPill", PillEffect.POWER},
    {"retroVision", PillEffect.RETRO_VISION},
    {"vision", PillEffect.RETRO_VISION},
    {"friendsTillTheEnd", PillEffect.FRIENDS_TILL_THE_END},
    {"friendsUntilTheEnd", PillEffect.FRIENDS_TILL_THE_END},
    {"xlax", PillEffect.X_LAX},
    {"somethingsWrong", PillEffect.SOMETHINGS_WRONG},
    {"wrong", PillEffect.SOMETHINGS_WRONG},
    {"imDrowsy", PillEffect.IM_DROWSY},
    {"drowsy", PillEffect.IM_DROWSY},
    {"imExcited!!!", PillEffect.IM_EXCITED},
    {"excited", PillEffect.IM_EXCITED},
    {"gulp!", PillEffect.GULP},
    {"horf!", PillEffect.HORF},
    {"feelsLikeImWalkingOnSunshine!", PillEffect.FEELS_LIKE_IM_WALKING_ON_SUNSHINE},
    {"walking", PillEffect.FEELS_LIKE_IM_WALKING_ON_SUNSHINE},
    {"sunshine", PillEffect.FEELS_LIKE_IM_WALKING_ON_SUNSHINE},
    {"vurp!", PillEffect.VURP},
    {"shotSpeedDown", PillEffect.SHOT_SPEED_DOWN},
    {"shotSpeedUp", PillEffect.SHOT_SPEED_UP},
    {"experimental", PillEffect.EXPERIMENTAL}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.roomNameToTypeMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
--- Maps room names to the values of the `RoomType` enum.
____exports.ROOM_NAME_TO_TYPE_MAP = __TS__New(Map, {
    {"default", RoomType.DEFAULT},
    {"shop", RoomType.SHOP},
    {"error", RoomType.ERROR},
    {"iAmError", RoomType.ERROR},
    {"treasure", RoomType.TREASURE},
    {"boss", RoomType.BOSS},
    {"miniBoss", RoomType.MINI_BOSS},
    {"secret", RoomType.SECRET},
    {"superSecret", RoomType.SUPER_SECRET},
    {"arcade", RoomType.ARCADE},
    {"curse", RoomType.CURSE},
    {"challenge", RoomType.CHALLENGE},
    {"library", RoomType.LIBRARY},
    {"sacrifice", RoomType.SACRIFICE},
    {"devil", RoomType.DEVIL},
    {"angel", RoomType.ANGEL},
    {"dungeon", RoomType.DUNGEON},
    {"crawlSpace", RoomType.DUNGEON},
    {"bossRush", RoomType.BOSS_RUSH},
    {"isaacs", RoomType.CLEAN_BEDROOM},
    {"bedroom", RoomType.CLEAN_BEDROOM},
    {"cleanBedroom", RoomType.CLEAN_BEDROOM},
    {"dirtyBedroom", RoomType.DIRTY_BEDROOM},
    {"barren", RoomType.DIRTY_BEDROOM},
    {"chest", RoomType.CHEST},
    {"dice", RoomType.DICE},
    {"blackMarket", RoomType.BLACK_MARKET},
    {"greedExit", RoomType.GREED_EXIT},
    {"planetarium", RoomType.PLANETARIUM},
    {"teleporter", RoomType.TELEPORTER},
    {"teleporterExit", RoomType.TELEPORTER_EXIT},
    {"secretExit", RoomType.SECRET_EXIT},
    {"blue", RoomType.BLUE},
    {"ultraSecret", RoomType.ULTRA_SECRET}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.trinketNameToTypeMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local ____string = require("lua_modules.isaacscript-common.dist.src.functions.string")
local removeNonAlphanumericCharacters = ____string.removeNonAlphanumericCharacters
local ____trinketTypeToNameMap = require("lua_modules.isaacscript-common.dist.src.maps.trinketTypeToNameMap")
local TRINKET_TYPE_TO_NAME_MAP = ____trinketTypeToNameMap.TRINKET_TYPE_TO_NAME_MAP
--- Maps trinket names to the values of the `TrinketType` enum.
-- 
-- For a mapping of `TrinketType` to name, see `TRINKET_TYPE_TO_NAME_MAP`.
local trinketNameToTypeMap = __TS__New(Map)
for ____, ____value in __TS__Iterator(TRINKET_TYPE_TO_NAME_MAP) do
    local trinketType = ____value[1]
    local name = ____value[2]
    local simpleString = removeNonAlphanumericCharacters(nil, name)
    trinketNameToTypeMap:set(simpleString, trinketType)
end
____exports.TRINKET_NAME_TO_TYPE_MAP = trinketNameToTypeMap
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.extraConsoleCommands.subroutines"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____HealthType = require("lua_modules.isaacscript-common.dist.src.enums.HealthType")
local HealthType = ____HealthType.HealthType
local ____direction = require("lua_modules.isaacscript-common.dist.src.functions.direction")
local directionToVector = ____direction.directionToVector
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local spawnGridEntityWithVariant = ____gridEntities.spawnGridEntityWithVariant
local ____levelGrid = require("lua_modules.isaacscript-common.dist.src.functions.levelGrid")
local getRoomAdjacentGridIndexes = ____levelGrid.getRoomAdjacentGridIndexes
local getRoomGridIndexesForType = ____levelGrid.getRoomGridIndexesForType
local ____logEntities = require("lua_modules.isaacscript-common.dist.src.functions.logEntities")
local logAllEntities = ____logEntities.logAllEntities
local logAllGridEntities = ____logEntities.logAllGridEntities
local ____playerHealth = require("lua_modules.isaacscript-common.dist.src.functions.playerHealth")
local addPlayerHealthType = ____playerHealth.addPlayerHealthType
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomData = ____roomData.getRoomData
local getRoomDescriptor = ____roomData.getRoomDescriptor
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local changeRoom = ____rooms.changeRoom
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local printConsole = ____utils.printConsole
local ____roomTypeNames = require("lua_modules.isaacscript-common.dist.src.objects.roomTypeNames")
local ROOM_TYPE_NAMES = ____roomTypeNames.ROOM_TYPE_NAMES
local DEFAULT_MOVE_UNITS = 0.5
function ____exports.addHeart(self, params, healthType)
    local numHearts = healthType == HealthType.MAX_HEARTS and 2 or 1
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of hearts to add.")
            return
        end
        numHearts = num
    end
    local player = Isaac.GetPlayer()
    addPlayerHealthType(nil, player, healthType, numHearts)
end
function ____exports.devilAngel(self, useDevil)
    local level = game:GetLevel()
    local devilAngelRoomData = getRoomData(nil, GridRoom.DEVIL)
    if devilAngelRoomData ~= nil then
        local roomType = devilAngelRoomData.Type
        local conflictingType = useDevil and RoomType.ANGEL or RoomType.DEVIL
        if roomType == conflictingType then
            local roomDescriptor = getRoomDescriptor(nil, GridRoom.DEVIL)
            roomDescriptor.Data = nil
        end
    end
    if useDevil then
        level:InitializeDevilAngelRoom(false, true)
    else
        level:InitializeDevilAngelRoom(true, false)
    end
    changeRoom(nil, GridRoom.DEVIL)
end
function ____exports.listEntities(self, params, includeBackgroundEffects)
    local entityTypeFilter
    if params ~= "" then
        entityTypeFilter = tonumber(params)
        if entityTypeFilter == nil then
            printConsole(nil, "That is an invalid entity type to filter by.")
            return
        end
    end
    logAllEntities(nil, includeBackgroundEffects, entityTypeFilter)
    printConsole(nil, "Logged the entities in the room to the \"log.txt\" file.")
end
function ____exports.listGridEntities(self, params, includeWalls)
    local gridEntityTypeFilter
    if params ~= "" then
        gridEntityTypeFilter = tonumber(params)
        if gridEntityTypeFilter == nil then
            printConsole(nil, "That is an invalid grid entity type to filter by.")
            return
        end
    end
    logAllGridEntities(nil, includeWalls, gridEntityTypeFilter)
    printConsole(nil, "Logged the grid entities in the room to the \"log.txt\" file.")
end
function ____exports.movePlayer(self, params, direction)
    local amount = DEFAULT_MOVE_UNITS
    if params ~= "" then
        local num = tonumber(params)
        if num == nil then
            printConsole(nil, "That is an invalid amount of units to move.")
            return
        end
        amount = num
    end
    local player = Isaac.GetPlayer()
    local vector = directionToVector(nil, direction)
    local modifiedVector = vector * amount
    player.Position = player.Position + modifiedVector
end
function ____exports.spawnTrapdoorOrCrawlSpace(self, trapdoor)
    local room = game:GetRoom()
    local player = Isaac.GetPlayer()
    local position = room:FindFreeTilePosition(player.Position, 0)
    local gridIndex = room:GetGridIndex(position)
    local gridEntityType = trapdoor and GridEntityType.TRAPDOOR or GridEntityType.CRAWL_SPACE
    spawnGridEntityWithVariant(nil, gridEntityType, 0, gridIndex)
end
function ____exports.warpToRoomType(self, roomType)
    local roomTypeName = ROOM_TYPE_NAMES[roomType]
    local gridIndexes = getRoomGridIndexesForType(nil, roomType)
    local firstGridIndex = gridIndexes[1]
    if firstGridIndex == nil then
        printConsole(nil, ("There are no " .. roomTypeName) .. "s on this floor.")
        return
    end
    changeRoom(nil, firstGridIndex)
    printConsole(
        nil,
        ((("Warped to room type: " .. roomTypeName) .. " (") .. tostring(roomType)) .. ")"
    )
end
function ____exports.warpNextToRoomType(self, roomType)
    local roomTypeName = ROOM_TYPE_NAMES[roomType]
    local gridIndexes = getRoomGridIndexesForType(nil, roomType)
    local firstGridIndex = gridIndexes[1]
    if firstGridIndex == nil then
        printConsole(nil, ("There are no " .. roomTypeName) .. "s on this floor.")
        return
    end
    local adjacentRoomGridIndexes = getRoomAdjacentGridIndexes(nil, firstGridIndex)
    for ____, ____value in __TS__Iterator(adjacentRoomGridIndexes:entries()) do
        local _doorSlot = ____value[1]
        local roomGridIndex = ____value[2]
        local roomData = getRoomData(nil, roomGridIndex)
        if roomData ~= nil and roomData.Type == RoomType.DEFAULT then
            changeRoom(nil, roomGridIndex)
            printConsole(
                nil,
                ((("Warped next to room type: " .. roomTypeName) .. " (") .. tostring(roomType)) .. ")"
            )
            return
        end
    end
    printConsole(
        nil,
        ((("Failed to find the room next to room type: " .. roomTypeName) .. " (") .. tostring(roomType)) .. ")"
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.logEntities"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach
local __TS__StringTrim = ____lualib.__TS__StringTrim
local __TS__StringSplit = ____lualib.__TS__StringSplit
local ____exports = {}
local getEntityLogLine, getGridEntityLogLine
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant
local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant
local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local KnifeVariant = ____isaac_2Dtypescript_2Ddefinitions.KnifeVariant
local LaserVariant = ____isaac_2Dtypescript_2Ddefinitions.LaserVariant
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local PlayerVariant = ____isaac_2Dtypescript_2Ddefinitions.PlayerVariant
local ProjectileVariant = ____isaac_2Dtypescript_2Ddefinitions.ProjectileVariant
local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntities = ____entities.getEntities
local getEntityFromPtrHash = ____entities.getEntityFromPtrHash
local getEntityID = ____entities.getEntityID
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local getGridEntities = ____gridEntities.getGridEntities
local getGridEntityID = ____gridEntities.getGridEntityID
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
--- Helper function to log information about a specific entity.
function ____exports.logEntity(self, entity)
    local msg = getEntityLogLine(nil, entity)
    log(nil, msg)
end
function getEntityLogLine(self, entity, num)
    local msg = num == nil and "" or tostring(num) .. ") "
    msg = msg .. getEntityID(nil, entity)
    local bomb = entity:ToBomb()
    if bomb ~= nil then
        msg = msg .. (" (bomb - BombVariant." .. tostring(BombVariant[bomb.Variant])) .. ")"
    end
    local effect = entity:ToEffect()
    if effect ~= nil then
        msg = msg .. (((" (effect - EffectVariant." .. tostring(EffectVariant[effect.Variant])) .. ") (State: ") .. tostring(effect.State)) .. ")"
    end
    local familiar = entity:ToFamiliar()
    if familiar ~= nil then
        msg = msg .. (((" (familiar - FamiliarVariant." .. tostring(FamiliarVariant[familiar.Variant])) .. ") (State: ") .. tostring(familiar.State)) .. ")"
    end
    local knife = entity:ToKnife()
    if knife ~= nil then
        msg = msg .. (" (knife - KnifeVariant." .. tostring(KnifeVariant[knife.Variant])) .. ")"
    end
    local laser = entity:ToLaser()
    if laser ~= nil then
        msg = msg .. (" (laser - LaserVariant." .. tostring(LaserVariant[laser.Variant])) .. ")"
    end
    local npc = entity:ToNPC()
    if npc ~= nil then
        msg = msg .. (" (NPC) (State: " .. tostring(npc.State)) .. ")"
    end
    local pickup = entity:ToPickup()
    if pickup ~= nil then
        msg = msg .. (((" (pickup - PickupVariant." .. tostring(PickupVariant[pickup.Variant])) .. ") (State: ") .. tostring(pickup.State)) .. ")"
    end
    local player = entity:ToPlayer()
    if player ~= nil then
        msg = msg .. (" (player - PlayerVariant." .. tostring(PlayerVariant[player.Variant])) .. ")"
    end
    local projectile = entity:ToProjectile()
    if projectile ~= nil then
        msg = msg .. (" (projectile - ProjectileVariant." .. tostring(ProjectileVariant[projectile.Variant])) .. "))"
    end
    local tear = entity:ToTear()
    if tear ~= nil then
        msg = msg .. (" (tear - TearVariant." .. tostring(TearVariant[tear.Variant])) .. "))"
    end
    msg = msg .. "\n"
    msg = msg .. ("  - Index: " .. tostring(entity.Index)) .. "\n"
    msg = msg .. ("  - InitSeed: " .. tostring(entity.InitSeed)) .. "\n"
    msg = msg .. ("  - DropSeed: " .. tostring(entity.DropSeed)) .. "\n"
    msg = msg .. ((("  - Position: (" .. tostring(entity.Position.X)) .. ", ") .. tostring(entity.Position.Y)) .. ")\n"
    msg = msg .. ((("  - Velocity: (" .. tostring(entity.Velocity.X)) .. ", ") .. tostring(entity.Velocity.Y)) .. ")\n"
    msg = msg .. ((("  - HP: " .. tostring(entity.HitPoints)) .. " / ") .. tostring(entity.MaxHitPoints)) .. "\n"
    msg = msg .. ("  - Parent: " .. tostring(entity.Parent)) .. "\n"
    msg = msg .. ("  - Child: " .. tostring(entity.Child)) .. "\n"
    msg = msg .. ("  - SpawnerEntity: " .. tostring(entity.SpawnerEntity)) .. "\n"
    msg = msg .. ((("  - SpawnerType / SpawnerVariant: " .. tostring(entity.SpawnerType)) .. ".") .. tostring(entity.SpawnerVariant)) .. "\n"
    if npc ~= nil then
        msg = msg .. ("  - CanShutDoors: " .. tostring(npc.CanShutDoors)) .. "\n"
    end
    return msg
end
--- Helper function for log information about a specific grid entity.
function ____exports.logGridEntity(self, gridEntity)
    local msg = getGridEntityLogLine(nil, gridEntity)
    log(nil, msg)
end
function getGridEntityLogLine(self, gridEntity, num)
    local gridEntityDesc = gridEntity:GetSaveState()
    local msg = num == nil and "" or tostring(num) .. ") "
    msg = msg .. getGridEntityID(nil, gridEntity)
    local door = gridEntity:ToDoor()
    if door ~= nil then
        msg = msg .. " (door)"
    end
    local pit = gridEntity:ToPit()
    if pit ~= nil then
        msg = msg .. " (pit)"
    end
    local poop = gridEntity:ToPoop()
    if poop ~= nil then
        msg = msg .. " (poop)"
    end
    local pressurePlate = gridEntity:ToPressurePlate()
    if pressurePlate ~= nil then
        msg = msg .. " (pressurePlate)"
    end
    local rock = gridEntity:ToRock()
    if rock ~= nil then
        msg = msg .. " (rock)"
    end
    local spikes = gridEntity:ToSpikes()
    if spikes ~= nil then
        msg = msg .. " (spikes)"
    end
    local tnt = gridEntity:ToTNT()
    if tnt ~= nil then
        msg = msg .. " (TNT)"
    end
    msg = msg .. ("  - State: " .. tostring(gridEntity.State)) .. "\n"
    msg = msg .. ("  - VarData: " .. tostring(gridEntity.VarData)) .. "\n"
    msg = msg .. ((("  - Position: (" .. tostring(gridEntity.Position.X)) .. ", ") .. tostring(gridEntity.Position.Y)) .. ")\n"
    msg = msg .. ("  - SpawnSeed: " .. tostring(gridEntityDesc.SpawnSeed)) .. "\n"
    msg = msg .. ("  - VariableSeed: " .. tostring(gridEntityDesc.VariableSeed)) .. ")\n"
    if door ~= nil then
        msg = msg .. ("  - Slot: " .. tostring(door.Slot)) .. "\n"
        msg = msg .. ("  - Direction: " .. tostring(door.Direction)) .. "\n"
        msg = msg .. ("  - TargetRoomIndex: " .. tostring(door.TargetRoomIndex)) .. "\n"
        msg = msg .. ("  - TargetRoomType: " .. tostring(door.TargetRoomType)) .. "\n"
    end
    return msg
end
local IGNORE_EFFECT_VARIANTS = __TS__New(Set, {
    EffectVariant.BLOOD_EXPLOSION,
    EffectVariant.BLOOD_PARTICLE,
    EffectVariant.TINY_BUG,
    EffectVariant.TINY_FLY,
    EffectVariant.WATER_DROPLET,
    EffectVariant.WALL_BUG,
    EffectVariant.FALLING_EMBER,
    EffectVariant.LIGHT,
    EffectVariant.TADPOLE
})
--- Helper function for printing out every entity (or filtered entity) in the current room.
function ____exports.logAllEntities(self, includeBackgroundEffects, entityTypeFilter)
    local msg = "Entities in the room"
    if entityTypeFilter ~= nil then
        msg = msg .. (" (filtered to entity type " .. tostring(entityTypeFilter)) .. ")"
    elseif not includeBackgroundEffects then
        msg = msg .. " (not including background effects)"
    end
    msg = msg .. ":\n"
    local entities = getEntities(nil)
    local numMatchedEntities = 0
    __TS__ArrayForEach(
        entities,
        function(____, entity, i)
            if entityTypeFilter ~= nil and entity.Type ~= entityTypeFilter then
                return
            end
            local effect = entity:ToEffect()
            if not includeBackgroundEffects and effect ~= nil and IGNORE_EFFECT_VARIANTS:has(effect.Variant) then
                return
            end
            msg = msg .. getEntityLogLine(nil, entity, i + 1)
            numMatchedEntities = numMatchedEntities + 1
        end
    )
    if numMatchedEntities == 0 then
        msg = msg .. "(no entities matched)\n"
    else
        msg = msg .. ((("(" .. tostring(numMatchedEntities)) .. " total ") .. (numMatchedEntities == 1 and "entity" or "entities")) .. ")\n"
    end
    for ____, line in ipairs(__TS__StringSplit(
        __TS__StringTrim(msg),
        "\n"
    )) do
        log(nil, line)
    end
end
--- Helper function for printing out every grid entity (or filtered grid entity) in the current room.
-- 
-- @param includeWalls Optional. Whether or not to log the walls. Default is false.
-- @param gridEntityTypeFilter Optional. If specified, will only log the given `GridEntityType`.
-- Default is undefined.
function ____exports.logAllGridEntities(self, includeWalls, gridEntityTypeFilter)
    if includeWalls == nil then
        includeWalls = false
    end
    local msg = "Grid entities in the room"
    if gridEntityTypeFilter ~= nil then
        msg = msg .. (" (filtered to grid entity type " .. tostring(gridEntityTypeFilter)) .. ")"
    elseif not includeWalls then
        msg = msg .. " (not including walls)"
    end
    msg = msg .. ":\n"
    local gridEntities = getGridEntities(nil)
    local numMatchedEntities = 0
    __TS__ArrayForEach(
        gridEntities,
        function(____, gridEntity)
            local gridEntityIndex = gridEntity:GetGridIndex()
            local gridEntityType = gridEntity:GetType()
            if gridEntityTypeFilter ~= nil and gridEntityType ~= gridEntityTypeFilter then
                return
            end
            if not includeWalls and gridEntityType == GridEntityType.WALL and gridEntityTypeFilter ~= GridEntityType.WALL then
                return
            end
            msg = msg .. getGridEntityLogLine(nil, gridEntity, gridEntityIndex)
            numMatchedEntities = numMatchedEntities + 1
        end
    )
    if numMatchedEntities == 0 then
        msg = msg .. "(no grid entities matched)\n"
    else
        msg = msg .. ((("(" .. tostring(numMatchedEntities)) .. " total grid ") .. (numMatchedEntities == 1 and "entity" or "entities")) .. ")\n"
    end
    for ____, line in ipairs(__TS__StringSplit(
        __TS__StringTrim(msg),
        "\n"
    )) do
        log(nil, line)
    end
end
--- Helper function for logging an array of specific entities.
function ____exports.logEntities(self, entities)
    for ____, entity in ipairs(entities) do
        ____exports.logEntity(nil, entity)
    end
end
--- Helper function for logging an array of specific grid entities.
function ____exports.logGridEntities(self, gridEntities)
    for ____, gridEntity in ipairs(gridEntities) do
        ____exports.logGridEntity(nil, gridEntity)
    end
end
--- Helper function to log information about the entity that corresponding to a pointer hash. (Only
-- use this when debugging, since retrieving the corresponding entity is expensive.)
function ____exports.logPtrHash(self, ptrHash)
    log(
        nil,
        "PtrHash: " .. tostring(ptrHash)
    )
    local entity = getEntityFromPtrHash(nil, ptrHash)
    if entity == nil then
        log(nil, "No corresponding entity found.")
    else
        ____exports.logEntity(nil, entity)
    end
end
--- Helper function to log information about the entity that corresponding to one or more pointer
-- hashes. (Only use this when debugging, since retrieving the corresponding entity is expensive.)
function ____exports.logPtrHashes(self, ptrHashes)
    for ____, ptrHash in ipairs(ptrHashes) do
        ____exports.logPtrHash(nil, ptrHash)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.extraConsoleCommands.v"] = function(...) 
local ____exports = {}
____exports.v = {persistent = {
    darkness = false,
    labyrinth = false,
    lost = false,
    unknown = false,
    cursed = false,
    maze = false,
    blind = false,
    giant = false,
    disableCurses = false,
    damage = false,
    damageAmount = 500,
    speed = false,
    speedAmount = 2,
    tears = false,
    tearsAmount = 1,
    flight = false,
    chaosCardTears = false,
    spamBloodRights = false
}}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.FadeInRemover"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local FADE_IN_SPEED = 1
____exports.FadeInRemover = __TS__Class()
local FadeInRemover = ____exports.FadeInRemover
FadeInRemover.name = "FadeInRemover"
__TS__ClassExtends(FadeInRemover, Feature)
function FadeInRemover.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.enabled = false
    self.postGameStarted = function(____, _isContinued)
        if self.enabled then
            game:Fadein(FADE_IN_SPEED)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_GAME_STARTED, {self.postGameStarted}}}
end
function FadeInRemover.prototype.removeFadeIn(self)
    self.enabled = true
end
function FadeInRemover.prototype.restoreFadeIn(self)
    self.enabled = false
end
__TS__Decorate({Exported}, FadeInRemover.prototype, "removeFadeIn", true)
__TS__Decorate({Exported}, FadeInRemover.prototype, "restoreFadeIn", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.FastReset"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local checkResetInput
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____input = require("lua_modules.isaacscript-common.dist.src.functions.input")
local isActionTriggeredOnAnyInput = ____input.isActionTriggeredOnAnyInput
local isModifierKeyPressed = ____input.isModifierKeyPressed
local ____run = require("lua_modules.isaacscript-common.dist.src.functions.run")
local restart = ____run.restart
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
function checkResetInput(self)
    local isPaused = game:IsPaused()
    if isPaused then
        return
    end
    if AwaitingTextInput then
        return
    end
    if isModifierKeyPressed(nil) then
        return
    end
    if isActionTriggeredOnAnyInput(nil, ButtonAction.RESTART) then
        restart(nil)
    end
end
____exports.FastReset = __TS__Class()
local FastReset = ____exports.FastReset
FastReset.name = "FastReset"
__TS__ClassExtends(FastReset, Feature)
function FastReset.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.enabled = false
    self.postRender = function()
        if not self.enabled then
            return
        end
        checkResetInput(nil)
    end
    self.callbacksUsed = {{ModCallback.POST_RENDER, {self.postRender}}}
end
function FastReset.prototype.enableFastReset(self)
    self.enabled = true
end
function FastReset.prototype.disableFastReset(self)
    self.enabled = false
end
__TS__Decorate({Exported}, FastReset.prototype, "enableFastReset", true)
__TS__Decorate({Exported}, FastReset.prototype, "disableFastReset", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.FlyingDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Iterator = ____lualib.__TS__Iterator
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local NullItemID = ____isaac_2Dtypescript_2Ddefinitions.NullItemID
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local FLYING_NULL_ITEMS = {NullItemID.REVERSE_SUN, NullItemID.SPIRIT_SHACKLES_SOUL, NullItemID.LOST_CURSE}
____exports.FlyingDetection = __TS__Class()
local FlyingDetection = ____exports.FlyingDetection
FlyingDetection.name = "FlyingDetection"
__TS__ClassExtends(FlyingDetection, Feature)
function FlyingDetection.prototype.____constructor(self, moddedElementSets)
    Feature.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.MODDED_ELEMENT_SETS}
    self.moddedElementSets = moddedElementSets
end
function FlyingDetection.prototype.hasFlyingTemporaryEffect(self, player)
    local effects = player:GetEffects()
    local flyingCollectibles = self.moddedElementSets:getFlyingCollectibles(false)
    for ____, collectibleType in __TS__Iterator(flyingCollectibles:values()) do
        if effects:HasCollectibleEffect(collectibleType) then
            return true
        end
    end
    local flyingTrinkets = self.moddedElementSets:getFlyingTrinkets()
    for ____, trinketType in __TS__Iterator(flyingTrinkets:values()) do
        if effects:HasTrinketEffect(trinketType) then
            return true
        end
    end
    for ____, nullItemID in ipairs(FLYING_NULL_ITEMS) do
        if effects:HasNullEffect(nullItemID) then
            return true
        end
    end
    return false
end
__TS__Decorate({Exported}, FlyingDetection.prototype, "hasFlyingTemporaryEffect", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.ForgottenSwitch"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction
local InputHook = ____isaac_2Dtypescript_2Ddefinitions.InputHook
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.ForgottenSwitch = __TS__Class()
local ForgottenSwitch = ____exports.ForgottenSwitch
ForgottenSwitch.name = "ForgottenSwitch"
__TS__ClassExtends(ForgottenSwitch, Feature)
function ForgottenSwitch.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {shouldSwitch = false}}
    self.isActionTriggered = function(____, _entity, _inputHook, buttonAction)
        if buttonAction == ButtonAction.DROP and self.v.run.shouldSwitch then
            self.v.run.shouldSwitch = false
            return true
        end
        return nil
    end
    self.callbacksUsed = {{ModCallback.INPUT_ACTION, {self.isActionTriggered, InputHook.IS_ACTION_TRIGGERED}}}
end
function ForgottenSwitch.prototype.forgottenSwitch(self)
    self.v.run.shouldSwitch = true
end
__TS__Decorate({Exported}, ForgottenSwitch.prototype, "forgottenSwitch", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.ItemPoolDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__Decorate = ____lualib.__TS__Decorate
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local removeItemsAndTrinketsThatAffectItemPools, restoreItemsAndTrinketsThatAffectItemPools, COLLECTIBLES_THAT_AFFECT_ITEM_POOLS, TRINKETS_THAT_AFFECT_ITEM_POOLS
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ItemConfigTag = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigTag
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____collectibleTag = require("lua_modules.isaacscript-common.dist.src.functions.collectibleTag")
local collectibleHasTag = ____collectibleTag.collectibleHasTag
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local mapGetPlayer = ____playerDataStructures.mapGetPlayer
local mapSetPlayer = ____playerDataStructures.mapSetPlayer
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getAllPlayers = ____playerIndex.getAllPlayers
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local anyPlayerHasCollectible = ____players.anyPlayerHasCollectible
local getPlayersOfType = ____players.getPlayersOfType
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local ____repeat = ____utils["repeat"]
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
function removeItemsAndTrinketsThatAffectItemPools(self)
    local removedItemsMap = __TS__New(Map)
    local removedTrinketsMap = __TS__New(Map)
    for ____, player in ipairs(getAllPlayers(nil)) do
        local removedItems = {}
        for ____, itemToRemove in ipairs(COLLECTIBLES_THAT_AFFECT_ITEM_POOLS) do
            local numCollectibles = player:GetCollectibleNum(itemToRemove)
            ____repeat(
                nil,
                numCollectibles,
                function()
                    player:RemoveCollectible(itemToRemove)
                    removedItems[#removedItems + 1] = itemToRemove
                end
            )
        end
        mapSetPlayer(nil, removedItemsMap, player, removedItems)
        local removedTrinkets = {}
        for ____, trinketToRemove in ipairs(TRINKETS_THAT_AFFECT_ITEM_POOLS) do
            if player:HasTrinket(trinketToRemove) then
                local numTrinkets = player:GetTrinketMultiplier(trinketToRemove)
                ____repeat(
                    nil,
                    numTrinkets,
                    function()
                        player:TryRemoveTrinket(trinketToRemove)
                        removedTrinkets[#removedTrinkets + 1] = trinketToRemove
                    end
                )
            end
        end
        mapSetPlayer(nil, removedTrinketsMap, player, removedTrinkets)
    end
    return {removedItemsMap, removedTrinketsMap}
end
function restoreItemsAndTrinketsThatAffectItemPools(self, removedItemsMap, removedTrinketsMap)
    for ____, player in ipairs(getAllPlayers(nil)) do
        local removedItems = mapGetPlayer(nil, removedItemsMap, player)
        if removedItems ~= nil then
            for ____, collectibleType in ipairs(removedItems) do
                player:AddCollectible(collectibleType, 0, false)
            end
        end
        local removedTrinkets = mapGetPlayer(nil, removedTrinketsMap, player)
        if removedTrinkets ~= nil then
            for ____, trinketType in ipairs(removedTrinkets) do
                player:AddTrinket(trinketType, false)
            end
        end
    end
end
local COLLECTIBLE_TYPE_THAT_IS_NOT_IN_ANY_POOLS = CollectibleType.KEY_PIECE_1
COLLECTIBLES_THAT_AFFECT_ITEM_POOLS = {CollectibleType.CHAOS, CollectibleType.SACRED_ORB, CollectibleType.TMTRAINER}
TRINKETS_THAT_AFFECT_ITEM_POOLS = {TrinketType.NO}
____exports.ItemPoolDetection = __TS__Class()
local ItemPoolDetection = ____exports.ItemPoolDetection
ItemPoolDetection.name = "ItemPoolDetection"
__TS__ClassExtends(ItemPoolDetection, Feature)
function ItemPoolDetection.prototype.____constructor(self, moddedElementSets)
    Feature.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.MODDED_ELEMENT_SETS}
    self.moddedElementSets = moddedElementSets
end
function ItemPoolDetection.prototype.getCollectiblesInItemPool(self, itemPoolType)
    local collectibleArray = self.moddedElementSets:getCollectibleArray()
    return __TS__ArrayFilter(
        collectibleArray,
        function(____, collectibleType) return self:isCollectibleInItemPool(collectibleType, itemPoolType) end
    )
end
function ItemPoolDetection.prototype.isCollectibleInItemPool(self, collectibleType, itemPoolType)
    if collectibleType == COLLECTIBLE_TYPE_THAT_IS_NOT_IN_ANY_POOLS then
        return false
    end
    local taintedLosts = getPlayersOfType(nil, PlayerType.LOST_B)
    local isOffensive = collectibleHasTag(nil, collectibleType, ItemConfigTag.OFFENSIVE)
    local changedPlayerTypes = false
    if not isOffensive then
        changedPlayerTypes = true
        for ____, player in ipairs(taintedLosts) do
            player:ChangePlayerType(PlayerType.ISAAC)
        end
    end
    local removedItemsMap, removedTrinketsMap = table.unpack(removeItemsAndTrinketsThatAffectItemPools(nil))
    local itemPool = game:GetItemPool()
    itemPool:ResetRoomBlacklist()
    for ____, collectibleTypeInSet in ipairs(self.moddedElementSets:getCollectibleArray()) do
        if collectibleTypeInSet ~= collectibleType then
            itemPool:AddRoomBlacklist(collectibleTypeInSet)
        end
    end
    local seed = 1
    local retrievedCollectibleType = itemPool:GetCollectible(itemPoolType, false, seed, COLLECTIBLE_TYPE_THAT_IS_NOT_IN_ANY_POOLS)
    local collectibleUnlocked = retrievedCollectibleType == collectibleType
    itemPool:ResetRoomBlacklist()
    restoreItemsAndTrinketsThatAffectItemPools(nil, removedItemsMap, removedTrinketsMap)
    if changedPlayerTypes then
        for ____, player in ipairs(taintedLosts) do
            player:ChangePlayerType(PlayerType.LOST_B)
        end
    end
    return collectibleUnlocked
end
function ItemPoolDetection.prototype.isCollectibleUnlocked(self, collectibleType, itemPoolType)
    if anyPlayerHasCollectible(nil, collectibleType) then
        return true
    end
    return self:isCollectibleInItemPool(collectibleType, itemPoolType)
end
__TS__Decorate({Exported}, ItemPoolDetection.prototype, "getCollectiblesInItemPool", true)
__TS__Decorate({Exported}, ItemPoolDetection.prototype, "isCollectibleInItemPool", true)
__TS__Decorate({Exported}, ItemPoolDetection.prototype, "isCollectibleUnlocked", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.ModdedElementDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local itemConfig = ____cachedClasses.itemConfig
local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.src.core.constantsFirstLast")
local FIRST_CARD_TYPE = ____constantsFirstLast.FIRST_CARD_TYPE
local FIRST_PILL_EFFECT = ____constantsFirstLast.FIRST_PILL_EFFECT
local FIRST_TRINKET_TYPE = ____constantsFirstLast.FIRST_TRINKET_TYPE
local LAST_VANILLA_CARD_TYPE = ____constantsFirstLast.LAST_VANILLA_CARD_TYPE
local LAST_VANILLA_COLLECTIBLE_TYPE = ____constantsFirstLast.LAST_VANILLA_COLLECTIBLE_TYPE
local LAST_VANILLA_PILL_EFFECT = ____constantsFirstLast.LAST_VANILLA_PILL_EFFECT
local LAST_VANILLA_TRINKET_TYPE = ____constantsFirstLast.LAST_VANILLA_TRINKET_TYPE
local NUM_VANILLA_CARD_TYPES = ____constantsFirstLast.NUM_VANILLA_CARD_TYPES
local NUM_VANILLA_COLLECTIBLE_TYPES = ____constantsFirstLast.NUM_VANILLA_COLLECTIBLE_TYPES
local NUM_VANILLA_PILL_EFFECTS = ____constantsFirstLast.NUM_VANILLA_PILL_EFFECTS
local NUM_VANILLA_TRINKET_TYPES = ____constantsFirstLast.NUM_VANILLA_TRINKET_TYPES
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asCardType = ____types.asCardType
local asCollectibleType = ____types.asCollectibleType
local asNumber = ____types.asNumber
local asPillEffect = ____types.asPillEffect
local asTrinketType = ____types.asTrinketType
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local iRange = ____utils.iRange
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
--- Mods can add extra things to the game (e.g. collectibles, trinkets, and so on). Since mods load
-- in alphabetical order, the total number of things can't be properly be known until at least one
-- callback fires (which indicates that all mods have been loaded).
-- 
-- This feature gates all such functions behind a callback check. Subsequently, these functions will
-- throw a runtime error if they are called in the menu, before any callbacks have occurred. This
-- ensures that the proper values are always returned and allows you to get immediate feedback if
-- you accidentally access them from the menu.
____exports.ModdedElementDetection = __TS__Class()
local ModdedElementDetection = ____exports.ModdedElementDetection
ModdedElementDetection.name = "ModdedElementDetection"
__TS__ClassExtends(ModdedElementDetection, Feature)
function ModdedElementDetection.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.atLeastOneCallbackFired = false
    self.postPlayerInit = function(____, _player)
        self.atLeastOneCallbackFired = true
    end
    self.callbacksUsed = {{ModCallback.POST_PLAYER_INIT, {self.postPlayerInit}}}
end
function ModdedElementDetection.prototype.errorIfNoCallbacksFired(self, constantType)
    if not self.atLeastOneCallbackFired then
        error(("Failed to retrieve a " .. constantType) .. " constant. Since not all mods have been loaded yet, any constants of this type will be inaccurate. Thus, you must wait until at least one callback fires before retrieving these types of constants.")
    end
end
function ModdedElementDetection.prototype.getFirstModdedCollectibleType(self)
    self:errorIfNoCallbacksFired("collectible")
    local firstModdedCollectibleType = asCollectibleType(
        nil,
        asNumber(nil, LAST_VANILLA_COLLECTIBLE_TYPE) + 1
    )
    local itemConfigItem = itemConfig:GetCollectible(firstModdedCollectibleType)
    local ____temp_0
    if itemConfigItem == nil then
        ____temp_0 = nil
    else
        ____temp_0 = firstModdedCollectibleType
    end
    return ____temp_0
end
function ModdedElementDetection.prototype.getLastCollectibleType(self)
    self:errorIfNoCallbacksFired("collectible")
    return itemConfig:GetCollectibles().Size - 1
end
function ModdedElementDetection.prototype.getModdedCollectibleTypes(self)
    self:errorIfNoCallbacksFired("collectible")
    local firstModdedCollectibleType = self:getFirstModdedCollectibleType()
    if firstModdedCollectibleType == nil then
        return {}
    end
    local lastCollectibleType = self:getLastCollectibleType()
    return iRange(nil, firstModdedCollectibleType, lastCollectibleType)
end
function ModdedElementDetection.prototype.getNumCollectibleTypes(self)
    self:errorIfNoCallbacksFired("collectible")
    local numModdedCollectibleTypes = self:getNumModdedCollectibleTypes()
    return NUM_VANILLA_COLLECTIBLE_TYPES + numModdedCollectibleTypes
end
function ModdedElementDetection.prototype.getNumModdedCollectibleTypes(self)
    self:errorIfNoCallbacksFired("collectible")
    local lastCollectibleType = self:getLastCollectibleType()
    return lastCollectibleType - LAST_VANILLA_COLLECTIBLE_TYPE
end
function ModdedElementDetection.prototype.getFirstModdedTrinketType(self)
    self:errorIfNoCallbacksFired("trinket")
    local firstModdedTrinketType = asTrinketType(
        nil,
        asNumber(nil, LAST_VANILLA_TRINKET_TYPE) + 1
    )
    local itemConfigItem = itemConfig:GetTrinket(firstModdedTrinketType)
    local ____temp_1
    if itemConfigItem == nil then
        ____temp_1 = nil
    else
        ____temp_1 = firstModdedTrinketType
    end
    return ____temp_1
end
function ModdedElementDetection.prototype.getLastTrinketType(self)
    self:errorIfNoCallbacksFired("trinket")
    local numTrinketTypes = self:getNumTrinketTypes()
    return asTrinketType(nil, numTrinketTypes)
end
function ModdedElementDetection.prototype.getModdedTrinketTypes(self)
    self:errorIfNoCallbacksFired("trinket")
    local firstModdedTrinketType = self:getFirstModdedTrinketType()
    if firstModdedTrinketType == nil then
        return {}
    end
    local lastTrinketType = self:getLastTrinketType()
    return iRange(nil, firstModdedTrinketType, lastTrinketType)
end
function ModdedElementDetection.prototype.getNumTrinketTypes(self)
    self:errorIfNoCallbacksFired("trinket")
    return itemConfig:GetTrinkets().Size - 1
end
function ModdedElementDetection.prototype.getNumModdedTrinketTypes(self)
    self:errorIfNoCallbacksFired("trinket")
    local numTrinketTypes = self:getNumTrinketTypes()
    return numTrinketTypes - NUM_VANILLA_TRINKET_TYPES
end
function ModdedElementDetection.prototype.getTrinketTypes(self)
    self:errorIfNoCallbacksFired("trinket")
    local lastTrinketType = self:getLastTrinketType()
    return iRange(nil, FIRST_TRINKET_TYPE, lastTrinketType)
end
function ModdedElementDetection.prototype.getAllCardTypes(self)
    self:errorIfNoCallbacksFired("card")
    local lastCardType = self:getLastCardType()
    return iRange(nil, FIRST_CARD_TYPE, lastCardType)
end
function ModdedElementDetection.prototype.getFirstModdedCardType(self)
    self:errorIfNoCallbacksFired("card")
    local firstModdedCardType = asCardType(
        nil,
        asNumber(nil, LAST_VANILLA_CARD_TYPE) + 1
    )
    local itemConfigCard = itemConfig:GetCard(firstModdedCardType)
    local ____temp_2
    if itemConfigCard == nil then
        ____temp_2 = nil
    else
        ____temp_2 = firstModdedCardType
    end
    return ____temp_2
end
function ModdedElementDetection.prototype.getLastCardType(self)
    self:errorIfNoCallbacksFired("card")
    local numCards = self:getNumCardTypes()
    return asCardType(nil, numCards)
end
function ModdedElementDetection.prototype.getModdedCardTypes(self)
    self:errorIfNoCallbacksFired("card")
    local firstModdedCardType = self:getFirstModdedCardType()
    if firstModdedCardType == nil then
        return {}
    end
    local lastCardType = self:getLastCardType()
    return iRange(nil, firstModdedCardType, lastCardType)
end
function ModdedElementDetection.prototype.getNumCardTypes(self)
    self:errorIfNoCallbacksFired("card")
    return itemConfig:GetCards().Size - 1
end
function ModdedElementDetection.prototype.getNumModdedCardTypes(self)
    self:errorIfNoCallbacksFired("card")
    local numCardTypes = self:getNumCardTypes()
    return numCardTypes - NUM_VANILLA_CARD_TYPES
end
function ModdedElementDetection.prototype.getAllPillEffects(self)
    self:errorIfNoCallbacksFired("pill")
    local lastPillEffect = self:getLastPillEffect()
    return iRange(nil, FIRST_PILL_EFFECT, lastPillEffect)
end
function ModdedElementDetection.prototype.getFirstModdedPillEffect(self)
    self:errorIfNoCallbacksFired("pill")
    local firstModdedPillEffect = asPillEffect(
        nil,
        asNumber(nil, LAST_VANILLA_PILL_EFFECT) + 1
    )
    local itemConfigPillEffect = itemConfig:GetPillEffect(firstModdedPillEffect)
    local ____temp_3
    if itemConfigPillEffect == nil then
        ____temp_3 = nil
    else
        ____temp_3 = firstModdedPillEffect
    end
    return ____temp_3
end
function ModdedElementDetection.prototype.getLastPillEffect(self)
    self:errorIfNoCallbacksFired("pill")
    local numPillEffects = self:getNumPillEffects()
    return asPillEffect(nil, numPillEffects)
end
function ModdedElementDetection.prototype.getModdedPillEffects(self)
    self:errorIfNoCallbacksFired("pill")
    local firstModdedPillEffect = self:getFirstModdedPillEffect()
    if firstModdedPillEffect == nil then
        return {}
    end
    local lastPillEffect = self:getLastPillEffect()
    return iRange(nil, firstModdedPillEffect, lastPillEffect)
end
function ModdedElementDetection.prototype.getNumPillEffects(self)
    self:errorIfNoCallbacksFired("pill")
    return itemConfig:GetPillEffects().Size
end
function ModdedElementDetection.prototype.getNumModdedPillEffects(self)
    self:errorIfNoCallbacksFired("pill")
    local numPillEffects = self:getNumPillEffects()
    return numPillEffects - NUM_VANILLA_PILL_EFFECTS
end
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getFirstModdedCollectibleType", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getLastCollectibleType", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getModdedCollectibleTypes", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getNumCollectibleTypes", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getNumModdedCollectibleTypes", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getFirstModdedTrinketType", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getLastTrinketType", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getModdedTrinketTypes", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getNumTrinketTypes", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getNumModdedTrinketTypes", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getTrinketTypes", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getAllCardTypes", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getFirstModdedCardType", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getLastCardType", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getModdedCardTypes", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getNumCardTypes", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getNumModdedCardTypes", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getAllPillEffects", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getFirstModdedPillEffect", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getLastPillEffect", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getModdedPillEffects", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getNumPillEffects", true)
__TS__Decorate({Exported}, ModdedElementDetection.prototype, "getNumModdedPillEffects", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.ModdedElementSets"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ItemConfigTag = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigTag
local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local itemConfig = ____cachedClasses.itemConfig
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local FIRST_GLITCHED_COLLECTIBLE_TYPE = ____constants.FIRST_GLITCHED_COLLECTIBLE_TYPE
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____collectibles = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
local collectibleHasCacheFlag = ____collectibles.collectibleHasCacheFlag
local getVanillaCollectibleTypeRange = ____collectibles.getVanillaCollectibleTypeRange
local isActiveCollectible = ____collectibles.isActiveCollectible
local isHiddenCollectible = ____collectibles.isHiddenCollectible
local isPassiveCollectible = ____collectibles.isPassiveCollectible
local ____collectibleTag = require("lua_modules.isaacscript-common.dist.src.functions.collectibleTag")
local collectibleHasTag = ____collectibleTag.collectibleHasTag
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local getFlagName = ____flag.getFlagName
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local ____set = require("lua_modules.isaacscript-common.dist.src.functions.set")
local copySet = ____set.copySet
local deleteSetsFromSet = ____set.deleteSetsFromSet
local getRandomSetElement = ____set.getRandomSetElement
local getSortedSetValues = ____set.getSortedSetValues
local ____trinkets = require("lua_modules.isaacscript-common.dist.src.functions.trinkets")
local getVanillaTrinketTypes = ____trinkets.getVanillaTrinketTypes
local trinketHasCacheFlag = ____trinkets.trinketHasCacheFlag
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local ____repeat = ____utils["repeat"]
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local CONDITIONAL_FLYING_COLLECTIBLE_TYPES = {CollectibleType.BIBLE, CollectibleType.EMPTY_VESSEL, CollectibleType.ASTRAL_PROJECTION, CollectibleType.RECALL}
local TRANSFORMATION_TO_TAG_MAP = __TS__New(Map, {
    {PlayerForm.GUPPY, ItemConfigTag.GUPPY},
    {PlayerForm.BEELZEBUB, ItemConfigTag.FLY},
    {PlayerForm.FUN_GUY, ItemConfigTag.MUSHROOM},
    {PlayerForm.SERAPHIM, ItemConfigTag.ANGEL},
    {PlayerForm.BOB, ItemConfigTag.BOB},
    {PlayerForm.SPUN, ItemConfigTag.SYRINGE},
    {PlayerForm.YES_MOTHER, ItemConfigTag.MOM},
    {PlayerForm.CONJOINED, ItemConfigTag.BABY},
    {PlayerForm.LEVIATHAN, ItemConfigTag.DEVIL},
    {PlayerForm.OH_CRAP, ItemConfigTag.POOP},
    {PlayerForm.BOOKWORM, ItemConfigTag.BOOK},
    {PlayerForm.SPIDER_BABY, ItemConfigTag.SPIDER}
})
____exports.ModdedElementSets = __TS__Class()
local ModdedElementSets = ____exports.ModdedElementSets
ModdedElementSets.name = "ModdedElementSets"
__TS__ClassExtends(ModdedElementSets, Feature)
function ModdedElementSets.prototype.____constructor(self, moddedElementDetection)
    Feature.prototype.____constructor(self)
    self.allCollectibleTypesArray = {}
    self.allCollectibleTypesSet = __TS__New(Set)
    self.vanillaCollectibleTypesArray = {}
    self.vanillaCollectibleTypesSet = __TS__New(Set)
    self.moddedCollectibleTypesArray = {}
    self.moddedCollectibleTypesSet = __TS__New(Set)
    self.allTrinketTypesArray = {}
    self.allTrinketTypesSet = __TS__New(Set)
    self.vanillaTrinketTypesArray = {}
    self.vanillaTrinketTypesSet = __TS__New(Set)
    self.moddedTrinketTypesArray = {}
    self.moddedTrinketTypesSet = __TS__New(Set)
    self.tagToCollectibleTypesMap = __TS__New(Map)
    self.cacheFlagToCollectibleTypesMap = __TS__New(Map)
    self.cacheFlagToTrinketTypesMap = __TS__New(Map)
    self.flyingCollectibleTypesSet = __TS__New(Set)
    self.permanentFlyingCollectibleTypesSet = __TS__New(Set)
    self.flyingTrinketTypesSet = __TS__New(Set)
    self.edenActiveCollectibleTypesSet = __TS__New(Set)
    self.edenPassiveCollectibleTypesSet = __TS__New(Set)
    self.featuresUsed = {ISCFeature.MODDED_ELEMENT_DETECTION}
    self.moddedElementDetection = moddedElementDetection
end
function ModdedElementSets.prototype.lazyInitVanillaCollectibleTypes(self)
    if #self.vanillaCollectibleTypesArray > 0 then
        return
    end
    local vanillaCollectibleTypeRange = getVanillaCollectibleTypeRange(nil)
    for ____, collectibleType in ipairs(vanillaCollectibleTypeRange) do
        local itemConfigItem = itemConfig:GetCollectible(collectibleType)
        if itemConfigItem ~= nil then
            local ____self_vanillaCollectibleTypesArray_0 = self.vanillaCollectibleTypesArray
            ____self_vanillaCollectibleTypesArray_0[#____self_vanillaCollectibleTypesArray_0 + 1] = collectibleType
            self.vanillaCollectibleTypesSet:add(collectibleType)
        end
    end
end
function ModdedElementSets.prototype.lazyInitModdedCollectibleTypes(self)
    if #self.moddedCollectibleTypesArray > 0 then
        return
    end
    self:lazyInitVanillaCollectibleTypes()
    for ____, collectibleType in ipairs(self.vanillaCollectibleTypesArray) do
        local ____self_allCollectibleTypesArray_1 = self.allCollectibleTypesArray
        ____self_allCollectibleTypesArray_1[#____self_allCollectibleTypesArray_1 + 1] = collectibleType
        self.allCollectibleTypesSet:add(collectibleType)
    end
    local moddedCollectibleTypes = self.moddedElementDetection:getModdedCollectibleTypes()
    for ____, collectibleType in ipairs(moddedCollectibleTypes) do
        local itemConfigItem = itemConfig:GetCollectible(collectibleType)
        if itemConfigItem ~= nil then
            local ____self_moddedCollectibleTypesArray_2 = self.moddedCollectibleTypesArray
            ____self_moddedCollectibleTypesArray_2[#____self_moddedCollectibleTypesArray_2 + 1] = collectibleType
            self.moddedCollectibleTypesSet:add(collectibleType)
            local ____self_allCollectibleTypesArray_3 = self.allCollectibleTypesArray
            ____self_allCollectibleTypesArray_3[#____self_allCollectibleTypesArray_3 + 1] = collectibleType
            self.allCollectibleTypesSet:add(collectibleType)
        end
    end
end
function ModdedElementSets.prototype.lazyInitVanillaTrinketTypes(self)
    if #self.vanillaTrinketTypesArray > 0 then
        return
    end
    local vanillaTrinketTypes = getVanillaTrinketTypes(nil)
    for ____, trinketType in ipairs(vanillaTrinketTypes) do
        local itemConfigItem = itemConfig:GetTrinket(trinketType)
        if itemConfigItem ~= nil then
            local ____self_vanillaTrinketTypesArray_4 = self.vanillaTrinketTypesArray
            ____self_vanillaTrinketTypesArray_4[#____self_vanillaTrinketTypesArray_4 + 1] = trinketType
            self.vanillaTrinketTypesSet:add(trinketType)
        end
    end
end
function ModdedElementSets.prototype.lazyInitModdedTrinketTypes(self)
    if #self.moddedTrinketTypesArray > 0 then
        return
    end
    self:lazyInitVanillaTrinketTypes()
    for ____, trinketType in ipairs(self.vanillaTrinketTypesArray) do
        local ____self_allTrinketTypesArray_5 = self.allTrinketTypesArray
        ____self_allTrinketTypesArray_5[#____self_allTrinketTypesArray_5 + 1] = trinketType
        self.allTrinketTypesSet:add(trinketType)
    end
    local moddedTrinketTypes = self.moddedElementDetection:getModdedTrinketTypes()
    for ____, trinketType in ipairs(moddedTrinketTypes) do
        local itemConfigItem = itemConfig:GetTrinket(trinketType)
        if itemConfigItem ~= nil then
            local ____self_moddedTrinketTypesArray_6 = self.moddedTrinketTypesArray
            ____self_moddedTrinketTypesArray_6[#____self_moddedTrinketTypesArray_6 + 1] = trinketType
            self.moddedTrinketTypesSet:add(trinketType)
            local ____self_allTrinketTypesArray_7 = self.allTrinketTypesArray
            ____self_allTrinketTypesArray_7[#____self_allTrinketTypesArray_7 + 1] = trinketType
            self.allTrinketTypesSet:add(trinketType)
        end
    end
end
function ModdedElementSets.prototype.lazyInitTagToCollectibleTypesMap(self)
    if self.tagToCollectibleTypesMap.size > 0 then
        return
    end
    for ____, itemConfigTag in ipairs(getEnumValues(nil, ItemConfigTag)) do
        self.tagToCollectibleTypesMap:set(
            itemConfigTag,
            __TS__New(Set)
        )
    end
    for ____, collectibleType in ipairs(self:getCollectibleArray()) do
        for ____, itemConfigTag in ipairs(getEnumValues(nil, ItemConfigTag)) do
            do
                if not collectibleHasTag(nil, collectibleType, itemConfigTag) then
                    goto __continue32
                end
                local collectibleTypesSet = self.tagToCollectibleTypesMap:get(itemConfigTag)
                if collectibleTypesSet == nil then
                    local flagName = getFlagName(nil, itemConfigTag, ItemConfigTag)
                    error("Failed to get the collectible types for item tag: " .. tostring(flagName))
                end
                collectibleTypesSet:add(collectibleType)
            end
            ::__continue32::
        end
    end
end
function ModdedElementSets.prototype.lazyInitCacheFlagToCollectibleTypesMap(self)
    if self.cacheFlagToCollectibleTypesMap.size > 0 then
        return
    end
    for ____, cacheFlag in ipairs(getEnumValues(nil, CacheFlag)) do
        local collectiblesSet = __TS__New(Set)
        for ____, collectibleType in ipairs(self:getCollectibleArray()) do
            if collectibleHasCacheFlag(nil, collectibleType, cacheFlag) then
                collectiblesSet:add(collectibleType)
            end
        end
        self.cacheFlagToCollectibleTypesMap:set(cacheFlag, collectiblesSet)
    end
end
function ModdedElementSets.prototype.lazyInitCacheFlagToTrinketTypesMap(self)
    if self.cacheFlagToTrinketTypesMap.size > 0 then
        return
    end
    for ____, cacheFlag in ipairs(getEnumValues(nil, CacheFlag)) do
        local trinketsSet = __TS__New(Set)
        for ____, trinketType in ipairs(self.moddedElementDetection:getTrinketTypes()) do
            if trinketHasCacheFlag(nil, trinketType, cacheFlag) then
                trinketsSet:add(trinketType)
            end
        end
        self.cacheFlagToTrinketTypesMap:set(cacheFlag, trinketsSet)
    end
end
function ModdedElementSets.prototype.lazyInitFlyingCollectibleTypesSet(self)
    if self.flyingCollectibleTypesSet.size > 0 then
        return
    end
    self.flyingCollectibleTypesSet = copySet(
        nil,
        self:getCollectiblesWithCacheFlag(CacheFlag.FLYING)
    )
    local collectiblesWithAllCacheFlag = self:getCollectiblesWithCacheFlag(CacheFlag.ALL)
    deleteSetsFromSet(nil, self.flyingCollectibleTypesSet, collectiblesWithAllCacheFlag)
    local permanentFlyingCollectibleTypes = copySet(nil, self.flyingCollectibleTypesSet)
    for ____, collectibleType in ipairs(CONDITIONAL_FLYING_COLLECTIBLE_TYPES) do
        permanentFlyingCollectibleTypes:delete(collectibleType)
    end
end
function ModdedElementSets.prototype.lazyInitFlyingTrinketTypesSet(self)
    if self.flyingTrinketTypesSet.size > 0 then
        return
    end
    self.flyingTrinketTypesSet = copySet(
        nil,
        self:getTrinketsWithCacheFlag(CacheFlag.FLYING)
    )
    local trinketsWithAllCacheFlag = copySet(
        nil,
        self:getTrinketsWithCacheFlag(CacheFlag.ALL)
    )
    trinketsWithAllCacheFlag:delete(TrinketType.AZAZELS_STUMP)
    deleteSetsFromSet(nil, self.flyingTrinketTypesSet, trinketsWithAllCacheFlag)
end
function ModdedElementSets.prototype.lazyInitEdenCollectibleTypesSet(self)
    if self.edenActiveCollectibleTypesSet.size > 0 then
        return
    end
    for ____, collectibleType in ipairs(self:getCollectibleArray()) do
        do
            if isHiddenCollectible(nil, collectibleType) or collectibleHasTag(nil, collectibleType, ItemConfigTag.NO_EDEN) then
                goto __continue59
            end
            if isActiveCollectible(nil, collectibleType) then
                self.edenActiveCollectibleTypesSet:add(collectibleType)
            end
            if isPassiveCollectible(nil, collectibleType) then
                self.edenPassiveCollectibleTypesSet:add(collectibleType)
            end
        end
        ::__continue59::
    end
end
function ModdedElementSets.prototype.getCollectibleArray(self)
    self:lazyInitModdedCollectibleTypes()
    return self.allCollectibleTypesArray
end
function ModdedElementSets.prototype.getCollectibleSet(self)
    self:lazyInitModdedCollectibleTypes()
    return self.allCollectibleTypesSet
end
function ModdedElementSets.prototype.getCollectiblesForTransformation(self, playerForm)
    local itemConfigTag = TRANSFORMATION_TO_TAG_MAP:get(playerForm)
    if itemConfigTag == nil then
        error(("Failed to get the collectible types for the transformation of " .. tostring(playerForm)) .. " because that transformation is not based on collectibles.")
    end
    return self:getCollectiblesWithTag(itemConfigTag)
end
function ModdedElementSets.prototype.getCollectiblesWithCacheFlag(self, cacheFlag)
    self:lazyInitCacheFlagToCollectibleTypesMap()
    local collectiblesSet = self.cacheFlagToCollectibleTypesMap:get(cacheFlag)
    if collectiblesSet == nil then
        return __TS__New(Set)
    end
    return collectiblesSet
end
function ModdedElementSets.prototype.getCollectiblesWithTag(self, itemConfigTag)
    self:lazyInitTagToCollectibleTypesMap()
    local collectibleTypes = self.tagToCollectibleTypesMap:get(itemConfigTag)
    if collectibleTypes == nil then
        error(("The item config tag of " .. tostring(itemConfigTag)) .. " is not a valid value of the \"ItemConfigTag\" enum.")
    end
    return collectibleTypes
end
function ModdedElementSets.prototype.getEdenActiveCollectibles(self)
    self:lazyInitEdenCollectibleTypesSet()
    return self.edenActiveCollectibleTypesSet
end
function ModdedElementSets.prototype.getEdenPassiveCollectibles(self)
    self:lazyInitEdenCollectibleTypesSet()
    return self.edenPassiveCollectibleTypesSet
end
function ModdedElementSets.prototype.getFlyingCollectibles(self, pruneConditionalItems)
    self:lazyInitFlyingCollectibleTypesSet()
    return pruneConditionalItems and self.permanentFlyingCollectibleTypesSet or self.flyingCollectibleTypesSet
end
function ModdedElementSets.prototype.getFlyingTrinkets(self)
    self:lazyInitFlyingTrinketTypesSet()
    return self.flyingTrinketTypesSet
end
function ModdedElementSets.prototype.getModdedCollectibleArray(self)
    self:lazyInitModdedCollectibleTypes()
    return self.moddedCollectibleTypesArray
end
function ModdedElementSets.prototype.getModdedCollectibleSet(self)
    self:lazyInitModdedCollectibleTypes()
    return self.moddedCollectibleTypesSet
end
function ModdedElementSets.prototype.getModdedTrinketArray(self)
    self:lazyInitModdedTrinketTypes()
    return self.moddedTrinketTypesArray
end
function ModdedElementSets.prototype.getModdedTrinketSet(self)
    self:lazyInitModdedTrinketTypes()
    return self.moddedTrinketTypesSet
end
function ModdedElementSets.prototype.getPlayerCollectibleMap(self, player)
    local collectibleArray = self:getCollectibleArray()
    local collectibleMap = __TS__New(Map)
    for ____, collectibleType in ipairs(collectibleArray) do
        local numCollectibles = player:GetCollectibleNum(collectibleType, true)
        if numCollectibles > 0 then
            collectibleMap:set(collectibleType, numCollectibles)
        end
    end
    if player:HasCollectible(CollectibleType.TMTRAINER) then
        local collectibleType = FIRST_GLITCHED_COLLECTIBLE_TYPE
        local itemConfigItem
        repeat
            do
                itemConfigItem = itemConfig:GetCollectible(collectibleType)
                if itemConfigItem ~= nil then
                    local hasCollectibles = player:HasCollectible(collectibleType, true)
                    if hasCollectibles then
                        collectibleMap:set(collectibleType, 1)
                    end
                end
                collectibleType = collectibleType - 1
            end
        until not (itemConfigItem ~= nil)
    end
    return collectibleMap
end
function ModdedElementSets.prototype.getPlayerCollectiblesWithCacheFlag(self, player, cacheFlag)
    local collectiblesWithCacheFlag = self:getCollectiblesWithCacheFlag(cacheFlag)
    local playerCollectibles = {}
    for ____, collectibleType in ipairs(getSortedSetValues(nil, collectiblesWithCacheFlag)) do
        local numCollectibles = player:GetCollectibleNum(collectibleType, true)
        ____repeat(
            nil,
            numCollectibles,
            function()
                playerCollectibles[#playerCollectibles + 1] = collectibleType
            end
        )
    end
    return playerCollectibles
end
function ModdedElementSets.prototype.getPlayerCollectiblesWithTag(self, player, itemConfigTag)
    local collectiblesWithTag = self:getCollectiblesWithTag(itemConfigTag)
    local playerCollectibles = {}
    for ____, collectibleType in ipairs(getSortedSetValues(nil, collectiblesWithTag)) do
        local numCollectibles = player:GetCollectibleNum(collectibleType, true)
        ____repeat(
            nil,
            numCollectibles,
            function()
                playerCollectibles[#playerCollectibles + 1] = collectibleType
            end
        )
    end
    return playerCollectibles
end
function ModdedElementSets.prototype.getPlayerCollectiblesForTransformation(self, player, playerForm)
    local collectibleForTransformation = self:getCollectiblesForTransformation(playerForm)
    local playerCollectibles = {}
    for ____, collectibleType in ipairs(getSortedSetValues(nil, collectibleForTransformation)) do
        local numCollectibles = player:GetCollectibleNum(collectibleType, true)
        ____repeat(
            nil,
            numCollectibles,
            function()
                playerCollectibles[#playerCollectibles + 1] = collectibleType
            end
        )
    end
    return playerCollectibles
end
function ModdedElementSets.prototype.getPlayerTrinketsWithCacheFlag(self, player, cacheFlag)
    local trinketsWithCacheFlag = self:getTrinketsWithCacheFlag(cacheFlag)
    local playerTrinkets = __TS__New(Map)
    for ____, trinketType in __TS__Iterator(trinketsWithCacheFlag:values()) do
        local trinketMultiplier = player:GetTrinketMultiplier(trinketType)
        if trinketMultiplier > 0 then
            playerTrinkets:set(trinketType, trinketMultiplier)
        end
    end
    return playerTrinkets
end
function ModdedElementSets.prototype.getRandomEdenActiveCollectible(self, seedOrRNG, exceptions)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if exceptions == nil then
        exceptions = {}
    end
    self:lazyInitEdenCollectibleTypesSet()
    return getRandomSetElement(nil, self.edenPassiveCollectibleTypesSet, seedOrRNG, exceptions)
end
function ModdedElementSets.prototype.getRandomEdenPassiveCollectible(self, seedOrRNG, exceptions)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if exceptions == nil then
        exceptions = {}
    end
    self:lazyInitEdenCollectibleTypesSet()
    return getRandomSetElement(nil, self.edenPassiveCollectibleTypesSet, seedOrRNG, exceptions)
end
function ModdedElementSets.prototype.getTrinketArray(self)
    self:lazyInitModdedTrinketTypes()
    return self.allTrinketTypesArray
end
function ModdedElementSets.prototype.getTrinketSet(self)
    self:lazyInitModdedTrinketTypes()
    return self.allTrinketTypesSet
end
function ModdedElementSets.prototype.getTrinketsWithCacheFlag(self, cacheFlag)
    self:lazyInitCacheFlagToTrinketTypesMap()
    local trinketsSet = self.cacheFlagToTrinketTypesMap:get(cacheFlag)
    if trinketsSet == nil then
        return __TS__New(Set)
    end
    return trinketsSet
end
function ModdedElementSets.prototype.getVanillaCollectibleArray(self)
    self:lazyInitVanillaCollectibleTypes()
    return self.vanillaCollectibleTypesArray
end
function ModdedElementSets.prototype.getVanillaCollectibleSet(self)
    self:lazyInitVanillaCollectibleTypes()
    return self.vanillaCollectibleTypesSet
end
function ModdedElementSets.prototype.getVanillaTrinketArray(self)
    self:lazyInitVanillaTrinketTypes()
    return self.vanillaTrinketTypesArray
end
function ModdedElementSets.prototype.getVanillaTrinketSet(self)
    self:lazyInitVanillaTrinketTypes()
    return self.vanillaTrinketTypesSet
end
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getCollectibleArray", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getCollectibleSet", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getCollectiblesForTransformation", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getCollectiblesWithCacheFlag", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getCollectiblesWithTag", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getEdenActiveCollectibles", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getEdenPassiveCollectibles", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getFlyingCollectibles", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getFlyingTrinkets", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getModdedCollectibleArray", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getModdedCollectibleSet", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getModdedTrinketArray", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getModdedTrinketSet", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getPlayerCollectibleMap", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getPlayerCollectiblesWithCacheFlag", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getPlayerCollectiblesWithTag", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getPlayerCollectiblesForTransformation", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getPlayerTrinketsWithCacheFlag", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getRandomEdenActiveCollectible", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getRandomEdenPassiveCollectible", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getTrinketArray", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getTrinketSet", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getTrinketsWithCacheFlag", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getVanillaCollectibleArray", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getVanillaCollectibleSet", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getVanillaTrinketArray", true)
__TS__Decorate({Exported}, ModdedElementSets.prototype, "getVanillaTrinketSet", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.NoSirenSteal"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.NoSirenSteal = __TS__Class()
local NoSirenSteal = ____exports.NoSirenSteal
NoSirenSteal.name = "NoSirenSteal"
__TS__ClassExtends(NoSirenSteal, Feature)
function NoSirenSteal.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {familiarBlacklist = {}}}
    self.postNPCInitSirenHelper = function(____, npc)
        self:checkReturnFamiliarToPlayer(npc)
    end
    self.callbacksUsed = {{ModCallback.POST_NPC_INIT, {self.postNPCInitSirenHelper, EntityType.SIREN_HELPER}}}
end
function NoSirenSteal.prototype.checkReturnFamiliarToPlayer(self, npc)
    if npc.Target == nil then
        return
    end
    local familiar = npc.Target:ToFamiliar()
    if familiar == nil then
        return
    end
    if self:blacklistEntryExists(familiar.Variant, familiar.SubType) then
        npc:Remove()
        familiar:AddToFollowers()
    end
end
function NoSirenSteal.prototype.blacklistEntryExists(self, incomingFamiliarVariant, incomingFamiliarSubType)
    for ____, familiarTuple in ipairs(self.v.run.familiarBlacklist) do
        local familiarVariant, familiarSubType = table.unpack(familiarTuple)
        if familiarVariant == incomingFamiliarVariant and familiarSubType == incomingFamiliarSubType then
            return true
        end
        if familiarVariant == incomingFamiliarVariant and familiarSubType == nil then
            return true
        end
    end
    return false
end
function NoSirenSteal.prototype.setFamiliarNoSirenSteal(self, familiarVariant, familiarSubType)
    if self:blacklistEntryExists(familiarVariant, familiarSubType) then
        return
    end
    local ____self_v_run_familiarBlacklist_0 = self.v.run.familiarBlacklist
    ____self_v_run_familiarBlacklist_0[#____self_v_run_familiarBlacklist_0 + 1] = {familiarVariant, familiarSubType}
end
__TS__Decorate({Exported}, NoSirenSteal.prototype, "setFamiliarNoSirenSteal", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.Pause"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
local Set = ____lualib.Set
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local InputHook = ____isaac_2Dtypescript_2Ddefinitions.InputHook
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local VectorZero = ____constants.VectorZero
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getProjectiles = ____entitiesSpecific.getProjectiles
local getTears = ____entitiesSpecific.getTears
local removeAllProjectiles = ____entitiesSpecific.removeAllProjectiles
local removeAllTears = ____entitiesSpecific.removeAllTears
local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.src.functions.isaacAPIClass")
local isTear = ____isaacAPIClass.isTear
local ____logMisc = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
local logError = ____logMisc.logError
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getAllPlayers = ____playerIndex.getAllPlayers
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local useActiveItemTemp = ____players.useActiveItemTemp
local ____tstlClass = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
local getTSTLClassName = ____tstlClass.getTSTLClassName
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.Pause = __TS__Class()
local Pause = ____exports.Pause
Pause.name = "Pause"
__TS__ClassExtends(Pause, Feature)
function Pause.prototype.____constructor(self, disableInputs)
    Feature.prototype.____constructor(self)
    self.v = {run = {
        isPseudoPaused = false,
        shouldUnpause = false,
        initialDescriptions = __TS__New(Map)
    }}
    self.postUpdate = function()
        if not self.v.run.isPseudoPaused then
            return
        end
        local firstPlayer = Isaac.GetPlayer()
        useActiveItemTemp(nil, firstPlayer, CollectibleType.PAUSE)
        self:stopTearsAndProjectilesFromMoving()
    end
    self.inputActionGetActionValue = function(____, _entity, _inputHook, buttonAction)
        if buttonAction ~= ButtonAction.SHOOT_RIGHT then
            return
        end
        if not self.v.run.shouldUnpause then
            return
        end
        self.v.run.shouldUnpause = false
        return 1
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}, {ModCallback.INPUT_ACTION, {self.inputActionGetActionValue, InputHook.GET_ACTION_VALUE}}}
    self.disableInputs = disableInputs
end
function Pause.prototype.stopTearsAndProjectilesFromMoving(self)
    local ____array_0 = __TS__SparseArrayNew(table.unpack(getTears(nil)))
    __TS__SparseArrayPush(
        ____array_0,
        table.unpack(getProjectiles(nil))
    )
    local tearsAndProjectiles = {__TS__SparseArraySpread(____array_0)}
    for ____, tearOrProjectile in ipairs(tearsAndProjectiles) do
        do
            local ptrHash = GetPtrHash(tearOrProjectile)
            local initialDescription = self.v.run.initialDescriptions:get(ptrHash)
            if initialDescription == nil then
                goto __continue9
            end
            tearOrProjectile.Position = initialDescription.position
            tearOrProjectile.PositionOffset = initialDescription.positionOffset
            tearOrProjectile.Velocity = VectorZero
            tearOrProjectile.Height = initialDescription.height
            tearOrProjectile.FallingSpeed = 0
            if isTear(nil, tearOrProjectile) then
                tearOrProjectile.FallingAcceleration = initialDescription.fallingAcceleration
            else
                tearOrProjectile.FallingAccel = initialDescription.fallingAcceleration
            end
        end
        ::__continue9::
    end
end
function Pause.prototype.pause(self)
    if self.v.run.isPseudoPaused then
        logError(nil, "Failed to pseudo-pause the game, since it was already pseudo-paused.")
        return
    end
    self.v.run.isPseudoPaused = true
    self.v.run.initialDescriptions:clear()
    local ____array_1 = __TS__SparseArrayNew(table.unpack(getTears(nil)))
    __TS__SparseArrayPush(
        ____array_1,
        table.unpack(getProjectiles(nil))
    )
    local tearsAndProjectiles = {__TS__SparseArraySpread(____array_1)}
    for ____, tearOrProjectile in ipairs(tearsAndProjectiles) do
        local ptrHash = GetPtrHash(tearOrProjectile)
        local initialDescription = {
            position = tearOrProjectile.Position,
            positionOffset = tearOrProjectile.PositionOffset,
            velocity = tearOrProjectile.Velocity,
            height = tearOrProjectile.Height,
            fallingSpeed = tearOrProjectile.FallingSpeed,
            fallingAcceleration = isTear(nil, tearOrProjectile) and tearOrProjectile.FallingAcceleration or tearOrProjectile.FallingAccel
        }
        self.v.run.initialDescriptions:set(ptrHash, initialDescription)
    end
    local firstPlayer = Isaac.GetPlayer()
    useActiveItemTemp(nil, firstPlayer, CollectibleType.PAUSE)
    local tstlClassName = getTSTLClassName(nil, self)
    if tstlClassName == nil then
        error("Failed to get the class name for the pause feature.")
    end
    local whitelist = __TS__New(Set, {ButtonAction.MENU_CONFIRM, ButtonAction.CONSOLE})
    self.disableInputs:disableAllInputsExceptFor(tstlClassName, whitelist)
    for ____, player in ipairs(getAllPlayers(nil)) do
        player.ControlsEnabled = false
        player.Velocity = VectorZero
    end
    self:stopTearsAndProjectilesFromMoving()
end
function Pause.prototype.unpause(self)
    if not self.v.run.isPseudoPaused then
        logError(nil, "Failed to pseudo-unpause the game, since it was not already pseudo-paused.")
        return
    end
    self.v.run.isPseudoPaused = false
    self.v.run.shouldUnpause = true
    local tstlClassName = getTSTLClassName(nil, self)
    if tstlClassName == nil then
        error("Failed to find get the class name for the pause feature.")
    end
    self.disableInputs:enableAllInputs(tstlClassName)
    for ____, player in ipairs(getAllPlayers(nil)) do
        player.ControlsEnabled = true
    end
    removeAllTears(nil)
    removeAllProjectiles(nil)
end
__TS__Decorate({Exported}, Pause.prototype, "pause", true)
__TS__Decorate({Exported}, Pause.prototype, "unpause", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.PersistentEntities"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Spread = ____lualib.__TS__Spread
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__Iterator = ____lualib.__TS__Iterator
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local spawn = ____entities.spawn
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomListIndex = ____roomData.getRoomListIndex
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.PersistentEntities = __TS__Class()
local PersistentEntities = ____exports.PersistentEntities
PersistentEntities.name = "PersistentEntities"
__TS__ClassExtends(PersistentEntities, Feature)
function PersistentEntities.prototype.____constructor(self, roomHistory)
    Feature.prototype.____constructor(self)
    self.v = {
        run = {persistentEntityIndexCounter = 0},
        level = {persistentEntities = __TS__New(Map)},
        room = {spawnedPersistentEntities = __TS__New(Map)}
    }
    self.postEntityRemove = function(____, entity)
        self:checkDespawningFromPlayerLeavingRoom(entity)
    end
    self.postNewRoomReordered = function()
        local roomListIndex = getRoomListIndex(nil)
        local persistentEntities = {__TS__Spread(self.v.level.persistentEntities:entries())}
        local persistentEntitiesInThisRoom = __TS__ArrayFilter(
            persistentEntities,
            function(____, ____bindingPattern0)
                local description
                local _index = ____bindingPattern0[1]
                description = ____bindingPattern0[2]
                return roomListIndex == description.roomListIndex
            end
        )
        for ____, ____value in ipairs(persistentEntitiesInThisRoom) do
            local index = ____value[1]
            local description = ____value[2]
            self.v.level.persistentEntities:delete(index)
            self:spawnAndTrack(
                description.entityType,
                description.variant,
                description.subType,
                description.position,
                index,
                true
            )
        end
    end
    self.featuresUsed = {ISCFeature.ROOM_HISTORY}
    self.callbacksUsed = {{ModCallback.POST_ENTITY_REMOVE, {self.postEntityRemove}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_REORDERED, {self.postNewRoomReordered}}}
    self.roomHistory = roomHistory
end
function PersistentEntities.prototype.checkDespawningFromPlayerLeavingRoom(self, entity)
    local ptrHash = GetPtrHash(entity)
    local tuple = self.v.room.spawnedPersistentEntities:get(ptrHash)
    if tuple == nil then
        return
    end
    local index = tuple[1]
    if not self.roomHistory:isLeavingRoom() then
        return
    end
    self:trackDespawningPickupPosition(entity, index)
end
function PersistentEntities.prototype.trackDespawningPickupPosition(self, entity, index)
    local previousRoomDescription = self.roomHistory:getLatestRoomDescription()
    if previousRoomDescription == nil then
        return
    end
    local persistentEntityDescription = {
        entityType = entity.Type,
        variant = entity.Variant,
        subType = entity.SubType,
        dimension = previousRoomDescription.dimension,
        roomListIndex = previousRoomDescription.roomListIndex,
        position = entity.Position
    }
    self.v.level.persistentEntities:set(index, persistentEntityDescription)
end
function PersistentEntities.prototype.spawnAndTrack(self, entityType, variant, subType, position, index, respawning)
    if respawning == nil then
        respawning = false
    end
    local entity = spawn(
        nil,
        entityType,
        variant,
        subType,
        position
    )
    if respawning then
        entity:ClearEntityFlags(EntityFlag.APPEAR)
    end
    local ptrHash = GetPtrHash(entity)
    local tuple = {
        index,
        EntityPtr(entity)
    }
    self.v.room.spawnedPersistentEntities:set(ptrHash, tuple)
    return entity
end
function PersistentEntities.prototype.removePersistentEntity(self, persistentEntityIndex, removeEntity)
    if removeEntity == nil then
        removeEntity = true
    end
    self.v.level.persistentEntities:delete(persistentEntityIndex)
    for ____, ____value in __TS__Iterator(self.v.room.spawnedPersistentEntities:entries()) do
        local ptrHash = ____value[1]
        local tuple = ____value[2]
        do
            local index, entityPtr = table.unpack(tuple)
            if index ~= persistentEntityIndex then
                goto __continue16
            end
            self.v.room.spawnedPersistentEntities:delete(ptrHash)
            if removeEntity and entityPtr.Ref ~= nil then
                entityPtr.Ref:Remove()
            end
        end
        ::__continue16::
    end
end
function PersistentEntities.prototype.spawnPersistentEntity(self, entityType, variant, subType, position)
    local ____self_v_run_0, ____persistentEntityIndexCounter_1 = self.v.run, "persistentEntityIndexCounter"
    ____self_v_run_0[____persistentEntityIndexCounter_1] = ____self_v_run_0[____persistentEntityIndexCounter_1] + 1
    local entity = self:spawnAndTrack(
        entityType,
        variant,
        subType,
        position,
        self.v.run.persistentEntityIndexCounter
    )
    return {entity, self.v.run.persistentEntityIndexCounter}
end
__TS__Decorate({Exported}, PersistentEntities.prototype, "removePersistentEntity", true)
__TS__Decorate({Exported}, PersistentEntities.prototype, "spawnPersistentEntity", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.PickupIndexCreation"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local getStoredPickupIndex
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntityID = ____entities.getEntityID
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getPickups = ____entitiesSpecific.getPickups
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomListIndex = ____roomData.getRoomListIndex
local ____stage = require("lua_modules.isaacscript-common.dist.src.functions.stage")
local onAscent = ____stage.onAscent
local ____vector = require("lua_modules.isaacscript-common.dist.src.functions.vector")
local vectorEquals = ____vector.vectorEquals
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
function getStoredPickupIndex(self, pickup, pickupDescriptions)
    for ____, ____value in __TS__Iterator(pickupDescriptions:entries()) do
        local pickupIndex = ____value[1]
        local pickupDescription = ____value[2]
        if vectorEquals(nil, pickupDescription.position, pickup.Position) and pickupDescription.initSeed == pickup.InitSeed then
            return pickupIndex
        end
    end
    return nil
end
____exports.PickupIndexCreation = __TS__Class()
local PickupIndexCreation = ____exports.PickupIndexCreation
PickupIndexCreation.name = "PickupIndexCreation"
__TS__ClassExtends(PickupIndexCreation, Feature)
function PickupIndexCreation.prototype.____constructor(self, roomHistory)
    Feature.prototype.____constructor(self)
    self.v = {
        run = {
            pickupCounter = 0,
            pickupDataTreasureRooms = __TS__New(Map),
            pickupDataBossRooms = __TS__New(Map)
        },
        level = {pickupData = __TS__New(
            DefaultMap,
            function() return __TS__New(Map) end
        )},
        room = {pickupIndexes = __TS__New(Map)}
    }
    self.postPickupInit = function(____, pickup)
        self:trySetPickupIndex(pickup)
    end
    self.postEntityRemovePickup = function(____, entity)
        self:checkDespawningFromPlayerLeavingRoom(entity)
    end
    self.postNewRoomReordered = function()
        local room = game:GetRoom()
        local isFirstVisit = room:IsFirstVisit()
        if isFirstVisit then
            return
        end
        local roomListIndex = getRoomListIndex(nil)
        local pickupDescriptions = self.v.level.pickupData:getAndSetDefault(roomListIndex)
        for ____, pickup in ipairs(getPickups(nil)) do
            local pickupIndex = getStoredPickupIndex(nil, pickup, pickupDescriptions)
            if pickupIndex == nil then
                pickupIndex = self:getPostAscentPickupIndex(pickup)
            end
            if pickupIndex == nil then
                local ____self_v_run_0, ____pickupCounter_1 = self.v.run, "pickupCounter"
                ____self_v_run_0[____pickupCounter_1] = ____self_v_run_0[____pickupCounter_1] + 1
                pickupIndex = self.v.run.pickupCounter
            end
            local ptrHash = GetPtrHash(pickup)
            self.v.room.pickupIndexes:set(ptrHash, pickupIndex)
        end
    end
    self.featuresUsed = {ISCFeature.ROOM_HISTORY}
    self.callbacksUsed = {{ModCallback.POST_PICKUP_INIT, {self.postPickupInit}}, {ModCallback.POST_ENTITY_REMOVE, {self.postEntityRemovePickup, EntityType.PICKUP}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_REORDERED, {self.postNewRoomReordered}}}
    self.roomHistory = roomHistory
end
function PickupIndexCreation.prototype.trySetPickupIndex(self, pickup)
    local ptrHash = GetPtrHash(pickup)
    if self.v.room.pickupIndexes:has(ptrHash) then
        return
    end
    local room = game:GetRoom()
    local isFirstVisit = room:IsFirstVisit()
    local roomFrameCount = room:GetFrameCount()
    if not isFirstVisit and roomFrameCount <= 0 then
        return
    end
    local ____self_v_run_2, ____pickupCounter_3 = self.v.run, "pickupCounter"
    ____self_v_run_2[____pickupCounter_3] = ____self_v_run_2[____pickupCounter_3] + 1
    self.v.room.pickupIndexes:set(ptrHash, self.v.run.pickupCounter)
end
function PickupIndexCreation.prototype.checkDespawningFromPlayerLeavingRoom(self, entity)
    local ptrHash = GetPtrHash(entity)
    local pickupIndex = self.v.room.pickupIndexes:get(ptrHash)
    if pickupIndex == nil then
        return
    end
    if not self.roomHistory:isLeavingRoom() then
        return
    end
    self:trackDespawningPickupMetadata(entity, pickupIndex)
end
function PickupIndexCreation.prototype.trackDespawningPickupMetadata(self, entity, pickupIndex)
    local previousRoomDescription = self.roomHistory:getLatestRoomDescription()
    if previousRoomDescription == nil then
        return
    end
    local previousRoomListIndex = previousRoomDescription.roomListIndex
    local pickupDescriptions = self.v.level.pickupData:getAndSetDefault(previousRoomListIndex)
    local pickupDescription = {position = entity.Position, initSeed = entity.InitSeed}
    pickupDescriptions:set(pickupIndex, pickupDescription)
    if onAscent(nil) then
        return
    end
    local room = game:GetRoom()
    local roomType = room:GetType()
    repeat
        local ____switch21 = roomType
        local ____cond21 = ____switch21 == RoomType.TREASURE
        if ____cond21 then
            do
                self.v.run.pickupDataTreasureRooms:set(pickupIndex, pickupDescription)
                break
            end
        end
        ____cond21 = ____cond21 or ____switch21 == RoomType.BOSS
        if ____cond21 then
            do
                self.v.run.pickupDataBossRooms:set(pickupIndex, pickupDescription)
                break
            end
        end
        do
            do
                break
            end
        end
    until true
end
function PickupIndexCreation.prototype.getPostAscentPickupIndex(self, pickup)
    if not onAscent(nil) then
        return nil
    end
    local room = game:GetRoom()
    local roomType = room:GetType()
    repeat
        local ____switch27 = roomType
        local ____cond27 = ____switch27 == RoomType.TREASURE
        if ____cond27 then
            do
                return getStoredPickupIndex(nil, pickup, self.v.run.pickupDataTreasureRooms)
            end
        end
        ____cond27 = ____cond27 or ____switch27 == RoomType.BOSS
        if ____cond27 then
            do
                return getStoredPickupIndex(nil, pickup, self.v.run.pickupDataBossRooms)
            end
        end
        do
            do
                return nil
            end
        end
    until true
end
function PickupIndexCreation.prototype.getPickupIndex(self, pickup)
    local ptrHash = GetPtrHash(pickup)
    local pickupIndexInitial = self.v.room.pickupIndexes:get(ptrHash)
    if pickupIndexInitial == nil then
        self:trySetPickupIndex(pickup)
    end
    local pickupIndex = self.v.room.pickupIndexes:get(ptrHash)
    if pickupIndex == nil then
        local entityID = getEntityID(nil, pickup)
        error("Failed to generate a new pickup index for pickup: " .. entityID)
    end
    return pickupIndex
end
__TS__Decorate({Exported}, PickupIndexCreation.prototype, "getPickupIndex", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.PlayerInventory"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local arrayRemoveInPlace = ____array.arrayRemoveInPlace
local copyArray = ____array.copyArray
local getLastElement = ____array.getLastElement
local ____collectibles = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
local isActiveCollectible = ____collectibles.isActiveCollectible
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.PlayerInventory = __TS__Class()
local PlayerInventory = ____exports.PlayerInventory
PlayerInventory.name = "PlayerInventory"
__TS__ClassExtends(PlayerInventory, Feature)
function PlayerInventory.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {playersInventory = __TS__New(
        DefaultMap,
        function() return {} end
    )}}
    self.postCollectibleAdded = function(____, player, collectibleType)
        local inventory = defaultMapGetPlayer(nil, self.v.run.playersInventory, player, player)
        inventory[#inventory + 1] = collectibleType
    end
    self.postCollectibleRemoved = function(____, player, collectibleType)
        local inventory = defaultMapGetPlayer(nil, self.v.run.playersInventory, player, player)
        arrayRemoveInPlace(nil, inventory, collectibleType)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED, {self.postCollectibleAdded}}, {ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED, {self.postCollectibleRemoved}}}
end
function PlayerInventory.prototype.getPlayerInventory(self, player, includeActiveCollectibles)
    if includeActiveCollectibles == nil then
        includeActiveCollectibles = true
    end
    local inventory = defaultMapGetPlayer(nil, self.v.run.playersInventory, player, player)
    if includeActiveCollectibles then
        return copyArray(nil, inventory)
    end
    return __TS__ArrayFilter(
        inventory,
        function(____, collectibleType) return not isActiveCollectible(nil, collectibleType) end
    )
end
function PlayerInventory.prototype.getPlayerLastPassiveCollectible(self, player)
    local inventory = self:getPlayerInventory(player, false)
    return getLastElement(nil, inventory)
end
__TS__Decorate({Exported}, PlayerInventory.prototype, "getPlayerInventory", true)
__TS__Decorate({Exported}, PlayerInventory.prototype, "getPlayerLastPassiveCollectible", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.PonyDetection"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__ArraySome = ____lualib.__TS__ArraySome
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.src.functions.playerDataStructures")
local setAddPlayer = ____playerDataStructures.setAddPlayer
local setDeletePlayer = ____playerDataStructures.setDeletePlayer
local setHasPlayer = ____playerDataStructures.setHasPlayer
local ____playerIndex = require("lua_modules.isaacscript-common.dist.src.functions.playerIndex")
local getPlayers = ____playerIndex.getPlayers
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local FLAGS_WHEN_PONY_IS_ACTIVE = {EntityFlag.NO_KNOCKBACK, EntityFlag.NO_PHYSICS_KNOCKBACK, EntityFlag.NO_DAMAGE_BLINK}
____exports.PonyDetection = __TS__Class()
local PonyDetection = ____exports.PonyDetection
PonyDetection.name = "PonyDetection"
__TS__ClassExtends(PonyDetection, Feature)
function PonyDetection.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {playersIsPonyActive = __TS__New(Set)}}
    self.postPEffectUpdateReordered = function(____, player)
        local effects = player:GetEffects()
        local entityFlags = player:GetEntityFlags()
        local hasPonyCollectibleEffect = effects:HasCollectibleEffect(CollectibleType.PONY) or effects:HasCollectibleEffect(CollectibleType.WHITE_PONY)
        local isPonyActiveOnPreviousFrame = setHasPlayer(nil, self.v.run.playersIsPonyActive, player)
        local hasPonyFlags = hasFlag(
            nil,
            entityFlags,
            table.unpack(FLAGS_WHEN_PONY_IS_ACTIVE)
        )
        local isPonyActiveNow = hasPonyCollectibleEffect or isPonyActiveOnPreviousFrame and hasPonyFlags
        if isPonyActiveNow then
            setAddPlayer(nil, self.v.run.playersIsPonyActive, player)
        else
            setDeletePlayer(nil, self.v.run.playersIsPonyActive, player)
        end
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, {self.postPEffectUpdateReordered}}}
end
function PonyDetection.prototype.isPlayerUsingPony(self, player)
    return setHasPlayer(nil, self.v.run.playersIsPonyActive, player)
end
function PonyDetection.prototype.anyPlayerUsingPony(self)
    local players = getPlayers(nil)
    return __TS__ArraySome(
        players,
        function(____, player) return self:isPlayerUsingPony(player) end
    )
end
__TS__Decorate({Exported}, PonyDetection.prototype, "isPlayerUsingPony", true)
__TS__Decorate({Exported}, PonyDetection.prototype, "anyPlayerUsingPony", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.PreventChildEntities"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.PreventChildEntities = __TS__Class()
local PreventChildEntities = ____exports.PreventChildEntities
PreventChildEntities.name = "PreventChildEntities"
__TS__ClassExtends(PreventChildEntities, Feature)
function PreventChildEntities.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {room = {preventingEntities = __TS__New(Set)}}
    self.postNPCInit = function(____, npc)
        local spawnerEntityMatch = npc.SpawnerEntity ~= nil and self.v.room.preventingEntities:has(GetPtrHash(npc.SpawnerEntity))
        local parentMatch = npc.Parent ~= nil and self.v.room.preventingEntities:has(GetPtrHash(npc.Parent))
        if spawnerEntityMatch or parentMatch then
            npc:Remove()
        end
    end
    self.callbacksUsed = {{ModCallback.POST_NPC_INIT, {self.postNPCInit}}}
end
function PreventChildEntities.prototype.preventChildEntities(self, entity)
    local ptrHash = GetPtrHash(entity)
    self.v.room.preventingEntities:add(ptrHash)
end
__TS__Decorate({Exported}, PreventChildEntities.prototype, "preventChildEntities", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.PreventCollectibleRotation"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local getMapIndex
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____collectibles = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
local setCollectibleSubType = ____collectibles.setCollectibleSubType
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getEntityID = ____entities.getEntityID
local ____pickupVariants = require("lua_modules.isaacscript-common.dist.src.functions.pickupVariants")
local isCollectible = ____pickupVariants.isCollectible
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
function getMapIndex(self, collectible)
    local room = game:GetRoom()
    local gridIndex = room:GetGridIndex(collectible.Position)
    return (tostring(gridIndex) .. ",") .. tostring(collectible.InitSeed)
end
____exports.PreventCollectibleRotation = __TS__Class()
local PreventCollectibleRotation = ____exports.PreventCollectibleRotation
PreventCollectibleRotation.name = "PreventCollectibleRotation"
__TS__ClassExtends(PreventCollectibleRotation, Feature)
function PreventCollectibleRotation.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {room = {trackedCollectibles = __TS__New(Map)}}
    self.useCardSoulOfIsaac = function()
        self.v.room.trackedCollectibles:clear()
    end
    self.postPickupUpdateCollectible = function(____, pickup)
        local collectible = pickup
        self:checkCollectibleRotated(collectible)
    end
    self.callbacksUsed = {{ModCallback.POST_USE_CARD, {self.useCardSoulOfIsaac, CardType.SOUL_ISAAC}}, {ModCallback.POST_PICKUP_UPDATE, {self.postPickupUpdateCollectible, PickupVariant.COLLECTIBLE}}}
end
function PreventCollectibleRotation.prototype.checkCollectibleRotated(self, collectible)
    if collectible.SubType == CollectibleType.NULL then
        return
    end
    local index = getMapIndex(nil, collectible)
    local trackedCollectibleType = self.v.room.trackedCollectibles:get(index)
    if trackedCollectibleType ~= nil and collectible.SubType ~= trackedCollectibleType then
        setCollectibleSubType(nil, collectible, trackedCollectibleType)
    end
end
function PreventCollectibleRotation.prototype.preventCollectibleRotation(self, collectible, collectibleType)
    if not isCollectible(nil, collectible) then
        local entityID = getEntityID(nil, collectible)
        error("The \"preventCollectibleRotate\" function was given a non-collectible: " .. entityID)
    end
    local index = getMapIndex(nil, collectible)
    self.v.room.trackedCollectibles:set(index, collectibleType)
    self:checkCollectibleRotated(collectible)
end
__TS__Decorate({Exported}, PreventCollectibleRotation.prototype, "preventCollectibleRotation", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.PreventGridEntityRespawn"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local emptyArray = ____array.emptyArray
local ____gridEntities = require("lua_modules.isaacscript-common.dist.src.functions.gridEntities")
local getAllGridIndexes = ____gridEntities.getAllGridIndexes
local getGridEntities = ____gridEntities.getGridEntities
local removeGridEntity = ____gridEntities.removeGridEntity
local setGridEntityInvisible = ____gridEntities.setGridEntityInvisible
local spawnGridEntity = ____gridEntities.spawnGridEntity
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local getPlayerFromPtr = ____players.getPlayerFromPtr
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomListIndex = ____roomData.getRoomListIndex
local ____DefaultMap = require("lua_modules.isaacscript-common.dist.src.classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.PreventGridEntityRespawn = __TS__Class()
local PreventGridEntityRespawn = ____exports.PreventGridEntityRespawn
PreventGridEntityRespawn.name = "PreventGridEntityRespawn"
__TS__ClassExtends(PreventGridEntityRespawn, Feature)
function PreventGridEntityRespawn.prototype.____constructor(self, runInNFrames)
    Feature.prototype.____constructor(self)
    self.v = {
        level = {roomListIndexToDecorationGridIndexes = __TS__New(
            DefaultMap,
            function() return {} end
        )},
        room = {manuallyUsingShovel = false}
    }
    self.preUseItemWeNeedToGoDeeper = function(____, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData)
        if self.v.room.manuallyUsingShovel then
            return nil
        end
        local roomListIndex = getRoomListIndex(nil)
        if not self.v.level.roomListIndexToDecorationGridIndexes:has(roomListIndex) then
            return
        end
        local decorations = getGridEntities(nil, GridEntityType.DECORATION)
        for ____, decoration in ipairs(decorations) do
            removeGridEntity(nil, decoration, false)
        end
        local entityPtr = EntityPtr(player)
        self.runInNFrames:runNextGameFrame(function()
            local futurePlayer = getPlayerFromPtr(nil, entityPtr)
            if futurePlayer == nil then
                return
            end
            local futureRoomListIndex = getRoomListIndex(nil)
            if futureRoomListIndex ~= roomListIndex then
                return
            end
            self.v.room.manuallyUsingShovel = true
            futurePlayer:UseActiveItem(CollectibleType.WE_NEED_TO_GO_DEEPER)
            self.v.room.manuallyUsingShovel = false
            local decorationGridIndexes = self.v.level.roomListIndexToDecorationGridIndexes:getAndSetDefault(roomListIndex)
            emptyArray(nil, decorationGridIndexes)
            self:preventGridEntityRespawn()
        end)
        return true
    end
    self.postNewRoomReordered = function()
        self:setDecorationsInvisible()
    end
    self.featuresUsed = {ISCFeature.RUN_IN_N_FRAMES}
    self.callbacksUsed = {{ModCallback.PRE_USE_ITEM, {self.preUseItemWeNeedToGoDeeper, CollectibleType.WE_NEED_TO_GO_DEEPER}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_REORDERED, {self.postNewRoomReordered}}}
    self.runInNFrames = runInNFrames
end
function PreventGridEntityRespawn.prototype.setDecorationsInvisible(self)
    local room = game:GetRoom()
    local roomListIndex = getRoomListIndex(nil)
    local decorationGridIndexes = self.v.level.roomListIndexToDecorationGridIndexes:get(roomListIndex)
    if decorationGridIndexes == nil then
        return
    end
    for ____, gridIndex in ipairs(decorationGridIndexes) do
        local gridEntity = room:GetGridEntity(gridIndex)
        if gridEntity ~= nil then
            local gridEntityType = gridEntity:GetType()
            if gridEntityType == GridEntityType.DECORATION then
                setGridEntityInvisible(nil, gridEntity)
            end
        end
    end
end
function PreventGridEntityRespawn.prototype.preventGridEntityRespawn(self)
    local room = game:GetRoom()
    local roomListIndex = getRoomListIndex(nil)
    local decorationGridIndexes = self.v.level.roomListIndexToDecorationGridIndexes:getAndSetDefault(roomListIndex)
    for ____, gridIndex in ipairs(getAllGridIndexes(nil)) do
        do
            local existingGridEntity = room:GetGridEntity(gridIndex)
            if existingGridEntity ~= nil then
                goto __continue20
            end
            local decoration = spawnGridEntity(nil, GridEntityType.DECORATION, gridIndex)
            if decoration ~= nil then
                setGridEntityInvisible(nil, decoration)
            end
            decorationGridIndexes[#decorationGridIndexes + 1] = gridIndex
        end
        ::__continue20::
    end
end
__TS__Decorate({Exported}, PreventGridEntityRespawn.prototype, "preventGridEntityRespawn", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.RoomClearFrame"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.RoomClearFrame = __TS__Class()
local RoomClearFrame = ____exports.RoomClearFrame
RoomClearFrame.name = "RoomClearFrame"
__TS__ClassExtends(RoomClearFrame, Feature)
function RoomClearFrame.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {room = {roomClearGameFrame = nil, roomClearRoomFrame = nil}}
    self.postRoomClearChangedTrue = function()
        local gameFrameCount = game:GetFrameCount()
        local room = game:GetRoom()
        local roomFrameCount = room:GetFrameCount()
        self.v.room.roomClearGameFrame = gameFrameCount
        self.v.room.roomClearRoomFrame = roomFrameCount
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, {self.postRoomClearChangedTrue}}}
end
function RoomClearFrame.prototype.getRoomClearGameFrame(self)
    return self.v.room.roomClearGameFrame
end
function RoomClearFrame.prototype.getRoomClearRoomFrame(self)
    return self.v.room.roomClearGameFrame
end
__TS__Decorate({Exported}, RoomClearFrame.prototype, "getRoomClearGameFrame", true)
__TS__Decorate({Exported}, RoomClearFrame.prototype, "getRoomClearRoomFrame", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.RoomHistory"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local getLastElement = ____array.getLastElement
local ____dimensions = require("lua_modules.isaacscript-common.dist.src.functions.dimensions")
local getDimension = ____dimensions.getDimension
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomGridIndex = ____roomData.getRoomGridIndex
local getRoomListIndex = ____roomData.getRoomListIndex
local getRoomName = ____roomData.getRoomName
local getRoomStageID = ____roomData.getRoomStageID
local getRoomSubType = ____roomData.getRoomSubType
local getRoomVariant = ____roomData.getRoomVariant
local getRoomVisitedCount = ____roomData.getRoomVisitedCount
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.RoomHistory = __TS__Class()
local RoomHistory = ____exports.RoomHistory
RoomHistory.name = "RoomHistory"
__TS__ClassExtends(RoomHistory, Feature)
function RoomHistory.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {roomHistory = {}}}
    self.postNewRoomEarly = function()
        local level = game:GetLevel()
        local stage = level:GetStage()
        local stageType = level:GetStageType()
        local room = game:GetRoom()
        local roomType = room:GetType()
        local stageID = getRoomStageID(nil)
        local dimension = getDimension(nil)
        local roomVariant = getRoomVariant(nil)
        local roomSubType = getRoomSubType(nil)
        local roomName = getRoomName(nil)
        local roomGridIndex = getRoomGridIndex(nil)
        local roomListIndex = getRoomListIndex(nil)
        local roomVisitedCount = getRoomVisitedCount(nil)
        local roomDescription = {
            stage = stage,
            stageType = stageType,
            stageID = stageID,
            dimension = dimension,
            roomType = roomType,
            roomVariant = roomVariant,
            roomSubType = roomSubType,
            roomName = roomName,
            roomGridIndex = roomGridIndex,
            roomListIndex = roomListIndex,
            roomVisitedCount = roomVisitedCount
        }
        local ____self_v_run_roomHistory_0 = self.v.run.roomHistory
        ____self_v_run_roomHistory_0[#____self_v_run_roomHistory_0 + 1] = roomDescription
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_EARLY, {self.postNewRoomEarly}}}
end
function RoomHistory.prototype.getRoomHistory(self)
    return self.v.run.roomHistory
end
function RoomHistory.prototype.getPreviousRoomDescription(self)
    local previousRoomDescription = self.v.run.roomHistory[#self.v.run.roomHistory - 2 + 1]
    if previousRoomDescription ~= nil then
        return previousRoomDescription
    end
    local startingRoomDescription = self.v.run.roomHistory[1]
    if startingRoomDescription ~= nil then
        return startingRoomDescription
    end
    error("Failed to find a room description for any rooms thus far on this run.")
end
function RoomHistory.prototype.getLatestRoomDescription(self)
    return getLastElement(nil, self.v.run.roomHistory)
end
function RoomHistory.prototype.isLeavingRoom(self)
    local level = game:GetLevel()
    local stage = level:GetStage()
    local stageType = level:GetStageType()
    local roomListIndex = getRoomListIndex(nil)
    local roomVisitedCount = getRoomVisitedCount(nil)
    local latestRoomDescription = self:getLatestRoomDescription()
    if latestRoomDescription == nil then
        return false
    end
    return stage ~= latestRoomDescription.stage or stageType ~= latestRoomDescription.stageType or roomListIndex ~= latestRoomDescription.roomListIndex or roomVisitedCount ~= latestRoomDescription.roomVisitedCount
end
__TS__Decorate({Exported}, RoomHistory.prototype, "getRoomHistory", true)
__TS__Decorate({Exported}, RoomHistory.prototype, "getPreviousRoomDescription", true)
__TS__Decorate({Exported}, RoomHistory.prototype, "getLatestRoomDescription", true)
__TS__Decorate({Exported}, RoomHistory.prototype, "isLeavingRoom", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.RunInNFrames"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local ____exports = {}
local checkExecuteQueuedFunctions, checkExecuteIntervalFunctions
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local arrayRemoveInPlace = ____array.arrayRemoveInPlace
local ____run = require("lua_modules.isaacscript-common.dist.src.functions.run")
local restart = ____run.restart
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
function checkExecuteQueuedFunctions(self, frameCount, functionTuples)
    local firingFunctions = __TS__ArrayFilter(
        functionTuples,
        function(____, ____bindingPattern0)
            local frameCountToFire
            frameCountToFire = ____bindingPattern0[1]
            return frameCount >= frameCountToFire
        end
    )
    for ____, tuple in ipairs(firingFunctions) do
        local _frameCountToFire, func = table.unpack(tuple)
        func(nil)
        arrayRemoveInPlace(nil, functionTuples, tuple)
    end
end
function checkExecuteIntervalFunctions(self, frameCount, functionTuples)
    local firingFunctions = __TS__ArrayFilter(
        functionTuples,
        function(____, ____bindingPattern0)
            local frameCountToFire
            frameCountToFire = ____bindingPattern0[1]
            return frameCount >= frameCountToFire
        end
    )
    for ____, tuple in ipairs(firingFunctions) do
        local _frameCountToFire, func, numIntervalFrames = table.unpack(tuple)
        local returnValue = func(nil)
        arrayRemoveInPlace(nil, functionTuples, tuple)
        if returnValue then
            local nextFireFrame = frameCount + numIntervalFrames
            local newTuple = {nextFireFrame, func, numIntervalFrames}
            functionTuples[#functionTuples + 1] = newTuple
        end
    end
end
____exports.RunInNFrames = __TS__Class()
local RunInNFrames = ____exports.RunInNFrames
RunInNFrames.name = "RunInNFrames"
__TS__ClassExtends(RunInNFrames, Feature)
function RunInNFrames.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {queuedGameFunctionTuples = {}, queuedRenderFunctionTuples = {}, intervalGameFunctionTuples = {}, intervalRenderFunctionTuples = {}}}
    self.vConditionalFunc = function() return false end
    self.postUpdate = function()
        local gameFrameCount = game:GetFrameCount()
        checkExecuteQueuedFunctions(nil, gameFrameCount, self.v.run.queuedGameFunctionTuples)
        checkExecuteIntervalFunctions(nil, gameFrameCount, self.v.run.intervalGameFunctionTuples)
    end
    self.postRender = function()
        local renderFrameCount = Isaac.GetFrameCount()
        checkExecuteQueuedFunctions(nil, renderFrameCount, self.v.run.queuedRenderFunctionTuples)
        checkExecuteIntervalFunctions(nil, renderFrameCount, self.v.run.intervalRenderFunctionTuples)
    end
    self.callbacksUsed = {{ModCallback.POST_UPDATE, {self.postUpdate}}, {ModCallback.POST_RENDER, {self.postRender}}}
end
function RunInNFrames.prototype.restartNextRenderFrame(self, character)
    self:runNextRenderFrame(function()
        restart(nil, character)
    end)
end
function RunInNFrames.prototype.runInNGameFrames(self, func, gameFrames)
    local gameFrameCount = game:GetFrameCount()
    local functionFireFrame = gameFrameCount + gameFrames
    local tuple = {functionFireFrame, func}
    local ____self_v_run_queuedGameFunctionTuples_0 = self.v.run.queuedGameFunctionTuples
    ____self_v_run_queuedGameFunctionTuples_0[#____self_v_run_queuedGameFunctionTuples_0 + 1] = tuple
end
function RunInNFrames.prototype.runInNRenderFrames(self, func, renderFrames)
    local renderFrameCount = Isaac.GetFrameCount()
    local functionFireFrame = renderFrameCount + renderFrames
    local tuple = {functionFireFrame, func}
    local ____self_v_run_queuedRenderFunctionTuples_1 = self.v.run.queuedRenderFunctionTuples
    ____self_v_run_queuedRenderFunctionTuples_1[#____self_v_run_queuedRenderFunctionTuples_1 + 1] = tuple
end
function RunInNFrames.prototype.runNextGameFrame(self, func)
    self:runInNGameFrames(func, 1)
end
function RunInNFrames.prototype.runNextRenderFrame(self, func)
    self:runInNRenderFrames(func, 1)
end
function RunInNFrames.prototype.setIntervalGameFrames(self, func, gameFrames, runImmediately)
    local gameFrameCount = game:GetFrameCount()
    local functionFireFrame = gameFrameCount + gameFrames
    local tuple = {functionFireFrame, func, gameFrames}
    local ____self_v_run_intervalGameFunctionTuples_2 = self.v.run.intervalGameFunctionTuples
    ____self_v_run_intervalGameFunctionTuples_2[#____self_v_run_intervalGameFunctionTuples_2 + 1] = tuple
    if runImmediately then
        func(nil)
    end
end
function RunInNFrames.prototype.setIntervalRenderFrames(self, func, renderFrames, runImmediately)
    local renderFrameCount = Isaac.GetFrameCount()
    local functionFireFrame = renderFrameCount + renderFrames
    local tuple = {functionFireFrame, func, renderFrames}
    local ____self_v_run_intervalGameFunctionTuples_3 = self.v.run.intervalGameFunctionTuples
    ____self_v_run_intervalGameFunctionTuples_3[#____self_v_run_intervalGameFunctionTuples_3 + 1] = tuple
    if runImmediately then
        func(nil)
    end
end
__TS__Decorate({Exported}, RunInNFrames.prototype, "restartNextRenderFrame", true)
__TS__Decorate({Exported}, RunInNFrames.prototype, "runInNGameFrames", true)
__TS__Decorate({Exported}, RunInNFrames.prototype, "runInNRenderFrames", true)
__TS__Decorate({Exported}, RunInNFrames.prototype, "runNextGameFrame", true)
__TS__Decorate({Exported}, RunInNFrames.prototype, "runNextRenderFrame", true)
__TS__Decorate({Exported}, RunInNFrames.prototype, "setIntervalGameFrames", true)
__TS__Decorate({Exported}, RunInNFrames.prototype, "setIntervalRenderFrames", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.RunNextRoom"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____array = require("lua_modules.isaacscript-common.dist.src.functions.array")
local emptyArray = ____array.emptyArray
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
--- Using the "luamod" console command with a mod that has custom shaders can crash the game. A
-- simple fix for this is automatically applied to any upgraded mods. This method was originally
-- discovered by AgentCucco.
____exports.RunNextRoom = __TS__Class()
local RunNextRoom = ____exports.RunNextRoom
RunNextRoom.name = "RunNextRoom"
__TS__ClassExtends(RunNextRoom, Feature)
function RunNextRoom.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {queuedFunctions = {}}}
    self.postNewRoomReordered = function()
        for ____, func in ipairs(self.v.run.queuedFunctions) do
            func(nil)
        end
        emptyArray(nil, self.v.run.queuedFunctions)
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_REORDERED, {self.postNewRoomReordered}}}
end
function RunNextRoom.prototype.runNextRoom(self, func)
    local ____self_v_run_queuedFunctions_0 = self.v.run.queuedFunctions
    ____self_v_run_queuedFunctions_0[#____self_v_run_queuedFunctions_0 + 1] = func
end
__TS__Decorate({Exported}, RunNextRoom.prototype, "runNextRoom", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.SaveDataManager"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__TypeOf = ____lualib.__TS__TypeOf
local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____SaveDataKey = require("lua_modules.isaacscript-common.dist.src.enums.SaveDataKey")
local SaveDataKey = ____SaveDataKey.SaveDataKey
local ____SerializationType = require("lua_modules.isaacscript-common.dist.src.enums.SerializationType")
local SerializationType = ____SerializationType.SerializationType
local ____deepCopy = require("lua_modules.isaacscript-common.dist.src.functions.deepCopy")
local deepCopy = ____deepCopy.deepCopy
local ____stage = require("lua_modules.isaacscript-common.dist.src.functions.stage")
local onFirstFloor = ____stage.onFirstFloor
local ____tstlClass = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
local getTSTLClassName = ____tstlClass.getTSTLClassName
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isString = ____types.isString
local isTable = ____types.isTable
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ____glowingHourGlass = require("lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.glowingHourGlass")
local makeGlowingHourGlassBackup = ____glowingHourGlass.makeGlowingHourGlassBackup
local restoreGlowingHourGlassBackup = ____glowingHourGlass.restoreGlowingHourGlassBackup
local ____loadFromDisk = require("lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.loadFromDisk")
local loadFromDisk = ____loadFromDisk.loadFromDisk
local ____restoreDefaults = require("lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.restoreDefaults")
local restoreDefaultForFeatureKey = ____restoreDefaults.restoreDefaultForFeatureKey
local restoreDefaultsForAllFeaturesAndKeys = ____restoreDefaults.restoreDefaultsForAllFeaturesAndKeys
local restoreDefaultsForAllFeaturesKey = ____restoreDefaults.restoreDefaultsForAllFeaturesKey
local ____saveToDisk = require("lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.saveToDisk")
local saveToDisk = ____saveToDisk.saveToDisk
local NON_USER_DEFINED_CLASS_NAMES = __TS__New(Set, {"Map", "Set", "DefaultMap"})
____exports.SaveDataManager = __TS__Class()
local SaveDataManager = ____exports.SaveDataManager
SaveDataManager.name = "SaveDataManager"
__TS__ClassExtends(SaveDataManager, Feature)
function SaveDataManager.prototype.____constructor(self, mod)
    Feature.prototype.____constructor(self)
    self.saveDataMap = {}
    self.saveDataDefaultsMap = {}
    self.saveDataConditionalFuncMap = {}
    self.saveDataGlowingHourGlassMap = {}
    self.classConstructors = {}
    self.loadedDataOnThisRun = false
    self.restoreGlowingHourGlassDataOnNextRoom = false
    self.postUseItemGlowingHourGlass = function(____, _collectibleType, _rng, _player, _useFlags, _activeSlot, _customVarData)
        self.restoreGlowingHourGlassDataOnNextRoom = true
        return nil
    end
    self.postPlayerInit = function(____, _player)
        if self.loadedDataOnThisRun then
            return
        end
        self.loadedDataOnThisRun = true
        self.restoreGlowingHourGlassDataOnNextRoom = false
        loadFromDisk(nil, self.mod, self.saveDataMap, self.classConstructors)
        local gameFrameCount = game:GetFrameCount()
        local isContinued = gameFrameCount ~= 0
        if not isContinued then
            restoreDefaultsForAllFeaturesAndKeys(nil, self.saveDataMap, self.saveDataDefaultsMap)
        end
    end
    self.preGameExit = function()
        saveToDisk(nil, self.mod, self.saveDataMap, self.saveDataConditionalFuncMap)
        restoreDefaultsForAllFeaturesAndKeys(nil, self.saveDataMap, self.saveDataDefaultsMap)
        self.loadedDataOnThisRun = false
    end
    self.postNewLevel = function()
        restoreDefaultsForAllFeaturesKey(nil, self.saveDataMap, self.saveDataDefaultsMap, SaveDataKey.LEVEL)
        if not onFirstFloor(nil) then
            saveToDisk(nil, self.mod, self.saveDataMap, self.saveDataConditionalFuncMap)
        end
    end
    self.postNewRoomEarly = function()
        restoreDefaultsForAllFeaturesKey(nil, self.saveDataMap, self.saveDataDefaultsMap, SaveDataKey.ROOM)
        if self.restoreGlowingHourGlassDataOnNextRoom then
            self.restoreGlowingHourGlassDataOnNextRoom = false
            restoreGlowingHourGlassBackup(
                nil,
                self.saveDataMap,
                self.saveDataConditionalFuncMap,
                self.saveDataGlowingHourGlassMap,
                self.classConstructors
            )
        else
            makeGlowingHourGlassBackup(nil, self.saveDataMap, self.saveDataConditionalFuncMap, self.saveDataGlowingHourGlassMap)
        end
    end
    self.callbacksUsed = {{ModCallback.POST_USE_ITEM, {self.postUseItemGlowingHourGlass, CollectibleType.GLOWING_HOUR_GLASS}}, {ModCallback.POST_PLAYER_INIT, {self.postPlayerInit}}, {ModCallback.PRE_GAME_EXIT, {self.preGameExit}}, {ModCallback.POST_NEW_LEVEL, {self.postNewLevel}}}
    self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_EARLY, {self.postNewRoomEarly}}}
    self.mod = mod
end
function SaveDataManager.prototype.saveDataManager(self, key, v, conditionalFunc)
    if not isString(nil, key) then
        error("The save data manager requires that keys are strings. You tried to use a key of type: " .. __TS__TypeOf(key))
    end
    if self.saveDataMap[key] ~= nil then
        error("The save data manager is already managing save data for a key of: " .. key)
    end
    self:storeClassConstructorsFromObject(v)
    self.saveDataMap[key] = v
    if conditionalFunc == false then
        conditionalFunc = function() return false end
    end
    local saveDataKeys = __TS__ObjectKeys(v)
    if #saveDataKeys == 1 and saveDataKeys[1] == "room" then
        conditionalFunc = function() return false end
    end
    local saveDataCopy = deepCopy(nil, v, SerializationType.NONE, key)
    self.saveDataDefaultsMap[key] = saveDataCopy
    if conditionalFunc ~= nil then
        self.saveDataConditionalFuncMap[key] = conditionalFunc
    end
end
function SaveDataManager.prototype.storeClassConstructorsFromObject(self, luaMap)
    local tstlClassName = getTSTLClassName(nil, luaMap)
    if tstlClassName ~= nil and not NON_USER_DEFINED_CLASS_NAMES:has(tstlClassName) then
        self.classConstructors[tstlClassName] = luaMap
    end
    for _key, value in pairs(luaMap) do
        if isTable(nil, value) then
            self:storeClassConstructorsFromObject(value)
        end
    end
end
function SaveDataManager.prototype.saveDataManagerLoad(self)
    loadFromDisk(nil, self.mod, self.saveDataMap, self.classConstructors)
end
function SaveDataManager.prototype.saveDataManagerSave(self)
    saveToDisk(nil, self.mod, self.saveDataMap, self.saveDataConditionalFuncMap)
end
function SaveDataManager.prototype.saveDataManagerSetGlobal(self)
    g = self.saveDataMap
end
function SaveDataManager.prototype.saveDataManagerRegisterClass(self, ...)
    local tstlClasses = {...}
    for ____, tstlClass in ipairs(tstlClasses) do
        local name = tstlClass.name
        if name == nil then
            error("Failed to register a class with the save data manager due to not being able to derive the name of the class.")
        end
        self.classConstructors[name] = tstlClass
    end
end
function SaveDataManager.prototype.saveDataManagerRemove(self, key)
    if not isString(nil, key) then
        error("The save data manager requires that keys are strings. You tried to use a key of type: " .. __TS__TypeOf(key))
    end
    if not (self.saveDataMap[key] ~= nil) then
        error("The save data manager is not managing save data for a key of: " .. key)
    end
    self.saveDataMap[key] = nil
    self.saveDataDefaultsMap[key] = nil
    self.saveDataConditionalFuncMap[key] = nil
    self.saveDataGlowingHourGlassMap[key] = nil
end
function SaveDataManager.prototype.saveDataManagerReset(self, key, childObjectKey)
    if not isString(nil, key) then
        error("The save data manager requires that keys are strings. You tried to use a key of type: " .. __TS__TypeOf(key))
    end
    local saveData = self.saveDataMap[key]
    if saveData == nil then
        error("The save data manager is not managing save data for a key of: " .. key)
    end
    restoreDefaultForFeatureKey(
        nil,
        self.saveDataDefaultsMap,
        key,
        saveData,
        childObjectKey
    )
end
__TS__Decorate({Exported}, SaveDataManager.prototype, "saveDataManager", true)
__TS__Decorate({Exported}, SaveDataManager.prototype, "saveDataManagerLoad", true)
__TS__Decorate({Exported}, SaveDataManager.prototype, "saveDataManagerSave", true)
__TS__Decorate({Exported}, SaveDataManager.prototype, "saveDataManagerSetGlobal", true)
__TS__Decorate({Exported}, SaveDataManager.prototype, "saveDataManagerRegisterClass", true)
__TS__Decorate({Exported}, SaveDataManager.prototype, "saveDataManagerRemove", true)
__TS__Decorate({Exported}, SaveDataManager.prototype, "saveDataManagerReset", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.SaveDataKey"] = function(...) 
local ____exports = {}
--- These are the types of keys that you can put on the local variables that you feed to the save
-- data manager.
____exports.SaveDataKey = {}
____exports.SaveDataKey.PERSISTENT = "persistent"
____exports.SaveDataKey.RUN = "run"
____exports.SaveDataKey.LEVEL = "level"
____exports.SaveDataKey.ROOM = "room"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.glowingHourGlass"] = function(...) 
local ____exports = {}
local ____SaveDataKey = require("lua_modules.isaacscript-common.dist.src.enums.SaveDataKey")
local SaveDataKey = ____SaveDataKey.SaveDataKey
local ____SerializationType = require("lua_modules.isaacscript-common.dist.src.enums.SerializationType")
local SerializationType = ____SerializationType.SerializationType
local ____deepCopy = require("lua_modules.isaacscript-common.dist.src.functions.deepCopy")
local deepCopy = ____deepCopy.deepCopy
local ____merge = require("lua_modules.isaacscript-common.dist.src.functions.merge")
local merge = ____merge.merge
local ____table = require("lua_modules.isaacscript-common.dist.src.functions.table")
local iterateTableInOrder = ____table.iterateTableInOrder
local ____constants = require("lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.constants")
local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG
--- When the Glowing Hour Glass is used, certain save data keys will automatically be restored to a
-- backup.
local GLOWING_HOUR_GLASS_BACKUP_KEYS = {SaveDataKey.RUN, SaveDataKey.LEVEL}
local IGNORE_GLOWING_HOUR_GLASS_KEY = "__ignoreGlowingHourGlass"
function ____exports.makeGlowingHourGlassBackup(self, saveDataMap, saveDataConditionalFuncMap, saveDataGlowingHourGlassMap)
    iterateTableInOrder(
        nil,
        saveDataMap,
        function(____, subscriberName, saveData)
            local conditionalFunc = saveDataConditionalFuncMap[subscriberName]
            if conditionalFunc ~= nil then
                local shouldSave = conditionalFunc(nil)
                if not shouldSave then
                    return
                end
            end
            for ____, saveDataKey in ipairs(GLOWING_HOUR_GLASS_BACKUP_KEYS) do
                do
                    local childTable = saveData[saveDataKey]
                    if childTable == nil then
                        goto __continue6
                    end
                    local childTableLuaMap = childTable
                    if childTableLuaMap[IGNORE_GLOWING_HOUR_GLASS_KEY] ~= nil then
                        goto __continue6
                    end
                    local saveDataGlowingHourGlass = saveDataGlowingHourGlassMap[subscriberName]
                    if saveDataGlowingHourGlass == nil then
                        saveDataGlowingHourGlass = {}
                        saveDataGlowingHourGlassMap[subscriberName] = saveDataGlowingHourGlass
                    end
                    local copiedChildTable = deepCopy(nil, childTable, SerializationType.SERIALIZE)
                    saveDataGlowingHourGlass[saveDataKey] = copiedChildTable
                end
                ::__continue6::
            end
        end,
        SAVE_DATA_MANAGER_DEBUG
    )
end
function ____exports.restoreGlowingHourGlassBackup(self, saveDataMap, saveDataConditionalFuncMap, saveDataGlowingHourGlassMap, classConstructors)
    iterateTableInOrder(
        nil,
        saveDataMap,
        function(____, subscriberName, saveData)
            local conditionalFunc = saveDataConditionalFuncMap[subscriberName]
            if conditionalFunc ~= nil then
                local shouldSave = conditionalFunc(nil)
                if not shouldSave then
                    return
                end
            end
            for ____, saveDataKey in ipairs(GLOWING_HOUR_GLASS_BACKUP_KEYS) do
                do
                    local childTable = saveData[saveDataKey]
                    if childTable == nil then
                        goto __continue15
                    end
                    local childTableLuaMap = childTable
                    if childTableLuaMap[IGNORE_GLOWING_HOUR_GLASS_KEY] ~= nil then
                        goto __continue15
                    end
                    local saveDataGlowingHourGlass = saveDataGlowingHourGlassMap[subscriberName]
                    if saveDataGlowingHourGlass == nil then
                        goto __continue15
                    end
                    local childTableBackup = saveDataGlowingHourGlass[saveDataKey]
                    if childTableBackup == nil then
                        goto __continue15
                    end
                    merge(
                        nil,
                        childTable,
                        childTableBackup,
                        subscriberName .. "__glowingHourGlass",
                        classConstructors
                    )
                end
                ::__continue15::
            end
        end,
        SAVE_DATA_MANAGER_DEBUG
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.loadFromDisk"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__StringTrim = ____lualib.__TS__StringTrim
local ____exports = {}
local readSaveDatFile, tryLoadModData, DEFAULT_MOD_DATA
local ____jsonHelpers = require("lua_modules.isaacscript-common.dist.src.functions.jsonHelpers")
local jsonDecode = ____jsonHelpers.jsonDecode
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local ____logMisc = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
local logError = ____logMisc.logError
local ____merge = require("lua_modules.isaacscript-common.dist.src.functions.merge")
local merge = ____merge.merge
local ____table = require("lua_modules.isaacscript-common.dist.src.functions.table")
local iterateTableInOrder = ____table.iterateTableInOrder
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local isString = ____types.isString
local isTable = ____types.isTable
local ____constants = require("lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.constants")
local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG
function readSaveDatFile(self, mod)
    local renderFrameCount = Isaac.GetFrameCount()
    local ok, jsonStringOrErrMsg = pcall(tryLoadModData, mod)
    if not ok then
        logError(
            nil,
            (("Failed to read from the \"save#.dat\" file on render frame " .. tostring(renderFrameCount)) .. ": ") .. jsonStringOrErrMsg
        )
        return DEFAULT_MOD_DATA
    end
    if jsonStringOrErrMsg == nil then
        return DEFAULT_MOD_DATA
    end
    local jsonStringTrimmed = __TS__StringTrim(jsonStringOrErrMsg)
    if jsonStringTrimmed == "" then
        return DEFAULT_MOD_DATA
    end
    return jsonStringTrimmed
end
function tryLoadModData(mod)
    return mod:LoadData()
end
DEFAULT_MOD_DATA = "{}"
function ____exports.loadFromDisk(self, mod, oldSaveData, classConstructors)
    if not mod:HasData() then
        return
    end
    local jsonString = readSaveDatFile(nil, mod)
    local newSaveData = jsonDecode(nil, jsonString)
    if SAVE_DATA_MANAGER_DEBUG then
        log(nil, "Converted data from the \"save#.dat\" to a Lua table.")
    end
    iterateTableInOrder(
        nil,
        newSaveData,
        function(____, subscriberName, saveData)
            if not isString(nil, subscriberName) then
                return
            end
            if not isTable(nil, saveData) then
                return
            end
            local oldSaveDataForSubscriber = oldSaveData[subscriberName]
            if oldSaveDataForSubscriber == nil then
                return
            end
            if SAVE_DATA_MANAGER_DEBUG then
                log(nil, "Merging in stored data for feature: " .. subscriberName)
            end
            merge(
                nil,
                oldSaveDataForSubscriber,
                saveData,
                subscriberName,
                classConstructors
            )
        end,
        SAVE_DATA_MANAGER_DEBUG
    )
    log(nil, "The save data manager loaded data from the \"save#.dat\" file.")
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.jsonHelpers"] = function(...) 
local ____exports = {}
local jsonLua = require("lua_modules.isaacscript-common.src.lib.jsonLua")
local ____logMisc = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
local logError = ____logMisc.logError
local function tryDecode(jsonString)
    return jsonLua.decode(jsonString)
end
local function tryEncode(luaTable)
    return jsonLua.encode(luaTable)
end
--- Converts a JSON string to a Lua table.
-- 
-- In most cases, this function will be used for reading data from a "save#.dat" file. If decoding
-- fails, it will return a blank Lua table instead of throwing an error. (This allows execution to
-- continue in cases where users have no current save data or have manually removed their existing
-- save data.)
-- 
-- Under the hood, this uses a custom JSON parser that was measured to be 11.8 times faster than the
-- vanilla JSON parser.
function ____exports.jsonDecode(self, jsonString)
    local ok, luaTableOrErrMsg = pcall(tryDecode, jsonString)
    if not ok then
        logError(nil, "Failed to convert the JSON string to a Lua table: " .. jsonString)
        return {}
    end
    return luaTableOrErrMsg
end
--- Converts a Lua table to a JSON string.
-- 
-- In most cases, this function will be used for writing data to a "save#.dat" file. If encoding
-- fails, it will throw an error to prevent writing a blank string or corrupted data to a user's
-- "save#.dat" file.
-- 
-- Under the hood, this uses a custom JSON parser that was measured to be 11.8 times faster than the
-- vanilla JSON parser.
function ____exports.jsonEncode(self, luaTable)
    local ok, jsonStringOrErrMsg = pcall(tryEncode, luaTable)
    if not ok then
        error("Failed to convert the Lua table to JSON: " .. jsonStringOrErrMsg)
    end
    return jsonStringOrErrMsg
end
return ____exports
 end,
["lua_modules.isaacscript-common.src.lib.jsonLua"] = function(...) 
-- cspell:disable

--
-- json.lua
--
-- Copyright (c) 2020 rxi
--
-- Permission is hereby granted, free of charge, to any person obtaining a copy of
-- this software and associated documentation files (the "Software"), to deal in
-- the Software without restriction, including without limitation the rights to
-- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-- of the Software, and to permit persons to whom the Software is furnished to do
-- so, subject to the following conditions:
--
-- The above copyright notice and this permission notice shall be included in all
-- copies or substantial portions of the Software.
--
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-- SOFTWARE.
--

local json = { _version = "0.1.2" }

-------------------------------------------------------------------------------
-- Encode
-------------------------------------------------------------------------------

local encode

local escape_char_map = {
  [ "\\" ] = "\\",
  [ "\"" ] = "\"",
  [ "\b" ] = "b",
  [ "\f" ] = "f",
  [ "\n" ] = "n",
  [ "\r" ] = "r",
  [ "\t" ] = "t",
}

local escape_char_map_inv = { [ "/" ] = "/" }
for k, v in pairs(escape_char_map) do
  escape_char_map_inv[v] = k
end


local function escape_char(c)
  return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte()))
end


local function encode_nil(val)
  return "null"
end


local function encode_table(val, stack)
  local res = {}
  stack = stack or {}

  -- Circular reference?
  if stack[val] then error("circular reference") end

  stack[val] = true

  if rawget(val, 1) ~= nil or next(val) == nil then
    -- Treat as array -- check keys are valid and it is not sparse
    local n = 0
    for k in pairs(val) do
      if type(k) ~= "number" then
        error("invalid table: mixed or invalid key types")
      end
      n = n + 1
    end
    if n ~= #val then
      error("invalid table: sparse array")
    end
    -- Encode
    for i, v in ipairs(val) do
      table.insert(res, encode(v, stack))
    end
    stack[val] = nil
    return "[" .. table.concat(res, ",") .. "]"

  else
    -- Treat as an object
    for k, v in pairs(val) do
      if type(k) ~= "string" then
        error("invalid table: mixed or invalid key types")
      end
      table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
    end
    stack[val] = nil
    return "{" .. table.concat(res, ",") .. "}"
  end
end


local function encode_string(val)
  return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"'
end


local function encode_number(val)
  -- Check for NaN, -inf and inf
  if val ~= val or val <= -math.huge or val >= math.huge then
    error("unexpected number value '" .. tostring(val) .. "'")
  end
  return string.format("%.14g", val)
end


local type_func_map = {
  [ "nil"     ] = encode_nil,
  [ "table"   ] = encode_table,
  [ "string"  ] = encode_string,
  [ "number"  ] = encode_number,
  [ "boolean" ] = tostring,
}


encode = function(val, stack)
  local t = type(val)
  local f = type_func_map[t]
  if f then
    return f(val, stack)
  end
  error("unexpected type '" .. t .. "'")
end


function json.encode(val)
  return ( encode(val) )
end


-------------------------------------------------------------------------------
-- Decode
-------------------------------------------------------------------------------

local parse

local function create_set(...)
  local res = {}
  for i = 1, select("#", ...) do
    res[ select(i, ...) ] = true
  end
  return res
end

local space_chars   = create_set(" ", "\t", "\r", "\n")
local delim_chars   = create_set(" ", "\t", "\r", "\n", "]", "}", ",")
local escape_chars  = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u")
local literals      = create_set("true", "false", "null")

local literal_map = {
  [ "true"  ] = true,
  [ "false" ] = false,
  [ "null"  ] = nil,
}


local function next_char(str, idx, set, negate)
  for i = idx, #str do
    if set[str:sub(i, i)] ~= negate then
      return i
    end
  end
  return #str + 1
end


local function decode_error(str, idx, msg)
  local line_count = 1
  local col_count = 1
  for i = 1, idx - 1 do
    col_count = col_count + 1
    if str:sub(i, i) == "\n" then
      line_count = line_count + 1
      col_count = 1
    end
  end
  error( string.format("%s at line %d col %d", msg, line_count, col_count) )
end


local function codepoint_to_utf8(n)
  -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa
  local f = math.floor
  if n <= 0x7f then
    return string.char(n)
  elseif n <= 0x7ff then
    return string.char(f(n / 64) + 192, n % 64 + 128)
  elseif n <= 0xffff then
    return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128)
  elseif n <= 0x10ffff then
    return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128,
                       f(n % 4096 / 64) + 128, n % 64 + 128)
  end
  error( string.format("invalid unicode codepoint '%x'", n) )
end


local function parse_unicode_escape(s)
  local n1 = tonumber( s:sub(1, 4),  16 )
  local n2 = tonumber( s:sub(7, 10), 16 )
   -- Surrogate pair?
  if n2 then
    return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000)
  else
    return codepoint_to_utf8(n1)
  end
end


local function parse_string(str, i)
  local res = ""
  local j = i + 1
  local k = j

  while j <= #str do
    local x = str:byte(j)

    if x < 32 then
      decode_error(str, j, "control character in string")

    elseif x == 92 then -- `\`: Escape
      res = res .. str:sub(k, j - 1)
      j = j + 1
      local c = str:sub(j, j)
      if c == "u" then
        local hex = str:match("^[dD][89aAbB]%x%x\\u%x%x%x%x", j + 1)
                 or str:match("^%x%x%x%x", j + 1)
                 or decode_error(str, j - 1, "invalid unicode escape in string")
        res = res .. parse_unicode_escape(hex)
        j = j + #hex
      else
        if not escape_chars[c] then
          decode_error(str, j - 1, "invalid escape char '" .. c .. "' in string")
        end
        res = res .. escape_char_map_inv[c]
      end
      k = j + 1

    elseif x == 34 then -- `"`: End of string
      res = res .. str:sub(k, j - 1)
      return res, j + 1
    end

    j = j + 1
  end

  decode_error(str, i, "expected closing quote for string")
end


local function parse_number(str, i)
  local x = next_char(str, i, delim_chars)
  local s = str:sub(i, x - 1)
  local n = tonumber(s)
  if not n then
    decode_error(str, i, "invalid number '" .. s .. "'")
  end
  return n, x
end


local function parse_literal(str, i)
  local x = next_char(str, i, delim_chars)
  local word = str:sub(i, x - 1)
  if not literals[word] then
    decode_error(str, i, "invalid literal '" .. word .. "'")
  end
  return literal_map[word], x
end


local function parse_array(str, i)
  local res = {}
  local n = 1
  i = i + 1
  while 1 do
    local x
    i = next_char(str, i, space_chars, true)
    -- Empty / end of array?
    if str:sub(i, i) == "]" then
      i = i + 1
      break
    end
    -- Read token
    x, i = parse(str, i)
    res[n] = x
    n = n + 1
    -- Next token
    i = next_char(str, i, space_chars, true)
    local chr = str:sub(i, i)
    i = i + 1
    if chr == "]" then break end
    if chr ~= "," then decode_error(str, i, "expected ']' or ','") end
  end
  return res, i
end


local function parse_object(str, i)
  local res = {}
  i = i + 1
  while 1 do
    local key, val
    i = next_char(str, i, space_chars, true)
    -- Empty / end of object?
    if str:sub(i, i) == "}" then
      i = i + 1
      break
    end
    -- Read key
    if str:sub(i, i) ~= '"' then
      decode_error(str, i, "expected string for key")
    end
    key, i = parse(str, i)
    -- Read ':' delimiter
    i = next_char(str, i, space_chars, true)
    if str:sub(i, i) ~= ":" then
      decode_error(str, i, "expected ':' after key")
    end
    i = next_char(str, i + 1, space_chars, true)
    -- Read value
    val, i = parse(str, i)
    -- Set
    res[key] = val
    -- Next token
    i = next_char(str, i, space_chars, true)
    local chr = str:sub(i, i)
    i = i + 1
    if chr == "}" then break end
    if chr ~= "," then decode_error(str, i, "expected '}' or ','") end
  end
  return res, i
end


local char_func_map = {
  [ '"' ] = parse_string,
  [ "0" ] = parse_number,
  [ "1" ] = parse_number,
  [ "2" ] = parse_number,
  [ "3" ] = parse_number,
  [ "4" ] = parse_number,
  [ "5" ] = parse_number,
  [ "6" ] = parse_number,
  [ "7" ] = parse_number,
  [ "8" ] = parse_number,
  [ "9" ] = parse_number,
  [ "-" ] = parse_number,
  [ "t" ] = parse_literal,
  [ "f" ] = parse_literal,
  [ "n" ] = parse_literal,
  [ "[" ] = parse_array,
  [ "{" ] = parse_object,
}


parse = function(str, idx)
  local chr = str:sub(idx, idx)
  local f = char_func_map[chr]
  if f then
    return f(str, idx)
  end
  decode_error(str, idx, "unexpected character '" .. chr .. "'")
end


function json.decode(str)
  if type(str) ~= "string" then
    error("expected argument of type string, got " .. type(str))
  end
  local res, idx = parse(str, next_char(str, 1, space_chars, true))
  idx = next_char(str, idx, space_chars, true)
  if idx <= #str then
    decode_error(str, idx, "trailing garbage")
  end
  return res
end


return json
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.restoreDefaults"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local clearAndCopyAllElements, RESETTABLE_SAVE_DATA_KEYS
local ____SaveDataKey = require("lua_modules.isaacscript-common.dist.src.enums.SaveDataKey")
local SaveDataKey = ____SaveDataKey.SaveDataKey
local ____SerializationType = require("lua_modules.isaacscript-common.dist.src.enums.SerializationType")
local SerializationType = ____SerializationType.SerializationType
local ____deepCopy = require("lua_modules.isaacscript-common.dist.src.functions.deepCopy")
local deepCopy = ____deepCopy.deepCopy
local ____logMisc = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
local logError = ____logMisc.logError
local ____table = require("lua_modules.isaacscript-common.dist.src.functions.table")
local clearTable = ____table.clearTable
local iterateTableInOrder = ____table.iterateTableInOrder
local ____constants = require("lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.constants")
local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG
function ____exports.restoreDefaultsForAllFeaturesKey(self, saveDataMap, saveDataDefaultsMap, saveDataKey)
    iterateTableInOrder(
        nil,
        saveDataMap,
        function(____, subscriberName, saveData)
            ____exports.restoreDefaultForFeatureKey(
                nil,
                saveDataDefaultsMap,
                subscriberName,
                saveData,
                saveDataKey
            )
        end,
        SAVE_DATA_MANAGER_DEBUG
    )
end
function ____exports.restoreDefaultForFeatureKey(self, saveDataDefaultsMap, subscriberName, saveData, saveDataKey)
    if not RESETTABLE_SAVE_DATA_KEYS:has(saveDataKey) then
        error(("Failed to restore default values for a save data key of \"" .. saveDataKey) .. "\", since it is not on the allowed list of resettable save data keys.")
    end
    local childTable = saveData[saveDataKey]
    if childTable == nil then
        return
    end
    local saveDataDefaults = saveDataDefaultsMap[subscriberName]
    if saveDataDefaults == nil then
        logError(nil, "Failed to find the default copy of the save data for subscriber: " .. subscriberName)
        return
    end
    local childTableDefaults = saveDataDefaults[saveDataKey]
    if childTableDefaults == nil then
        logError(nil, ((("Failed to find the default copy of the child table \"" .. saveDataKey) .. "\" for subscriber \"") .. subscriberName) .. "\". This error usually means that your save data is out of date. You can try purging all of your save data by deleting the following directory: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Binding of Isaac Rebirth\\data")
        return
    end
    local childTableDefaultsCopy = deepCopy(nil, childTableDefaults, SerializationType.NONE, (subscriberName .. " --> ") .. saveDataKey)
    clearAndCopyAllElements(nil, childTable, childTableDefaultsCopy)
end
function clearAndCopyAllElements(self, oldTable, newTable)
    clearTable(nil, oldTable)
    for key, value in pairs(newTable) do
        oldTable[key] = value
    end
end
RESETTABLE_SAVE_DATA_KEYS = __TS__New(Set, {SaveDataKey.RUN, SaveDataKey.LEVEL, SaveDataKey.ROOM})
function ____exports.restoreDefaultsForAllFeaturesAndKeys(self, saveDataMap, saveDataDefaultsMap)
    for ____, saveDataKey in __TS__Iterator(RESETTABLE_SAVE_DATA_KEYS:values()) do
        ____exports.restoreDefaultsForAllFeaturesKey(nil, saveDataMap, saveDataDefaultsMap, saveDataKey)
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.saveToDisk"] = function(...) 
local ____exports = {}
local getAllSaveDataToWriteToDisk
local ____SerializationType = require("lua_modules.isaacscript-common.dist.src.enums.SerializationType")
local SerializationType = ____SerializationType.SerializationType
local ____deepCopy = require("lua_modules.isaacscript-common.dist.src.functions.deepCopy")
local deepCopy = ____deepCopy.deepCopy
local ____jsonHelpers = require("lua_modules.isaacscript-common.dist.src.functions.jsonHelpers")
local jsonEncode = ____jsonHelpers.jsonEncode
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local ____table = require("lua_modules.isaacscript-common.dist.src.functions.table")
local isTableEmpty = ____table.isTableEmpty
local iterateTableInOrder = ____table.iterateTableInOrder
local ____constants = require("lua_modules.isaacscript-common.dist.src.classes.features.other.saveDataManager.constants")
local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG
function getAllSaveDataToWriteToDisk(self, saveDataMap, saveDataConditionalFuncMap)
    local allSaveData = {}
    iterateTableInOrder(
        nil,
        saveDataMap,
        function(____, subscriberName, saveData)
            local conditionalFunc = saveDataConditionalFuncMap[subscriberName]
            if conditionalFunc ~= nil then
                local shouldSave = conditionalFunc(nil)
                if not shouldSave then
                    return
                end
            end
            local saveDataWithoutRoom = {persistent = saveData.persistent, run = saveData.run, level = saveData.level}
            if isTableEmpty(nil, saveDataWithoutRoom) then
                return
            end
            local saveDataCopy = deepCopy(nil, saveDataWithoutRoom, SerializationType.SERIALIZE, subscriberName)
            allSaveData[subscriberName] = saveDataCopy
        end,
        SAVE_DATA_MANAGER_DEBUG
    )
    return allSaveData
end
function ____exports.saveToDisk(self, mod, saveDataMap, saveDataConditionalFuncMap)
    local allSaveData = getAllSaveDataToWriteToDisk(nil, saveDataMap, saveDataConditionalFuncMap)
    local jsonString = jsonEncode(nil, allSaveData)
    mod:SaveData(jsonString)
    log(nil, "The save data manager wrote data to the \"save#.dat\" file.")
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.SpawnCollectible"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____collectibleTag = require("lua_modules.isaacscript-common.dist.src.functions.collectibleTag")
local isQuestCollectible = ____collectibleTag.isQuestCollectible
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local ____spawnCollectible = require("lua_modules.isaacscript-common.dist.src.functions.spawnCollectible")
local spawnCollectibleUnsafe = ____spawnCollectible.spawnCollectibleUnsafe
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.SpawnCollectible = __TS__Class()
local SpawnCollectible = ____exports.SpawnCollectible
SpawnCollectible.name = "SpawnCollectible"
__TS__ClassExtends(SpawnCollectible, Feature)
function SpawnCollectible.prototype.____constructor(self, preventCollectibleRotation)
    Feature.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.PREVENT_COLLECTIBLE_ROTATION}
    self.preventCollectibleRotation = preventCollectibleRotation
end
function SpawnCollectible.prototype.spawnCollectible(self, collectibleType, position, seedOrRNG, options, forceFreeItem, spawner)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if options == nil then
        options = false
    end
    if forceFreeItem == nil then
        forceFreeItem = false
    end
    local collectible = spawnCollectibleUnsafe(
        nil,
        collectibleType,
        position,
        seedOrRNG,
        options,
        forceFreeItem,
        spawner
    )
    if isQuestCollectible(nil, collectibleType) then
        self.preventCollectibleRotation:preventCollectibleRotation(collectible, collectibleType)
    end
    return collectible
end
function SpawnCollectible.prototype.spawnCollectibleFromPool(self, itemPoolType, position, seedOrRNG, options, forceFreeItem, spawner)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    if options == nil then
        options = false
    end
    if forceFreeItem == nil then
        forceFreeItem = false
    end
    local itemPool = game:GetItemPool()
    local collectibleType = itemPool:GetCollectible(itemPoolType)
    return self:spawnCollectible(
        collectibleType,
        position,
        seedOrRNG,
        options,
        forceFreeItem,
        spawner
    )
end
__TS__Decorate({Exported}, SpawnCollectible.prototype, "spawnCollectible", true)
__TS__Decorate({Exported}, SpawnCollectible.prototype, "spawnCollectibleFromPool", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.SpawnRockAltRewards"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
local CoinSubType = ____isaac_2Dtypescript_2Ddefinitions.CoinSubType
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType
local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType
local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____constants = require("lua_modules.isaacscript-common.dist.src.core.constants")
local DISTANCE_OF_GRID_TILE = ____constants.DISTANCE_OF_GRID_TILE
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____RockAltType = require("lua_modules.isaacscript-common.dist.src.enums.RockAltType")
local RockAltType = ____RockAltType.RockAltType
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local spawnEffectWithSeed = ____entitiesSpecific.spawnEffectWithSeed
local spawnNPCWithSeed = ____entitiesSpecific.spawnNPCWithSeed
local ____pickupsSpecific = require("lua_modules.isaacscript-common.dist.src.functions.pickupsSpecific")
local spawnCardWithSeed = ____pickupsSpecific.spawnCardWithSeed
local spawnCoinWithSeed = ____pickupsSpecific.spawnCoinWithSeed
local spawnHeartWithSeed = ____pickupsSpecific.spawnHeartWithSeed
local spawnPillWithSeed = ____pickupsSpecific.spawnPillWithSeed
local spawnTrinketWithSeed = ____pickupsSpecific.spawnTrinketWithSeed
local ____projectiles = require("lua_modules.isaacscript-common.dist.src.functions.projectiles")
local fireProjectilesInCircle = ____projectiles.fireProjectilesInCircle
local ____random = require("lua_modules.isaacscript-common.dist.src.functions.random")
local getRandom = ____random.getRandom
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local getRandomSeed = ____rng.getRandomSeed
local isRNG = ____rng.isRNG
local newRNG = ____rng.newRNG
local ____spawnCollectible = require("lua_modules.isaacscript-common.dist.src.functions.spawnCollectible")
local spawnCollectibleUnsafe = ____spawnCollectible.spawnCollectibleUnsafe
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local ____repeat = ____utils["repeat"]
local ____vector = require("lua_modules.isaacscript-common.dist.src.functions.vector")
local getRandomVector = ____vector.getRandomVector
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
local ROCK_ALT_CHANCES = {NOTHING = 0.68, BASIC_DROP = 0.0967, TRINKET = 0.025, COLLECTIBLE = 0.005}
local COIN_VELOCITY_MULTIPLIER = 2
--- Matches the vanilla value, according to Fly's decompilation.
local FIND_FREE_INITIAL_STEP = 70
--- Matches the vanilla value, according to Fly's decompilation.
local FART_RADIUS = DISTANCE_OF_GRID_TILE * 3
local POLYP_PROJECTILE_SPEED = 10
local POLYP_NUM_PROJECTILES = 6
____exports.SpawnRockAltRewards = __TS__Class()
local SpawnRockAltRewards = ____exports.SpawnRockAltRewards
SpawnRockAltRewards.name = "SpawnRockAltRewards"
__TS__ClassExtends(SpawnRockAltRewards, Feature)
function SpawnRockAltRewards.prototype.____constructor(self, itemPoolDetection)
    Feature.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.ITEM_POOL_DETECTION}
    self.itemPoolDetection = itemPoolDetection
end
function SpawnRockAltRewards.prototype.spawnRockAltReward(self, position, rockAltType, seedOrRNG)
    if seedOrRNG == nil then
        seedOrRNG = getRandomSeed(nil)
    end
    local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG)
    repeat
        local ____switch4 = rockAltType
        local ____cond4 = ____switch4 == RockAltType.URN
        if ____cond4 then
            do
                return self:spawnRockAltRewardUrn(position, rng)
            end
        end
        ____cond4 = ____cond4 or ____switch4 == RockAltType.MUSHROOM
        if ____cond4 then
            do
                return self:spawnRockAltRewardMushroom(position, rng)
            end
        end
        ____cond4 = ____cond4 or ____switch4 == RockAltType.SKULL
        if ____cond4 then
            do
                return self:spawnRockAltRewardSkull(position, rng)
            end
        end
        ____cond4 = ____cond4 or ____switch4 == RockAltType.POLYP
        if ____cond4 then
            do
                return self:spawnRockAltRewardPolyp(position, rng)
            end
        end
        ____cond4 = ____cond4 or ____switch4 == RockAltType.BUCKET_DOWNPOUR
        if ____cond4 then
            do
                return self:spawnRockAltRewardBucketDownpour(position, rng)
            end
        end
        ____cond4 = ____cond4 or ____switch4 == RockAltType.BUCKET_DROSS
        if ____cond4 then
            do
                return self:spawnRockAltRewardBucketDross(position, rng)
            end
        end
    until true
end
function SpawnRockAltRewards.prototype.spawnRockAltRewardUrn(self, position, rng)
    local room = game:GetRoom()
    local chance = getRandom(nil, rng)
    local totalChance = 0
    totalChance = totalChance + ROCK_ALT_CHANCES.NOTHING
    if chance < totalChance then
        return false
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.BASIC_DROP
    if chance < totalChance then
        local numCoinsChance = getRandom(nil, rng)
        local numCoins = numCoinsChance < 0.5 and 1 or 2
        ____repeat(
            nil,
            numCoins,
            function()
                local randomVector = getRandomVector(nil, rng)
                local velocity = randomVector * COIN_VELOCITY_MULTIPLIER
                spawnCoinWithSeed(
                    nil,
                    CoinSubType.NULL,
                    position,
                    rng,
                    velocity
                )
            end
        )
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.TRINKET
    if chance < totalChance then
        spawnTrinketWithSeed(nil, TrinketType.SWALLOWED_PENNY, position, rng)
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.COLLECTIBLE
    if chance < totalChance then
        local stillInPools = self.itemPoolDetection:isCollectibleInItemPool(CollectibleType.QUARTER, ItemPoolType.DEVIL)
        if stillInPools then
            spawnCollectibleUnsafe(nil, CollectibleType.QUARTER, position, rng)
            return true
        end
        return false
    end
    local numEnemiesChance = getRandom(nil, rng)
    local numEnemies = numEnemiesChance < 0.5 and 1 or 2
    ____repeat(
        nil,
        numEnemies,
        function()
            local targetPos = room:FindFreePickupSpawnPosition(position, FIND_FREE_INITIAL_STEP)
            EntityNPC.ThrowSpider(
                position,
                nil,
                targetPos,
                false,
                0
            )
        end
    )
    return true
end
function SpawnRockAltRewards.prototype.spawnRockAltRewardMushroom(self, position, rng)
    local room = game:GetRoom()
    local roomType = room:GetType()
    local chance = getRandom(nil, rng)
    local totalChance = 0
    totalChance = totalChance + ROCK_ALT_CHANCES.NOTHING
    if chance < totalChance then
        return false
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.BASIC_DROP
    if chance < totalChance then
        spawnPillWithSeed(nil, PillColor.NULL, position, rng)
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.TRINKET
    if chance < totalChance then
        spawnTrinketWithSeed(nil, TrinketType.LIBERTY_CAP, position, rng)
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.COLLECTIBLE
    if chance < totalChance then
        if roomType == RoomType.SECRET then
            local wavyCapChance = getRandom(nil, rng)
            if wavyCapChance < 0.0272 then
                local stillInPools = self.itemPoolDetection:isCollectibleInItemPool(CollectibleType.WAVY_CAP, ItemPoolType.SECRET)
                if stillInPools then
                    spawnCollectibleUnsafe(nil, CollectibleType.WAVY_CAP, position, rng)
                    return true
                end
            end
        end
        local magicMushroomStillInPools = self.itemPoolDetection:isCollectibleInItemPool(CollectibleType.MAGIC_MUSHROOM, ItemPoolType.TREASURE)
        local miniMushStillInPools = self.itemPoolDetection:isCollectibleInItemPool(CollectibleType.MINI_MUSH, ItemPoolType.TREASURE)
        if magicMushroomStillInPools and miniMushStillInPools then
            local collectibleChance = getRandom(nil, rng)
            local collectibleType = collectibleChance < 0.5 and CollectibleType.MAGIC_MUSHROOM or CollectibleType.MINI_MUSH
            spawnCollectibleUnsafe(nil, collectibleType, position, rng)
            return true
        end
        if magicMushroomStillInPools then
            spawnCollectibleUnsafe(nil, CollectibleType.MINI_MUSH, position, rng)
            return true
        end
        if miniMushStillInPools then
            spawnCollectibleUnsafe(nil, CollectibleType.MAGIC_MUSHROOM, position, rng)
            return true
        end
        return false
    end
    game:Fart(position)
    game:ButterBeanFart(position, FART_RADIUS, nil)
    return true
end
function SpawnRockAltRewards.prototype.spawnRockAltRewardSkull(self, position, rng)
    local chance = getRandom(nil, rng)
    local totalChance = 0
    totalChance = totalChance + ROCK_ALT_CHANCES.NOTHING
    if chance < totalChance then
        return false
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.BASIC_DROP
    if chance < totalChance then
        spawnCardWithSeed(nil, CardType.NULL, position, rng)
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.TRINKET
    if chance < totalChance then
        spawnHeartWithSeed(nil, HeartSubType.BLACK, position, rng)
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.COLLECTIBLE
    if chance < totalChance then
        local ghostBabyStillInPools = self.itemPoolDetection:isCollectibleInItemPool(CollectibleType.GHOST_BABY, ItemPoolType.TREASURE)
        local dryBabyStillInPools = self.itemPoolDetection:isCollectibleInItemPool(CollectibleType.DRY_BABY, ItemPoolType.TREASURE)
        if ghostBabyStillInPools and dryBabyStillInPools then
            local collectibleChance = getRandom(nil, rng)
            local collectibleType = collectibleChance < 0.5 and CollectibleType.GHOST_BABY or CollectibleType.DRY_BABY
            spawnCollectibleUnsafe(nil, collectibleType, position, rng)
            return true
        end
        if ghostBabyStillInPools then
            spawnCollectibleUnsafe(nil, CollectibleType.DRY_BABY, position, rng)
            return true
        end
        if dryBabyStillInPools then
            spawnCollectibleUnsafe(nil, CollectibleType.GHOST_BABY, position, rng)
            return true
        end
        return false
    end
    spawnNPCWithSeed(
        nil,
        EntityType.HOST,
        0,
        0,
        position,
        rng
    )
    return true
end
function SpawnRockAltRewards.prototype.spawnRockAltRewardPolyp(self, position, rng)
    local chance = getRandom(nil, rng)
    local totalChance = 0
    totalChance = totalChance + ROCK_ALT_CHANCES.NOTHING
    if chance < totalChance then
        return false
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.BASIC_DROP
    if chance < totalChance then
        spawnHeartWithSeed(nil, HeartSubType.NULL, position, rng)
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.TRINKET
    if chance < totalChance then
        spawnTrinketWithSeed(nil, TrinketType.UMBILICAL_CORD, position, rng)
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.COLLECTIBLE
    if chance < totalChance then
        local placentaStillInPools = self.itemPoolDetection:isCollectibleInItemPool(CollectibleType.PLACENTA, ItemPoolType.BOSS)
        local bloodClotStillInPools = self.itemPoolDetection:isCollectibleInItemPool(CollectibleType.BLOOD_CLOT, ItemPoolType.BOSS)
        if placentaStillInPools and bloodClotStillInPools then
            local collectibleChance = getRandom(nil, rng)
            local collectibleType = collectibleChance < 0.5 and CollectibleType.PLACENTA or CollectibleType.BLOOD_CLOT
            spawnCollectibleUnsafe(nil, collectibleType, position, rng)
            return true
        end
        if placentaStillInPools then
            spawnCollectibleUnsafe(nil, CollectibleType.PLACENTA, position, rng)
            return true
        end
        if bloodClotStillInPools then
            spawnCollectibleUnsafe(nil, CollectibleType.BLOOD_CLOT, position, rng)
            return true
        end
        return false
    end
    spawnEffectWithSeed(
        nil,
        EffectVariant.CREEP_RED,
        0,
        position,
        rng
    )
    fireProjectilesInCircle(
        nil,
        nil,
        position,
        POLYP_PROJECTILE_SPEED,
        POLYP_NUM_PROJECTILES
    )
    return true
end
function SpawnRockAltRewards.prototype.spawnRockAltRewardBucketDownpour(self, position, rng)
    local room = game:GetRoom()
    local chance = getRandom(nil, rng)
    local totalChance = 0
    totalChance = totalChance + ROCK_ALT_CHANCES.NOTHING
    if chance < totalChance then
        return false
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.BASIC_DROP
    if chance < totalChance then
        local numCoinsChance = getRandom(nil, rng)
        local numCoins = numCoinsChance < 0.5 and 1 or 2
        ____repeat(
            nil,
            numCoins,
            function()
                local randomVector = getRandomVector(nil, rng)
                local velocity = randomVector * COIN_VELOCITY_MULTIPLIER
                spawnCoinWithSeed(
                    nil,
                    CoinSubType.NULL,
                    position,
                    rng,
                    velocity
                )
            end
        )
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.TRINKET
    if chance < totalChance then
        spawnTrinketWithSeed(nil, TrinketType.SWALLOWED_PENNY, position, rng)
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.COLLECTIBLE
    if chance < totalChance then
        local stillInPools = self.itemPoolDetection:isCollectibleInItemPool(CollectibleType.LEECH, ItemPoolType.TREASURE)
        if stillInPools then
            spawnCollectibleUnsafe(nil, CollectibleType.LEECH, position, rng)
            return true
        end
        return false
    end
    local enemiesChance = getRandom(nil, rng)
    local entityType = enemiesChance < 0.5 and EntityType.SPIDER or EntityType.SMALL_LEECH
    local numEnemiesChance = getRandom(nil, rng)
    local numEnemies = numEnemiesChance < 0.5 and 1 or 2
    ____repeat(
        nil,
        numEnemies,
        function()
            local targetPos = room:FindFreePickupSpawnPosition(position, FIND_FREE_INITIAL_STEP)
            local spider = EntityNPC.ThrowSpider(
                position,
                nil,
                targetPos,
                false,
                0
            )
            if entityType == EntityType.SMALL_LEECH and spider.Type ~= entityType then
                spider:Morph(entityType, 0, 0, -1)
            end
        end
    )
    return true
end
function SpawnRockAltRewards.prototype.spawnRockAltRewardBucketDross(self, position, rng)
    local room = game:GetRoom()
    local chance = getRandom(nil, rng)
    local totalChance = 0
    totalChance = totalChance + ROCK_ALT_CHANCES.NOTHING
    if chance < totalChance then
        return false
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.BASIC_DROP
    if chance < totalChance then
        local numCoinsChance = getRandom(nil, rng)
        local numCoins = numCoinsChance < 0.5 and 1 or 2
        ____repeat(
            nil,
            numCoins,
            function()
                local randomVector = getRandomVector(nil, rng)
                local velocity = randomVector * COIN_VELOCITY_MULTIPLIER
                spawnCoinWithSeed(
                    nil,
                    CoinSubType.NULL,
                    position,
                    rng,
                    velocity
                )
            end
        )
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.TRINKET
    if chance < totalChance then
        spawnTrinketWithSeed(nil, TrinketType.BUTT_PENNY, position, rng)
        return true
    end
    totalChance = totalChance + ROCK_ALT_CHANCES.COLLECTIBLE
    if chance < totalChance then
        local stillInPools = self.itemPoolDetection:isCollectibleInItemPool(CollectibleType.POOP, ItemPoolType.TREASURE)
        if stillInPools then
            spawnCollectibleUnsafe(nil, CollectibleType.POOP, position, rng)
            return true
        end
        return false
    end
    local enemiesChance = getRandom(nil, rng)
    local entityType = enemiesChance < 0.5 and EntityType.DRIP or EntityType.SMALL_LEECH
    local numEnemiesChance = getRandom(nil, rng)
    local numEnemies = numEnemiesChance < 0.5 and 1 or 2
    ____repeat(
        nil,
        numEnemies,
        function()
            local targetPos = room:FindFreePickupSpawnPosition(position, FIND_FREE_INITIAL_STEP)
            local spider = EntityNPC.ThrowSpider(
                position,
                nil,
                targetPos,
                false,
                0
            )
            spider:Morph(entityType, 0, 0, -1)
        end
    )
    return true
end
__TS__Decorate({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltReward", true)
__TS__Decorate({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardUrn", true)
__TS__Decorate({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardMushroom", true)
__TS__Decorate({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardSkull", true)
__TS__Decorate({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardPolyp", true)
__TS__Decorate({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardBucketDownpour", true)
__TS__Decorate({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardBucketDross", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.projectiles"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ProjectilesMode = ____isaac_2Dtypescript_2Ddefinitions.ProjectilesMode
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local getFilteredNewEntities = ____entities.getFilteredNewEntities
local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.entitiesSpecific")
local getProjectiles = ____entitiesSpecific.getProjectiles
local spawnNPC = ____entitiesSpecific.spawnNPC
--- Helper function to make an NPC fire one or more projectiles. Returns the fired projectile(s).
-- 
-- Use this function instead of the `EntityNPC.FireProjectiles` method if you need to modify or
-- access the `EntityProjectile` objects after they are fired, since this function returns the
-- objects in an array.
-- 
-- @param npc The NPC to fire the projectile(s) from. You can also pass undefined if you do not want
-- the projectile(s) to come from anything in particular.
-- @param position The staring position of the projectile(s).
-- @param velocity The starting velocity of the projectile(s).
-- @param projectilesMode Optional. The mode of the projectile(s). Default is
-- `ProjectilesMode.ONE_PROJECTILE`.
-- @param projectileParams Optional. The parameters of the projectile(s). Default is
-- `ProjectileParams()`.
-- @returns The fired projectile(s).
function ____exports.fireProjectiles(self, npc, position, velocity, projectilesMode, projectileParams)
    if projectilesMode == nil then
        projectilesMode = ProjectilesMode.ONE_PROJECTILE
    end
    if projectileParams == nil then
        projectileParams = ProjectileParams()
    end
    local oldProjectiles = getProjectiles(nil, projectileParams.Variant)
    local spawnedFly = false
    if npc == nil then
        spawnedFly = true
        npc = spawnNPC(
            nil,
            EntityType.FLY,
            0,
            0,
            position
        )
        npc.Visible = false
        npc:ClearEntityFlags(EntityFlag.APPEAR)
    end
    npc:FireProjectiles(position, velocity, projectilesMode, projectileParams)
    local newProjectiles = getProjectiles(nil, projectileParams.Variant)
    if spawnedFly then
        npc:Remove()
    end
    return getFilteredNewEntities(nil, oldProjectiles, newProjectiles)
end
--- Helper function to spawn projectiles in a circle around a position. Under the hood, this
-- leverages `ProjectileMode.N_PROJECTILES_IN_CIRCLE`.
-- 
-- @param npc The NPC to fire the projectile(s) from. You can also pass undefined if you do not want
-- the projectile(s) to come from anything in particular.
-- @param position The staring position of the projectile(s).
-- @param speed The speed of the projectile(s).
-- @param numProjectiles The amount of projectiles to spawn.
-- @returns The fired projectile(s).
function ____exports.fireProjectilesInCircle(self, npc, position, speed, numProjectiles)
    local velocity = Vector(speed, numProjectiles)
    return ____exports.fireProjectiles(
        nil,
        npc,
        position,
        velocity,
        ProjectilesMode.N_PROJECTILES_IN_CIRCLE
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.StageHistory"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__ArraySome = ____lualib.__TS__ArraySome
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local GameStateFlag = ____isaac_2Dtypescript_2Ddefinitions.GameStateFlag
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.src.enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____nextStage = require("lua_modules.isaacscript-common.dist.src.functions.nextStage")
local getNextStage = ____nextStage.getNextStage
local getNextStageType = ____nextStage.getNextStageType
local ____stage = require("lua_modules.isaacscript-common.dist.src.functions.stage")
local calculateStageType = ____stage.calculateStageType
local onRepentanceStage = ____stage.onRepentanceStage
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
____exports.StageHistory = __TS__Class()
local StageHistory = ____exports.StageHistory
StageHistory.name = "StageHistory"
__TS__ClassExtends(StageHistory, Feature)
function StageHistory.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {stageHistory = {}}}
    self.postNewLevelReordered = function()
        local level = game:GetLevel()
        local stage = level:GetStage()
        local stageType = level:GetStageType()
        local ____self_v_run_stageHistory_0 = self.v.run.stageHistory
        ____self_v_run_stageHistory_0[#____self_v_run_stageHistory_0 + 1] = {stage, stageType}
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_LEVEL_REORDERED, {self.postNewLevelReordered}}}
end
function StageHistory.prototype.getNextStageTypeWithHistory(self, upwards)
    if upwards == nil then
        upwards = false
    end
    local backwardsPath = game:GetStateFlag(GameStateFlag.BACKWARDS_PATH)
    if not backwardsPath then
        return getNextStageType(nil, upwards)
    end
    local level = game:GetLevel()
    local stage = level:GetStage()
    local repentanceStage = onRepentanceStage(nil)
    local visitedDownpour1 = self:hasVisitedStage(LevelStage.BASEMENT_1, StageType.REPENTANCE)
    local visitedDross1 = self:hasVisitedStage(LevelStage.BASEMENT_1, StageType.REPENTANCE_B)
    local visitedDownpour2 = self:hasVisitedStage(LevelStage.BASEMENT_2, StageType.REPENTANCE)
    local visitedDross2 = self:hasVisitedStage(LevelStage.BASEMENT_2, StageType.REPENTANCE_B)
    local visitedMines1 = self:hasVisitedStage(LevelStage.CAVES_1, StageType.REPENTANCE)
    local visitedAshpit1 = self:hasVisitedStage(LevelStage.CAVES_1, StageType.REPENTANCE_B)
    local visitedMines2 = self:hasVisitedStage(LevelStage.DEPTHS_2, StageType.REPENTANCE)
    local visitedAshpit2 = self:hasVisitedStage(LevelStage.DEPTHS_2, StageType.REPENTANCE_B)
    if stage == LevelStage.BASEMENT_2 and repentanceStage then
        if visitedDownpour1 then
            return StageType.REPENTANCE
        end
        if visitedDross1 then
            return StageType.REPENTANCE_B
        end
    end
    if stage == LevelStage.CAVES_1 and repentanceStage then
        if visitedDownpour2 then
            return StageType.REPENTANCE
        end
        if visitedDross2 then
            return StageType.REPENTANCE_B
        end
    end
    if stage == LevelStage.CAVES_2 and not repentanceStage then
        if visitedDownpour2 then
            return StageType.REPENTANCE
        end
        if visitedDross2 then
            return StageType.REPENTANCE_B
        end
    end
    if stage == LevelStage.CAVES_2 and repentanceStage then
        if visitedMines1 then
            return StageType.REPENTANCE
        end
        if visitedAshpit1 then
            return StageType.REPENTANCE_B
        end
    end
    if stage == LevelStage.DEPTHS_2 and not repentanceStage then
        if visitedAshpit2 then
            return StageType.REPENTANCE_B
        end
        if visitedMines2 then
            return StageType.REPENTANCE
        end
    end
    local nextStage = self:getNextStageWithHistory()
    return calculateStageType(nil, nextStage)
end
function StageHistory.prototype.getNextStageWithHistory(self)
    local backwardsPath = game:GetStateFlag(GameStateFlag.BACKWARDS_PATH)
    if not backwardsPath then
        return getNextStage(nil)
    end
    local level = game:GetLevel()
    local stage = level:GetStage()
    local repentanceStage = onRepentanceStage(nil)
    local visitedDownpour1 = self:hasVisitedStage(LevelStage.BASEMENT_1, StageType.REPENTANCE)
    local visitedDross1 = self:hasVisitedStage(LevelStage.BASEMENT_1, StageType.REPENTANCE_B)
    local visitedDownpour2 = self:hasVisitedStage(LevelStage.BASEMENT_2, StageType.REPENTANCE)
    local visitedDross2 = self:hasVisitedStage(LevelStage.BASEMENT_2, StageType.REPENTANCE_B)
    local visitedMines1 = self:hasVisitedStage(LevelStage.CAVES_1, StageType.REPENTANCE)
    local visitedAshpit1 = self:hasVisitedStage(LevelStage.CAVES_1, StageType.REPENTANCE_B)
    local visitedMines2 = self:hasVisitedStage(LevelStage.DEPTHS_2, StageType.REPENTANCE)
    local visitedAshpit2 = self:hasVisitedStage(LevelStage.DEPTHS_2, StageType.REPENTANCE_B)
    if stage == LevelStage.BASEMENT_1 then
        if repentanceStage then
            return LevelStage.BASEMENT_1
        end
        return LevelStage.HOME
    end
    if stage == LevelStage.BASEMENT_2 then
        if repentanceStage then
            if visitedDownpour1 or visitedDross1 then
                return LevelStage.BASEMENT_1
            end
            return LevelStage.BASEMENT_2
        end
        return LevelStage.BASEMENT_1
    end
    if stage == LevelStage.CAVES_1 then
        if repentanceStage then
            if visitedDownpour2 or visitedDross2 then
                return LevelStage.BASEMENT_2
            end
            return LevelStage.CAVES_1
        end
        return LevelStage.BASEMENT_2
    end
    if stage == LevelStage.CAVES_2 then
        if repentanceStage then
            if visitedMines1 or visitedAshpit1 then
                return LevelStage.CAVES_1
            end
            return LevelStage.CAVES_2
        end
        return LevelStage.CAVES_1
    end
    if stage == LevelStage.DEPTHS_1 then
        if repentanceStage then
            if visitedMines2 or visitedAshpit2 then
                return LevelStage.CAVES_2
            end
            return LevelStage.DEPTHS_1
        end
        return LevelStage.CAVES_2
    end
    if stage == LevelStage.DEPTHS_2 then
        if repentanceStage then
            return LevelStage.DEPTHS_2
        end
        return LevelStage.DEPTHS_1
    end
    return asNumber(nil, stage) - 1
end
function StageHistory.prototype.getStageHistory(self)
    return self.v.run.stageHistory
end
function StageHistory.prototype.hasVisitedStage(self, stage, stageType)
    if stageType == nil then
        return __TS__ArraySome(
            self.v.run.stageHistory,
            function(____, ____bindingPattern0)
                local previousStage
                previousStage = ____bindingPattern0[1]
                return previousStage == stage
            end
        )
    end
    return __TS__ArraySome(
        self.v.run.stageHistory,
        function(____, ____bindingPattern0)
            local previousStageType
            local previousStage
            previousStage = ____bindingPattern0[1]
            previousStageType = ____bindingPattern0[2]
            return previousStage == stage and previousStageType == stageType
        end
    )
end
__TS__Decorate({Exported}, StageHistory.prototype, "getNextStageTypeWithHistory", true)
__TS__Decorate({Exported}, StageHistory.prototype, "getNextStageWithHistory", true)
__TS__Decorate({Exported}, StageHistory.prototype, "getStageHistory", true)
__TS__Decorate({Exported}, StageHistory.prototype, "hasVisitedStage", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.nextStage"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local GameStateFlag = ____isaac_2Dtypescript_2Ddefinitions.GameStateFlag
local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomGridIndex = ____roomData.getRoomGridIndex
local ____stage = require("lua_modules.isaacscript-common.dist.src.functions.stage")
local calculateStageType = ____stage.calculateStageType
local calculateStageTypeRepentance = ____stage.calculateStageTypeRepentance
local onRepentanceStage = ____stage.onRepentanceStage
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
--- Helper function to get the stage that a trapdoor or heaven door would take the player to, based
-- on the current stage, room, and game state flags.
-- 
-- If you want to account for the player having visited Repentance floors in The Ascent, use the
-- `getNextStageUsingHistory` helper function instead (from the stage history feature). Handling
-- this requires stateful tracking as the player progresses through the run.
function ____exports.getNextStage(self)
    local level = game:GetLevel()
    local backwardsPath = game:GetStateFlag(GameStateFlag.BACKWARDS_PATH)
    local mausoleumHeartKilled = game:GetStateFlag(GameStateFlag.MAUSOLEUM_HEART_KILLED)
    local stage = level:GetStage()
    local repentanceStage = onRepentanceStage(nil)
    local roomGridIndex = getRoomGridIndex(nil)
    if backwardsPath then
        return asNumber(nil, stage) - 1
    end
    repeat
        local ____switch4 = roomGridIndex
        local ____cond4 = ____switch4 == GridRoom.BLUE_WOMB
        if ____cond4 then
            do
                return LevelStage.BLUE_WOMB
            end
        end
        ____cond4 = ____cond4 or ____switch4 == GridRoom.THE_VOID
        if ____cond4 then
            do
                return LevelStage.THE_VOID
            end
        end
        ____cond4 = ____cond4 or ____switch4 == GridRoom.SECRET_EXIT
        if ____cond4 then
            do
                if repentanceStage then
                    return asNumber(nil, stage) + 1
                end
                if stage == LevelStage.DEPTHS_2 then
                    return LevelStage.DEPTHS_2
                end
                return stage
            end
        end
    until true
    if repentanceStage and stage == LevelStage.BASEMENT_2 then
        return LevelStage.CAVES_2
    end
    if repentanceStage and stage == LevelStage.CAVES_2 then
        return LevelStage.DEPTHS_2
    end
    if repentanceStage and stage == LevelStage.DEPTHS_2 then
        if mausoleumHeartKilled then
            return LevelStage.WOMB_1
        end
        return LevelStage.WOMB_2
    end
    if stage == LevelStage.WOMB_2 then
        return LevelStage.SHEOL_CATHEDRAL
    end
    if stage == LevelStage.DARK_ROOM_CHEST then
        return LevelStage.DARK_ROOM_CHEST
    end
    if stage == LevelStage.THE_VOID then
        return LevelStage.THE_VOID
    end
    return asNumber(nil, stage) + 1
end
--- Helper function to get the stage type that a trapdoor or heaven door would take the player to,
-- based on the current stage, room, and game state flags.
-- 
-- If you want to account for previous floors visited on The Ascent, use the
-- `getNextStageTypeUsingHistory` helper function instead (from the stage history feature). Handling
-- this requires stateful tracking as the player progresses through the run.
-- 
-- @param upwards Whether or not the player should go up to Cathedral in the case of being on Womb
-- 2. Default is false.
function ____exports.getNextStageType(self, upwards)
    if upwards == nil then
        upwards = false
    end
    local backwardsPath = game:GetStateFlag(GameStateFlag.BACKWARDS_PATH)
    local mausoleumHeartKilled = game:GetStateFlag(GameStateFlag.MAUSOLEUM_HEART_KILLED)
    local level = game:GetLevel()
    local stage = level:GetStage()
    local stageType = level:GetStageType()
    local repentanceStage = onRepentanceStage(nil)
    local roomGridIndex = getRoomGridIndex(nil)
    local nextStage = ____exports.getNextStage(nil)
    if backwardsPath then
        return calculateStageType(nil, nextStage)
    end
    if roomGridIndex == asNumber(nil, GridRoom.SECRET_EXIT) then
        return calculateStageTypeRepentance(nil, nextStage)
    end
    if repentanceStage and (stage == LevelStage.BASEMENT_1 or stage == LevelStage.CAVES_1 or stage == LevelStage.DEPTHS_1 or stage == LevelStage.WOMB_1) then
        return calculateStageTypeRepentance(nil, nextStage)
    end
    if repentanceStage and stage == LevelStage.DEPTHS_2 and mausoleumHeartKilled then
        return calculateStageTypeRepentance(nil, nextStage)
    end
    if nextStage == LevelStage.BLUE_WOMB then
        return StageType.ORIGINAL
    end
    if nextStage == LevelStage.SHEOL_CATHEDRAL then
        if upwards then
            return StageType.WRATH_OF_THE_LAMB
        end
        return StageType.ORIGINAL
    end
    if nextStage == LevelStage.DARK_ROOM_CHEST then
        if stageType == StageType.ORIGINAL then
            return StageType.ORIGINAL
        end
        return StageType.WRATH_OF_THE_LAMB
    end
    if nextStage == LevelStage.THE_VOID then
        return StageType.ORIGINAL
    end
    if nextStage == LevelStage.HOME then
        return StageType.ORIGINAL
    end
    return calculateStageType(nil, nextStage)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.StartAmbush"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local SackSubType = ____isaac_2Dtypescript_2Ddefinitions.SackSubType
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____ISCFeature = require("lua_modules.isaacscript-common.dist.src.enums.ISCFeature")
local ISCFeature = ____ISCFeature.ISCFeature
local ____entities = require("lua_modules.isaacscript-common.dist.src.functions.entities")
local removeEntities = ____entities.removeEntities
local ____pickupsSpecific = require("lua_modules.isaacscript-common.dist.src.functions.pickupsSpecific")
local getCoins = ____pickupsSpecific.getCoins
local spawnSackWithSeed = ____pickupsSpecific.spawnSackWithSeed
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
--- Hard-coding this makes it easier to clean up the pickups afterwards.
local SACK_SEED_THAT_SPAWNS_TWO_COINS = 6
____exports.StartAmbush = __TS__Class()
local StartAmbush = ____exports.StartAmbush
StartAmbush.name = "StartAmbush"
__TS__ClassExtends(StartAmbush, Feature)
function StartAmbush.prototype.____constructor(self, runInNFrames)
    Feature.prototype.____constructor(self)
    self.featuresUsed = {ISCFeature.RUN_IN_N_FRAMES}
    self.runInNFrames = runInNFrames
end
function StartAmbush.prototype.startAmbush(self)
    local player = Isaac.GetPlayer()
    local sack = spawnSackWithSeed(nil, SackSubType.NULL, player.Position, SACK_SEED_THAT_SPAWNS_TWO_COINS)
    local sprite = sack:GetSprite()
    sprite:Stop()
    local sackPtr = EntityPtr(sack)
    self.runInNFrames:runNextGameFrame(function()
        local futureSack = sackPtr.Ref
        if futureSack == nil then
            return
        end
        futureSack:Remove()
        local sackPtrHash = GetPtrHash(futureSack)
        local coins = getCoins(nil)
        local coinsFromSack = __TS__ArrayFilter(
            coins,
            function(____, pickup) return pickup.SpawnerEntity ~= nil and GetPtrHash(pickup.SpawnerEntity) == sackPtrHash end
        )
        removeEntities(nil, coinsFromSack)
    end)
end
__TS__Decorate({Exported}, StartAmbush.prototype, "startAmbush", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.classes.features.other.TaintedLazarusPlayers"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local ____decorators = require("lua_modules.isaacscript-common.dist.src.decorators")
local Exported = ____decorators.Exported
local ____logMisc = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
local logError = ____logMisc.logError
local ____Feature = require("lua_modules.isaacscript-common.dist.src.classes.private.Feature")
local Feature = ____Feature.Feature
--- This feature provides a way for end-users to get the `EntityPlayer` object for the other Tainted
-- Lazarus.
____exports.TaintedLazarusPlayers = __TS__Class()
local TaintedLazarusPlayers = ____exports.TaintedLazarusPlayers
TaintedLazarusPlayers.name = "TaintedLazarusPlayers"
__TS__ClassExtends(TaintedLazarusPlayers, Feature)
function TaintedLazarusPlayers.prototype.____constructor(self)
    Feature.prototype.____constructor(self)
    self.v = {run = {
        queuedTaintedLazarus = {},
        queuedDeadTaintedLazarus = {},
        subPlayerMap = __TS__New(Map)
    }}
    self.vConditionalFunc = function() return false end
    self.postPlayerInit = function(____, player)
        local character = player:GetPlayerType()
        if character == PlayerType.LAZARUS_B then
            local ____self_v_run_queuedTaintedLazarus_0 = self.v.run.queuedTaintedLazarus
            ____self_v_run_queuedTaintedLazarus_0[#____self_v_run_queuedTaintedLazarus_0 + 1] = player
        elseif character == PlayerType.LAZARUS_2_B then
            local ____self_v_run_queuedDeadTaintedLazarus_1 = self.v.run.queuedDeadTaintedLazarus
            ____self_v_run_queuedDeadTaintedLazarus_1[#____self_v_run_queuedDeadTaintedLazarus_1 + 1] = player
        else
            return
        end
        self:checkDequeue()
    end
    self.callbacksUsed = {{ModCallback.POST_PLAYER_INIT, {self.postPlayerInit}}}
end
function TaintedLazarusPlayers.prototype.checkDequeue(self)
    if #self.v.run.queuedTaintedLazarus == 0 or #self.v.run.queuedDeadTaintedLazarus == 0 then
        return
    end
    local taintedLazarus = table.remove(self.v.run.queuedTaintedLazarus, 1)
    local deadTaintedLazarus = table.remove(self.v.run.queuedDeadTaintedLazarus, 1)
    if taintedLazarus == nil or deadTaintedLazarus == nil then
        return
    end
    local taintedLazarusPtrHash = GetPtrHash(taintedLazarus)
    local deadTaintedLazarusPtrHash = GetPtrHash(deadTaintedLazarus)
    if taintedLazarusPtrHash == deadTaintedLazarusPtrHash then
        logError(nil, "Failed to cache the Tainted Lazarus player objects, since the hash for Tainted Lazarus and Dead Tainted Lazarus were the same.")
        return
    end
    self.v.run.subPlayerMap:set(taintedLazarusPtrHash, deadTaintedLazarus)
    self.v.run.subPlayerMap:set(deadTaintedLazarusPtrHash, taintedLazarus)
end
function TaintedLazarusPlayers.prototype.getTaintedLazarusSubPlayer(self, player)
    local ptrHash = GetPtrHash(player)
    return self.v.run.subPlayerMap:get(ptrHash)
end
__TS__Decorate({Exported}, TaintedLazarusPlayers.prototype, "getTaintedLazarusSubPlayer", true)
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.debugFunctions"] = function(...) 
local ____exports = {}
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
--- Players can boot the game with an launch option called "--luadebug", which will enable additional
-- functionality that is considered to be unsafe. For more information about this flag, see the
-- wiki: https://bindingofisaacrebirth.fandom.com/wiki/Launch_Options
-- 
-- When this flag is enabled, the global environment will be slightly different. The differences are
-- documented here: https://wofsauge.github.io/IsaacDocs/rep/Globals.html
-- 
-- This function uses the `package` global variable as a proxy to determine if the "--luadebug" flag
-- is enabled or not.
-- 
-- Note that this function will return false if the Racing+ sandbox is enabled, even if the
-- "--luadebug" flag is really turned on. If checking for this case is needed, check for the
-- presence of the `sandboxGetTraceback` function.
function ____exports.isLuaDebugEnabled(self)
    return _G.package ~= nil
end
--- Helper function to get the current time for benchmarking / profiling purposes.
-- 
-- The return value will either be in seconds or milliseconds, depending on if the "--luadebug" flag
-- is turned on or not.
-- 
-- If the "--luadebug" flag is present, then this function will use the `socket.gettime` method,
-- which returns the epoch timestamp in seconds (e.g. "1640320492.5779"). This is preferable over
-- the more conventional `Isaac.GetTime` method, since it has one extra decimal point of precision.
-- 
-- If the "--luadebug" flag is not present, then this function will use the `Isaac.GetTime` method,
-- which returns the number of milliseconds since the computer's operating system was started (e.g.
-- "739454963").
-- 
-- @param useSocketIfAvailable Optional. Whether to use the `socket.gettime` method, if available.
-- Default is true. If set to false, the `Isaac.GetTime()` method will
-- always be used.
function ____exports.getTime(self, useSocketIfAvailable)
    if useSocketIfAvailable == nil then
        useSocketIfAvailable = true
    end
    if useSocketIfAvailable then
        if SandboxGetTime ~= nil then
            return SandboxGetTime()
        end
        if ____exports.isLuaDebugEnabled(nil) then
            local ok, requiredSocket = pcall(require, "socket")
            if ok then
                local socket = requiredSocket
                return socket.gettime()
            end
        end
    end
    return Isaac.GetTime()
end
--- Helper function to get a stack trace.
-- 
-- This will only work if the `--luadebug` launch option is enabled or the Racing+ sandbox is
-- enabled.
function ____exports.getTraceback(self)
    if SandboxGetTraceback ~= nil then
        return SandboxGetTraceback()
    end
    if debug ~= nil then
        return debug.traceback()
    end
    return "stack traceback:\n(the \"--luadebug\" flag is not enabled)"
end
--- Helper function to print a stack trace to the "log.txt" file, similar to JavaScript's
-- `console.trace` function.
-- 
-- This will only work if the `--luadebug` launch option is enabled or the Racing+ sandbox is
-- enabled.
function ____exports.traceback(self)
    local tracebackOutput = ____exports.getTraceback(nil)
    log(nil, tracebackOutput)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.core.upgradeMod"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local initOptionalFeatures
local ____ModUpgradedBase = require("lua_modules.isaacscript-common.dist.src.classes.ModUpgradedBase")
local ModUpgradedBase = ____ModUpgradedBase.ModUpgradedBase
local ____patchErrorFunctions = require("lua_modules.isaacscript-common.dist.src.patchErrorFunctions")
local patchErrorFunction = ____patchErrorFunctions.patchErrorFunction
local ____shaderCrashFix = require("lua_modules.isaacscript-common.dist.src.shaderCrashFix")
local applyShaderCrashFix = ____shaderCrashFix.applyShaderCrashFix
function initOptionalFeatures(self, mod, features)
    for ____, feature in ipairs(features) do
        local exportedMethodTuples = mod.initOptionalFeature(mod, feature)
        local modRecord = mod
        for ____, ____value in ipairs(exportedMethodTuples) do
            local funcName = ____value[1]
            local func = ____value[2]
            modRecord[funcName] = func
        end
    end
end
--- Use this function to enable the custom callbacks and other optional features provided by
-- `isaacscript-common`.
-- 
-- For example:
-- 
-- ```ts
-- const modVanilla = RegisterMod("My Mod", 1);
-- const mod = upgradeMod(modVanilla);
-- 
-- // Subscribe to vanilla callbacks.
-- mod.AddCallback(ModCallback.POST_UPDATE, postUpdate);
-- 
-- // Subscribe to custom callbacks.
-- mod.AddCallbackCustom(ModCallbackCustom.POST_ITEM_PICKUP, postItemPickup);
-- ```
-- 
-- @param modVanilla The mod object returned by the `RegisterMod` function.
-- @param features Optional. An array containing the optional standard library features that you
-- want to enable, if any. Default is an empty array.
-- @param debug Optional. Whether to log additional output when a callback is fired. Default is
-- false.
-- @param timeThreshold Optional. If provided, will only log callbacks that take longer than the
-- specified number of seconds (if the "--luadebug" launch flag is turned on)
-- or milliseconds (if the "--luadebug" launch flag is turned off).
-- @returns The upgraded mod object.
function ____exports.upgradeMod(self, modVanilla, features, ____debug, timeThreshold)
    if features == nil then
        features = {}
    end
    if ____debug == nil then
        ____debug = false
    end
    patchErrorFunction(nil)
    local mod = __TS__New(ModUpgradedBase, modVanilla, ____debug, timeThreshold)
    applyShaderCrashFix(nil, mod)
    initOptionalFeatures(nil, mod, features)
    return mod
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.patchErrorFunctions"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__StringSplit = ____lualib.__TS__StringSplit
local __TS__StringIncludes = ____lualib.__TS__StringIncludes
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local ____exports = {}
local errorWithTraceback, slimTracebackOutput, removeLinesContaining, LINE_SEPARATOR, USELESS_TRACEBACK_MESSAGES, vanillaError
local ____debugFunctions = require("lua_modules.isaacscript-common.dist.src.functions.debugFunctions")
local getTraceback = ____debugFunctions.getTraceback
local isLuaDebugEnabled = ____debugFunctions.isLuaDebugEnabled
function errorWithTraceback(message, level)
    if vanillaError == nil then
        error(message, level)
    end
    if level == nil then
        level = 1
    end
    local tracebackOutput = getTraceback(nil)
    local slimmedTracebackOutput = slimTracebackOutput(nil, tracebackOutput)
    message = message .. "\n"
    message = message .. slimmedTracebackOutput
    return vanillaError(message, level + 1)
end
function slimTracebackOutput(self, tracebackOutput)
    for ____, msg in ipairs(USELESS_TRACEBACK_MESSAGES) do
        tracebackOutput = removeLinesContaining(nil, tracebackOutput, msg)
    end
    return tracebackOutput
end
function removeLinesContaining(self, msg, containsMsg)
    local lines = __TS__StringSplit(msg, LINE_SEPARATOR)
    local linesThatDontContain = __TS__ArrayFilter(
        lines,
        function(____, line) return not __TS__StringIncludes(line, containsMsg) end
    )
    return table.concat(linesThatDontContain, LINE_SEPARATOR or ",")
end
LINE_SEPARATOR = "\n"
USELESS_TRACEBACK_MESSAGES = {"in upvalue 'getTraceback'", "in function 'sandbox.GetTraceback'", "in function 'error'"}
--- In Lua, the `error` function will tell you the line number of the error, but not give you a full
-- traceback of the parent functions, which is unlike how JavaScript works. This function monkey
-- patches the `error` function to add this functionality.
-- 
-- Traceback functionality can only be added if the "--luadebug" flag is turned on, so this function
-- does nothing if the "--luadebug" flag is disabled.
function ____exports.patchErrorFunction(self)
    if not isLuaDebugEnabled(nil) then
        return
    end
    if __PATCHED_ERROR ~= nil then
        return
    end
    __PATCHED_ERROR = true
    vanillaError = error
    error = errorWithTraceback
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.shaderCrashFix"] = function(...) 
local ____exports = {}
local postPlayerInit
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
function postPlayerInit(self, _player)
    local players = Isaac.FindByType(EntityType.PLAYER)
    if #players == 0 then
        Isaac.ExecuteCommand("reloadshaders")
    end
end
--- Using the "luamod" console command with a mod that has custom shaders can crash the game. A
-- simple fix for this is automatically applied to any upgraded mods. This method was originally
-- discovered by AgentCucco.
-- 
-- This code is not put inside of a feature class because we want it to apply to every upgraded mod,
-- but we do not want to have any mandatory features. Mandatory features are confusing for end-users
-- since the type of their upgraded mod would contain features that they did not explicitly enable.
function ____exports.applyShaderCrashFix(self, mod)
    mod:AddCallback(ModCallback.POST_PLAYER_INIT, postPlayerInit)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.enums.PocketItemType"] = function(...) 
local ____exports = {}
--- This is used in the various pocket item helper functions.
____exports.PocketItemType = {}
____exports.PocketItemType.EMPTY = 0
____exports.PocketItemType[____exports.PocketItemType.EMPTY] = "EMPTY"
____exports.PocketItemType.CARD = 1
____exports.PocketItemType[____exports.PocketItemType.CARD] = "CARD"
____exports.PocketItemType.PILL = 2
____exports.PocketItemType[____exports.PocketItemType.PILL] = "PILL"
____exports.PocketItemType.ACTIVE_ITEM = 3
____exports.PocketItemType[____exports.PocketItemType.ACTIVE_ITEM] = "ACTIVE_ITEM"
____exports.PocketItemType.DICE_BAG_DICE = 4
____exports.PocketItemType[____exports.PocketItemType.DICE_BAG_DICE] = "DICE_BAG_DICE"
____exports.PocketItemType.UNDETERMINABLE = 5
____exports.PocketItemType[____exports.PocketItemType.UNDETERMINABLE] = "UNDETERMINABLE"
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.arrayLua"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach
local __TS__ArrayIncludes = ____lualib.__TS__ArrayIncludes
local __TS__ArrayJoin = ____lualib.__TS__ArrayJoin
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__ArraySome = ____lualib.__TS__ArraySome
local ____exports = {}
--- Helper function for non-TypeScript users to check if every element in the array is equal to a
-- condition.
-- 
-- Internally, this just calls `array.every`.
function ____exports.every(self, array, func)
    return __TS__ArrayEvery(array, func)
end
--- Helper function for non-TypeScript users to filter the elements in an array. Returns the filtered
-- array.
-- 
-- Internally, this just calls `array.filter`.
function ____exports.filter(self, array, func)
    return __TS__ArrayFilter(array, func)
end
--- Helper function for non-TypeScript users to find an element in an array.
-- 
-- Internally, this just calls `array.find`.
function ____exports.find(self, array, func)
    return __TS__ArrayFind(array, func)
end
--- Helper function for non-TypeScript users to iterate over an array.
-- 
-- Internally, this just calls `array.forEach`.
function ____exports.forEach(self, array, func)
    __TS__ArrayForEach(array, func)
end
--- Helper function for non-TypeScript users to check if an element is in an array.
-- 
-- Since this takes O(N) time, using this function is usually a mistake, since you can use a `Set`
-- data structure to get O(1) lookups.
-- 
-- Internally, this just calls `array.includes`.
function ____exports.includes(self, array, element)
    return __TS__ArrayIncludes(array, element)
end
--- Helper function for non-TypeScript users to convert an array to a string with the specified
-- separator.
-- 
-- Internally, this just calls `array.join`.
function ____exports.join(self, array, separator)
    return __TS__ArrayJoin(array, separator)
end
--- Helper function for non-TypeScript users to convert all of the elements in an array to something
-- else.
-- 
-- Internally, this just calls `array.map`.
function ____exports.map(self, array, func)
    return __TS__ArrayMap(array, func)
end
--- Helper function for non-TypeScript users to check if one or more elements in the array is equal
-- to a condition.
-- 
-- Internally, this just calls `array.some`.
function ____exports.some(self, array, func)
    return __TS__ArraySome(array, func)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.benchmark"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach
local ____exports = {}
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
--- Helper function to benchmark the performance of a function.
-- 
-- This function is variadic, which means that you can supply as many functions as you want to
-- benchmark.
-- 
-- This function uses the `Isaac.GetTime` method to record how long the function took to execute.
-- This method only reports time in milliseconds. For this reason, if you are benchmarking smaller
-- functions, then you should provide a very high value for the number of trials.
-- 
-- @returns An array containing the average time in milliseconds for each function. (This will also
-- be printed to the log.)
function ____exports.benchmark(self, numTrials, ...)
    local functions = {...}
    log(
        nil,
        ((("Benchmarking " .. tostring(#functions)) .. " function(s) with ") .. tostring(numTrials)) .. " trials."
    )
    local averages = {}
    __TS__ArrayForEach(
        functions,
        function(____, func, i)
            local totalTimeMilliseconds = 0
            do
                local j = 0
                while j < numTrials do
                    local startTimeMilliseconds = Isaac.GetTime()
                    func(nil)
                    local endTimeMilliseconds = Isaac.GetTime()
                    local elapsedTimeMilliseconds = endTimeMilliseconds - startTimeMilliseconds
                    totalTimeMilliseconds = totalTimeMilliseconds + elapsedTimeMilliseconds
                    j = j + 1
                end
            end
            local averageTimeMilliseconds = totalTimeMilliseconds / numTrials
            log(
                nil,
                ((("The average time of the function at index " .. tostring(i)) .. " is: ") .. tostring(averageTimeMilliseconds)) .. " milliseconds"
            )
            averages[#averages + 1] = averageTimeMilliseconds
        end
    )
    return averages
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.bombs"] = function(...) 
local ____exports = {}
--- Helper function to find out how large a bomb explosion is based on the damage inflicted.
function ____exports.getBombRadiusFromDamage(self, damage)
    if damage > 175 then
        return 105
    end
    if damage <= 140 then
        return 75
    end
    return 90
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.challenges"] = function(...) 
local ____exports = {}
local ____challengeNames = require("lua_modules.isaacscript-common.dist.src.objects.challengeNames")
local CHALLENGE_NAMES = ____challengeNames.CHALLENGE_NAMES
local DEFAULT_CHALLENGE_NAME = ____challengeNames.DEFAULT_CHALLENGE_NAME
--- Get the proper name for a `Challenge` enum. This will only work for vanilla challenges.
function ____exports.getChallengeName(self, challenge)
    local challengeName = CHALLENGE_NAMES[challenge]
    return challengeName == nil and DEFAULT_CHALLENGE_NAME or challengeName
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.challengeNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge
____exports.DEFAULT_CHALLENGE_NAME = "Unknown"
____exports.CHALLENGE_NAMES = {
    [Challenge.NULL] = ____exports.DEFAULT_CHALLENGE_NAME,
    [Challenge.PITCH_BLACK] = "Pitch Black",
    [Challenge.HIGH_BROW] = "High Brow",
    [Challenge.HEAD_TRAUMA] = "Head Trauma",
    [Challenge.DARKNESS_FALLS] = "Darkness Falls",
    [Challenge.THE_TANK] = "The Tank",
    [Challenge.SOLAR_SYSTEM] = "Solar System",
    [Challenge.SUICIDE_KING] = "Suicide King",
    [Challenge.CAT_GOT_YOUR_TONGUE] = "Cat Got Your Tongue",
    [Challenge.DEMO_MAN] = "Demo Man",
    [Challenge.CURSED] = "Cursed!",
    [Challenge.GLASS_CANNON] = "Glass Cannon",
    [Challenge.WHEN_LIFE_GIVES_LEMONS] = "When Life Gives You Lemons",
    [Challenge.BEANS] = "Beans!",
    [Challenge.ITS_IN_THE_CARDS] = "It's In The Cards",
    [Challenge.SLOW_ROLL] = "Slow Roll",
    [Challenge.COMPUTER_SAVY] = "Computer Savvy",
    [Challenge.WAKA_WAKA] = "Waka Waka",
    [Challenge.THE_HOST] = "The Host",
    [Challenge.THE_FAMILY_MAN] = "The Family Man",
    [Challenge.PURIST] = "Purist",
    [Challenge.XXXXXXXXL] = "XXXXXXXXL",
    [Challenge.SPEED] = "SPEED!",
    [Challenge.BLUE_BOMBER] = "Blue Bomber",
    [Challenge.PAY_TO_PLAY] = "PAY TO PLAY",
    [Challenge.HAVE_A_HEART] = "Have a Heart",
    [Challenge.I_RULE] = "I RULE!",
    [Challenge.BRAINS] = "BRAINS!",
    [Challenge.PRIDE_DAY] = "PRIDE DAY!",
    [Challenge.ONANS_STREAK] = "Onan's Streak",
    [Challenge.GUARDIAN] = "The Guardian",
    [Challenge.BACKASSWARDS] = "Backasswards",
    [Challenge.APRILS_FOOL] = "Aprils Fool",
    [Challenge.POKEY_MANS] = "Pokey Mans",
    [Challenge.ULTRA_HARD] = "Ultra Hard",
    [Challenge.PONG] = "Pong",
    [Challenge.SCAT_MAN] = "Scat Man",
    [Challenge.BLOODY_MARY] = "Bloody Mary",
    [Challenge.BAPTISM_BY_FIRE] = "Baptism By Fire",
    [Challenge.ISAACS_AWAKENING] = "Isaac's Awakening",
    [Challenge.SEEING_DOUBLE] = "Seeing Double",
    [Challenge.PICA_RUN] = "Pica Run",
    [Challenge.HOT_POTATO] = "Hot Potato",
    [Challenge.CANTRIPPED] = "Cantripped!",
    [Challenge.RED_REDEMPTION] = "Red Redemption",
    [Challenge.DELETE_THIS] = "DELETE THIS"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.chargeBar"] = function(...) 
local ____exports = {}
local getChargeBarClamp
function getChargeBarClamp(self, charges, maxCharges)
    local meterMultiplier = 24 / maxCharges
    local meterClip = 26 - charges * meterMultiplier
    return Vector(0, meterClip)
end
local CHARGE_BAR_ANM2 = "gfx/ui/ui_chargebar.anm2"
--- Constructor for a `ChargeBarSprites` object. For more information, see the `renderChargeBar`
-- helper function.
-- 
-- Note that this is for the vertical charge bar that represents the number of charges that an
-- active item has, not the circular charge bar that shows e.g. the charge rate of Brimstone.
function ____exports.newChargeBarSprites(self, maxCharges)
    local back = Sprite()
    back:Load(CHARGE_BAR_ANM2, true)
    back:Play("BarEmpty", true)
    local meter = Sprite()
    meter:Load(CHARGE_BAR_ANM2, true)
    meter:Play("BarFull", true)
    local meterBattery = Sprite()
    meterBattery:Load(CHARGE_BAR_ANM2, true)
    meterBattery:Play("BarFull", true)
    local lines = Sprite()
    lines:Load(CHARGE_BAR_ANM2, true)
    lines:Play(
        "BarOverlay" .. tostring(maxCharges),
        true
    )
    return {
        back = back,
        meter = meter,
        meterBattery = meterBattery,
        lines = lines,
        maxCharges = maxCharges
    }
end
--- Helper function to render a charge bar on the screen. First, call the `newChargeBarSprites`
-- function to initialize the sprites, and then call this function on every render frame.
-- 
-- Note that this is for the vertical charge bar that represents the number of charges that an
-- active item has, not the circular charge bar that shows e.g. the charge rate of Brimstone.
function ____exports.renderChargeBar(self, sprites, position, normalCharges, batteryCharges)
    sprites.back:Render(position)
    local normalChargesClamp = getChargeBarClamp(nil, normalCharges, sprites.maxCharges)
    sprites.meter:Render(position, normalChargesClamp)
    local batteryChargesClamp = getChargeBarClamp(nil, batteryCharges, sprites.maxCharges)
    sprites.meterBattery:Render(position, batteryChargesClamp)
    sprites.lines:Render(position)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.curses"] = function(...) 
local ____exports = {}
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
--- Helper function to get the actual bit flag for modded curses.
-- 
-- Will throw a run-time error if the provided curse does not exist.
-- 
-- Use this over the `Isaac.GetCurseIdByName` method because that will return an integer instead of
-- a bit flag.
function ____exports.getCurseIDByName(self, name)
    local curseID = Isaac.GetCurseIdByName(name)
    if curseID == -1 then
        error(("Failed to get the curse ID corresponding to the curse name of \"" .. tostring(curseID)) .. "\". Does this name match what you put in the \"content/curses.xml\" file?")
    end
    return 1 << curseID - 1
end
function ____exports.hasCurse(self, curse)
    local level = game:GetLevel()
    local curses = level:GetCurses()
    return hasFlag(nil, curses, curse)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.decorators"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__Spread = ____lualib.__TS__Spread
local ____exports = {}
local ____ModFeature = require("lua_modules.isaacscript-common.dist.src.classes.ModFeature")
local ADD_CALLBACK_ARGS_KEY = ____ModFeature.ADD_CALLBACK_ARGS_KEY
local ADD_CALLBACK_CUSTOM_ARGS_KEY = ____ModFeature.ADD_CALLBACK_CUSTOM_ARGS_KEY
local ____tstlClass = require("lua_modules.isaacscript-common.dist.src.functions.tstlClass")
local getTSTLClassName = ____tstlClass.getTSTLClassName
--- A decorator function that signifies that the decorated class method should be automatically
-- registered with `Mod.AddCallback`.
-- 
-- @ignore
function ____exports.Callback(self, modCallback, ...)
    local optionalArgs = {...}
    return function(____, target, propertyKey, _descriptor)
        local methodName = propertyKey
        local method = target[methodName]
        local addCallbackArgs = {
            modCallback,
            method,
            __TS__Spread(optionalArgs)
        }
        local constructor = target.constructor
        if constructor == nil then
            local tstlClassName = getTSTLClassName(nil, target) or "Unknown"
            error(("Failed to get the constructor for class \"" .. tstlClassName) .. "\". Did you decorate a static method? You can only decorate non-static class methods, because the \"Mod\" object is not present before the class is instantiated.")
        end
        if not (constructor[ADD_CALLBACK_ARGS_KEY] ~= nil) then
            constructor[ADD_CALLBACK_ARGS_KEY] = {}
        end
        local callbackTuples = constructor[ADD_CALLBACK_ARGS_KEY]
        callbackTuples[#callbackTuples + 1] = addCallbackArgs
    end
end
--- A decorator function that signifies that the decorated class method should be automatically
-- registered with `ModUpgraded.AddCallbackCustom`.
-- 
-- @ignore
function ____exports.CallbackCustom(self, modCallbackCustom, ...)
    local optionalArgs = {...}
    return function(____, target, propertyKey, _descriptor)
        local methodName = propertyKey
        local method = target[methodName]
        local addCallbackArgs = {
            modCallbackCustom,
            method,
            __TS__Spread(optionalArgs)
        }
        local constructor = target.constructor
        if constructor == nil then
            local tstlClassName = getTSTLClassName(nil, target) or "Unknown"
            error(("Failed to get the constructor for class \"" .. tstlClassName) .. "\". Did you decorate a static method? You can only decorate non-static class methods, because the \"Mod\" object is not present before the class is instantiated.")
        end
        if not (constructor[ADD_CALLBACK_CUSTOM_ARGS_KEY] ~= nil) then
            constructor[ADD_CALLBACK_CUSTOM_ARGS_KEY] = {}
        end
        local callbackTuples = constructor[ADD_CALLBACK_CUSTOM_ARGS_KEY]
        callbackTuples[#callbackTuples + 1] = addCallbackArgs
    end
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.globals"] = function(...) 
local ____lualib = require("lualib_bundle")
local Set = ____lualib.Set
local __TS__New = ____lualib.__TS__New
local __TS__ArraySort = ____lualib.__TS__ArraySort
local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach
local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries
local ____exports = {}
local isRacingPlusSandboxEnabled
local ____debugFunctions = require("lua_modules.isaacscript-common.dist.src.functions.debugFunctions")
local getTraceback = ____debugFunctions.getTraceback
local isLuaDebugEnabled = ____debugFunctions.isLuaDebugEnabled
local traceback = ____debugFunctions.traceback
local logExports = require("lua_modules.isaacscript-common.dist.src.functions.log")
local ____log = require("lua_modules.isaacscript-common.dist.src.functions.log")
local log = ____log.log
local logEntitiesExports = require("lua_modules.isaacscript-common.dist.src.functions.logEntities")
local logMiscExports = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
local ____set = require("lua_modules.isaacscript-common.dist.src.functions.set")
local addSetsToSet = ____set.addSetsToSet
local copySet = ____set.copySet
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local twoDimensionalSort = ____utils.twoDimensionalSort
function isRacingPlusSandboxEnabled(self)
    return SandboxGetParentFunctionDescription ~= nil
end
local DEFAULT_GLOBALS = __TS__New(Set, {
    "ActionTriggers",
    "ActiveSlot",
    "BabySubType",
    "BackdropType",
    "BatterySubType",
    "BedSubType",
    "BitSet128",
    "BombSubType",
    "BombVariant",
    "ButtonAction",
    "CacheFlag",
    "Card",
    "Challenge",
    "ChampionColor",
    "ChestSubType",
    "CoinSubType",
    "CollectibleType",
    "Color",
    "CppContainer",
    "DamageFlag",
    "Difficulty",
    "Direction",
    "DoorSlot",
    "DoorState",
    "DoorVariant",
    "EffectVariant",
    "Entity",
    "EntityBomb",
    "EntityCollisionClass",
    "EntityEffect",
    "EntityFamiliar",
    "EntityFlag",
    "EntityGridCollisionClass",
    "EntityKnife",
    "EntityLaser",
    "EntityNPC",
    "EntityPartition",
    "EntityPickup",
    "EntityPlayer",
    "EntityProjectile",
    "EntityPtr",
    "EntityRef",
    "EntityTear",
    "EntityType",
    "FamiliarVariant",
    "Font",
    "Game",
    "GameStateFlag",
    "GetPtrHash",
    "GridCollisionClass",
    "GridEntity",
    "GridEntityDesc",
    "GridEntityDoor",
    "GridEntityPit",
    "GridEntityPoop",
    "GridEntityPressurePlate",
    "GridEntityRock",
    "GridEntitySpikes",
    "GridEntityTNT",
    "GridEntityType",
    "GridRooms",
    "HUD",
    "HeartSubType",
    "Input",
    "InputHook",
    "Isaac",
    "ItemConfig",
    "ItemPool",
    "ItemPoolType",
    "ItemType",
    "KColor",
    "KeySubType",
    "Keyboard",
    "LaserOffset",
    "LaserSubType",
    "Level",
    "LevelCurse",
    "LevelStage",
    "LevelStateFlag",
    "LocustSubtypes",
    "ModCallbacks",
    "Mouse",
    "Music",
    "MusicManager",
    "NpcState",
    "NullItemID",
    "Options",
    "PathFinder",
    "PickupPrice",
    "PickupVariant",
    "PillColor",
    "PillEffect",
    "PlayerForm",
    "PlayerSpriteLayer",
    "PlayerType",
    "PlayerTypes",
    "PoopPickupSubType",
    "PoopSpellType",
    "ProjectileFlags",
    "ProjectileParams",
    "ProjectileVariant",
    "QueueItemData",
    "REPENTANCE",
    "RNG",
    "Random",
    "RandomVector",
    "RegisterMod",
    "RenderMode",
    "Room",
    "RoomConfig",
    "RoomDescriptor",
    "RoomShape",
    "RoomTransitionAnim",
    "RoomType",
    "SFXManager",
    "SackSubType",
    "SeedEffect",
    "Seeds",
    "ShockwaveParams",
    "SkinColor",
    "SortingLayer",
    "SoundEffect",
    "Sprite",
    "StageType",
    "StartDebug",
    "TearFlags",
    "TearParams",
    "TearVariant",
    "TemporaryEffect",
    "TemporaryEffects",
    "TrinketType",
    "UseFlag",
    "Vector",
    "WeaponType",
    "_G",
    "_VERSION",
    "assert",
    "collectgarbage",
    "coroutine",
    "dofile",
    "error",
    "getmetatable",
    "include",
    "ipairs",
    "load",
    "loadfile",
    "math",
    "next",
    "pairs",
    "pcall",
    "print",
    "rawequal",
    "rawget",
    "rawlen",
    "rawset",
    "require",
    "select",
    "setmetatable",
    "string",
    "table",
    "tonumber",
    "tostring",
    "type",
    "utf8",
    "xpcall"
})
local LUA_DEBUG_ADDED_GLOBALS = __TS__New(Set, {"debug", "io", "os", "package"})
local RACING_PLUS_SANDBOX_ADDED_GLOBALS = __TS__New(Set, {"sandboxTraceback", "sandboxGetTraceback", "getParentFunctionDescription"})
--- Helper function to get a set containing all of the global variable names that are contained
-- within the Isaac environment by default.
-- 
-- Returns a slightly different set depending on whether the "--luadebug" flag is enabled or not.
function ____exports.getDefaultGlobals(self)
    local defaultGlobals = copySet(nil, DEFAULT_GLOBALS)
    if isLuaDebugEnabled(nil) then
        addSetsToSet(nil, defaultGlobals, LUA_DEBUG_ADDED_GLOBALS)
    end
    if isRacingPlusSandboxEnabled(nil) then
        addSetsToSet(nil, defaultGlobals, RACING_PLUS_SANDBOX_ADDED_GLOBALS)
    end
    return defaultGlobals
end
--- Helper function to get an array of any added global variables in the Isaac Lua environment.
-- Returns a sorted array of key/value tuples.
function ____exports.getNewGlobals(self)
    local defaultGlobals = ____exports.getDefaultGlobals(nil)
    local newGlobals = {}
    for key, value in pairs(_G) do
        if not defaultGlobals:has(key) then
            local keyValueTuple = {key, value}
            newGlobals[#newGlobals + 1] = keyValueTuple
        end
    end
    __TS__ArraySort(newGlobals, twoDimensionalSort)
    return newGlobals
end
function ____exports.logNewGlobals(self)
    local newGlobals = ____exports.getNewGlobals(nil)
    log(nil, "List of added global variables in the Isaac environment:")
    if #newGlobals == 0 then
        log(nil, "- n/a (no extra global variables found)")
    end
    __TS__ArrayForEach(
        newGlobals,
        function(____, ____bindingPattern0, i)
            local value
            local key
            key = ____bindingPattern0[1]
            value = ____bindingPattern0[2]
            log(
                nil,
                (((tostring(i + 1) .. ") ") .. tostring(key)) .. " - ") .. tostring(value)
            )
        end
    )
end
--- Converts every `isaacscript-common` function that begins with "log" to a global function.
-- 
-- This is useful when printing out variables from the in-game debug console.
function ____exports.setLogFunctionsGlobal(self)
    local globals = _G
    for ____, exports in ipairs({logExports, logMiscExports, logEntitiesExports}) do
        for ____, ____value in ipairs(__TS__ObjectEntries(exports)) do
            local logFuncName = ____value[1]
            local logFunc = ____value[2]
            globals[logFuncName] = logFunc
        end
    end
end
function ____exports.setTracebackFunctionsGlobal(self)
    local globals = _G
    globals.getTraceback = getTraceback
    globals.traceback = traceback
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.hex"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__StringReplace = ____lualib.__TS__StringReplace
local __TS__StringSubstring = ____lualib.__TS__StringSubstring
local ____exports = {}
local hexToRGB, HEX_STRING_LENGTH
local ____logMisc = require("lua_modules.isaacscript-common.dist.src.functions.logMisc")
local logError = ____logMisc.logError
function hexToRGB(self, hexString)
    hexString = __TS__StringReplace(hexString, "#", "")
    if #hexString ~= HEX_STRING_LENGTH then
        logError(
            nil,
            "Hex strings must be of length: " .. tostring(HEX_STRING_LENGTH)
        )
        return {0, 0, 0}
    end
    local rString = __TS__StringSubstring(hexString, 0, 2)
    local r = tonumber("0x" .. rString)
    if r == nil then
        logError(nil, ("Failed to convert `0x" .. rString) .. "` to a number.")
        return {0, 0, 0}
    end
    local gString = __TS__StringSubstring(hexString, 2, 4)
    local g = tonumber("0x" .. gString)
    if g == nil then
        logError(nil, ("Failed to convert `0x" .. gString) .. "` to a number.")
        return {0, 0, 0}
    end
    local bString = __TS__StringSubstring(hexString, 4, 6)
    local b = tonumber("0x" .. bString)
    if b == nil then
        logError(nil, ("Failed to convert `0x" .. bString) .. "` to a number.")
        return {0, 0, 0}
    end
    return {r, g, b}
end
HEX_STRING_LENGTH = 6
--- Converts a hex string like "#33aa33" to a KColor object.
-- 
-- @param hexString A hex string like "#ffffff" or "ffffff". (The "#" character is optional.)
function ____exports.hexToColor(self, hexString, alpha)
    local r, g, b = table.unpack(hexToRGB(nil, hexString))
    local base = 255
    return Color(r / base, g / base, b / base, alpha)
end
--- Converts a hex string like "#33aa33" to a Color object.
-- 
-- @param hexString A hex string like "#ffffff" or "ffffff". (The "#" character is optional.)
function ____exports.hexToKColor(self, hexString, alpha)
    local r, g, b = table.unpack(hexToRGB(nil, hexString))
    local base = 255
    return KColor(r / base, g / base, b / base, alpha)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.initArray"] = function(...) 
local ____exports = {}
local ____deepCopy = require("lua_modules.isaacscript-common.dist.src.functions.deepCopy")
local deepCopy = ____deepCopy.deepCopy
local ____utils = require("lua_modules.isaacscript-common.dist.src.functions.utils")
local ____repeat = ____utils["repeat"]
--- Initializes an array with all of the elements containing the specified default value.
-- 
-- The provided default value will be copied with the `deepCopy` function before adding it to the
-- new array. Thus, you can initialize an array of arrays, or an array of maps, and so on. (If the
-- `deepCopy` function was not used, then all of the array elements would just be references to the
-- same underlying data structure.)
-- 
-- For example:
-- 
-- ```ts
-- const arrayWithZeroes = initArray(0, 10); // Has 10 elements of 0.
-- const arrayWithArrays = initArray([0], 20); // Has 20 elements of an array with a 0 in it.
-- ```
function ____exports.initArray(self, defaultValue, size)
    local array = {}
    ____repeat(
        nil,
        size,
        function()
            local copy = deepCopy(nil, defaultValue)
            array[#array + 1] = copy
        end
    )
    return array
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.language"] = function(...) 
local ____exports = {}
local ____languageNames = require("lua_modules.isaacscript-common.dist.src.objects.languageNames")
local LANGUAGE_NAMES = ____languageNames.LANGUAGE_NAMES
--- Helper function to convert the language abbreviation from `Options.Language` to the "full"
-- language name.
-- 
-- For example, if the current language is set to Korean, `Options.Language` will be set to "kr",
-- and this function will return "Korean".
function ____exports.getLanguageName(self)
    local languageAbbreviation = Options.Language
    return LANGUAGE_NAMES[languageAbbreviation]
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.languageNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local LanguageAbbreviation = ____isaac_2Dtypescript_2Ddefinitions.LanguageAbbreviation
____exports.LANGUAGE_NAMES = {
    [LanguageAbbreviation.ENGLISH] = "English",
    [LanguageAbbreviation.JAPANESE] = "Japanese",
    [LanguageAbbreviation.KOREAN] = "Korean",
    [LanguageAbbreviation.CHINESE_SIMPLE] = "Chinese (Simple)",
    [LanguageAbbreviation.RUSSIAN] = "Russian",
    [LanguageAbbreviation.GERMAN] = "German",
    [LanguageAbbreviation.SPANISH] = "Spanish"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.level"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____levelGrid = require("lua_modules.isaacscript-common.dist.src.functions.levelGrid")
local isDoorSlotValidAtGridIndexForRedRoom = ____levelGrid.isDoorSlotValidAtGridIndexForRedRoom
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local getNumRooms = ____rooms.getNumRooms
local getRoomsInsideGrid = ____rooms.getRoomsInsideGrid
function ____exports.fillLevelWithRedRooms(self)
    local level = game:GetLevel()
    local numRoomsInGrid
    repeat
        do
            local roomsInGrid = getRoomsInsideGrid(nil)
            numRoomsInGrid = #roomsInGrid
            for ____, roomDescriptor in ipairs(roomsInGrid) do
                for ____, doorSlot in ipairs(getEnumValues(nil, DoorSlot)) do
                    if isDoorSlotValidAtGridIndexForRedRoom(nil, doorSlot, roomDescriptor.GridIndex) then
                        level:MakeRedRoomDoor(roomDescriptor.GridIndex, doorSlot)
                    end
                end
            end
        end
    until not (numRoomsInGrid ~= getNumRooms(nil))
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.minimap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local DisplayFlag = ____isaac_2Dtypescript_2Ddefinitions.DisplayFlag
local DisplayFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DisplayFlagZero
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local addFlag = ____flag.addFlag
local ____roomData = require("lua_modules.isaacscript-common.dist.src.functions.roomData")
local getRoomDescriptor = ____roomData.getRoomDescriptor
local getRoomGridIndex = ____roomData.getRoomGridIndex
local ____rooms = require("lua_modules.isaacscript-common.dist.src.functions.rooms")
local getRoomsInsideGrid = ____rooms.getRoomsInsideGrid
--- Helper function to set a particular room's minimap display flags (e.g. whether or not it is
-- visible and so on).
-- 
-- @param roomGridIndex Set to undefined to use the current room index.
-- @param displayFlags The bit flags value to set. (See the `DisplayFlag` enum.)
-- @param updateVisibility Optional. Whether to call the `Level.UpdateVisibility` method in order to
-- make the changes immediately visible. Default is true.
function ____exports.setRoomDisplayFlags(self, roomGridIndex, displayFlags, updateVisibility)
    if updateVisibility == nil then
        updateVisibility = true
    end
    if MinimapAPI == nil then
        local roomDescriptor = getRoomDescriptor(nil, roomGridIndex)
        roomDescriptor.DisplayFlags = displayFlags
    else
        if roomGridIndex == nil then
            roomGridIndex = getRoomGridIndex(nil)
        end
        local roomDescriptor = MinimapAPI:GetRoomByIdx(roomGridIndex)
        if roomDescriptor ~= nil then
            roomDescriptor.DisplayFlags = displayFlags
        end
    end
    if updateVisibility then
        local level = game:GetLevel()
        level:UpdateVisibility()
    end
end
--- Helper function to add a `DisplayFlag` to a particular room's minimap display flags (e.g. whether
-- or not it is visible and so on).
-- 
-- This function automatically accounts for whether or not MinimapAPI is being used.
-- 
-- @param roomGridIndex Set to undefined to use the current room index.
-- @param displayFlag The `DisplayFlag` to set. (See the `DisplayFlag` enum.)
-- @param updateVisibility Optional. Whether to call the `Level.UpdateVisibility` method in order to
-- make the changes immediately visible. Default is true.
function ____exports.addRoomDisplayFlag(self, roomGridIndex, displayFlag, updateVisibility)
    if updateVisibility == nil then
        updateVisibility = true
    end
    if MinimapAPI == nil then
        local roomDescriptor = getRoomDescriptor(nil, roomGridIndex)
        roomDescriptor.DisplayFlags = addFlag(nil, roomDescriptor.DisplayFlags, displayFlag)
    else
        if roomGridIndex == nil then
            roomGridIndex = getRoomGridIndex(nil)
        end
        local roomDescriptor = MinimapAPI:GetRoomByIdx(roomGridIndex)
        if roomDescriptor ~= nil then
            roomDescriptor.DisplayFlags = addFlag(nil, roomDescriptor.DisplayFlags, displayFlag)
        end
    end
    if updateVisibility then
        local level = game:GetLevel()
        level:UpdateVisibility()
    end
end
--- Helper function to set the value of `DisplayFlag` for every room on the floor to 0.
-- 
-- This function automatically calls the `Level.UpdateVisibility` after setting the flags so that
-- the changes will be immediately visible.
function ____exports.clearFloorDisplayFlags(self)
    local level = game:GetLevel()
    for ____, room in ipairs(getRoomsInsideGrid(nil)) do
        room.DisplayFlags = DisplayFlagZero
    end
    level:UpdateVisibility()
end
--- Helper function to get the minimap `DisplayFlag` value for every room on the floor. Returns a map
-- that is indexed by the room's safe grid index.
function ____exports.getFloorDisplayFlags(self)
    local displayFlagsMap = __TS__New(Map)
    local roomsInGrid = getRoomsInsideGrid(nil)
    for ____, roomDescriptor in ipairs(roomsInGrid) do
        displayFlagsMap:set(roomDescriptor.SafeGridIndex, roomDescriptor.DisplayFlags)
    end
    return displayFlagsMap
end
--- Helper function to get a particular room's minimap display flags (e.g. whether or not it is
-- visible and so on).
-- 
-- @param roomGridIndex Optional. Default is the current room index.
function ____exports.getRoomDisplayFlags(self, roomGridIndex)
    local roomDescriptor = getRoomDescriptor(nil, roomGridIndex)
    return roomDescriptor.DisplayFlags
end
--- Helper function to set the minimap `DisplayFlag` value for multiple rooms at once.
-- 
-- This function automatically calls the `Level.UpdateVisibility` after setting the flags so that
-- the changes will be immediately visible.
-- 
-- This function automatically accounts for whether or not MinimapAPI is being used.
-- 
-- @param displayFlagsMap A map of the display flags that is indexed by the room's safe grid index.
function ____exports.setDisplayFlags(self, displayFlagsMap)
    local level = game:GetLevel()
    for ____, ____value in __TS__Iterator(displayFlagsMap:entries()) do
        local roomGridIndex = ____value[1]
        local displayFlags = ____value[2]
        if MinimapAPI == nil then
            ____exports.setRoomDisplayFlags(nil, roomGridIndex, displayFlags, false)
        else
            local roomDescriptor = MinimapAPI:GetRoomByIdx(roomGridIndex)
            if roomDescriptor ~= nil then
                roomDescriptor.DisplayFlags = displayFlags
            end
        end
    end
    level:UpdateVisibility()
end
--- Alias for the `setDisplayFlags` function.
function ____exports.setFloorDisplayFlags(self, displayFlagsMap)
    ____exports.setDisplayFlags(nil, displayFlagsMap)
end
--- Helper function to make a single room visible in a similar way to how the Compass makes a Boss
-- Room visible (e.g. by adding `DisplayFlag.SHOW_ICON`).
-- 
-- @param roomGridIndex Set to undefined to use the current room index.
-- @param updateVisibility Optional. Whether to call the `Level.UpdateVisibility` method in order to
-- make the changes immediately visible. Default is true.
function ____exports.setRoomVisible(self, roomGridIndex, updateVisibility)
    if updateVisibility == nil then
        updateVisibility = true
    end
    ____exports.addRoomDisplayFlag(nil, roomGridIndex, DisplayFlag.SHOW_ICON, updateVisibility)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.pocketItems"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
local __TS__ArraySome = ____lualib.__TS__ArraySome
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot
local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local PocketItemSlot = ____isaac_2Dtypescript_2Ddefinitions.PocketItemSlot
local ____PocketItemType = require("lua_modules.isaacscript-common.dist.src.enums.PocketItemType")
local PocketItemType = ____PocketItemType.PocketItemType
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____players = require("lua_modules.isaacscript-common.dist.src.functions.players")
local isCharacter = ____players.isCharacter
local ____types = require("lua_modules.isaacscript-common.dist.src.functions.types")
local asNumber = ____types.asNumber
--- Use this helper function as a workaround for the `EntityPlayer.GetPocketItem` method not working
-- correctly.
-- 
-- Note that due to API limitations, there is no way to determine the location of a Dice Bag trinket
-- dice. Furthermore, when the player has a Dice Bag trinket dice and a pocket active at the same
-- time, there is no way to determine the location of the pocket active item. If this function
-- cannot determine the identity of a particular slot, it will mark the type of the slot as
-- `PocketItemType.UNDETERMINABLE`.
function ____exports.getPocketItems(self, player)
    local pocketItem = player:GetActiveItem(ActiveSlot.POCKET)
    local hasPocketItem = pocketItem ~= CollectibleType.NULL
    local pocketItem2 = player:GetActiveItem(ActiveSlot.POCKET_SINGLE_USE)
    local hasPocketItem2 = pocketItem2 ~= CollectibleType.NULL
    local maxPocketItems = player:GetMaxPocketItems()
    local pocketItemSlots = getEnumValues(nil, PocketItemSlot)
    local pocketItems = {}
    local pocketItemIdentified = false
    local pocketItem2Identified = false
    for ____, slot in ipairs(pocketItemSlots) do
        local cardType = player:GetCard(slot)
        local pillColor = player:GetPill(slot)
        if cardType ~= CardType.NULL then
            pocketItems[#pocketItems + 1] = {slot = slot, type = PocketItemType.CARD, subType = cardType}
        elseif pillColor ~= PillColor.NULL then
            pocketItems[#pocketItems + 1] = {slot = slot, type = PocketItemType.PILL, subType = pillColor}
        elseif hasPocketItem and not hasPocketItem2 and not pocketItemIdentified then
            pocketItemIdentified = true
            pocketItems[#pocketItems + 1] = {slot = slot, type = PocketItemType.ACTIVE_ITEM, subType = pocketItem}
        elseif not hasPocketItem and hasPocketItem2 and not pocketItem2Identified then
            pocketItem2Identified = true
            pocketItems[#pocketItems + 1] = {slot = slot, type = PocketItemType.DICE_BAG_DICE, subType = pocketItem2}
        elseif hasPocketItem and hasPocketItem2 then
            pocketItems[#pocketItems + 1] = {slot = slot, type = PocketItemType.UNDETERMINABLE, subType = 0}
        else
            pocketItems[#pocketItems + 1] = {slot = slot, type = PocketItemType.EMPTY, subType = 0}
        end
        if asNumber(nil, slot) + 1 == maxPocketItems then
            break
        end
    end
    return pocketItems
end
--- Helper function to get the `PocketItemSlot` that the player's pocket active collectible item is
-- in, if any. Returns undefined if the player does not have a pocket active item.
function ____exports.getActivePocketItemSlot(self, player)
    local pocketItems = ____exports.getPocketItems(nil, player)
    for ____, pocketItem in ipairs(pocketItems) do
        if pocketItem.type == PocketItemType.ACTIVE_ITEM then
            return pocketItem.slot
        end
    end
    return nil
end
function ____exports.getFirstCardOrPill(self, player)
    local pocketItems = ____exports.getPocketItems(nil, player)
    return __TS__ArrayFind(
        pocketItems,
        function(____, pocketItem) return pocketItem.type == PocketItemType.CARD or pocketItem.type == PocketItemType.PILL end
    )
end
--- Returns whether or not the player can hold an additional pocket item, beyond what they are
-- currently carrying. This takes into account items that modify the max number of pocket items,
-- like Starter Deck.
-- 
-- If the player is the Tainted Soul, this always returns false, since that character cannot pick up
-- items. (Only Tainted Forgotten can pick up items.)
function ____exports.hasOpenPocketItemSlot(self, player)
    if isCharacter(nil, player, PlayerType.SOUL_B) then
        return false
    end
    local pocketItems = ____exports.getPocketItems(nil, player)
    return __TS__ArraySome(
        pocketItems,
        function(____, pocketItem) return pocketItem.type == PocketItemType.EMPTY end
    )
end
--- Helper function to determine whether or not the player's "active" pocket item slot is set to
-- their pocket active item.
function ____exports.isFirstSlotPocketActiveItem(self, player)
    local pocketItems = ____exports.getPocketItems(nil, player)
    local firstPocketItem = pocketItems[1]
    if firstPocketItem == nil then
        return false
    end
    return firstPocketItem.type == PocketItemType.ACTIVE_ITEM
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.pressurePlate"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PressurePlateState = ____isaac_2Dtypescript_2Ddefinitions.PressurePlateState
local PressurePlateVariant = ____isaac_2Dtypescript_2Ddefinitions.PressurePlateVariant
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.src.functions.gridEntitiesSpecific")
local getPressurePlates = ____gridEntitiesSpecific.getPressurePlates
--- Helper function to check if all of the pressure plates in the room are pushed.
-- 
-- In this context, "pressure plates" refers to the grid entities that you have to press down in
-- order for the room to be cleared. This function ignores other types of pressure plates, such as
-- the ones that you press to get a reward, the ones that you press to start a Greed Mode wave, and
-- so on.
function ____exports.isAllPressurePlatesPushed(self)
    local room = game:GetRoom()
    local hasPressurePlates = room:HasTriggerPressurePlates()
    if not hasPressurePlates then
        return true
    end
    local pressurePlates = getPressurePlates(nil, PressurePlateVariant.PRESSURE_PLATE)
    return __TS__ArrayEvery(
        pressurePlates,
        function(____, pressurePlate) return pressurePlate.State == PressurePlateState.PRESSURE_PLATE_PRESSED end
    )
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.seeds"] = function(...) 
local ____exports = {}
local ____cachedClasses = require("lua_modules.isaacscript-common.dist.src.core.cachedClasses")
local game = ____cachedClasses.game
local ____rng = require("lua_modules.isaacscript-common.dist.src.functions.rng")
local newRNG = ____rng.newRNG
--- Alias for the `Seeds.GetStartSeedString` method.
function ____exports.getStartSeedString(self)
    local seeds = game:GetSeeds()
    return seeds:GetStartSeedString()
end
--- Helper function to get the next seed value.
-- 
-- This function is useful when you are working with seed values directly over RNG objects.
function ____exports.nextSeed(self, seed)
    local rng = newRNG(nil, seed)
    rng:Next()
    return rng:GetSeed()
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.functions.transformations"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local Set = ____lualib.Set
local __TS__Iterator = ____lualib.__TS__Iterator
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ItemConfigTag = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigTag
local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm
local ____transformationNames = require("lua_modules.isaacscript-common.dist.src.objects.transformationNames")
local TRANSFORMATION_NAMES = ____transformationNames.TRANSFORMATION_NAMES
local ____collectibles = require("lua_modules.isaacscript-common.dist.src.functions.collectibles")
local getCollectibleTags = ____collectibles.getCollectibleTags
local ____enums = require("lua_modules.isaacscript-common.dist.src.functions.enums")
local getEnumValues = ____enums.getEnumValues
local ____flag = require("lua_modules.isaacscript-common.dist.src.functions.flag")
local hasFlag = ____flag.hasFlag
local TRANSFORMATION_TO_TAG_MAP = __TS__New(Map, {
    {PlayerForm.GUPPY, ItemConfigTag.GUPPY},
    {PlayerForm.BEELZEBUB, ItemConfigTag.FLY},
    {PlayerForm.FUN_GUY, ItemConfigTag.MUSHROOM},
    {PlayerForm.SERAPHIM, ItemConfigTag.ANGEL},
    {PlayerForm.BOB, ItemConfigTag.BOB},
    {PlayerForm.SPUN, ItemConfigTag.SYRINGE},
    {PlayerForm.YES_MOTHER, ItemConfigTag.MOM},
    {PlayerForm.CONJOINED, ItemConfigTag.BABY},
    {PlayerForm.LEVIATHAN, ItemConfigTag.DEVIL},
    {PlayerForm.OH_CRAP, ItemConfigTag.POOP},
    {PlayerForm.BOOKWORM, ItemConfigTag.BOOK},
    {PlayerForm.SPIDER_BABY, ItemConfigTag.SPIDER}
})
local TRANSFORMATIONS_THAT_GRANT_FLYING = __TS__New(Set, {PlayerForm.GUPPY, PlayerForm.BEELZEBUB, PlayerForm.SERAPHIM, PlayerForm.LEVIATHAN})
--- Returns a set of the player's current transformations.
function ____exports.getPlayerTransformations(self, player)
    local transformations = __TS__New(Set)
    for ____, playerForm in ipairs(getEnumValues(nil, PlayerForm)) do
        if player:HasPlayerForm(playerForm) then
            transformations:add(playerForm)
        end
    end
    return transformations
end
--- Helper function to get a transformation name from a PlayerForm enum.
-- 
-- For example:
-- 
-- ```ts
-- const transformationName = getTransformationName(PlayerForm.LORD_OF_THE_FLIES);
-- // transformationName is "Beelzebub"
-- ```
function ____exports.getTransformationName(self, playerForm)
    return TRANSFORMATION_NAMES[playerForm]
end
--- Returns a set containing all of the transformations that the given collectible types contribute
-- towards.
function ____exports.getTransformationsForCollectibleType(self, collectibleType)
    local itemConfigTags = getCollectibleTags(nil, collectibleType)
    local playerForms = getEnumValues(nil, PlayerForm)
    local transformationSet = __TS__New(Set)
    for ____, playerForm in ipairs(playerForms) do
        do
            local itemConfigTag = TRANSFORMATION_TO_TAG_MAP:get(playerForm)
            if itemConfigTag == nil then
                goto __continue8
            end
            if hasFlag(nil, itemConfigTags, itemConfigTag) then
                transformationSet:add(playerForm)
            end
        end
        ::__continue8::
    end
    return transformationSet
end
function ____exports.hasFlyingTransformation(self, player)
    for ____, playerForm in __TS__Iterator(TRANSFORMATIONS_THAT_GRANT_FLYING:values()) do
        if player:HasPlayerForm(playerForm) then
            return true
        end
    end
    return false
end
function ____exports.isTransformationFlying(self, playerForm)
    return TRANSFORMATIONS_THAT_GRANT_FLYING:has(playerForm)
end
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.transformationNames"] = function(...) 
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm
____exports.TRANSFORMATION_NAMES = {
    [PlayerForm.GUPPY] = "Guppy",
    [PlayerForm.BEELZEBUB] = "Beelzebub",
    [PlayerForm.FUN_GUY] = "Fun Guy",
    [PlayerForm.SERAPHIM] = "Seraphim",
    [PlayerForm.BOB] = "Bob",
    [PlayerForm.SPUN] = "Spun",
    [PlayerForm.YES_MOTHER] = "Yes Mother?",
    [PlayerForm.CONJOINED] = "Conjoined",
    [PlayerForm.LEVIATHAN] = "Leviathan",
    [PlayerForm.OH_CRAP] = "Oh Crap",
    [PlayerForm.BOOKWORM] = "Bookworm",
    [PlayerForm.ADULT] = "Adult",
    [PlayerForm.SPIDER_BABY] = "Spider Baby",
    [PlayerForm.STOMPY] = "Stompy"
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.maps.transformationNameToPlayerFormMap"] = function(...) 
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm
--- Maps transformation names to the values of the `PlayerForm` enum.
____exports.TRANSFORMATION_NAME_TO_PLAYER_FORM_MAP = __TS__New(Map, {
    {"guppy", PlayerForm.GUPPY},
    {"cat", PlayerForm.GUPPY},
    {"beelzebub", PlayerForm.BEELZEBUB},
    {"fly", PlayerForm.BEELZEBUB},
    {"funGuy", PlayerForm.FUN_GUY},
    {"mushroom", PlayerForm.FUN_GUY},
    {"seraphim", PlayerForm.SERAPHIM},
    {"angel", PlayerForm.SERAPHIM},
    {"bob", PlayerForm.BOB},
    {"poison", PlayerForm.BOB},
    {"spun", PlayerForm.SPUN},
    {"drugs", PlayerForm.SPUN},
    {"needles", PlayerForm.SPUN},
    {"yesMother", PlayerForm.YES_MOTHER},
    {"mother", PlayerForm.YES_MOTHER},
    {"mom", PlayerForm.YES_MOTHER},
    {"conjoined", PlayerForm.CONJOINED},
    {"triple", PlayerForm.CONJOINED},
    {"leviathan", PlayerForm.LEVIATHAN},
    {"devil", PlayerForm.LEVIATHAN},
    {"ohCrap", PlayerForm.OH_CRAP},
    {"crap", PlayerForm.OH_CRAP},
    {"poop", PlayerForm.OH_CRAP},
    {"bookWorm", PlayerForm.BOOKWORM},
    {"adult", PlayerForm.ADULT},
    {"spiderBaby", PlayerForm.SPIDER_BABY},
    {"stompy", PlayerForm.STOMPY}
})
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.colors"] = function(...) 
local ____exports = {}
--- A collection of common colors that can be reused.
-- 
-- Note that if you want to further modify these colors, you should copy them first with the
-- `copyColor` function.
-- 
-- The non-standard colors come from:
-- https://htmlcolorcodes.com/color-names/
____exports.COLORS = {
    Black = Color(0, 0, 0),
    Red = Color(1, 0, 0),
    Green = Color(0, 1, 0),
    Blue = Color(0, 0, 1),
    Yellow = Color(1, 1, 0),
    Cyan = Color(0, 1, 1),
    Magenta = Color(1, 0, 1),
    White = Color(1, 1, 1),
    Brown = Color(0.588, 0.294, 0),
    Gray = Color(0.5, 0.5, 0.5),
    Orange = Color(1, 0.647, 0),
    Purple = Color(0.5, 0, 0.5)
}
return ____exports
 end,
["lua_modules.isaacscript-common.dist.src.objects.kColors"] = function(...) 
local ____exports = {}
--- A collection of common colors that can be reused.
-- 
-- Note that if you want to further modify these colors, you should copy them first with the
-- `copyColor` function.
-- 
-- The non-standard colors come from:
-- https://htmlcolorcodes.com/color-names/
____exports.K_COLORS = {
    Black = KColor(0, 0, 0, 1),
    Red = KColor(1, 0, 0, 1),
    Green = KColor(0, 1, 0, 1),
    Blue = KColor(0, 0, 1, 1),
    Yellow = KColor(1, 1, 0, 1),
    Cyan = KColor(0, 1, 1, 1),
    Magenta = KColor(1, 0, 1, 1),
    White = KColor(1, 1, 1, 1),
    Transparent = KColor(0, 0, 0, 0),
    Brown = KColor(0.588, 0.294, 0, 1),
    Gray = KColor(0.5, 0.5, 0.5, 1),
    Orange = KColor(1, 0.647, 0, 1),
    Purple = KColor(0.5, 0, 0.5, 1)
}
return ____exports
 end,
["main"] = function(...) 
local ____lualib = require("lualib_bundle")
local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach
local ____exports = {}
local Timer, LaserIndicator, TargetLaserIndicator, RemoveLaserIndicator, AfterDedLaserIndicator, postRender, postUpdate, cleaner, main, ActiveEnemy, time
local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
local json = require("json")
local ____Config = require("scripts.Config")
local IRFconfig = ____Config.IRFconfig
local ____DeliriumHell = require("scripts.DeliriumHell")
local IHateDelirium = ____DeliriumHell.IHateDelirium
local ____modConfigMenu = require("scripts.modConfigMenu")
local ModConfig = ____modConfigMenu.ModConfig
local ____Rev = require("scripts.Rev")
local RevCompatibility = ____Rev.RevCompatibility
local ____Vanilla = require("scripts.Vanilla")
local VanillaElseIfHell = ____Vanilla.VanillaElseIfHell
function Timer(self)
    time = time + 1
end
function LaserIndicator(self, ent, angle, mult, position, weirdHitbox, r, g, b, positionX)
    local data = ent:GetData()
    if not positionX then
        positionX = {
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
        }
    end
    if IRFconfig.Hitbox == true and weirdHitbox == true then
        position = 0
    end
    if IRFconfig.Laser == true then
        if data.Danger == 1 then
            do
                local index = 0
                while index < #data.IndicatorBrim do
                    local indicator = data.IndicatorBrim[index + 1]
                    indicator.Position = Vector(ent.Position.X - positionX[index + 1], ent.Position.Y - position)
                    indicator.Color = Color.Lerp(
                        indicator.Color,
                        Color(r, g, b, 2),
                        0.2
                    )
                    index = index + 1
                end
            end
            return
        else
            local i = 0
            data.IndicatorBrim = {}
            do
                local index = 0
                while index < #mult do
                    local indicator = Isaac.Spawn(
                        7,
                        7,
                        0,
                        Vector(ent.Position.X - positionX[index + 1], ent.Position.Y - position),
                        Vector(0, 0):Rotated(0),
                        nil
                    ):ToLaser()
                    if IRFconfig.Hitbox == true and weirdHitbox == true then
                        indicator.RenderZOffset = -6999
                    end
                    indicator.Angle = angle * mult[index + 1]
                    indicator.Color = Color(r - 1, g, b, 0)
                    local ____data_IndicatorBrim_0 = data.IndicatorBrim
                    ____data_IndicatorBrim_0[#____data_IndicatorBrim_0 + 1] = indicator
                    index = index + 1
                end
            end
            data.Danger = 1
        end
    else
        if data.Danger == 1 then
            do
                local index = 0
                while index < #data.IndicatorBrim do
                    local indicator = data.IndicatorBrim[index + 1]
                    indicator.Position = Vector(ent.Position.X - positionX[index + 1], ent.Position.Y - (position - 20))
                    index = index + 1
                end
            end
            return
        else
            local i = 0
            data.IndicatorBrim = {}
            do
                local index = 0
                while index < #mult do
                    local indicator = Isaac.Spawn(
                        1000,
                        198,
                        0,
                        Vector(10, 10):Rotated(angle * mult[index + 1]),
                        Vector(0.001, 0),
                        ent
                    ):ToEffect()
                    if IRFconfig.Hitbox == true and weirdHitbox == true then
                        indicator.RenderZOffset = -6999
                    end
                    indicator.Timeout = 30
                    indicator.LifeSpan = 30
                    if data.Mega == true then
                        indicator.SpriteScale = Vector(10, 10)
                    else
                        indicator.SpriteScale = Vector(1, 1)
                    end
                    indicator.Position = Vector(ent.Position.X - positionX[index + 1], ent.Position.Y - (position - 20))
                    indicator.TargetPosition = Vector(1, 0):Rotated(angle * mult[index + 1])
                    indicator.Color = Color(r, g, b, 0.5)
                    indicator:Update()
                    local ____data_IndicatorBrim_1 = data.IndicatorBrim
                    ____data_IndicatorBrim_1[#____data_IndicatorBrim_1 + 1] = indicator
                    index = index + 1
                end
            end
            data.Danger = 1
        end
    end
end
function TargetLaserIndicator(self, ent, angle, mult, position, weirdHitbox, r, g, b, positionX)
    local data = ent:GetData()
    if not positionX then
        positionX = {
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
        }
    end
    if IRFconfig.Hitbox == true and weirdHitbox == true then
        position = 0
    end
    if IRFconfig.Laser == true then
        if data.Danger == 1 then
            do
                local index = 0
                while index < #data.IndicatorBrim do
                    local indicator = data.IndicatorBrim[index + 1]
                    indicator.Position = Vector(ent.Position.X - positionX[index + 1], ent.Position.Y - position)
                    if data.Rotate == true then
                        indicator.Angle = angle[index + 1] + mult[index + 1]
                    end
                    indicator.Color = Color.Lerp(
                        indicator.Color,
                        Color(r, g, b, 2),
                        0.2
                    )
                    index = index + 1
                end
            end
            return
        else
            local i = 0
            data.IndicatorBrim = {}
            do
                local index = 0
                while index < #mult do
                    local indicator = Isaac.Spawn(
                        7,
                        7,
                        0,
                        Vector(ent.Position.X - positionX[index + 1], ent.Position.Y - position),
                        Vector(0, 0):Rotated(0),
                        nil
                    ):ToLaser()
                    if IRFconfig.Hitbox == true and weirdHitbox == true then
                        indicator.RenderZOffset = -6999
                    end
                    indicator.Angle = angle[index + 1] + mult[index + 1]
                    indicator.Color = Color(r - 1, g, b, 0)
                    local ____data_IndicatorBrim_2 = data.IndicatorBrim
                    ____data_IndicatorBrim_2[#____data_IndicatorBrim_2 + 1] = indicator
                    index = index + 1
                end
            end
            data.Danger = 1
        end
    else
        if data.Danger == 1 then
            do
                local index = 0
                while index < #data.IndicatorBrim do
                    local indicator = data.IndicatorBrim[index + 1]
                    if ent.Type == 60 then
                        indicator.Position = Vector(ent.Position.X - positionX[index + 1], ent.Position.Y - position + 15)
                    else
                        indicator.Position = Vector(ent.Position.X - positionX[index + 1], ent.Position.Y - (position - 20))
                    end
                    if data.Rotate == true then
                        indicator.TargetPosition = Vector(1, 0):Rotated(angle[index + 1] + mult[index + 1])
                    end
                    indicator.Color = Color.Lerp(
                        indicator.Color,
                        Color(r, g, b, 2),
                        0.2
                    )
                    index = index + 1
                end
            end
            return
        else
            data.IndicatorBrim = {}
            do
                local index = 0
                while index < #mult do
                    local indicator = Isaac.Spawn(
                        1000,
                        198,
                        0,
                        Vector(10, 10):Rotated(angle[index + 1] + mult[index + 1]),
                        Vector(0.001, 0),
                        ent
                    ):ToEffect()
                    if IRFconfig.Hitbox == true and weirdHitbox == true then
                        indicator.RenderZOffset = -6999
                    end
                    if ent.Type == 60 then
                        indicator.Position = Vector(ent.Position.X - positionX[index + 1], ent.Position.Y - position + 15)
                    else
                        indicator.Position = Vector(ent.Position.X - positionX[index + 1], ent.Position.Y - (position - 20))
                    end
                    indicator.Timeout = 30
                    indicator.LifeSpan = 30
                    indicator.TargetPosition = Vector(1, 0):Rotated(angle[index + 1] + mult[index + 1])
                    indicator.Color = Color(r, g, b, 0)
                    local ____data_IndicatorBrim_3 = data.IndicatorBrim
                    ____data_IndicatorBrim_3[#____data_IndicatorBrim_3 + 1] = indicator
                    indicator:Update()
                    index = index + 1
                end
            end
            data.Danger = 1
        end
    end
end
function RemoveLaserIndicator(self, ent)
    local data = ent:GetData()
    __TS__ArrayForEach(
        data.IndicatorBrim,
        function(____, indicator)
            indicator:Remove()
        end
    )
end
function AfterDedLaserIndicator(self, ent, angle, mult, position, vertical)
    local data = ent:GetData()
    if IRFconfig.Hitbox == true and vertical == false then
        position = 0
    end
    if data.Danger ~= 1 then
        data.IndicatorBrim = {}
        do
            local index = 0
            while index < #mult do
                local indicator = Isaac.Spawn(
                    7,
                    7,
                    0,
                    Vector(ent.Position.X, ent.Position.Y - position),
                    Vector(0, 0):Rotated(0),
                    nil
                ):ToLaser()
                if IRFconfig.Hitbox == true and vertical == false then
                    indicator.RenderZOffset = -6999
                end
                indicator.Angle = angle * mult[index + 1]
                indicator.Color = Color(1, 0, 0, 0)
                indicator.Timeout = 20
                local ____data_IndicatorBrim_4 = data.IndicatorBrim
                ____data_IndicatorBrim_4[#____data_IndicatorBrim_4 + 1] = indicator
                index = index + 1
            end
        end
        data.Danger = 1
    end
    if data.Danger == 1 then
        local nextTime = time + 10
        do
            local index = time
            while index < nextTime do
                do
                    local index = 0
                    while index < #data.IndicatorBrim do
                        local indicator = data.IndicatorBrim[index + 1]
                        indicator.Position = Vector(ent.Position.X, ent.Position.Y - position)
                        indicator.Color = Color.Lerp(
                            indicator.Color,
                            Color(2, 0, 0, 1),
                            0.2
                        )
                        index = index + 1
                    end
                end
                index = index + 1
            end
        end
    end
end
function postRender(self)
    __TS__ArrayForEach(
        ActiveEnemy,
        function(____, ent)
            local data = ent:GetData()
            local EntSprite = ent:GetSprite()
            if ent:IsDead() or ent:Exists() == false then
                if data.IndicatorBrim then
                    RemoveLaserIndicator(nil, ent)
                end
            end
            if ent.Type == 412 and IRFconfig.Delirium then
                IHateDelirium(
                    nil,
                    ent,
                    EntSprite,
                    data,
                    IRFconfig,
                    LaserIndicator,
                    RemoveLaserIndicator,
                    AfterDedLaserIndicator,
                    TargetLaserIndicator
                )
            end
            VanillaElseIfHell(
                nil,
                ent,
                EntSprite,
                data,
                IRFconfig,
                LaserIndicator,
                RemoveLaserIndicator,
                AfterDedLaserIndicator,
                TargetLaserIndicator,
                time
            )
            if REVEL ~= nil then
                RevCompatibility(
                    nil,
                    ent,
                    EntSprite,
                    data,
                    IRFconfig,
                    LaserIndicator,
                    RemoveLaserIndicator,
                    AfterDedLaserIndicator,
                    TargetLaserIndicator,
                    REVEL
                )
            end
        end
    )
end
function postUpdate(self)
    local entities = Isaac.GetRoomEntities()
    local enemy = {}
    if #entities == 0 then
    else
        __TS__ArrayForEach(
            entities,
            function(____, ent)
                if ent:IsActiveEnemy(true) or ent.Type == 4 and ent.Variant == 15 then
                    enemy[#enemy + 1] = ent
                end
            end
        )
    end
    ActiveEnemy = enemy
end
function cleaner(self)
    if ActiveEnemy then
        ActiveEnemy = {}
    end
    time = 0
end
function main(self)
    local mod = RegisterMod("Watch out, laser!", 1)
    local function postGameStarted(self)
        if mod:HasData() then
            local loadedFromSave = json.decode(Isaac.LoadModData(mod))
            for k, v in pairs(loadedFromSave) do
                IRFconfig[k] = v
            end
        end
    end
    local function preGameExit(self)
        mod:SaveData(json.encode(IRFconfig))
    end
    mod:AddCallback(ModCallback.PRE_GAME_EXIT, preGameExit)
    mod:AddCallback(ModCallback.POST_GAME_STARTED, postGameStarted)
    if ModConfigMenu ~= nil then
        ModConfig(nil, IRFconfig)
    end
    mod:AddCallback(ModCallback.POST_NEW_ROOM, cleaner)
    mod:AddCallback(ModCallback.PRE_GAME_EXIT, cleaner)
    mod:AddCallback(ModCallback.POST_UPDATE, postRender)
    mod:AddCallback(ModCallback.POST_UPDATE, postUpdate)
    mod:AddCallback(ModCallback.POST_UPDATE, Timer)
end
ActiveEnemy = {}
main(nil)
time = 0
return ____exports
 end,
["scripts.FiendFolio"] = function(...) 
local ____exports = {}
function ____exports.FFCompatibility(self, ent, EntSprite, spawnDanger, data, remove, IRFconfig)
    if ent.Type == 151 and EntSprite:IsPlaying("Jump") and IRFconfig.Slammer then
        local scale = 0.02
        if EntSprite:IsEventTriggered("GetPlayer") then
            if ent.Variant == 2 then
                scale = 0.035
            end
            spawnDanger(nil, ent, scale)
        end
    elseif ent.Type == 160 and (ent.Variant == 560 or ent.Variant == 561) and IRFconfig.Poobottle then
        if EntSprite:IsPlaying("Target") then
            if EntSprite:GetFrame() == 7 then
                spawnDanger(nil, ent)
            end
        end
        if EntSprite:IsPlaying("Impact") then
            if EntSprite:GetFrame() == 1 then
                remove(nil, data)
            end
        end
    elseif ent.Type == 160 and ent.Variant == 150 and IRFconfig.Diplet then
        if EntSprite:IsPlaying("Fall") then
            if EntSprite:GetFrame() == 1 then
                spawnDanger(nil, ent, 0.05)
            end
        end
        if EntSprite:IsPlaying("Land") then
            if EntSprite:GetFrame() == 1 then
                remove(nil, data)
            end
        end
    elseif ent.Type == 180 and ent.Variant == 10 and IRFconfig.Battie then
        if EntSprite:IsPlaying("FlyDown") then
            if EntSprite:GetFrame() == 1 then
                spawnDanger(nil, ent)
            end
        end
        if EntSprite:IsPlaying("FlyDown") then
            if EntSprite:GetFrame() == 10 then
                remove(nil, data)
            end
        end
    elseif ent.Type == 180 and ent.Variant == 40 and IRFconfig.Monsoon then
        if EntSprite:IsPlaying("FallLoop") or EntSprite:IsPlaying("SmallFallLoop") then
            if EntSprite:GetFrame() == 1 then
                spawnDanger(nil, ent)
            end
        end
    elseif ent.Type == 180 and ent.Variant == 91 and IRFconfig.Peeping then
        if EntSprite:IsPlaying("Appear") then
            if EntSprite:GetFrame() == 1 then
                spawnDanger(nil, ent, 0.04)
            end
        end
    elseif ent.Type == 180 and ent.Variant == 180 and IRFconfig.Tsar then
        if EntSprite:IsPlaying("LandToJump") or EntSprite:IsPlaying("Land") then
            if EntSprite:GetFrame() == 1 then
                remove(nil, data)
            end
        end
        if EntSprite:IsPlaying("JumpStart") or EntSprite:IsPlaying("LandToJump") then
            if EntSprite:IsEventTriggered("Jump") then
                spawnDanger(nil, ent)
            end
        end
    elseif ent.Type == 180 and ent.Variant == 171 and IRFconfig.Dusk then
        if EntSprite:IsPlaying("SmashLand") then
            if EntSprite:GetFrame() == 2 then
                remove(nil, data)
            end
        end
        if EntSprite:IsPlaying("SmashIdle") then
            if EntSprite:GetFrame() == 1 then
                spawnDanger(nil, ent, 0.03)
            end
        end
    end
end
return ____exports
 end,
["scripts.Swampy"] = function(...) 
local ____exports = {}
function ____exports.SwampyCompatibility(self, ent, EntSprite, spawnDanger, data, remove, IRFconfig)
    if ent.Type == 977 and EntSprite:IsPlaying("Изводы_прыжок") and IRFconfig.Splashy then
        if EntSprite:IsEventTriggered("effect") then
            spawnDanger(nil, ent)
        end
        if EntSprite:IsPlaying("Изводы_прыжок") then
            if EntSprite:GetFrame() == 54 then
                remove(nil, data)
            end
        end
    elseif ent.Type == 977 and ent.Variant == 10 and IRFconfig.RogHorn then
        if EntSprite:IsPlaying("NONE_прыжок") then
            if EntSprite:GetFrame() == 7 then
                spawnDanger(nil, ent)
            end
        end
        if EntSprite:IsPlaying("NONE_прыжок") then
            if EntSprite:GetFrame() == 27 then
                remove(nil, data)
            end
        end
    end
end
return ____exports
 end,
}
return require("main", ...)
