isaacscript-common 81.0.5 → 82.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,30 @@
1
- import { ActiveSlot, BossID, CacheFlag, ControllerIndex, DoorSlot, DoorSlotFlag, GridEntityType, GridEntityXMLType, ItemConfigCardType, ItemConfigTag, ItemPoolType, Keyboard, PillColor, PlayerForm, PocketItemSlot, RoomShape, SeedEffect, SoundEffect, TrinketSlot } from "isaac-typescript-definitions";
1
+ import { ActiveSlot, BossID, ControllerIndex, DoorSlot, GridEntityType, GridEntityXMLType, ItemConfigCardType, ItemPoolType, Keyboard, PillColor, PlayerForm, PocketItemSlot, RoomShape, SeedEffect, SoundEffect, TrinketSlot } from "isaac-typescript-definitions";
2
2
  import { HealthType } from "../enums/HealthType";
3
3
  import { ModCallbackCustom } from "../enums/ModCallbackCustom";
4
4
  import { PlayerStat } from "../enums/PlayerStat";
5
5
  import { SerializationBrand } from "../enums/private/SerializationBrand";
6
6
  export declare const ACTIVE_SLOT_VALUES: readonly ActiveSlot[];
7
- export declare const BOSS_IDS: readonly BossID[];
8
- export declare const CACHE_FLAG_VALUES: readonly CacheFlag[];
7
+ export declare const BOSS_ID_VALUES: readonly BossID[];
8
+ export declare const CACHE_FLAG_VALUES: readonly (number & {
9
+ readonly __bitFlagBrand: symbol;
10
+ } & {
11
+ readonly __cacheFlagBrand: symbol;
12
+ })[];
9
13
  export declare const CONTROLLER_INDEX_VALUES: readonly ControllerIndex[];
10
- export declare const DOOR_SLOT_FLAG_VALUES: readonly DoorSlotFlag[];
14
+ export declare const DOOR_SLOT_FLAG_VALUES: readonly (number & {
15
+ readonly __bitFlagBrand: symbol;
16
+ } & {
17
+ readonly __doorSlotFlagBrand: symbol;
18
+ })[];
11
19
  export declare const DOOR_SLOT_VALUES: readonly DoorSlot[];
12
20
  export declare const GRID_ENTITY_TYPE_VALUES: readonly GridEntityType[];
13
21
  export declare const GRID_ENTITY_XML_TYPE_VALUES: readonly GridEntityXMLType[];
14
22
  export declare const MOD_CALLBACK_CUSTOM_VALUES: readonly ModCallbackCustom[];
15
- export declare const ITEM_CONFIG_TAG_VALUES: readonly ItemConfigTag[];
23
+ export declare const ITEM_CONFIG_TAG_VALUES: readonly (number & {
24
+ readonly __bitFlagBrand: symbol;
25
+ } & {
26
+ readonly __itemConfigTagBrand: symbol;
27
+ })[];
16
28
  export declare const ITEM_CONFIG_CARD_TYPE_VALUES: readonly ItemConfigCardType[];
17
29
  export declare const ITEM_POOL_TYPE_VALUES: readonly ItemPoolType[];
18
30
  export declare const KEYBOARD_VALUES: readonly Keyboard[];
