UNPKG

isaacscript-common

Version:

Helper functions and features for IsaacScript mods.

466 lines (465 loc) • 23.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BOSS_ID_TO_STAGE_IDS = exports.NON_STORY_BOSSES = exports.ALL_BOSSES = exports.STAGE_TO_COMBINED_BOSS_SET_MAP = exports.STAGE_ID_TO_BOSS_IDS = void 0; const isaac_typescript_definitions_1 = require("isaac-typescript-definitions"); const cachedEnumValues_1 = require("../cachedEnumValues"); const storyBosses_1 = require("../functions/storyBosses"); const ReadonlyMap_1 = require("../types/ReadonlyMap"); const ReadonlySet_1 = require("../types/ReadonlySet"); // The "bosspools.xml" file does not actually correspond to the real boss pools, so these data // structures were determined through experimentation on v1.7.8a. // We use sets of strings instead of tuples for these data structures because TypeScript/Lua does // not have real tuples. If we store bosses as tuples, then we cannot do a set lookup in O(1). /** For `StageID.BASEMENT` (1). */ const BASEMENT_BOSSES = [ isaac_typescript_definitions_1.BossID.MONSTRO, // 1 isaac_typescript_definitions_1.BossID.LARRY_JR, // 2 isaac_typescript_definitions_1.BossID.FAMINE, // 9 isaac_typescript_definitions_1.BossID.DUKE_OF_FLIES, // 13 isaac_typescript_definitions_1.BossID.GEMINI, // 17 isaac_typescript_definitions_1.BossID.STEVEN, // 20 isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.FALLEN, // 23 isaac_typescript_definitions_1.BossID.DINGLE, // 44 isaac_typescript_definitions_1.BossID.GURGLING, // 56 isaac_typescript_definitions_1.BossID.LITTLE_HORN, // 60 // - `BossID.RAG_MAN` (61) was removed in Repentance. isaac_typescript_definitions_1.BossID.DANGLE, // 64 isaac_typescript_definitions_1.BossID.TURDLING, // 65 isaac_typescript_definitions_1.BossID.BABY_PLUM, // 84 (added in Repentance) ]; /** For `StageID.CELLAR` (2). */ const CELLAR_BOSSES = [ isaac_typescript_definitions_1.BossID.FAMINE, // 9 isaac_typescript_definitions_1.BossID.DUKE_OF_FLIES, // 13 // - `BossID.FISTULA` (18) was removed in Repentance. isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.FALLEN, // 23 isaac_typescript_definitions_1.BossID.BLIGHTED_OVUM, // 32 isaac_typescript_definitions_1.BossID.WIDOW, // 34 isaac_typescript_definitions_1.BossID.PIN, // 37 isaac_typescript_definitions_1.BossID.HAUNT, // 43 isaac_typescript_definitions_1.BossID.LITTLE_HORN, // 60 isaac_typescript_definitions_1.BossID.RAG_MAN, // 61 isaac_typescript_definitions_1.BossID.BABY_PLUM, // 84 (added in Repentance) ]; /** For `StageID.BURNING_BASEMENT` (3). */ const BURNING_BASEMENT_BOSSES = [ isaac_typescript_definitions_1.BossID.MONSTRO, // 1 isaac_typescript_definitions_1.BossID.LARRY_JR, // 2 isaac_typescript_definitions_1.BossID.FAMINE, // 9 isaac_typescript_definitions_1.BossID.DUKE_OF_FLIES, // 13 isaac_typescript_definitions_1.BossID.GEMINI, // 17 (added in Repentance) isaac_typescript_definitions_1.BossID.STEVEN, // 20 (added in Repentance) isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.FALLEN, // 23 // - `BossID.HAUNT` (43) was removed in Repentance. isaac_typescript_definitions_1.BossID.DINGLE, // 44 (added in Repentance) isaac_typescript_definitions_1.BossID.GURGLING, // 56 (added in Repentance) isaac_typescript_definitions_1.BossID.LITTLE_HORN, // 60 isaac_typescript_definitions_1.BossID.RAG_MAN, // 61 isaac_typescript_definitions_1.BossID.DANGLE, // 64 (added in Repentance) isaac_typescript_definitions_1.BossID.TURDLING, // 65 (added in Repentance) isaac_typescript_definitions_1.BossID.BABY_PLUM, // 84 (added in Repentance) ]; /** For `StageID.DOWNPOUR` (27). */ const DOWNPOUR_BOSSES = [ isaac_typescript_definitions_1.BossID.LIL_BLUB, // 75 isaac_typescript_definitions_1.BossID.WORMWOOD, // 76 isaac_typescript_definitions_1.BossID.RAINMAKER, // 77 isaac_typescript_definitions_1.BossID.MIN_MIN, // 91 ]; /** For `StageID.DROSS` (28). */ const DROSS_BOSSES = [ isaac_typescript_definitions_1.BossID.LIL_BLUB, // 75 isaac_typescript_definitions_1.BossID.WORMWOOD, // 76 isaac_typescript_definitions_1.BossID.CLOG, // 92 isaac_typescript_definitions_1.BossID.COLOSTOMIA, // 95 isaac_typescript_definitions_1.BossID.TURDLET, // 97 ]; /** The set of unique bosses for Basement, Cellar, Burning Basement, Downpour, and Dross. */ const ALL_BASEMENT_BOSSES_SET = new ReadonlySet_1.ReadonlySet([ ...BASEMENT_BOSSES, ...CELLAR_BOSSES, ...BURNING_BASEMENT_BOSSES, ...DOWNPOUR_BOSSES, ...DROSS_BOSSES, ]); /** For `StageID.CAVES` (4). */ const CAVES_BOSSES = [ isaac_typescript_definitions_1.BossID.CHUB, // 3 isaac_typescript_definitions_1.BossID.GURDY, // 4 isaac_typescript_definitions_1.BossID.PESTILENCE, // 10 isaac_typescript_definitions_1.BossID.PEEP, // 14 isaac_typescript_definitions_1.BossID.FISTULA, // 18 (added in Repentance) isaac_typescript_definitions_1.BossID.CHAD, // 21 isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.GURDY_JR, // 28 isaac_typescript_definitions_1.BossID.MEGA_FATTY, // 47 isaac_typescript_definitions_1.BossID.MEGA_MAW, // 45 // - `BossID.DARK_ONE` (50) was removed in Repentance. isaac_typescript_definitions_1.BossID.FALLEN, // 23 isaac_typescript_definitions_1.BossID.STAIN, // 57 // - `BossID.FORSAKEN` (59) was removed in Repentance. // - `BossID.FRAIL` (66) was removed in Repentance. isaac_typescript_definitions_1.BossID.RAG_MEGA, // 67 isaac_typescript_definitions_1.BossID.BIG_HORN, // 69 isaac_typescript_definitions_1.BossID.BUMBINO, // 94 (added in Repentance) ]; /** For `StageID.CATACOMBS` (5). */ const CATACOMBS_BOSSES = [ isaac_typescript_definitions_1.BossID.PESTILENCE, // 10 isaac_typescript_definitions_1.BossID.PEEP, // 14 isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.FALLEN, // 23 isaac_typescript_definitions_1.BossID.HOLLOW, // 26 isaac_typescript_definitions_1.BossID.CARRION_QUEEN, // 27 isaac_typescript_definitions_1.BossID.GURDY_JR, // 28 isaac_typescript_definitions_1.BossID.HUSK, // 29 isaac_typescript_definitions_1.BossID.WRETCHED, // 36 isaac_typescript_definitions_1.BossID.DARK_ONE, // 50 isaac_typescript_definitions_1.BossID.POLYCEPHALUS, // 52 // - `BossID.STAIN` (57) was removed in Repentance. isaac_typescript_definitions_1.BossID.FORSAKEN, // 59 isaac_typescript_definitions_1.BossID.FRAIL, // 66 isaac_typescript_definitions_1.BossID.RAG_MEGA, // 67 isaac_typescript_definitions_1.BossID.BIG_HORN, // 69 isaac_typescript_definitions_1.BossID.BUMBINO, // 94 (added in Repentance) ]; /** For `StageID.FLOODED_CAVES` (6). */ const FLOODED_CAVES_BOSSES = [ isaac_typescript_definitions_1.BossID.CHUB, // 3 isaac_typescript_definitions_1.BossID.GURDY, // 4 isaac_typescript_definitions_1.BossID.PESTILENCE, // 10 isaac_typescript_definitions_1.BossID.PEEP, // 14 isaac_typescript_definitions_1.BossID.FISTULA, // 18 (added in Repentance) isaac_typescript_definitions_1.BossID.CHAD, // 21 isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.FALLEN, // 23 isaac_typescript_definitions_1.BossID.GURDY_JR, // 28 isaac_typescript_definitions_1.BossID.MEGA_MAW, // 45 (added in Repentance) isaac_typescript_definitions_1.BossID.MEGA_FATTY, // 47 (added in Repentance) // - `BossID.DARK_ONE` (50) was removed in Repentance. // - `BossID.POLYCEPHALUS` (52) was removed in Repentance. isaac_typescript_definitions_1.BossID.STAIN, // 57 isaac_typescript_definitions_1.BossID.FORSAKEN, // 59 isaac_typescript_definitions_1.BossID.FRAIL, // 66 isaac_typescript_definitions_1.BossID.RAG_MEGA, // 67 isaac_typescript_definitions_1.BossID.BIG_HORN, // 69 isaac_typescript_definitions_1.BossID.BUMBINO, // 94 (added in Repentance) ]; /** For `StageID.MINES` (29). */ const MINES_BOSSES = [ isaac_typescript_definitions_1.BossID.REAP_CREEP, // 74 isaac_typescript_definitions_1.BossID.TUFF_TWINS, // 80 isaac_typescript_definitions_1.BossID.HORNFEL, // 82 isaac_typescript_definitions_1.BossID.GREAT_GIDEON, // 83 ]; /** For `StageID.ASHPIT` (30). */ const ASHPIT_BOSSES = [ isaac_typescript_definitions_1.BossID.PILE, // 73 isaac_typescript_definitions_1.BossID.GREAT_GIDEON, // 83 isaac_typescript_definitions_1.BossID.SINGE, // 93 isaac_typescript_definitions_1.BossID.SHELL, // 96 isaac_typescript_definitions_1.BossID.CLUTCH, // 102 ]; /** The set of unique bosses for Caves, Catacombs, Flooded Caves, Mines, and Ashpit. */ const ALL_CAVES_BOSSES_SET = new ReadonlySet_1.ReadonlySet([ ...CAVES_BOSSES, ...CATACOMBS_BOSSES, ...FLOODED_CAVES_BOSSES, ...MINES_BOSSES, ...ASHPIT_BOSSES, ]); /** * For `StageID.DEPTHS` (7). * * Note that this set includes Mom, even though they are not technically in the boss pool. */ const DEPTHS_BOSSES = [ isaac_typescript_definitions_1.BossID.MONSTRO_2, // 5 isaac_typescript_definitions_1.BossID.MOM, // 6 isaac_typescript_definitions_1.BossID.WAR, // 11 isaac_typescript_definitions_1.BossID.LOKI, // 15 isaac_typescript_definitions_1.BossID.GISH, // 19 isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.FALLEN, // 23 isaac_typescript_definitions_1.BossID.GATE, // 46 isaac_typescript_definitions_1.BossID.CAGE, // 48 // - `BossID.ADVERSARY` (51) was removed in Repentance. isaac_typescript_definitions_1.BossID.BROWNIE, // 58 isaac_typescript_definitions_1.BossID.SISTERS_VIS, // 68 isaac_typescript_definitions_1.BossID.REAP_CREEP, // 74 (added in Repentance) ]; /** * For `StageID.NECROPOLIS` (8). * * Note that this set includes Mom, even though they are not technically in the boss pool. */ const NECROPOLIS_BOSSES = [ isaac_typescript_definitions_1.BossID.MOM, // 6 isaac_typescript_definitions_1.BossID.WAR, // 11 isaac_typescript_definitions_1.BossID.LOKI, // 15 isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.FALLEN, // 23 isaac_typescript_definitions_1.BossID.BLOAT, // 30 isaac_typescript_definitions_1.BossID.MASK_OF_INFAMY, // 35 // - `BossID.GATE` (46) was removed in Repentance. isaac_typescript_definitions_1.BossID.ADVERSARY, // 51 isaac_typescript_definitions_1.BossID.BROWNIE, // 58 isaac_typescript_definitions_1.BossID.SISTERS_VIS, // 68 isaac_typescript_definitions_1.BossID.PILE, // 73 (added in Repentance) ]; /** * For `StageID.DANK_DEPTHS` (9). * * Note that this set includes Mom, even though they are not technically in the boss pool. */ const DANK_DEPTHS_BOSSES = [ isaac_typescript_definitions_1.BossID.MONSTRO_2, // 5 isaac_typescript_definitions_1.BossID.MOM, // 6 isaac_typescript_definitions_1.BossID.WAR, // 11 isaac_typescript_definitions_1.BossID.LOKI, // 15 isaac_typescript_definitions_1.BossID.GISH, // 19 isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.FALLEN, // 23 isaac_typescript_definitions_1.BossID.GATE, // 46 (added in Repentance) isaac_typescript_definitions_1.BossID.CAGE, // 48 (added in Repentance) // - `BossID.ADVERSARY` (51) was removed in Repentance. isaac_typescript_definitions_1.BossID.BROWNIE, // 58 isaac_typescript_definitions_1.BossID.SISTERS_VIS, // 68 isaac_typescript_definitions_1.BossID.REAP_CREEP, // 74 (added in Repentance) ]; /** * For `StageID.MAUSOLEUM` (31). * * Note that this set includes Mausoleum Mom, even though they are not technically in the boss pool. */ const MAUSOLEUM_BOSSES = [ isaac_typescript_definitions_1.BossID.SIREN, // 79 isaac_typescript_definitions_1.BossID.HERETIC, // 81 isaac_typescript_definitions_1.BossID.MAUSOLEUM_MOM, // 89 ]; /** * For `StageID.GEHENNA` (32). * * Note that this set includes Mausoleum Mom, even though they are not technically in the boss pool. */ const GEHENNA_BOSSES = [ isaac_typescript_definitions_1.BossID.VISAGE, // 78 isaac_typescript_definitions_1.BossID.MAUSOLEUM_MOM, // 89 isaac_typescript_definitions_1.BossID.HORNY_BOYS, // 101 ]; /** The set of unique bosses for Depths, Necropolis, Dank Depths, Mausoleum, and Gehenna. */ const ALL_DEPTHS_BOSSES_SET = new ReadonlySet_1.ReadonlySet([ ...DEPTHS_BOSSES, ...NECROPOLIS_BOSSES, ...DANK_DEPTHS_BOSSES, ...MAUSOLEUM_BOSSES, ...GEHENNA_BOSSES, ]); /** * For `StageID.WOMB` (10). * * Note that this set includes Mom's Heart & It Lives, even though they are not technically in the * boss pool. */ const WOMB_BOSSES = [ isaac_typescript_definitions_1.BossID.SCOLEX, // 7 isaac_typescript_definitions_1.BossID.MOMS_HEART, // 8 isaac_typescript_definitions_1.BossID.DEATH, // 12 isaac_typescript_definitions_1.BossID.BLASTOCYST, // 16 isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.FALLEN, // 23 isaac_typescript_definitions_1.BossID.IT_LIVES, // 25 // - `BossID.BLOAT` (30) was removed in Repentance. isaac_typescript_definitions_1.BossID.LOKII, // 31 // - `BossID.TERATOMA` (33) was removed in Repentance. isaac_typescript_definitions_1.BossID.CONQUEST, // 38 // - `BossID.DADDY_LONG_LEGS` (41) was removed in Repentance. // - `BossID.TRIACHNID` (42) was removed in Repentance. isaac_typescript_definitions_1.BossID.MAMA_GURDY, // 49 isaac_typescript_definitions_1.BossID.MR_FRED, // 53 // - `BossID.SISTERS_VIS` (68) was removed in Repentance. isaac_typescript_definitions_1.BossID.MATRIARCH, // 72 ]; /** * For `StageID.UTERO` (11). * * Note that this set includes Mom's Heart & It Lives, even though they are not technically in the * boss pool. */ const UTERO_BOSSES = [ isaac_typescript_definitions_1.BossID.MOMS_HEART, // 8 isaac_typescript_definitions_1.BossID.DEATH, // 12 // - `BossID.BLASTOCYST` (16) was removed in Repentance. isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.FALLEN, // 23 isaac_typescript_definitions_1.BossID.IT_LIVES, // 25 isaac_typescript_definitions_1.BossID.BLOAT, // 30 isaac_typescript_definitions_1.BossID.LOKII, // 31 isaac_typescript_definitions_1.BossID.TERATOMA, // 33 isaac_typescript_definitions_1.BossID.CONQUEST, // 38 isaac_typescript_definitions_1.BossID.DADDY_LONG_LEGS, // 41 isaac_typescript_definitions_1.BossID.TRIACHNID, // 42 // - `BossID.MAMA_GURDY` (49) was removed in Repentance. // - `BossID.MR_FRED` (52) was removed in Repentance. // - `BossID.SISTERS_VIS` (68) was removed in Repentance. // - `BossID.MATRIARCH` (72) was removed in Repentance. ]; /** * 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. */ const SCARRED_WOMB_BOSSES = [ isaac_typescript_definitions_1.BossID.SCOLEX, // 7 isaac_typescript_definitions_1.BossID.MOMS_HEART, // 8 isaac_typescript_definitions_1.BossID.DEATH, // 12 isaac_typescript_definitions_1.BossID.BLASTOCYST, // 16 isaac_typescript_definitions_1.BossID.HEADLESS_HORSEMAN, // 22 isaac_typescript_definitions_1.BossID.FALLEN, // 23 isaac_typescript_definitions_1.BossID.IT_LIVES, // 25 // - `BossID.BLOAT` (30) was removed in Repentance. isaac_typescript_definitions_1.BossID.LOKII, // 31 (added in Repentance) // - `BossID.TERATOMA` (33) was removed in Repentance. isaac_typescript_definitions_1.BossID.CONQUEST, // 38 // - `BossID.DADDY_LONG_LEGS` (41) was removed in Repentance. isaac_typescript_definitions_1.BossID.TRIACHNID, // 42 isaac_typescript_definitions_1.BossID.MAMA_GURDY, // 49 isaac_typescript_definitions_1.BossID.MR_FRED, // 53 (added in Repentance) // - `BossID.SISTERS_VIS` (68) was removed in Repentance. isaac_typescript_definitions_1.BossID.MATRIARCH, // 72 ]; /** * For `StageID.CORPSE` (33). * * Note that this set includes Mother, even though she is not technically in the boss pool. */ const CORPSE_BOSSES = [ isaac_typescript_definitions_1.BossID.SCOURGE, // 85 isaac_typescript_definitions_1.BossID.CHIMERA, // 86 isaac_typescript_definitions_1.BossID.ROTGUT, // 87 isaac_typescript_definitions_1.BossID.MOTHER, // 88 ]; /** The set of unique bosses for Womb, Utero, Scarred Womb, and Corpse. */ const ALL_WOMB_BOSSES_SET = new ReadonlySet_1.ReadonlySet([ ...WOMB_BOSSES, ...UTERO_BOSSES, ...SCARRED_WOMB_BOSSES, ...CORPSE_BOSSES, ]); const BLUE_WOMB_BOSSES = [ isaac_typescript_definitions_1.BossID.HUSH, // 63 ]; const ALL_BLUE_WOMB_BOSSES_SET = new ReadonlySet_1.ReadonlySet([...BLUE_WOMB_BOSSES]); const SHEOL_BOSSES = [ isaac_typescript_definitions_1.BossID.SATAN, // 24 ]; const CATHEDRAL_BOSSES = [ isaac_typescript_definitions_1.BossID.ISAAC, // 39 ]; const ALL_STAGE_10_BOSSES_SET = new ReadonlySet_1.ReadonlySet([ ...SHEOL_BOSSES, ...CATHEDRAL_BOSSES, ]); /** * Note that this set includes Mega Satan, even though they are not technically in the boss pool. */ const DARK_ROOM_BOSSES = [ isaac_typescript_definitions_1.BossID.LAMB, // 54 isaac_typescript_definitions_1.BossID.MEGA_SATAN, // 55 ]; /** * Note that this set includes Mega Satan, even though they are not technically in the boss pool. */ const CHEST_BOSSES = [ isaac_typescript_definitions_1.BossID.BLUE_BABY, // 40 isaac_typescript_definitions_1.BossID.MEGA_SATAN, // 55 ]; const ALL_STAGE_11_BOSSES_SET = new ReadonlySet_1.ReadonlySet([ ...DARK_ROOM_BOSSES, ...CHEST_BOSSES, ]); const VOID_BOSSES = [ isaac_typescript_definitions_1.BossID.DELIRIUM, // 70 ]; const ALL_VOID_BOSSES_SET = new ReadonlySet_1.ReadonlySet([...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). */ const HOME_BOSSES = [ isaac_typescript_definitions_1.BossID.DOGMA, // 99 isaac_typescript_definitions_1.BossID.BEAST, // 100 ]; const ALL_HOME_BOSSES_SET = new ReadonlySet_1.ReadonlySet([...HOME_BOSSES]); exports.STAGE_ID_TO_BOSS_IDS = new ReadonlyMap_1.ReadonlyMap([ [isaac_typescript_definitions_1.StageID.BASEMENT, BASEMENT_BOSSES], // 1 [isaac_typescript_definitions_1.StageID.CELLAR, CELLAR_BOSSES], // 2 [isaac_typescript_definitions_1.StageID.BURNING_BASEMENT, BURNING_BASEMENT_BOSSES], // 3 [isaac_typescript_definitions_1.StageID.DOWNPOUR, DOWNPOUR_BOSSES], // 27 [isaac_typescript_definitions_1.StageID.DROSS, DROSS_BOSSES], // 28 [isaac_typescript_definitions_1.StageID.CAVES, CAVES_BOSSES], // 4 [isaac_typescript_definitions_1.StageID.CATACOMBS, CATACOMBS_BOSSES], // 5 [isaac_typescript_definitions_1.StageID.FLOODED_CAVES, FLOODED_CAVES_BOSSES], // 6 [isaac_typescript_definitions_1.StageID.MINES, MINES_BOSSES], // 29 [isaac_typescript_definitions_1.StageID.ASHPIT, ASHPIT_BOSSES], // 30 [isaac_typescript_definitions_1.StageID.DEPTHS, DEPTHS_BOSSES], // 7 [isaac_typescript_definitions_1.StageID.NECROPOLIS, NECROPOLIS_BOSSES], // 8 [isaac_typescript_definitions_1.StageID.DANK_DEPTHS, DANK_DEPTHS_BOSSES], // 9 [isaac_typescript_definitions_1.StageID.MAUSOLEUM, MAUSOLEUM_BOSSES], // 31 [isaac_typescript_definitions_1.StageID.GEHENNA, GEHENNA_BOSSES], // 32 [isaac_typescript_definitions_1.StageID.WOMB, WOMB_BOSSES], // 10 [isaac_typescript_definitions_1.StageID.UTERO, UTERO_BOSSES], // 11 [isaac_typescript_definitions_1.StageID.SCARRED_WOMB, SCARRED_WOMB_BOSSES], // 12 [isaac_typescript_definitions_1.StageID.CORPSE, CORPSE_BOSSES], // 33 [isaac_typescript_definitions_1.StageID.BLUE_WOMB, BLUE_WOMB_BOSSES], // 13 [isaac_typescript_definitions_1.StageID.SHEOL, SHEOL_BOSSES], // 14 [isaac_typescript_definitions_1.StageID.CATHEDRAL, CATHEDRAL_BOSSES], // 15 [isaac_typescript_definitions_1.StageID.DARK_ROOM, DARK_ROOM_BOSSES], // 16 [isaac_typescript_definitions_1.StageID.CHEST, CHEST_BOSSES], // 17 [isaac_typescript_definitions_1.StageID.VOID, VOID_BOSSES], // 26 [isaac_typescript_definitions_1.StageID.HOME, HOME_BOSSES], // 35 ]); exports.STAGE_TO_COMBINED_BOSS_SET_MAP = new ReadonlyMap_1.ReadonlyMap([ [isaac_typescript_definitions_1.LevelStage.BASEMENT_1, ALL_BASEMENT_BOSSES_SET], // 1 [isaac_typescript_definitions_1.LevelStage.BASEMENT_2, ALL_BASEMENT_BOSSES_SET], // 2 [isaac_typescript_definitions_1.LevelStage.CAVES_1, ALL_CAVES_BOSSES_SET], // 3 [isaac_typescript_definitions_1.LevelStage.CAVES_2, ALL_CAVES_BOSSES_SET], // 4 [isaac_typescript_definitions_1.LevelStage.DEPTHS_1, ALL_DEPTHS_BOSSES_SET], // 5 [isaac_typescript_definitions_1.LevelStage.DEPTHS_2, ALL_DEPTHS_BOSSES_SET], // 6 [isaac_typescript_definitions_1.LevelStage.WOMB_1, ALL_WOMB_BOSSES_SET], // 7 [isaac_typescript_definitions_1.LevelStage.WOMB_2, ALL_WOMB_BOSSES_SET], // 8 [isaac_typescript_definitions_1.LevelStage.BLUE_WOMB, ALL_BLUE_WOMB_BOSSES_SET], // 9 [isaac_typescript_definitions_1.LevelStage.SHEOL_CATHEDRAL, ALL_STAGE_10_BOSSES_SET], // 10 [isaac_typescript_definitions_1.LevelStage.DARK_ROOM_CHEST, ALL_STAGE_11_BOSSES_SET], // 11 [isaac_typescript_definitions_1.LevelStage.VOID, ALL_VOID_BOSSES_SET], // 12 [isaac_typescript_definitions_1.LevelStage.HOME, ALL_HOME_BOSSES_SET], // 13 ]); exports.ALL_BOSSES = cachedEnumValues_1.BOSS_ID_VALUES.filter((bossID) => bossID !== isaac_typescript_definitions_1.BossID.RAGLICH); exports.NON_STORY_BOSSES = exports.ALL_BOSSES.filter((bossID) => !(0, storyBosses_1.isStoryBossID)(bossID)); exports.BOSS_ID_TO_STAGE_IDS = (() => { const partialBossIDsToStageIDs = {}; for (const bossID of cachedEnumValues_1.BOSS_ID_VALUES) { const stageIDs = new Set(); for (const [stageID, bossIDs] of exports.STAGE_ID_TO_BOSS_IDS) { if (bossIDs.includes(bossID)) { stageIDs.add(stageID); } } partialBossIDsToStageIDs[bossID] = stageIDs; } const bossIDsToStageIDs = partialBossIDsToStageIDs; // In Repentance, the following bosses will have empty sets: // - BossID.ULTRA_GREED (62) // - BossID.ULTRA_GREEDIER (71) // - BossID.MAUSOLEUM_MOMS_HEART (90) // - BossID.RAGLICH (98) bossIDsToStageIDs[isaac_typescript_definitions_1.BossID.ULTRA_GREED].add(isaac_typescript_definitions_1.StageID.ULTRA_GREED); // 62 bossIDsToStageIDs[isaac_typescript_definitions_1.BossID.ULTRA_GREEDIER].add(isaac_typescript_definitions_1.StageID.ULTRA_GREED); // 71 bossIDsToStageIDs[isaac_typescript_definitions_1.BossID.MAUSOLEUM_MOMS_HEART].add(isaac_typescript_definitions_1.StageID.MAUSOLEUM); // 90 bossIDsToStageIDs[isaac_typescript_definitions_1.BossID.MAUSOLEUM_MOMS_HEART].add(isaac_typescript_definitions_1.StageID.GEHENNA); // 90 return bossIDsToStageIDs; })();