@@ -1 +1 @@
1
- {"version":3,"file":"cachedEnumValues.d.ts","sourceRoot":"","sources":["../../src/arrays/cachedEnumValues.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,MAAM,EACN,SAAS,EACT,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAGzE,eAAO,MAAM,kBAAkB,EAAE,SAAS,UAAU,EACzB,CAAC;AAE5B,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAA0B,CAAC;AAEjE,eAAO,MAAM,iBAAiB,EAAE,SAAS,SAAS,EAA6B,CAAC;AAEhF,eAAO,MAAM,uBAAuB,EAAE,SAAS,eAAe,EAC9B,CAAC;AAEjC,eAAO,MAAM,qBAAqB,EAAE,SAAS,YAAY,EAC5B,CAAC;AAE9B,eAAO,MAAM,gBAAgB,EAAE,SAAS,QAAQ,EAA4B,CAAC;AAE7E,eAAO,MAAM,uBAAuB,EAAE,SAAS,cAAc,EAC9B,CAAC;AAEhC,eAAO,MAAM,2BAA2B,EAAE,SAAS,iBAAiB,EAClC,CAAC;AAEnC,eAAO,MAAM,0BAA0B,EAAE,SAAS,iBAAiB,EACjC,CAAC;AAEnC,eAAO,MAAM,sBAAsB,EAAE,SAAS,aAAa,EAC7B,CAAC;AAE/B,eAAO,MAAM,4BAA4B,EAAE,SAAS,kBAAkB,EACnC,CAAC;AAEpC,eAAO,MAAM,qBAAqB,EAAE,SAAS,YAAY,EAC5B,CAAC;AAE9B,eAAO,MAAM,eAAe,EAAE,SAAS,QAAQ,EAA4B,CAAC;AAE5E,eAAO,MAAM,kBAAkB,EAAE,SAAS,UAAU,EACzB,CAAC;AAE5B,eAAO,MAAM,iBAAiB,EAAE,SAAS,SAAS,EAA6B,CAAC;AAEhF,eAAO,MAAM,kBAAkB,EAAE,SAAS,UAAU,EACzB,CAAC;AAE5B,eAAO,MAAM,uBAAuB,EAAE,SAAS,cAAc,EAC9B,CAAC;AAEhC,eAAO,MAAM,iBAAiB,EAAE,SAAS,SAAS,EAA6B,CAAC;AAEhF,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAA8B,CAAC;AAE7E,eAAO,MAAM,0BAA0B,EAAE,SAAS,kBAAkB,EACjC,CAAC;AAEpC,eAAO,MAAM,mBAAmB,EAAE,SAAS,WAAW,EAC1B,CAAC;AAE7B,eAAO,MAAM,kBAAkB,EAAE,SAAS,UAAU,EACzB,CAAC;AAE5B,eAAO,MAAM,mBAAmB,EAAE,SAAS,WAAW,EAC1B,CAAC"}
1
+ {"version":3,"file":"cachedEnumValues.d.ts","sourceRoot":"","sources":["../../src/arrays/cachedEnumValues.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,MAAM,EAEN,eAAe,EACf,QAAQ,EAER,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAElB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAGzE,eAAO,MAAM,kBAAkB,uBAA4B,CAAC;AAE5D,eAAO,MAAM,cAAc,mBAAwB,CAAC;AAEpD,eAAO,MAAM,iBAAiB;;;;IAA2B,CAAC;AAE1D,eAAO,MAAM,uBAAuB,4BAAiC,CAAC;AAEtE,eAAO,MAAM,qBAAqB;;;;IAA8B,CAAC;AAEjE,eAAO,MAAM,gBAAgB,qBAA0B,CAAC;AAExD,eAAO,MAAM,uBAAuB,2BAAgC,CAAC;AAErE,eAAO,MAAM,2BAA2B,8BAAmC,CAAC;AAE5E,eAAO,MAAM,0BAA0B,8BAAmC,CAAC;AAE3E,eAAO,MAAM,sBAAsB;;;;IAA+B,CAAC;AAEnE,eAAO,MAAM,4BAA4B,+BAAoC,CAAC;AAE9E,eAAO,MAAM,qBAAqB,yBAA8B,CAAC;AAEjE,eAAO,MAAM,eAAe,qBAA0B,CAAC;AAEvD,eAAO,MAAM,kBAAkB,uBAA4B,CAAC;AAE5D,eAAO,MAAM,iBAAiB,sBAA2B,CAAC;AAE1D,eAAO,MAAM,kBAAkB,uBAA4B,CAAC;AAE5D,eAAO,MAAM,uBAAuB,2BAAgC,CAAC;AAErE,eAAO,MAAM,iBAAiB,sBAA2B,CAAC;AAE1D,eAAO,MAAM,YAAY,uBAA4B,CAAC;AAEtD,eAAO,MAAM,0BAA0B,+BAAoC,CAAC;AAE5E,eAAO,MAAM,mBAAmB,wBAA6B,CAAC;AAE9D,eAAO,MAAM,kBAAkB,uBAA4B,CAAC;AAE5D,eAAO,MAAM,mBAAmB,wBAA6B,CAAC"}
@@ -30,7 +30,7 @@ local SerializationBrand = ____SerializationBrand.SerializationBrand
30
30
  local ____enums = require("functions.enums")
31
31
  local getEnumValues = ____enums.getEnumValues
32
32
  ____exports.ACTIVE_SLOT_VALUES = getEnumValues(nil, ActiveSlot)
33
- ____exports.BOSS_IDS = getEnumValues(nil, BossID)
33
+ ____exports.BOSS_ID_VALUES = getEnumValues(nil, BossID)
34
34
  ____exports.CACHE_FLAG_VALUES = getEnumValues(nil, CacheFlag)
35
35
  ____exports.CONTROLLER_INDEX_VALUES = getEnumValues(nil, ControllerIndex)
36
36
  ____exports.DOOR_SLOT_FLAG_VALUES = getEnumValues(nil, DoorSlotFlag)
@@ -144,7 +144,7 @@ function CustomStages.prototype.____constructor(self, customGridEntities, custom
144
144
  return nil
145
145
  end
146
146
  if not self.usingRedKey then
147
- return
147
+ return nil
148
148
  end
149
149
  self.usingRedKey = false
150
150
  local level = game:GetLevel()
@@ -164,7 +164,7 @@ function CustomStages.prototype.____constructor(self, customGridEntities, custom
164
164
  self.getShaderParams = function(____, shaderName)
165
165
  local customStage = v.run.currentCustomStage
166
166
  if customStage == nil then
167
- return
167
+ return nil
168
168
  end
169
169
  streakTextGetShaderParams(nil, customStage, shaderName)
170
170
  return nil
@@ -60,10 +60,10 @@ function Pause.prototype.____constructor(self, disableInputs)
60
60
  end
61
61
  self.inputActionGetActionValue = function(____, _entity, _inputHook, buttonAction)
62
62
  if buttonAction ~= ButtonAction.SHOOT_RIGHT then
63
- return
63
+ return nil
64
64
  end
65
65
  if not v.run.shouldUnpause then
66
- return
66
+ return nil
67
67
  end
68
68
  v.run.shouldUnpause = false
69
69
  return 1
@@ -52,7 +52,7 @@ function PreventGridEntityRespawn.prototype.____constructor(self, runInNFrames)
52
52
  end
53
53
  local roomListIndex = getRoomListIndex(nil)
54
54
  if not v.level.roomListIndexToDecorationGridIndexes:has(roomListIndex) then
55
- return
55
+ return nil
56
56
  end
57
57
  local decorations = getGridEntities(nil, GridEntityType.DECORATION)
58
58
  for ____, decoration in ipairs(decorations) do
@@ -1,4 +1,4 @@
1
- import type { LevelStage, StageType } from "isaac-typescript-definitions";
1
+ import type { LevelStage, StageID } from "isaac-typescript-definitions";
2
2
  import { BossID, EntityType } from "isaac-typescript-definitions";
3
3
  /**
4
4
  * Helper function to get all of the non-dead bosses in the room.
@@ -56,7 +56,9 @@ export declare function getBossName(bossID: BossID): string;
56
56
  *
57
57
  * Also see the `getAllBossesSet` and `getCombinedBossSet` functions.
58
58
  */
59
- export declare function getBossSet(stage: LevelStage, stageType: StageType): ReadonlySet<BossID> | undefined;
59
+ export declare function getBossSet(stageID: StageID): ReadonlySet<BossID> | undefined;
60
+ /** Helper function to get the set of stage IDs that a particular boss naturally appears in. */
61
+ export declare function getBossStageIDs(bossID: BossID): ReadonlySet<StageID>;
60
62
  /**
61
63
  * Helper function to get all of the bosses in the room.
62
64
  *
@@ -1 +1 @@
1
- {"version":3,"file":"bosses.d.ts","sourceRoot":"","sources":["../../src/functions/bosses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EACL,MAAM,EACN,UAAU,EAGX,MAAM,8BAA8B,CAAC;AAgCtC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,UAAU,GAAE,UAAU,GAAG,CAAC,CAAM,EAChC,OAAO,SAAK,EACZ,OAAO,SAAK,EACZ,cAAc,UAAQ,GACrB,SAAS,SAAS,EAAE,CAGtB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAC7B,kBAAkB,UAAO,GACxB,WAAW,CAAC,MAAM,CAAC,CAIrB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CA0B9C;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,GACX,MAAM,GAAG,SAAS,CAGpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,SAAS,GACnB,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAOjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,UAAU,CAAC,EAAE,UAAU,EACvB,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,EACb,cAAc,UAAQ,GACrB,SAAS,SAAS,EAAE,CAGtB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,GAChB,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAEjC;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,GACb,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAE5B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,6FAA6F;AAC7F,wBAAgB,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAE7C;AAmCD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,mBAAmB,EAAE,MAAM,GAAG,GAAG,EACjC,QAAQ,GAAE,MAAmB,EAC7B,OAAO,GAAE,MAAM,GAAG,SAAqB,EACvC,SAAS,GAAE,IAAI,GAAG,GAAG,GAAG,SAAqB,EAC7C,WAAW,CAAC,EAAE,GAAG,GAChB,SAAS,CAiCX;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,mBAAmB,EAAE,MAAM,GAAG,GAAG,EACjC,SAAS,EAAE,IAAI,GAAG,GAAG,EACrB,QAAQ,GAAE,MAAmB,EAC7B,OAAO,GAAE,MAAM,GAAG,SAAqB,EACvC,WAAW,CAAC,EAAE,GAAG,GAChB,SAAS,CAYX"}
1
+ {"version":3,"file":"bosses.d.ts","sourceRoot":"","sources":["../../src/functions/bosses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,MAAM,EACN,UAAU,EAGX,MAAM,8BAA8B,CAAC;AAiCtC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,UAAU,GAAE,UAAU,GAAG,CAAC,CAAM,EAChC,OAAO,SAAK,EACZ,OAAO,SAAK,EACZ,cAAc,UAAQ,GACrB,SAAS,SAAS,EAAE,CAGtB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAC7B,kBAAkB,UAAO,GACxB,WAAW,CAAC,MAAM,CAAC,CAIrB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CA0B9C;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,GACX,MAAM,GAAG,SAAS,CAGpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAE5E;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAEpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,UAAU,CAAC,EAAE,UAAU,EACvB,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,EACb,cAAc,UAAQ,GACrB,SAAS,SAAS,EAAE,CAGtB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,GAChB,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAEjC;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,GACb,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAE5B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,6FAA6F;AAC7F,wBAAgB,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAE7C;AAmCD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,mBAAmB,EAAE,MAAM,GAAG,GAAG,EACjC,QAAQ,GAAE,MAAmB,EAC7B,OAAO,GAAE,MAAM,GAAG,SAAqB,EACvC,SAAS,GAAE,IAAI,GAAG,GAAG,GAAG,SAAqB,EAC7C,WAAW,CAAC,EAAE,GAAG,GAChB,SAAS,CAiCX;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,mBAAmB,EAAE,MAAM,GAAG,GAAG,EACjC,SAAS,EAAE,IAAI,GAAG,GAAG,EACrB,QAAQ,GAAE,MAAmB,EAC7B,OAAO,GAAE,MAAM,GAAG,SAAqB,EACvC,WAAW,CAAC,EAAE,GAAG,GAChB,SAAS,CAYX"}
@@ -21,8 +21,9 @@ local DEFAULT_BOSS_NAME = ____bossNames.DEFAULT_BOSS_NAME
21
21
  local ____bossSets = require("sets.bossSets")
22
22
  local ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET = ____bossSets.ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET
23
23
  local ALL_BOSSES_SET = ____bossSets.ALL_BOSSES_SET
24
+ local BOSS_ID_TO_STAGE_IDS = ____bossSets.BOSS_ID_TO_STAGE_IDS
25
+ local STAGE_ID_TO_BOSS_SET_MAP = ____bossSets.STAGE_ID_TO_BOSS_SET_MAP
24
26
  local STAGE_TO_COMBINED_BOSS_SET_MAP = ____bossSets.STAGE_TO_COMBINED_BOSS_SET_MAP
25
- local STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP = ____bossSets.STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP
26
27
  local ____repentanceBossIDsSet = require("sets.repentanceBossIDsSet")
27
28
  local REPENTANCE_ONLY_BOSS_IDS_SET = ____repentanceBossIDsSet.REPENTANCE_ONLY_BOSS_IDS_SET
28
29
  local ____sinEntityTypesSet = require("sets.sinEntityTypesSet")
@@ -147,12 +148,12 @@ end
147
148
  -- combination.
148
149
  --
149
150
  -- Also see the `getAllBossesSet` and `getCombinedBossSet` functions.
150
- function ____exports.getBossSet(self, stage, stageType)
151
- local stageTypeMap = STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP:get(stage)
152
- if stageTypeMap == nil then
153
- return nil
154
- end
155
- return stageTypeMap:get(stageType)
151
+ function ____exports.getBossSet(self, stageID)
152
+ return STAGE_ID_TO_BOSS_SET_MAP:get(stageID)
153
+ end
154
+ --- Helper function to get the set of stage IDs that a particular boss naturally appears in.
155
+ function ____exports.getBossStageIDs(self, bossID)
156
+ return BOSS_ID_TO_STAGE_IDS[bossID]
156
157
  end
157
158
  --- Helper function to get all of the bosses in the room.
158
159
  --
@@ -443,7 +443,7 @@ function ____exports.spawnGridEntityWithVariant(self, gridEntityType, variant, g
443
443
  if removeExistingGridEntity then
444
444
  ____exports.removeGridEntity(nil, existingGridEntity, true)
445
445
  else
446
- return
446
+ return nil
447
447
  end
448
448
  end
449
449
  local position = isVector(nil, gridIndexOrPosition) and gridIndexOrPosition or room:GetGridPosition(gridIndexOrPosition)
@@ -5154,7 +5154,10 @@ export declare function getBossRushDoor(): GridEntityDoor | undefined;
5154
5154
  *
5155
5155
  * Also see the `getAllBossesSet` and `getCombinedBossSet` functions.
5156
5156
  */
5157
- export declare function getBossSet(stage: LevelStage, stageType: StageType): ReadonlySet<BossID> | undefined;
5157
+ export declare function getBossSet(stageID: StageID): ReadonlySet<BossID> | undefined;
5158
+
5159
+ /** Helper function to get the set of stage IDs that a particular boss naturally appears in. */
5160
+ export declare function getBossStageIDs(bossID: BossID): ReadonlySet<StageID>;
5158
5161
 
5159
5162
  /**
5160
5163
  * Helper function to get a card description from a `CardType` value. Returns "Unknown" if the
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 81.0.4
3
+ isaacscript-common 81.0.5
4
4
 
5
5
  This is the "isaacscript-common" library, which was created with the IsaacScript tool.
6
6
 
@@ -11008,7 +11008,10 @@ return ____exports
11008
11008
  end,
11009
11009
  ["lua_modules.isaac-typescript-definitions.dist.enums.StageID"] = function(...)
11010
11010
  local ____exports = {}
11011
- --- This matches the filename used in the XML/STB file for the room.
11011
+ --- Corresponds to the filename used in the XML/STB file for the room.
11012
+ --
11013
+ -- This enum is not contiguous. In other words, the enum ranges from `StageID.SPECIAL_ROOMS` (0) to
11014
+ -- `StageID.BACKWARDS` (36), but there are no values corresponding to 18 through 25.
11012
11015
  ____exports.StageID = {}
11013
11016
  ____exports.StageID.SPECIAL_ROOMS = 0
11014
11017
  ____exports.StageID[____exports.StageID.SPECIAL_ROOMS] = "SPECIAL_ROOMS"
@@ -23142,7 +23145,7 @@ local SerializationBrand = ____SerializationBrand.SerializationBrand
23142
23145
  local ____enums = require("functions.enums")
23143
23146
  local getEnumValues = ____enums.getEnumValues
23144
23147
  ____exports.ACTIVE_SLOT_VALUES = getEnumValues(nil, ActiveSlot)
23145
- ____exports.BOSS_IDS = getEnumValues(nil, BossID)
23148
+ ____exports.BOSS_ID_VALUES = getEnumValues(nil, BossID)
23146
23149
  ____exports.CACHE_FLAG_VALUES = getEnumValues(nil, CacheFlag)
23147
23150
  ____exports.CONTROLLER_INDEX_VALUES = getEnumValues(nil, ControllerIndex)
23148
23151
  ____exports.DOOR_SLOT_FLAG_VALUES = getEnumValues(nil, DoorSlotFlag)
@@ -33584,7 +33587,7 @@ function ____exports.spawnGridEntityWithVariant(self, gridEntityType, variant, g
33584
33587
  if removeExistingGridEntity then
33585
33588
  ____exports.removeGridEntity(nil, existingGridEntity, true)
33586
33589
  else
33587
- return
33590
+ return nil
33588
33591
  end
33589
33592
  end
33590
33593
  local position = isVector(nil, gridIndexOrPosition) and gridIndexOrPosition or room:GetGridPosition(gridIndexOrPosition)
@@ -49288,10 +49291,10 @@ function Pause.prototype.____constructor(self, disableInputs)
49288
49291
  end
49289
49292
  self.inputActionGetActionValue = function(____, _entity, _inputHook, buttonAction)
49290
49293
  if buttonAction ~= ButtonAction.SHOOT_RIGHT then
49291
- return
49294
+ return nil
49292
49295
  end
49293
49296
  if not v.run.shouldUnpause then
49294
- return
49297
+ return nil
49295
49298
  end
49296
49299
  v.run.shouldUnpause = false
49297
49300
  return 1
@@ -50679,13 +50682,15 @@ local ____lualib = require("lualib_bundle")
50679
50682
  local __TS__New = ____lualib.__TS__New
50680
50683
  local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
50681
50684
  local __TS__Spread = ____lualib.__TS__Spread
50685
+ local Set = ____lualib.Set
50686
+ local __TS__Iterator = ____lualib.__TS__Iterator
50682
50687
  local ____exports = {}
50683
50688
  local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index")
50684
50689
  local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID
50685
50690
  local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
50686
- local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
50691
+ local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID
50687
50692
  local ____cachedEnumValues = require("arrays.cachedEnumValues")
50688
- local BOSS_IDS = ____cachedEnumValues.BOSS_IDS
50693
+ local BOSS_ID_VALUES = ____cachedEnumValues.BOSS_ID_VALUES
50689
50694
  local ____set = require("functions.set")
50690
50695
  local combineSets = ____set.combineSets
50691
50696
  local ____storyBosses = require("functions.storyBosses")
@@ -50694,7 +50699,7 @@ local ____ReadonlyMap = require("types.ReadonlyMap")
50694
50699
  local ReadonlyMap = ____ReadonlyMap.ReadonlyMap
50695
50700
  local ____ReadonlySet = require("types.ReadonlySet")
50696
50701
  local ReadonlySet = ____ReadonlySet.ReadonlySet
50697
- --- Contains just the bosses in Basement (not e.g. Burning Basement).
50702
+ --- For `StageID.BASEMENT` (1).
50698
50703
  local BASEMENT_BOSSES_SET = __TS__New(ReadonlySet, {
50699
50704
  BossID.MONSTRO,
50700
50705
  BossID.LARRY_JR,
@@ -50711,7 +50716,7 @@ local BASEMENT_BOSSES_SET = __TS__New(ReadonlySet, {
50711
50716
  BossID.TURDLING,
50712
50717
  BossID.BABY_PLUM
50713
50718
  })
50714
- --- Contains just the bosses in Cellar (not e.g. Burning Basement).
50719
+ --- For `StageID.CELLAR` (2).
50715
50720
  local CELLAR_BOSSES_SET = __TS__New(ReadonlySet, {
50716
50721
  BossID.FAMINE,
50717
50722
  BossID.DUKE_OF_FLIES,
@@ -50725,7 +50730,7 @@ local CELLAR_BOSSES_SET = __TS__New(ReadonlySet, {
50725
50730
  BossID.RAG_MAN,
50726
50731
  BossID.BABY_PLUM
50727
50732
  })
50728
- --- Contains just the bosses in Burning Basement (not e.g. Cellar).
50733
+ --- For `StageID.BURNING_BASEMENT` (3).
50729
50734
  local BURNING_BASEMENT_BOSSES_SET = __TS__New(ReadonlySet, {
50730
50735
  BossID.MONSTRO,
50731
50736
  BossID.LARRY_JR,
@@ -50743,9 +50748,9 @@ local BURNING_BASEMENT_BOSSES_SET = __TS__New(ReadonlySet, {
50743
50748
  BossID.TURDLING,
50744
50749
  BossID.BABY_PLUM
50745
50750
  })
50746
- --- Contains just the bosses in Downpour (not e.g. Burning Basement).
50751
+ --- For `StageID.DOWNPOUR` (27).
50747
50752
  local DOWNPOUR_BOSSES_SET = __TS__New(ReadonlySet, {BossID.LIL_BLUB, BossID.WORMWOOD, BossID.RAINMAKER, BossID.MIN_MIN})
50748
- --- Contains just the bosses in Dross (not e.g. Burning Basement).
50753
+ --- For `StageID.DROSS` (28).
50749
50754
  local DROSS_BOSSES_SET = __TS__New(ReadonlySet, {
50750
50755
  BossID.LIL_BLUB,
50751
50756
  BossID.WORMWOOD,
@@ -50753,7 +50758,7 @@ local DROSS_BOSSES_SET = __TS__New(ReadonlySet, {
50753
50758
  BossID.COLOSTOMIA,
50754
50759
  BossID.TURDLET
50755
50760
  })
50756
- --- The set of unique bosses for Basement, Cellar, and so on.
50761
+ --- The set of unique bosses for Basement, Cellar, Burning Basement, Downpour, and Dross.
50757
50762
  local ALL_BASEMENT_BOSSES_SET = combineSets(
50758
50763
  nil,
50759
50764
  BASEMENT_BOSSES_SET,
@@ -50762,14 +50767,7 @@ local ALL_BASEMENT_BOSSES_SET = combineSets(
50762
50767
  DOWNPOUR_BOSSES_SET,
50763
50768
  DROSS_BOSSES_SET
50764
50769
  )
50765
- local BASEMENT_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(ReadonlyMap, {
50766
- {StageType.ORIGINAL, BASEMENT_BOSSES_SET},
50767
- {StageType.WRATH_OF_THE_LAMB, CELLAR_BOSSES_SET},
50768
- {StageType.AFTERBIRTH, BURNING_BASEMENT_BOSSES_SET},
50769
- {StageType.REPENTANCE, DOWNPOUR_BOSSES_SET},
50770
- {StageType.REPENTANCE_B, DROSS_BOSSES_SET}
50771
- })
50772
- --- Contains just the bosses in Caves (not e.g. Flooded Caves).
50770
+ --- For `StageID.CAVES` (4).
50773
50771
  local CAVES_BOSSES_SET = __TS__New(ReadonlySet, {
50774
50772
  BossID.CHUB,
50775
50773
  BossID.GURDY,
@@ -50787,7 +50785,7 @@ local CAVES_BOSSES_SET = __TS__New(ReadonlySet, {
50787
50785
  BossID.BIG_HORN,
50788
50786
  BossID.BUMBINO
50789
50787
  })
50790
- --- Contains just the bosses in Catacombs (not e.g. Flooded Caves).
50788
+ --- For `StageID.CATACOMBS` (5).
50791
50789
  local CATACOMBS_BOSSES_SET = __TS__New(ReadonlySet, {
50792
50790
  BossID.PESTILENCE,
50793
50791
  BossID.PEEP,
@@ -50806,7 +50804,7 @@ local CATACOMBS_BOSSES_SET = __TS__New(ReadonlySet, {
50806
50804
  BossID.BIG_HORN,
50807
50805
  BossID.BUMBINO
50808
50806
  })
50809
- --- Contains just the bosses in Flooded Caves (not e.g. Catacombs).
50807
+ --- For `StageID.FLOODED_CAVES` (6).
50810
50808
  local FLOODED_CAVES_BOSSES_SET = __TS__New(ReadonlySet, {
50811
50809
  BossID.CHUB,
50812
50810
  BossID.GURDY,
@@ -50826,9 +50824,9 @@ local FLOODED_CAVES_BOSSES_SET = __TS__New(ReadonlySet, {
50826
50824
  BossID.BIG_HORN,
50827
50825
  BossID.BUMBINO
50828
50826
  })
50829
- --- Contains just the bosses in Mines (not e.g. Flooded Caves).
50827
+ --- For `StageID.MINES` (29).
50830
50828
  local MINES_BOSSES_SET = __TS__New(ReadonlySet, {BossID.REAP_CREEP, BossID.TUFF_TWINS, BossID.HORNFEL, BossID.GREAT_GIDEON})
50831
- --- Contains just the bosses in Ashpit (not e.g. Flooded Caves).
50829
+ --- For `StageID.ASHPIT` (30).
50832
50830
  local ASHPIT_BOSSES_SET = __TS__New(ReadonlySet, {
50833
50831
  BossID.PILE,
50834
50832
  BossID.GREAT_GIDEON,
@@ -50836,7 +50834,7 @@ local ASHPIT_BOSSES_SET = __TS__New(ReadonlySet, {
50836
50834
  BossID.SHELL,
50837
50835
  BossID.CLUTCH
50838
50836
  })
50839
- --- The set of unique bosses for Caves, Catacombs, and so on.
50837
+ --- The set of unique bosses for Caves, Catacombs, Flooded Caves, Mines, and Ashpit.
50840
50838
  local ALL_CAVES_BOSSES_SET = combineSets(
50841
50839
  nil,
50842
50840
  CAVES_BOSSES_SET,
@@ -50845,14 +50843,7 @@ local ALL_CAVES_BOSSES_SET = combineSets(
50845
50843
  MINES_BOSSES_SET,
50846
50844
  ASHPIT_BOSSES_SET
50847
50845
  )
50848
- local CAVES_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(ReadonlyMap, {
50849
- {StageType.ORIGINAL, CAVES_BOSSES_SET},
50850
- {StageType.WRATH_OF_THE_LAMB, CATACOMBS_BOSSES_SET},
50851
- {StageType.AFTERBIRTH, FLOODED_CAVES_BOSSES_SET},
50852
- {StageType.REPENTANCE, MINES_BOSSES_SET},
50853
- {StageType.REPENTANCE_B, ASHPIT_BOSSES_SET}
50854
- })
50855
- --- Contains just the bosses in Depths (not e.g. Dank Depths).
50846
+ --- For `StageID.DEPTHS` (7).
50856
50847
  --
50857
50848
  -- Note that this set includes Mom, even though they are not technically in the boss pool.
50858
50849
  local DEPTHS_BOSSES_SET = __TS__New(ReadonlySet, {
@@ -50869,7 +50860,7 @@ local DEPTHS_BOSSES_SET = __TS__New(ReadonlySet, {
50869
50860
  BossID.SISTERS_VIS,
50870
50861
  BossID.REAP_CREEP
50871
50862
  })
50872
- --- Contains just the bosses in Necropolis (not e.g. Dank Depths).
50863
+ --- For `StageID.NECROPOLIS` (8).
50873
50864
  --
50874
50865
  -- Note that this set includes Mom, even though they are not technically in the boss pool.
50875
50866
  local NECROPOLIS_BOSSES_SET = __TS__New(ReadonlySet, {
@@ -50885,7 +50876,7 @@ local NECROPOLIS_BOSSES_SET = __TS__New(ReadonlySet, {
50885
50876
  BossID.SISTERS_VIS,
50886
50877
  BossID.PILE
50887
50878
  })
50888
- --- Contains just the bosses in Dank Depths (not e.g. Necropolis).
50879
+ --- For `StageID.DANK_DEPTHS` (9).
50889
50880
  --
50890
50881
  -- Note that this set includes Mom, even though they are not technically in the boss pool.
50891
50882
  local DANK_DEPTHS_BOSSES_SET = __TS__New(ReadonlySet, {
@@ -50902,15 +50893,15 @@ local DANK_DEPTHS_BOSSES_SET = __TS__New(ReadonlySet, {
50902
50893
  BossID.SISTERS_VIS,
50903
50894
  BossID.REAP_CREEP
50904
50895
  })
50905
- --- Contains just the bosses in Mausoleum (not e.g. Dank Depths).
50896
+ --- For `StageID.MAUSOLEUM` (31).
50906
50897
  --
50907
50898
  -- Note that this set includes Mausoleum Mom, even though they are not technically in the boss pool.
50908
50899
  local MAUSOLEUM_BOSSES_SET = __TS__New(ReadonlySet, {BossID.SIREN, BossID.HERETIC, BossID.MAUSOLEUM_MOM})
50909
- --- Contains just the bosses in Gehenna (not e.g. Dank Depths).
50900
+ --- For `StageID.GEHENNA` (32).
50910
50901
  --
50911
50902
  -- Note that this set includes Mausoleum Mom, even though they are not technically in the boss pool.
50912
50903
  local GEHENNA_BOSSES_SET = __TS__New(ReadonlySet, {BossID.VISAGE, BossID.MAUSOLEUM_MOM, BossID.HORNY_BOYS})
50913
- --- The set of unique bosses for Depths, Necropolis, and so on.
50904
+ --- The set of unique bosses for Depths, Necropolis, Dank Depths, Mausoleum, and Gehenna.
50914
50905
  local ALL_DEPTHS_BOSSES_SET = combineSets(
50915
50906
  nil,
50916
50907
  DEPTHS_BOSSES_SET,
@@ -50919,14 +50910,7 @@ local ALL_DEPTHS_BOSSES_SET = combineSets(
50919
50910
  MAUSOLEUM_BOSSES_SET,
50920
50911
  GEHENNA_BOSSES_SET
50921
50912
  )
50922
- local DEPTHS_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(ReadonlyMap, {
50923
- {StageType.ORIGINAL, DEPTHS_BOSSES_SET},
50924
- {StageType.WRATH_OF_THE_LAMB, NECROPOLIS_BOSSES_SET},
50925
- {StageType.AFTERBIRTH, DANK_DEPTHS_BOSSES_SET},
50926
- {StageType.REPENTANCE, MAUSOLEUM_BOSSES_SET},
50927
- {StageType.REPENTANCE_B, GEHENNA_BOSSES_SET}
50928
- })
50929
- --- Contains just the bosses in Womb (not e.g. Scarred Womb).
50913
+ --- For `StageID.WOMB` (10).
50930
50914
  --
50931
50915
  -- Note that this set includes Mom's Heart & It Lives, even though they are not technically in the
50932
50916
  -- boss pool.
@@ -50944,7 +50928,7 @@ local WOMB_BOSSES_SET = __TS__New(ReadonlySet, {
50944
50928
  BossID.MR_FRED,
50945
50929
  BossID.MATRIARCH
50946
50930
  })
50947
- --- Contains just the bosses in Utero (not e.g. Scarred Womb).
50931
+ --- For `StageID.UTERO` (11).
50948
50932
  --
50949
50933
  -- Note that this set includes Mom's Heart & It Lives, even though they are not technically in the
50950
50934
  -- boss pool.
@@ -50961,7 +50945,7 @@ local UTERO_BOSSES_SET = __TS__New(ReadonlySet, {
50961
50945
  BossID.DADDY_LONG_LEGS,
50962
50946
  BossID.TRIACHNID
50963
50947
  })
50964
- --- Contains just the bosses in Scarred Womb (not e.g. Utero).
50948
+ --- For `StageID.SCARRED_WOMB` (12).
50965
50949
  --
50966
50950
  -- Note that this set includes Mom's Heart & It Lives, even though they are not technically in the
50967
50951
  -- boss pool.
@@ -50980,11 +50964,11 @@ local SCARRED_WOMB_BOSSES_SET = __TS__New(ReadonlySet, {
50980
50964
  BossID.MR_FRED,
50981
50965
  BossID.MATRIARCH
50982
50966
  })
50983
- --- Contains just the bosses in Corpse (not e.g. Scarred Womb).
50967
+ --- For `StageID.CORPSE` (33).
50984
50968
  --
50985
- -- Note that this set includes Mother, even though they are not technically in the boss pool.
50969
+ -- Note that this set includes Mother, even though she is not technically in the boss pool.
50986
50970
  local CORPSE_BOSSES_SET = __TS__New(ReadonlySet, {BossID.SCOURGE, BossID.CHIMERA, BossID.ROTGUT, BossID.MOTHER})
50987
- --- The set of unique bosses for Womb, Utero, and so on.
50971
+ --- The set of unique bosses for Womb, Utero, Scarred Womb, and Corpse.
50988
50972
  local ALL_WOMB_BOSSES_SET = combineSets(
50989
50973
  nil,
50990
50974
  WOMB_BOSSES_SET,
@@ -50992,38 +50976,46 @@ local ALL_WOMB_BOSSES_SET = combineSets(
50992
50976
  SCARRED_WOMB_BOSSES_SET,
50993
50977
  CORPSE_BOSSES_SET
50994
50978
  )
50995
- local WOMB_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(ReadonlyMap, {{StageType.ORIGINAL, WOMB_BOSSES_SET}, {StageType.WRATH_OF_THE_LAMB, UTERO_BOSSES_SET}, {StageType.AFTERBIRTH, SCARRED_WOMB_BOSSES_SET}, {StageType.REPENTANCE, CORPSE_BOSSES_SET}})
50996
50979
  local BLUE_WOMB_BOSSES_SET = __TS__New(ReadonlySet, {BossID.HUSH})
50997
- local BLUE_WOMB_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(ReadonlyMap, {{StageType.ORIGINAL, BLUE_WOMB_BOSSES_SET}})
50998
50980
  local SHEOL_BOSSES_SET = __TS__New(ReadonlySet, {BossID.SATAN})
50999
50981
  local CATHEDRAL_BOSSES_SET = __TS__New(ReadonlySet, {BossID.ISAAC})
51000
50982
  local ALL_STAGE_10_BOSSES_SET = combineSets(nil, SHEOL_BOSSES_SET, CATHEDRAL_BOSSES_SET)
51001
- local STAGE_10_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(ReadonlyMap, {{StageType.ORIGINAL, SHEOL_BOSSES_SET}, {StageType.WRATH_OF_THE_LAMB, CATHEDRAL_BOSSES_SET}})
51002
50983
  --- Note that this set includes Mega Satan, even though they are not technically in the boss pool.
51003
50984
  local DARK_ROOM_BOSSES_SET = __TS__New(ReadonlySet, {BossID.LAMB, BossID.MEGA_SATAN})
51004
50985
  --- Note that this set includes Mega Satan, even though they are not technically in the boss pool.
51005
50986
  local CHEST_BOSSES_SET = __TS__New(ReadonlySet, {BossID.BLUE_BABY, BossID.MEGA_SATAN})
51006
50987
  local ALL_STAGE_11_BOSSES_SET = combineSets(nil, DARK_ROOM_BOSSES_SET, CHEST_BOSSES_SET)
51007
- local STAGE_11_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(ReadonlyMap, {{StageType.ORIGINAL, DARK_ROOM_BOSSES_SET}, {StageType.WRATH_OF_THE_LAMB, CHEST_BOSSES_SET}})
51008
50988
  local VOID_BOSSES_SET = __TS__New(ReadonlySet, {BossID.DELIRIUM})
51009
- local VOID_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(ReadonlyMap, {{StageType.ORIGINAL, VOID_BOSSES_SET}})
51010
- --- Note that this does not include Ultra Famine, Ultra Pestilence, Ultra War, and Ultra Death.
50989
+ --- Includes Dogma and The Beast. Does not include Ultra Famine, Ultra Pestilence, Ultra War, and
50990
+ -- Ultra Death (since they do not have boss IDs).
51011
50991
  local HOME_BOSSES_SET = __TS__New(ReadonlySet, {BossID.DOGMA, BossID.BEAST})
51012
- local HOME_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(ReadonlyMap, {{StageType.ORIGINAL, HOME_BOSSES_SET}})
51013
- ____exports.STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP = __TS__New(ReadonlyMap, {
51014
- {LevelStage.BASEMENT_1, BASEMENT_STAGE_TYPE_TO_BOSS_SET_MAP},
51015
- {LevelStage.BASEMENT_2, BASEMENT_STAGE_TYPE_TO_BOSS_SET_MAP},
51016
- {LevelStage.CAVES_1, CAVES_STAGE_TYPE_TO_BOSS_SET_MAP},
51017
- {LevelStage.CAVES_2, CAVES_STAGE_TYPE_TO_BOSS_SET_MAP},
51018
- {LevelStage.DEPTHS_1, DEPTHS_STAGE_TYPE_TO_BOSS_SET_MAP},
51019
- {LevelStage.DEPTHS_2, DEPTHS_STAGE_TYPE_TO_BOSS_SET_MAP},
51020
- {LevelStage.WOMB_1, WOMB_STAGE_TYPE_TO_BOSS_SET_MAP},
51021
- {LevelStage.WOMB_2, WOMB_STAGE_TYPE_TO_BOSS_SET_MAP},
51022
- {LevelStage.BLUE_WOMB, BLUE_WOMB_STAGE_TYPE_TO_BOSS_SET_MAP},
51023
- {LevelStage.SHEOL_CATHEDRAL, STAGE_10_STAGE_TYPE_TO_BOSS_SET_MAP},
51024
- {LevelStage.DARK_ROOM_CHEST, STAGE_11_STAGE_TYPE_TO_BOSS_SET_MAP},
51025
- {LevelStage.VOID, VOID_STAGE_TYPE_TO_BOSS_SET_MAP},
51026
- {LevelStage.HOME, HOME_STAGE_TYPE_TO_BOSS_SET_MAP}
50992
+ ____exports.STAGE_ID_TO_BOSS_SET_MAP = __TS__New(ReadonlyMap, {
50993
+ {StageID.BASEMENT, BASEMENT_BOSSES_SET},
50994
+ {StageID.CELLAR, CELLAR_BOSSES_SET},
50995
+ {StageID.BURNING_BASEMENT, BURNING_BASEMENT_BOSSES_SET},
50996
+ {StageID.DOWNPOUR, DOWNPOUR_BOSSES_SET},
50997
+ {StageID.DROSS, DROSS_BOSSES_SET},
50998
+ {StageID.CAVES, CAVES_BOSSES_SET},
50999
+ {StageID.CATACOMBS, CATACOMBS_BOSSES_SET},
51000
+ {StageID.FLOODED_CAVES, FLOODED_CAVES_BOSSES_SET},
51001
+ {StageID.MINES, MINES_BOSSES_SET},
51002
+ {StageID.ASHPIT, ASHPIT_BOSSES_SET},
51003
+ {StageID.DEPTHS, DEPTHS_BOSSES_SET},
51004
+ {StageID.NECROPOLIS, NECROPOLIS_BOSSES_SET},
51005
+ {StageID.DANK_DEPTHS, DANK_DEPTHS_BOSSES_SET},
51006
+ {StageID.MAUSOLEUM, MAUSOLEUM_BOSSES_SET},
51007
+ {StageID.GEHENNA, GEHENNA_BOSSES_SET},
51008
+ {StageID.WOMB, WOMB_BOSSES_SET},
51009
+ {StageID.UTERO, UTERO_BOSSES_SET},
51010
+ {StageID.SCARRED_WOMB, SCARRED_WOMB_BOSSES_SET},
51011
+ {StageID.CORPSE, CORPSE_BOSSES_SET},
51012
+ {StageID.BLUE_WOMB, BLUE_WOMB_BOSSES_SET},
51013
+ {StageID.SHEOL, SHEOL_BOSSES_SET},
51014
+ {StageID.CATHEDRAL, CATHEDRAL_BOSSES_SET},
51015
+ {StageID.DARK_ROOM, DARK_ROOM_BOSSES_SET},
51016
+ {StageID.CHEST, CHEST_BOSSES_SET},
51017
+ {StageID.VOID, VOID_BOSSES_SET},
51018
+ {StageID.HOME, HOME_BOSSES_SET}
51027
51019
  })
51028
51020
  ____exports.STAGE_TO_COMBINED_BOSS_SET_MAP = __TS__New(ReadonlyMap, {
51029
51021
  {LevelStage.BASEMENT_1, ALL_BASEMENT_BOSSES_SET},
@@ -51043,7 +51035,7 @@ ____exports.STAGE_TO_COMBINED_BOSS_SET_MAP = __TS__New(ReadonlyMap, {
51043
51035
  ____exports.ALL_BOSSES_SET = __TS__New(
51044
51036
  ReadonlySet,
51045
51037
  __TS__ArrayFilter(
51046
- BOSS_IDS,
51038
+ BOSS_ID_VALUES,
51047
51039
  function(____, bossID) return bossID ~= BossID.RAGLICH end
51048
51040
  )
51049
51041
  )
@@ -51054,6 +51046,21 @@ ____exports.ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET = __TS__New(
51054
51046
  function(____, bossID) return not isStoryBossID(nil, bossID) end
51055
51047
  )
51056
51048
  )
51049
+ ____exports.BOSS_ID_TO_STAGE_IDS = (function()
51050
+ local bossIDsToStageIDs = {}
51051
+ for ____, bossID in ipairs(BOSS_ID_VALUES) do
51052
+ local stageIDs = __TS__New(Set)
51053
+ for ____, ____value in __TS__Iterator(____exports.STAGE_ID_TO_BOSS_SET_MAP) do
51054
+ local stageID = ____value[1]
51055
+ local bossSet = ____value[2]
51056
+ if bossSet:has(bossID) then
51057
+ stageIDs:add(stageID)
51058
+ end
51059
+ end
51060
+ bossIDsToStageIDs[bossID] = stageIDs
51061
+ end
51062
+ return bossIDsToStageIDs
51063
+ end)(nil)
51057
51064
  return ____exports
51058
51065
  end,
51059
51066
  ["sets.repentanceBossIDsSet"] = function(...)
@@ -51278,8 +51285,9 @@ local DEFAULT_BOSS_NAME = ____bossNames.DEFAULT_BOSS_NAME
51278
51285
  local ____bossSets = require("sets.bossSets")
51279
51286
  local ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET = ____bossSets.ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET
51280
51287
  local ALL_BOSSES_SET = ____bossSets.ALL_BOSSES_SET
51288
+ local BOSS_ID_TO_STAGE_IDS = ____bossSets.BOSS_ID_TO_STAGE_IDS
51289
+ local STAGE_ID_TO_BOSS_SET_MAP = ____bossSets.STAGE_ID_TO_BOSS_SET_MAP
51281
51290
  local STAGE_TO_COMBINED_BOSS_SET_MAP = ____bossSets.STAGE_TO_COMBINED_BOSS_SET_MAP
51282
- local STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP = ____bossSets.STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP
51283
51291
  local ____repentanceBossIDsSet = require("sets.repentanceBossIDsSet")
51284
51292
  local REPENTANCE_ONLY_BOSS_IDS_SET = ____repentanceBossIDsSet.REPENTANCE_ONLY_BOSS_IDS_SET
51285
51293
  local ____sinEntityTypesSet = require("sets.sinEntityTypesSet")
@@ -51404,12 +51412,12 @@ end
51404
51412
  -- combination.
51405
51413
  --
51406
51414
  -- Also see the `getAllBossesSet` and `getCombinedBossSet` functions.
51407
- function ____exports.getBossSet(self, stage, stageType)
51408
- local stageTypeMap = STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP:get(stage)
51409
- if stageTypeMap == nil then
51410
- return nil
51411
- end
51412
- return stageTypeMap:get(stageType)
51415
+ function ____exports.getBossSet(self, stageID)
51416
+ return STAGE_ID_TO_BOSS_SET_MAP:get(stageID)
51417
+ end
51418
+ --- Helper function to get the set of stage IDs that a particular boss naturally appears in.
51419
+ function ____exports.getBossStageIDs(self, bossID)
51420
+ return BOSS_ID_TO_STAGE_IDS[bossID]
51413
51421
  end
51414
51422
  --- Helper function to get all of the bosses in the room.
51415
51423
  --
@@ -52423,7 +52431,7 @@ function CustomStages.prototype.____constructor(self, customGridEntities, custom
52423
52431
  return nil
52424
52432
  end
52425
52433
  if not self.usingRedKey then
52426
- return
52434
+ return nil
52427
52435
  end
52428
52436
  self.usingRedKey = false
52429
52437
  local level = game:GetLevel()
@@ -52443,7 +52451,7 @@ function CustomStages.prototype.____constructor(self, customGridEntities, custom
52443
52451
  self.getShaderParams = function(____, shaderName)
52444
52452
  local customStage = v.run.currentCustomStage
52445
52453
  if customStage == nil then
52446
- return
52454
+ return nil
52447
52455
  end
52448
52456
  streakTextGetShaderParams(nil, customStage, shaderName)
52449
52457
  return nil
@@ -54528,7 +54536,7 @@ function PreventGridEntityRespawn.prototype.____constructor(self, runInNFrames)
54528
54536
  end
54529
54537
  local roomListIndex = getRoomListIndex(nil)
54530
54538
  if not v.level.roomListIndexToDecorationGridIndexes:has(roomListIndex) then
54531
- return
54539
+ return nil
54532
54540
  end
54533
54541
  local decorations = getGridEntities(nil, GridEntityType.DECORATION)
54534
54542
  for ____, decoration in ipairs(decorations) do
@@ -1,6 +1,7 @@
1
- import { BossID, LevelStage } from "isaac-typescript-definitions";
2
- export declare const STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<LevelStage, ReadonlyMap<int, ReadonlySet<BossID>>>;
1
+ import { BossID, LevelStage, StageID } from "isaac-typescript-definitions";
2
+ export declare const STAGE_ID_TO_BOSS_SET_MAP: ReadonlyMap<StageID, ReadonlySet<BossID>>;
3
3
  export declare const STAGE_TO_COMBINED_BOSS_SET_MAP: ReadonlyMap<LevelStage, ReadonlySet<BossID>>;
4
4
  export declare const ALL_BOSSES_SET: ReadonlySet<BossID>;
5
5
  export declare const ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET: ReadonlySet<BossID>;
6
+ export declare const BOSS_ID_TO_STAGE_IDS: Readonly<Record<BossID, ReadonlySet<StageID>>>;
6
7
  //# sourceMappingURL=bossSets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bossSets.d.ts","sourceRoot":"","sources":["../../src/sets/bossSets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAa,MAAM,8BAA8B,CAAC;AA8e7E,eAAO,MAAM,mCAAmC,gEAiB9C,CAAC;AAEH,eAAO,MAAM,8BAA8B,8CAiBzC,CAAC;AAEH,eAAO,MAAM,cAAc,qBAE1B,CAAC;AAEF,eAAO,MAAM,qCAAqC,qBAEjD,CAAC"}
1
+ {"version":3,"file":"bossSets.d.ts","sourceRoot":"","sources":["../../src/sets/bossSets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAwa3E,eAAO,MAAM,wBAAwB,2CAkCnC,CAAC;AAEH,eAAO,MAAM,8BAA8B,8CAiBzC,CAAC;AAEH,eAAO,MAAM,cAAc,qBAE1B,CAAC;AAEF,eAAO,MAAM,qCAAqC,qBAEjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,gDAe7B,CAAC"}