isaacscript-common 87.9.7 → 87.10.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.
Files changed (567) hide show
  1. package/dist/cachedEnumValues.js +29 -32
  2. package/dist/callbackClasses.js +142 -289
  3. package/dist/callbacks.js +147 -183
  4. package/dist/classes/DefaultMap.js +4 -8
  5. package/dist/classes/ModFeature.js +21 -25
  6. package/dist/classes/ModUpgraded.js +43 -47
  7. package/dist/classes/callbacks/EntityTakeDmgFilter.js +6 -10
  8. package/dist/classes/callbacks/EntityTakeDmgPlayer.js +7 -11
  9. package/dist/classes/callbacks/InputActionFilter.js +4 -8
  10. package/dist/classes/callbacks/InputActionPlayer.js +4 -8
  11. package/dist/classes/callbacks/PostAmbushFinished.js +10 -14
  12. package/dist/classes/callbacks/PostAmbushStarted.js +10 -14
  13. package/dist/classes/callbacks/PostBombExploded.js +8 -12
  14. package/dist/classes/callbacks/PostBombInitFilter.js +6 -10
  15. package/dist/classes/callbacks/PostBombInitLate.js +6 -10
  16. package/dist/classes/callbacks/PostBombRenderFilter.js +6 -10
  17. package/dist/classes/callbacks/PostBombUpdateFilter.js +6 -10
  18. package/dist/classes/callbacks/PostBoneSwing.js +7 -11
  19. package/dist/classes/callbacks/PostCollectibleEmpty.js +6 -10
  20. package/dist/classes/callbacks/PostCursedTeleport.js +30 -34
  21. package/dist/classes/callbacks/PostCustomRevive.js +4 -8
  22. package/dist/classes/callbacks/PostDiceRoomActivated.js +9 -13
  23. package/dist/classes/callbacks/PostDoorRender.js +8 -12
  24. package/dist/classes/callbacks/PostDoorUpdate.js +8 -12
  25. package/dist/classes/callbacks/PostEffectInitFilter.js +6 -10
  26. package/dist/classes/callbacks/PostEffectInitLate.js +6 -10
  27. package/dist/classes/callbacks/PostEffectRenderFilter.js +6 -10
  28. package/dist/classes/callbacks/PostEffectStateChanged.js +8 -12
  29. package/dist/classes/callbacks/PostEffectUpdateFilter.js +6 -10
  30. package/dist/classes/callbacks/PostEntityKillFilter.js +6 -10
  31. package/dist/classes/callbacks/PostEntityRemoveFilter.js +6 -10
  32. package/dist/classes/callbacks/PostEsauJr.js +4 -8
  33. package/dist/classes/callbacks/PostFamiliarInitFilter.js +6 -10
  34. package/dist/classes/callbacks/PostFamiliarInitLate.js +6 -10
  35. package/dist/classes/callbacks/PostFamiliarRenderFilter.js +6 -10
  36. package/dist/classes/callbacks/PostFamiliarStateChanged.js +8 -12
  37. package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +6 -10
  38. package/dist/classes/callbacks/PostFirstEsauJr.js +4 -8
  39. package/dist/classes/callbacks/PostFirstFlip.js +4 -8
  40. package/dist/classes/callbacks/PostFlip.js +4 -8
  41. package/dist/classes/callbacks/PostGameEndFilter.js +6 -10
  42. package/dist/classes/callbacks/PostGameStartedReordered.js +6 -10
  43. package/dist/classes/callbacks/PostGameStartedReorderedLast.js +6 -10
  44. package/dist/classes/callbacks/PostGreedModeWave.js +7 -11
  45. package/dist/classes/callbacks/PostGridEntityBroken.js +6 -10
  46. package/dist/classes/callbacks/PostGridEntityCollision.js +4 -8
  47. package/dist/classes/callbacks/PostGridEntityCustomBroken.js +6 -10
  48. package/dist/classes/callbacks/PostGridEntityCustomCollision.js +4 -8
  49. package/dist/classes/callbacks/PostGridEntityCustomInit.js +6 -10
  50. package/dist/classes/callbacks/PostGridEntityCustomRemove.js +4 -8
  51. package/dist/classes/callbacks/PostGridEntityCustomRender.js +6 -10
  52. package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +6 -10
  53. package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +6 -10
  54. package/dist/classes/callbacks/PostGridEntityInit.js +6 -10
  55. package/dist/classes/callbacks/PostGridEntityRemove.js +4 -8
  56. package/dist/classes/callbacks/PostGridEntityRender.js +6 -10
  57. package/dist/classes/callbacks/PostGridEntityStateChanged.js +6 -10
  58. package/dist/classes/callbacks/PostGridEntityUpdate.js +6 -10
  59. package/dist/classes/callbacks/PostHolyMantleRemoved.js +15 -19
  60. package/dist/classes/callbacks/PostItemDischarge.js +23 -27
  61. package/dist/classes/callbacks/PostItemPickup.js +6 -10
  62. package/dist/classes/callbacks/PostKeyboardChanged.js +9 -13
  63. package/dist/classes/callbacks/PostKnifeInitFilter.js +6 -10
  64. package/dist/classes/callbacks/PostKnifeInitLate.js +6 -10
  65. package/dist/classes/callbacks/PostKnifeRenderFilter.js +6 -10
  66. package/dist/classes/callbacks/PostKnifeUpdateFilter.js +6 -10
  67. package/dist/classes/callbacks/PostLaserInitFilter.js +6 -10
  68. package/dist/classes/callbacks/PostLaserInitLate.js +6 -10
  69. package/dist/classes/callbacks/PostLaserRenderFilter.js +6 -10
  70. package/dist/classes/callbacks/PostLaserUpdateFilter.js +6 -10
  71. package/dist/classes/callbacks/PostNPCDeathFilter.js +6 -10
  72. package/dist/classes/callbacks/PostNPCInitFilter.js +6 -10
  73. package/dist/classes/callbacks/PostNPCInitLate.js +6 -10
  74. package/dist/classes/callbacks/PostNPCRenderFilter.js +6 -10
  75. package/dist/classes/callbacks/PostNPCStateChanged.js +8 -12
  76. package/dist/classes/callbacks/PostNPCUpdateFilter.js +6 -10
  77. package/dist/classes/callbacks/PostNewLevelReordered.js +6 -10
  78. package/dist/classes/callbacks/PostNewRoomEarly.js +17 -21
  79. package/dist/classes/callbacks/PostNewRoomReordered.js +6 -10
  80. package/dist/classes/callbacks/PostPEffectUpdateReordered.js +6 -10
  81. package/dist/classes/callbacks/PostPickupChanged.js +6 -10
  82. package/dist/classes/callbacks/PostPickupCollect.js +8 -12
  83. package/dist/classes/callbacks/PostPickupInitFilter.js +6 -10
  84. package/dist/classes/callbacks/PostPickupInitFirst.js +10 -14
  85. package/dist/classes/callbacks/PostPickupInitLate.js +6 -10
  86. package/dist/classes/callbacks/PostPickupRenderFilter.js +6 -10
  87. package/dist/classes/callbacks/PostPickupSelectionFilter.js +4 -8
  88. package/dist/classes/callbacks/PostPickupStateChanged.js +8 -12
  89. package/dist/classes/callbacks/PostPickupUpdateFilter.js +6 -10
  90. package/dist/classes/callbacks/PostPitRender.js +8 -12
  91. package/dist/classes/callbacks/PostPitUpdate.js +8 -12
  92. package/dist/classes/callbacks/PostPlayerChangeHealth.js +14 -18
  93. package/dist/classes/callbacks/PostPlayerChangeStat.js +26 -30
  94. package/dist/classes/callbacks/PostPlayerChangeType.js +11 -15
  95. package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +6 -10
  96. package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +6 -10
  97. package/dist/classes/callbacks/PostPlayerFatalDamage.js +24 -28
  98. package/dist/classes/callbacks/PostPlayerInitFirst.js +12 -16
  99. package/dist/classes/callbacks/PostPlayerInitLate.js +9 -13
  100. package/dist/classes/callbacks/PostPlayerRenderReordered.js +6 -10
  101. package/dist/classes/callbacks/PostPlayerUpdateReordered.js +6 -10
  102. package/dist/classes/callbacks/PostPoopRender.js +8 -12
  103. package/dist/classes/callbacks/PostPoopUpdate.js +8 -12
  104. package/dist/classes/callbacks/PostPressurePlateRender.js +8 -12
  105. package/dist/classes/callbacks/PostPressurePlateUpdate.js +8 -12
  106. package/dist/classes/callbacks/PostProjectileInitFilter.js +6 -10
  107. package/dist/classes/callbacks/PostProjectileInitLate.js +6 -10
  108. package/dist/classes/callbacks/PostProjectileKill.js +8 -12
  109. package/dist/classes/callbacks/PostProjectileRenderFilter.js +6 -10
  110. package/dist/classes/callbacks/PostProjectileUpdateFilter.js +6 -10
  111. package/dist/classes/callbacks/PostPurchase.js +21 -25
  112. package/dist/classes/callbacks/PostRockRender.js +8 -12
  113. package/dist/classes/callbacks/PostRockUpdate.js +8 -12
  114. package/dist/classes/callbacks/PostRoomClearChanged.js +9 -13
  115. package/dist/classes/callbacks/PostSacrifice.js +12 -16
  116. package/dist/classes/callbacks/PostSlotAnimationChanged.js +6 -10
  117. package/dist/classes/callbacks/PostSlotCollision.js +8 -12
  118. package/dist/classes/callbacks/PostSlotDestroyed.js +6 -10
  119. package/dist/classes/callbacks/PostSlotInit.js +6 -10
  120. package/dist/classes/callbacks/PostSlotRender.js +6 -10
  121. package/dist/classes/callbacks/PostSlotUpdate.js +6 -10
  122. package/dist/classes/callbacks/PostSpikesRender.js +8 -12
  123. package/dist/classes/callbacks/PostSpikesUpdate.js +8 -12
  124. package/dist/classes/callbacks/PostTNTRender.js +8 -12
  125. package/dist/classes/callbacks/PostTNTUpdate.js +8 -12
  126. package/dist/classes/callbacks/PostTearInitFilter.js +6 -10
  127. package/dist/classes/callbacks/PostTearInitLate.js +6 -10
  128. package/dist/classes/callbacks/PostTearInitVeryLate.js +6 -10
  129. package/dist/classes/callbacks/PostTearKill.js +8 -12
  130. package/dist/classes/callbacks/PostTearRenderFilter.js +6 -10
  131. package/dist/classes/callbacks/PostTearUpdateFilter.js +6 -10
  132. package/dist/classes/callbacks/PostTransformation.js +10 -14
  133. package/dist/classes/callbacks/PostTrinketBreak.js +16 -20
  134. package/dist/classes/callbacks/PostUsePillFilter.js +18 -22
  135. package/dist/classes/callbacks/PreBerserkDeath.js +14 -18
  136. package/dist/classes/callbacks/PreBombCollisionFilter.js +6 -10
  137. package/dist/classes/callbacks/PreCustomRevive.js +6 -10
  138. package/dist/classes/callbacks/PreEntitySpawnFilter.js +4 -8
  139. package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +6 -10
  140. package/dist/classes/callbacks/PreGetPedestal.js +8 -12
  141. package/dist/classes/callbacks/PreItemPickup.js +6 -10
  142. package/dist/classes/callbacks/PreKnifeCollisionFilter.js +6 -10
  143. package/dist/classes/callbacks/PreNPCCollisionFilter.js +6 -10
  144. package/dist/classes/callbacks/PreNPCUpdateFilter.js +6 -10
  145. package/dist/classes/callbacks/PreNewLevel.js +10 -14
  146. package/dist/classes/callbacks/PreProjectileCollisionFilter.js +6 -10
  147. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +4 -8
  148. package/dist/classes/callbacks/PreTearCollisionFilter.js +6 -10
  149. package/dist/classes/features/callbackLogic/CustomGridEntities.js +46 -50
  150. package/dist/classes/features/callbackLogic/CustomRevive.js +28 -32
  151. package/dist/classes/features/callbackLogic/EsauJrDetection.js +11 -15
  152. package/dist/classes/features/callbackLogic/FlipDetection.js +11 -15
  153. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +26 -30
  154. package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +10 -14
  155. package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +6 -10
  156. package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +12 -16
  157. package/dist/classes/features/callbackLogic/ItemPickupDetection.js +17 -21
  158. package/dist/classes/features/callbackLogic/PickupChangeDetection.js +6 -10
  159. package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +39 -43
  160. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +18 -22
  161. package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +17 -21
  162. package/dist/classes/features/callbackLogic/SlotRenderDetection.js +8 -12
  163. package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +9 -13
  164. package/dist/classes/features/other/CharacterHealthConversion.js +13 -17
  165. package/dist/classes/features/other/CharacterStats.js +9 -13
  166. package/dist/classes/features/other/CollectibleItemPoolType.js +17 -21
  167. package/dist/classes/features/other/CustomHotkeys.js +15 -19
  168. package/dist/classes/features/other/CustomItemPools.js +20 -24
  169. package/dist/classes/features/other/CustomPickups.js +15 -19
  170. package/dist/classes/features/other/CustomStages.js +116 -153
  171. package/dist/classes/features/other/CustomTrapdoors.js +119 -123
  172. package/dist/classes/features/other/DebugDisplay.js +77 -81
  173. package/dist/classes/features/other/DeployJSONRoom.js +65 -69
  174. package/dist/classes/features/other/DisableAllSound.js +14 -18
  175. package/dist/classes/features/other/DisableInputs.js +24 -28
  176. package/dist/classes/features/other/EdenStartingStatsHealth.js +36 -40
  177. package/dist/classes/features/other/ExtraConsoleCommands.js +65 -102
  178. package/dist/classes/features/other/FadeInRemover.js +9 -13
  179. package/dist/classes/features/other/FastReset.js +18 -22
  180. package/dist/classes/features/other/FlyingDetection.js +10 -14
  181. package/dist/classes/features/other/ForgottenSwitch.js +8 -12
  182. package/dist/classes/features/other/ItemPoolDetection.js +35 -39
  183. package/dist/classes/features/other/ModdedElementDetection.js +43 -47
  184. package/dist/classes/features/other/ModdedElementSets.js +135 -139
  185. package/dist/classes/features/other/NoSirenSteal.js +7 -11
  186. package/dist/classes/features/other/Pause.js +48 -52
  187. package/dist/classes/features/other/PersistentEntities.js +16 -20
  188. package/dist/classes/features/other/PickupIndexCreation.js +31 -35
  189. package/dist/classes/features/other/PlayerCollectibleTracking.js +18 -22
  190. package/dist/classes/features/other/PonyDetection.js +22 -26
  191. package/dist/classes/features/other/PressInput.js +10 -14
  192. package/dist/classes/features/other/PreventChildEntities.js +6 -10
  193. package/dist/classes/features/other/PreventGridEntityRespawn.js +34 -38
  194. package/dist/classes/features/other/RerunDetection.js +11 -15
  195. package/dist/classes/features/other/RoomClearFrame.js +11 -15
  196. package/dist/classes/features/other/RoomHistory.js +30 -34
  197. package/dist/classes/features/other/RunInNFrames.js +24 -28
  198. package/dist/classes/features/other/RunNextRoom.js +8 -12
  199. package/dist/classes/features/other/RunNextRun.js +8 -12
  200. package/dist/classes/features/other/SaveDataManager.js +61 -65
  201. package/dist/classes/features/other/SpawnRockAltRewards.js +115 -119
  202. package/dist/classes/features/other/StageHistory.js +76 -80
  203. package/dist/classes/features/other/StartAmbush.js +12 -16
  204. package/dist/classes/features/other/TaintedLazarusPlayers.js +10 -14
  205. package/dist/classes/features/other/UnlockAchievementsDetection.js +10 -14
  206. package/dist/classes/features/other/customStages/backdrop.js +68 -71
  207. package/dist/classes/features/other/customStages/constants.js +7 -10
  208. package/dist/classes/features/other/customStages/gridEntities.js +23 -30
  209. package/dist/classes/features/other/customStages/shadows.js +27 -30
  210. package/dist/classes/features/other/customStages/streakText.js +55 -60
  211. package/dist/classes/features/other/customStages/utils.js +13 -17
  212. package/dist/classes/features/other/customStages/v.js +4 -7
  213. package/dist/classes/features/other/customStages/versusScreen.js +46 -50
  214. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +8 -12
  215. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +8 -12
  216. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +8 -12
  217. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +8 -12
  218. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +8 -12
  219. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +8 -12
  220. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +8 -12
  221. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +8 -12
  222. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +8 -12
  223. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +8 -12
  224. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +8 -12
  225. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +8 -12
  226. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +8 -12
  227. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +8 -12
  228. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +8 -12
  229. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +8 -12
  230. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +8 -12
  231. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +8 -12
  232. package/dist/classes/features/other/debugDisplay/utils.js +6 -10
  233. package/dist/classes/features/other/extraConsoleCommands/commands.js +411 -557
  234. package/dist/classes/features/other/extraConsoleCommands/subroutines.js +47 -57
  235. package/dist/classes/features/other/extraConsoleCommands/v.js +1 -4
  236. package/dist/classes/features/other/saveDataManager/constants.js +1 -4
  237. package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +17 -21
  238. package/dist/classes/features/other/saveDataManager/loadFromDisk.js +19 -22
  239. package/dist/classes/features/other/saveDataManager/restoreDefaults.js +20 -25
  240. package/dist/classes/features/other/saveDataManager/saveToDisk.js +13 -16
  241. package/dist/classes/private/CustomCallback.js +4 -8
  242. package/dist/classes/private/Feature.js +1 -5
  243. package/dist/core/cachedClasses.js +12 -15
  244. package/dist/core/constants.js +126 -130
  245. package/dist/core/constantsFirstLast.js +22 -25
  246. package/dist/core/constantsVanilla.js +25 -28
  247. package/dist/core/upgradeMod.js +7 -10
  248. package/dist/decorators.js +6 -10
  249. package/dist/enums/AmbushType.js +2 -5
  250. package/dist/enums/CornerType.js +2 -5
  251. package/dist/enums/HealthType.js +2 -5
  252. package/dist/enums/ISCFeature.js +2 -5
  253. package/dist/enums/LadderSubTypeCustom.js +2 -5
  254. package/dist/enums/ModCallbackCustom.js +2 -5
  255. package/dist/enums/MysteriousPaperEffect.js +2 -5
  256. package/dist/enums/PlayerStat.js +2 -5
  257. package/dist/enums/PocketItemType.js +2 -5
  258. package/dist/enums/RockAltType.js +2 -5
  259. package/dist/enums/SaveDataKey.js +2 -5
  260. package/dist/enums/SerializationType.js +2 -5
  261. package/dist/enums/SlotDestructionType.js +2 -5
  262. package/dist/enums/private/GridEntityTypeCustom.js +1 -4
  263. package/dist/enums/private/SerializationBrand.js +2 -5
  264. package/dist/enums/private/StageTravelState.js +2 -5
  265. package/dist/enums/private/TrapdoorAnimation.js +2 -5
  266. package/dist/enums/private/UIStreakAnimation.js +2 -5
  267. package/dist/features.js +138 -141
  268. package/dist/functions/ambush.js +9 -12
  269. package/dist/functions/array.js +45 -76
  270. package/dist/functions/arrayLua.js +7 -16
  271. package/dist/functions/benchmark.js +4 -7
  272. package/dist/functions/bitSet128.js +19 -26
  273. package/dist/functions/bitwise.js +14 -23
  274. package/dist/functions/bombs.js +1 -4
  275. package/dist/functions/bosses.js +68 -85
  276. package/dist/functions/cards.js +44 -62
  277. package/dist/functions/challenges.js +28 -39
  278. package/dist/functions/characters.js +68 -87
  279. package/dist/functions/charge.js +41 -52
  280. package/dist/functions/chargeBar.js +2 -6
  281. package/dist/functions/collectibleTag.js +9 -13
  282. package/dist/functions/collectibles.js +133 -172
  283. package/dist/functions/color.js +29 -38
  284. package/dist/functions/console.js +4 -8
  285. package/dist/functions/curses.js +6 -10
  286. package/dist/functions/debugFunctions.js +7 -14
  287. package/dist/functions/decorators.js +13 -19
  288. package/dist/functions/deepCopy.js +96 -99
  289. package/dist/functions/deepCopyTests.js +56 -59
  290. package/dist/functions/dimensions.js +10 -14
  291. package/dist/functions/direction.js +22 -30
  292. package/dist/functions/doors.js +104 -154
  293. package/dist/functions/easing.js +30 -62
  294. package/dist/functions/effects.js +6 -10
  295. package/dist/functions/emptyRoom.js +30 -34
  296. package/dist/functions/entities.js +88 -115
  297. package/dist/functions/entitiesSpecific.js +83 -125
  298. package/dist/functions/entityTypes.js +3 -6
  299. package/dist/functions/enums.js +27 -41
  300. package/dist/functions/external.js +4 -8
  301. package/dist/functions/familiars.js +17 -25
  302. package/dist/functions/flag.js +10 -19
  303. package/dist/functions/frames.js +31 -51
  304. package/dist/functions/globals.js +26 -66
  305. package/dist/functions/gridEntities.js +231 -269
  306. package/dist/functions/gridEntitiesSpecific.js +86 -126
  307. package/dist/functions/gridIndex.js +8 -11
  308. package/dist/functions/hash.js +1 -4
  309. package/dist/functions/hex.js +7 -11
  310. package/dist/functions/input.js +65 -88
  311. package/dist/functions/isaacAPIClass.js +28 -53
  312. package/dist/functions/itemPool.js +39 -48
  313. package/dist/functions/jsonHelpers.js +5 -42
  314. package/dist/functions/jsonRoom.js +39 -46
  315. package/dist/functions/kColor.js +30 -39
  316. package/dist/functions/language.js +3 -6
  317. package/dist/functions/level.js +20 -26
  318. package/dist/functions/levelGrid.js +81 -108
  319. package/dist/functions/log.js +6 -12
  320. package/dist/functions/logEntities.js +49 -59
  321. package/dist/functions/logMisc.js +183 -214
  322. package/dist/functions/map.js +10 -20
  323. package/dist/functions/math.js +16 -31
  324. package/dist/functions/merge.js +48 -51
  325. package/dist/functions/mergeTests.js +34 -37
  326. package/dist/functions/minimap.js +34 -46
  327. package/dist/functions/modFeatures.js +1 -4
  328. package/dist/functions/newArray.js +5 -8
  329. package/dist/functions/nextStage.js +63 -67
  330. package/dist/functions/npcDataStructures.js +9 -20
  331. package/dist/functions/npcs.js +37 -45
  332. package/dist/functions/pickupVariants.js +26 -39
  333. package/dist/functions/pickups.js +43 -59
  334. package/dist/functions/pickupsSpecific.js +76 -118
  335. package/dist/functions/pills.js +52 -72
  336. package/dist/functions/playerCenter.js +13 -16
  337. package/dist/functions/playerCollectibles.js +59 -79
  338. package/dist/functions/playerDataStructures.js +18 -29
  339. package/dist/functions/playerEffects.js +12 -19
  340. package/dist/functions/playerHealth.js +91 -113
  341. package/dist/functions/playerIndex.js +22 -33
  342. package/dist/functions/playerTrinkets.js +31 -43
  343. package/dist/functions/players.js +87 -126
  344. package/dist/functions/pocketItems.js +33 -43
  345. package/dist/functions/positionVelocity.js +23 -32
  346. package/dist/functions/pressurePlate.js +7 -10
  347. package/dist/functions/projectiles.js +11 -15
  348. package/dist/functions/random.js +8 -13
  349. package/dist/functions/readOnly.js +3 -8
  350. package/dist/functions/render.js +7 -12
  351. package/dist/functions/revive.js +38 -45
  352. package/dist/functions/rng.js +31 -44
  353. package/dist/functions/rockAlt.js +18 -22
  354. package/dist/functions/roomData.js +24 -40
  355. package/dist/functions/roomGrid.js +17 -25
  356. package/dist/functions/roomShape.js +39 -55
  357. package/dist/functions/roomShapeWalls.js +67 -71
  358. package/dist/functions/roomTransition.js +13 -17
  359. package/dist/functions/rooms.js +181 -244
  360. package/dist/functions/run.js +29 -39
  361. package/dist/functions/seeds.js +6 -10
  362. package/dist/functions/serialization.js +27 -34
  363. package/dist/functions/set.js +24 -40
  364. package/dist/functions/slots.js +18 -22
  365. package/dist/functions/sort.js +9 -15
  366. package/dist/functions/sound.js +12 -16
  367. package/dist/functions/spawnCollectible.js +21 -26
  368. package/dist/functions/sprites.js +16 -24
  369. package/dist/functions/stage.js +122 -164
  370. package/dist/functions/stats.js +37 -43
  371. package/dist/functions/storyBosses.js +36 -40
  372. package/dist/functions/string.js +19 -33
  373. package/dist/functions/table.js +21 -31
  374. package/dist/functions/tears.js +6 -14
  375. package/dist/functions/transformations.js +35 -42
  376. package/dist/functions/trinketGive.js +29 -36
  377. package/dist/functions/trinkets.js +45 -60
  378. package/dist/functions/tstlClass.js +11 -20
  379. package/dist/functions/types.js +22 -46
  380. package/dist/functions/ui.js +25 -40
  381. package/dist/functions/utils.js +22 -36
  382. package/dist/functions/vector.js +33 -46
  383. package/dist/functions/versusScreen.js +12 -18
  384. package/dist/functions/weighted.js +8 -12
  385. package/dist/index.js +150 -166
  386. package/dist/index.rollup.d.ts +11 -11
  387. package/dist/indexLua.js +151 -167
  388. package/dist/interfaces/ChargeBarSprites.js +1 -2
  389. package/dist/interfaces/Corner.js +1 -2
  390. package/dist/interfaces/CustomStageTSConfig.js +1 -2
  391. package/dist/interfaces/GridEntityCustomData.js +1 -2
  392. package/dist/interfaces/JSONRoomsFile.js +1 -2
  393. package/dist/interfaces/PlayerHealth.d.ts +11 -11
  394. package/dist/interfaces/PlayerHealth.d.ts.map +1 -1
  395. package/dist/interfaces/PlayerHealth.js +1 -2
  396. package/dist/interfaces/PlayerStats.js +2 -4
  397. package/dist/interfaces/PocketItemDescription.js +1 -2
  398. package/dist/interfaces/RoomDescription.js +1 -2
  399. package/dist/interfaces/SaveData.js +1 -2
  400. package/dist/interfaces/StageHistoryEntry.js +1 -2
  401. package/dist/interfaces/TSTLClassMetatable.js +1 -2
  402. package/dist/interfaces/TrinketSituation.js +1 -2
  403. package/dist/interfaces/private/AddCallbackParametersCustom.js +2 -4
  404. package/dist/interfaces/private/CustomStage.js +1 -2
  405. package/dist/interfaces/private/CustomTrapdoorDescription.js +1 -2
  406. package/dist/interfaces/private/ModUpgradedInterface.js +1 -2
  407. package/dist/isaacscript-common.lua +1 -1
  408. package/dist/maps/PHDPillConversionsMap.js +19 -22
  409. package/dist/maps/cardNameToTypeMap.js +205 -208
  410. package/dist/maps/characterNameToTypeMap.js +85 -88
  411. package/dist/maps/collectibleNameToTypeMap.js +5 -8
  412. package/dist/maps/defaultPlayerStatMap.js +10 -13
  413. package/dist/maps/entityTypeVariantToBossIDMap.js +3 -6
  414. package/dist/maps/falsePHDPillConversionsMap.js +33 -36
  415. package/dist/maps/gridEntityTypeToBrokenStateMap.js +15 -18
  416. package/dist/maps/gridEntityXMLMap.js +52 -55
  417. package/dist/maps/itemPoolTypeToItemPoolName.js +33 -36
  418. package/dist/maps/keyboardToStringMap.js +66 -69
  419. package/dist/maps/pillNameToEffectMap.js +83 -86
  420. package/dist/maps/roomNameToTypeMap.js +38 -41
  421. package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +9 -12
  422. package/dist/maps/transformationNameToPlayerFormMap.js +30 -33
  423. package/dist/maps/trinketNameToTypeMap.js +5 -8
  424. package/dist/objects/LRoomShapeToRectangles.js +22 -25
  425. package/dist/objects/backdropTypeToRockAltType.js +65 -68
  426. package/dist/objects/batteryNames.js +8 -11
  427. package/dist/objects/bombNames.js +11 -14
  428. package/dist/objects/bossIDToEntityTypeVariant.js +116 -119
  429. package/dist/objects/bossNamePNGFileNames.js +104 -107
  430. package/dist/objects/bossNames.js +105 -108
  431. package/dist/objects/bossPortraitPNGFileNames.js +104 -107
  432. package/dist/objects/cardDescriptions.js +101 -104
  433. package/dist/objects/cardNames.js +101 -104
  434. package/dist/objects/challengeBosses.js +49 -52
  435. package/dist/objects/challengeCharacters.js +49 -52
  436. package/dist/objects/challengeCollectibleTypes.js +160 -163
  437. package/dist/objects/challengeNames.js +49 -52
  438. package/dist/objects/challengeTrinketType.js +48 -51
  439. package/dist/objects/characterDamageMultipliers.js +44 -47
  440. package/dist/objects/characterNames.js +44 -47
  441. package/dist/objects/characterSpritePNGFileNames.js +44 -47
  442. package/dist/objects/characterStartingCollectibleTypes.js +49 -52
  443. package/dist/objects/characterStartingTrinketTypes.js +44 -47
  444. package/dist/objects/chestNames.js +15 -18
  445. package/dist/objects/coinNames.js +11 -14
  446. package/dist/objects/coinSubTypeToValue.js +11 -14
  447. package/dist/objects/collectibleDescriptions.js +725 -728
  448. package/dist/objects/collectibleNames.js +725 -728
  449. package/dist/objects/colors.js +1 -4
  450. package/dist/objects/directionNames.js +7 -10
  451. package/dist/objects/directionToDegrees.js +7 -10
  452. package/dist/objects/directionToMoveAction.js +7 -10
  453. package/dist/objects/directionToShootAction.js +7 -10
  454. package/dist/objects/directionToVector.js +9 -12
  455. package/dist/objects/doorSlotFlagToDoorSlot.js +11 -14
  456. package/dist/objects/doorSlotToDirection.js +11 -14
  457. package/dist/objects/doorSlotToDoorSlotFlag.js +11 -14
  458. package/dist/objects/gridEntityTypeToANM2Name.js +30 -33
  459. package/dist/objects/heartNames.js +16 -19
  460. package/dist/objects/isaacAPIClassTypeToBrand.js +8 -11
  461. package/dist/objects/isaacAPIClassTypeToFunctions.js +37 -40
  462. package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +9 -45
  463. package/dist/objects/kColors.js +1 -4
  464. package/dist/objects/keyNames.js +8 -11
  465. package/dist/objects/languageNames.js +9 -12
  466. package/dist/objects/oppositeDoorSlots.js +11 -14
  467. package/dist/objects/pillEffectClasses.js +53 -56
  468. package/dist/objects/pillEffectNames.js +53 -56
  469. package/dist/objects/pillEffectTypeToPillEffects.js +11 -14
  470. package/dist/objects/pillEffectTypes.js +53 -56
  471. package/dist/objects/playerNamePNGFileNames.js +44 -47
  472. package/dist/objects/playerPortraitPNGFileNames.js +44 -47
  473. package/dist/objects/roomShapeBounds.js +23 -26
  474. package/dist/objects/roomShapeCorners.js +128 -131
  475. package/dist/objects/roomShapeLayoutSizes.js +23 -26
  476. package/dist/objects/roomShapeToBottomRightPosition.js +17 -20
  477. package/dist/objects/roomShapeToDoorSlotCoordinates.js +78 -81
  478. package/dist/objects/roomShapeToDoorSlots.js +48 -51
  479. package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +82 -85
  480. package/dist/objects/roomShapeToGridWidth.js +14 -17
  481. package/dist/objects/roomShapeToTopLeftPosition.js +18 -21
  482. package/dist/objects/roomShapeVolumes.js +21 -24
  483. package/dist/objects/roomTypeNames.js +32 -35
  484. package/dist/objects/roomTypeSpecialGotoPrefixes.js +32 -35
  485. package/dist/objects/sackNames.js +6 -9
  486. package/dist/objects/slotNames.js +21 -24
  487. package/dist/objects/stageIDNames.js +33 -36
  488. package/dist/objects/stageToMusic.js +69 -72
  489. package/dist/objects/stageToStageID.js +90 -93
  490. package/dist/objects/stageTypeSuffixes.js +8 -11
  491. package/dist/objects/transformationNames.js +16 -19
  492. package/dist/objects/trinketDescriptions.js +192 -195
  493. package/dist/objects/trinketNames.js +192 -195
  494. package/dist/objects/versusScreenBackgroundColors.js +39 -42
  495. package/dist/objects/versusScreenDirtSpotColors.js +39 -42
  496. package/dist/patchErrorFunctions.js +4 -7
  497. package/dist/serialization.js +6 -9
  498. package/dist/sets/LRoomShapesSet.js +7 -10
  499. package/dist/sets/bigRoomShapesSet.js +10 -13
  500. package/dist/sets/bossSets.js +261 -264
  501. package/dist/sets/charactersThatStartWithAnActiveItemSet.js +14 -17
  502. package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +5 -8
  503. package/dist/sets/charactersWithFreeDevilDealsSet.js +3 -6
  504. package/dist/sets/charactersWithNoRedHeartsSet.js +11 -14
  505. package/dist/sets/charactersWithNoSoulHeartsSet.js +8 -11
  506. package/dist/sets/consoleCommandsSet.js +2 -5
  507. package/dist/sets/entitiesWithArmorSet.js +44 -47
  508. package/dist/sets/familiarsThatShootPlayerTearsSet.js +11 -14
  509. package/dist/sets/itemConfigCardTypesForCards.js +7 -10
  510. package/dist/sets/lostStyleCharactersSet.js +8 -11
  511. package/dist/sets/mineShaftRoomSubTypesSet.js +8 -11
  512. package/dist/sets/narrowRoomShapesSet.js +7 -10
  513. package/dist/sets/poopGridEntityXMLTypesSet.js +12 -15
  514. package/dist/sets/redHeartSubTypesSet.js +6 -9
  515. package/dist/sets/repentanceBossIDsSet.js +26 -29
  516. package/dist/sets/sinEntityTypesSet.js +10 -13
  517. package/dist/sets/singleUseActiveCollectibleTypesSet.js +11 -14
  518. package/dist/shaderCrashFix.js +4 -7
  519. package/dist/shouldFire.js +28 -58
  520. package/dist/types/AddSubtract.js +1 -2
  521. package/dist/types/AllButFirst.js +1 -2
  522. package/dist/types/AllButLast.js +1 -2
  523. package/dist/types/AnyClass.js +1 -2
  524. package/dist/types/AnyEntity.js +1 -2
  525. package/dist/types/AnyFunction.js +1 -2
  526. package/dist/types/AnyGridEntity.js +1 -2
  527. package/dist/types/CompositionTypeSatisfiesEnum.js +1 -2
  528. package/dist/types/ConversionHeartSubType.js +1 -2
  529. package/dist/types/Decrement.js +1 -2
  530. package/dist/types/ERange.js +1 -2
  531. package/dist/types/EntityID.js +1 -2
  532. package/dist/types/FunctionTuple.js +1 -2
  533. package/dist/types/GridEntityID.js +1 -2
  534. package/dist/types/HasFunction.js +1 -2
  535. package/dist/types/IRange.js +1 -2
  536. package/dist/types/Immutable.js +1 -2
  537. package/dist/types/Increment.js +1 -2
  538. package/dist/types/LowercaseKeys.js +1 -2
  539. package/dist/types/NaturalNumbersLessThan.js +1 -2
  540. package/dist/types/NaturalNumbersLessThanOrEqualTo.js +1 -2
  541. package/dist/types/ObjectValues.js +1 -2
  542. package/dist/types/PickingUpItem.js +15 -22
  543. package/dist/types/PickupIndex.js +1 -2
  544. package/dist/types/PlayerIndex.js +1 -2
  545. package/dist/types/PossibleStatType.js +1 -2
  546. package/dist/types/PublicInterface.js +1 -2
  547. package/dist/types/ReadonlyMap.js +1 -4
  548. package/dist/types/ReadonlyRecord.js +1 -2
  549. package/dist/types/ReadonlySet.js +1 -4
  550. package/dist/types/StartsWithLowercase.js +1 -2
  551. package/dist/types/StartsWithUppercase.js +1 -2
  552. package/dist/types/TSTLClass.js +1 -2
  553. package/dist/types/Tuple.js +1 -2
  554. package/dist/types/TupleKeys.js +1 -2
  555. package/dist/types/TupleToIntersection.js +1 -2
  556. package/dist/types/TupleToUnion.js +1 -2
  557. package/dist/types/TupleWithLengthBetween.js +1 -2
  558. package/dist/types/TupleWithMaxLength.js +1 -2
  559. package/dist/types/UnionToIntersection.js +1 -2
  560. package/dist/types/UppercaseKeys.js +1 -2
  561. package/dist/types/WeightedArray.js +1 -2
  562. package/dist/types/WidenLiteral.js +1 -2
  563. package/dist/types/Writable.js +1 -2
  564. package/dist/types/private/CallbackTuple.js +1 -2
  565. package/dist/types/private/ModUpgradedWithFeatures.js +1 -2
  566. package/package.json +3 -3
  567. package/src/interfaces/PlayerHealth.ts +12 -11
@@ -1,106 +1,43 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.changeRoom = changeRoom;
4
- exports.getNumRooms = getNumRooms;
5
- exports.getReadOnlyRooms = getReadOnlyRooms;
6
- exports.getRoomDataForTypeVariant = getRoomDataForTypeVariant;
7
- exports.getRoomItemPoolType = getRoomItemPoolType;
8
- exports.getRooms = getRooms;
9
- exports.getRoomsInsideGrid = getRoomsInsideGrid;
10
- exports.getRoomsOfDimension = getRoomsOfDimension;
11
- exports.getRoomsOutsideGrid = getRoomsOutsideGrid;
12
- exports.getRoomTypeName = getRoomTypeName;
13
- exports.in2x1Room = in2x1Room;
14
- exports.inAngelShop = inAngelShop;
15
- exports.inBeastRoom = inBeastRoom;
16
- exports.inBigRoom = inBigRoom;
17
- exports.inBossRoomOf = inBossRoomOf;
18
- exports.inCrawlSpace = inCrawlSpace;
19
- exports.inCrawlSpaceWithBlackMarketEntrance = inCrawlSpaceWithBlackMarketEntrance;
20
- exports.inDeathCertificateArea = inDeathCertificateArea;
21
- exports.inDevilsCrownTreasureRoom = inDevilsCrownTreasureRoom;
22
- exports.inDogmaRoom = inDogmaRoom;
23
- exports.inDoubleTrouble = inDoubleTrouble;
24
- exports.inGenesisRoom = inGenesisRoom;
25
- exports.inHomeCloset = inHomeCloset;
26
- exports.inLRoom = inLRoom;
27
- exports.inMegaSatanRoom = inMegaSatanRoom;
28
- exports.inMineShaft = inMineShaft;
29
- exports.inMinibossRoomOf = inMinibossRoomOf;
30
- exports.inMirrorRoom = inMirrorRoom;
31
- exports.inRoomShape = inRoomShape;
32
- exports.inRoomType = inRoomType;
33
- exports.inSecretExit = inSecretExit;
34
- exports.inSecretShop = inSecretShop;
35
- exports.inStartingRoom = inStartingRoom;
36
- exports.is2x1Room = is2x1Room;
37
- exports.isAllRoomsClear = isAllRoomsClear;
38
- exports.isAngelShop = isAngelShop;
39
- exports.isBeastRoom = isBeastRoom;
40
- exports.isBigRoom = isBigRoom;
41
- exports.isBossRoomOf = isBossRoomOf;
42
- exports.isCrawlSpace = isCrawlSpace;
43
- exports.isCrawlSpaceWithBlackMarketEntrance = isCrawlSpaceWithBlackMarketEntrance;
44
- exports.isDeathCertificateArea = isDeathCertificateArea;
45
- exports.isDevilsCrownTreasureRoom = isDevilsCrownTreasureRoom;
46
- exports.isDogmaRoom = isDogmaRoom;
47
- exports.isDoubleTrouble = isDoubleTrouble;
48
- exports.isGenesisRoom = isGenesisRoom;
49
- exports.isHomeCloset = isHomeCloset;
50
- exports.isLRoom = isLRoom;
51
- exports.isMegaSatanRoom = isMegaSatanRoom;
52
- exports.isMineShaft = isMineShaft;
53
- exports.isMinibossRoomOf = isMinibossRoomOf;
54
- exports.isMirrorRoom = isMirrorRoom;
55
- exports.isRoomShape = isRoomShape;
56
- exports.isRoomType = isRoomType;
57
- exports.isSecretExit = isSecretExit;
58
- exports.isSecretRoomType = isSecretRoomType;
59
- exports.isSecretShop = isSecretShop;
60
- exports.roomUpdateSafe = roomUpdateSafe;
61
- exports.setBackdrop = setBackdrop;
62
- exports.setRoomCleared = setRoomCleared;
63
- exports.setRoomUncleared = setRoomUncleared;
64
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
65
- const cachedClasses_1 = require("../core/cachedClasses");
66
- const constants_1 = require("../core/constants");
67
- const roomTypeNames_1 = require("../objects/roomTypeNames");
68
- const mineShaftRoomSubTypesSet_1 = require("../sets/mineShaftRoomSubTypesSet");
69
- const ReadonlySet_1 = require("../types/ReadonlySet");
70
- const dimensions_1 = require("./dimensions");
71
- const doors_1 = require("./doors");
72
- const entities_1 = require("./entities");
73
- const flag_1 = require("./flag");
74
- const positionVelocity_1 = require("./positionVelocity");
75
- const roomData_1 = require("./roomData");
76
- const roomShape_1 = require("./roomShape");
77
- const roomTransition_1 = require("./roomTransition");
78
- const stage_1 = require("./stage");
79
- const utils_1 = require("./utils");
80
- const SECRET_ROOM_TYPES = new ReadonlySet_1.ReadonlySet([
81
- isaac_typescript_definitions_1.RoomType.SECRET,
82
- isaac_typescript_definitions_1.RoomType.SUPER_SECRET,
83
- isaac_typescript_definitions_1.RoomType.ULTRA_SECRET,
1
+ import { AngelRoomSubType, Dimension, DoorSlot, DoorSlotFlag, DownpourRoomSubType, DungeonSubType, GridRoom, HomeRoomSubType, ItemPoolType, RoomDescriptorFlag, RoomType, SoundEffect, StageID, } from "isaac-typescript-definitions";
2
+ import { game, sfxManager } from "../core/cachedClasses";
3
+ import { DIMENSIONS, MAX_LEVEL_GRID_INDEX } from "../core/constants";
4
+ import { ROOM_TYPE_NAMES } from "../objects/roomTypeNames";
5
+ import { MINE_SHAFT_ROOM_SUB_TYPE_SET } from "../sets/mineShaftRoomSubTypesSet";
6
+ import { ReadonlySet } from "../types/ReadonlySet";
7
+ import { inDimension } from "./dimensions";
8
+ import { closeAllDoors, getDoors, isHiddenSecretRoomDoor, openDoorFast, } from "./doors";
9
+ import { getEntities } from "./entities";
10
+ import { hasFlag } from "./flag";
11
+ import { getEntityPositions, getEntityVelocities, setEntityPositions, setEntityVelocities, } from "./positionVelocity";
12
+ import { getRoomData, getRoomDescriptor, getRoomDescriptorReadOnly, getRoomGridIndex, } from "./roomData";
13
+ import { is2x1RoomShape, isBigRoomShape, isLRoomShape } from "./roomShape";
14
+ import { reloadRoom } from "./roomTransition";
15
+ import { getGotoCommand } from "./stage";
16
+ import { assertDefined, iRange } from "./utils";
17
+ const SECRET_ROOM_TYPES = new ReadonlySet([
18
+ RoomType.SECRET,
19
+ RoomType.SUPER_SECRET,
20
+ RoomType.ULTRA_SECRET,
84
21
  ]);
85
22
  /**
86
23
  * Helper function for quickly switching to a new room without playing a particular animation. Use
87
24
  * this helper function over invoking the `Game.ChangeRoom` method directly to ensure that you do
88
25
  * not forget to set the `LeaveDoor` field and to prevent crashing on invalid room grid indexes.
89
26
  */
90
- function changeRoom(roomGridIndex) {
91
- const level = cachedClasses_1.game.GetLevel();
92
- const roomData = (0, roomData_1.getRoomData)(roomGridIndex);
93
- (0, utils_1.assertDefined)(roomData, `Failed to change the room to grid index ${roomGridIndex} because that room does not exist.`);
27
+ export function changeRoom(roomGridIndex) {
28
+ const level = game.GetLevel();
29
+ const roomData = getRoomData(roomGridIndex);
30
+ assertDefined(roomData, `Failed to change the room to grid index ${roomGridIndex} because that room does not exist.`);
94
31
  // LeaveDoor must be set before every `Game.ChangeRoom` invocation or else the function can send
95
32
  // you to the wrong room.
96
- level.LeaveDoor = isaac_typescript_definitions_1.DoorSlot.NO_DOOR_SLOT;
97
- cachedClasses_1.game.ChangeRoom(roomGridIndex);
33
+ level.LeaveDoor = DoorSlot.NO_DOOR_SLOT;
34
+ game.ChangeRoom(roomGridIndex);
98
35
  }
99
36
  /**
100
37
  * Helper function to get the number of rooms that are currently on the floor layout. This does not
101
38
  * include off-grid rooms, like the Devil Room.
102
39
  */
103
- function getNumRooms() {
40
+ export function getNumRooms() {
104
41
  const roomsInsideGrid = getRoomsInsideGrid();
105
42
  return roomsInsideGrid.length;
106
43
  }
@@ -115,8 +52,8 @@ function getNumRooms() {
115
52
  * method. This is the best way to see if off-grid rooms have been initialized, since it is possible
116
53
  * for mods to insert room data at non-official negative room grid indexes.
117
54
  */
118
- function getReadOnlyRooms() {
119
- const level = cachedClasses_1.game.GetLevel();
55
+ export function getReadOnlyRooms() {
56
+ const level = game.GetLevel();
120
57
  const roomList = level.GetRooms();
121
58
  const readOnlyRoomDescriptors = [];
122
59
  for (let i = 0; i < roomList.Size; i++) {
@@ -152,14 +89,14 @@ function getReadOnlyRooms() {
152
89
  * the `goto` command (instead of `d`) if the room type is
153
90
  * `RoomType.DEFAULT` (1). False by default.
154
91
  */
155
- function getRoomDataForTypeVariant(roomType, roomVariant, cancelRoomTransition = true, useSpecialRoomsForRoomTypeDefault = false) {
156
- const command = (0, stage_1.getGotoCommand)(roomType, roomVariant, useSpecialRoomsForRoomTypeDefault);
92
+ export function getRoomDataForTypeVariant(roomType, roomVariant, cancelRoomTransition = true, useSpecialRoomsForRoomTypeDefault = false) {
93
+ const command = getGotoCommand(roomType, roomVariant, useSpecialRoomsForRoomTypeDefault);
157
94
  // We do not want to log the command execution, because this function will potentially be called
158
95
  // many times.
159
96
  Isaac.ExecuteCommand(command);
160
- const newRoomData = (0, roomData_1.getRoomData)(isaac_typescript_definitions_1.GridRoom.DEBUG);
97
+ const newRoomData = getRoomData(GridRoom.DEBUG);
161
98
  if (cancelRoomTransition) {
162
- (0, roomTransition_1.reloadRoom)();
99
+ reloadRoom();
163
100
  }
164
101
  return newRoomData;
165
102
  }
@@ -175,14 +112,14 @@ function getRoomDataForTypeVariant(roomType, roomVariant, cancelRoomTransition =
175
112
  * need to distinguish between real Treasure Rooms and default rooms, then use the
176
113
  * `ItemPool.GetPoolForRoom` method directly.
177
114
  */
178
- function getRoomItemPoolType() {
179
- const itemPool = cachedClasses_1.game.GetItemPool();
180
- const room = cachedClasses_1.game.GetRoom();
115
+ export function getRoomItemPoolType() {
116
+ const itemPool = game.GetItemPool();
117
+ const room = game.GetRoom();
181
118
  const roomType = room.GetType();
182
119
  const roomSeed = room.GetSpawnSeed();
183
120
  const itemPoolTypeOrNegativeOne = itemPool.GetPoolForRoom(roomType, roomSeed);
184
121
  return itemPoolTypeOrNegativeOne === -1
185
- ? isaac_typescript_definitions_1.ItemPoolType.TREASURE
122
+ ? ItemPoolType.TREASURE
186
123
  : itemPoolTypeOrNegativeOne;
187
124
  }
188
125
  /**
@@ -198,7 +135,7 @@ function getRoomItemPoolType() {
198
135
  * extra-dimensional rooms are automatically generated. Default is
199
136
  * false.
200
137
  */
201
- function getRooms(includeExtraDimensionalRooms = false) {
138
+ export function getRooms(includeExtraDimensionalRooms = false) {
202
139
  // The naive way to get all of the rooms would be to iterate over the `RoomList` from the
203
140
  // `Level.GetRooms` method. However, this results in read-only data, and we want to return a
204
141
  // writable object. Instead, we let the heavy lifting be handled by other functions.
@@ -215,15 +152,15 @@ function getRooms(includeExtraDimensionalRooms = false) {
215
152
  * @param includeExtraDimensionalRooms Optional. On some floors (e.g. Downpour 2, Mines 2),
216
153
  * extra-dimensional rooms will be generated. Default is false.
217
154
  */
218
- function getRoomsInsideGrid(includeExtraDimensionalRooms = false) {
219
- const level = cachedClasses_1.game.GetLevel();
155
+ export function getRoomsInsideGrid(includeExtraDimensionalRooms = false) {
156
+ const level = game.GetLevel();
220
157
  const dimensions = includeExtraDimensionalRooms
221
- ? constants_1.DIMENSIONS
222
- : [isaac_typescript_definitions_1.Dimension.CURRENT];
158
+ ? DIMENSIONS
159
+ : [Dimension.CURRENT];
223
160
  /** We use a map instead of an array because room shapes occupy more than one room grid index. */
224
161
  const roomDescriptorMap = new Map();
225
162
  for (const dimension of dimensions) {
226
- for (const roomGridIndex of (0, utils_1.iRange)(constants_1.MAX_LEVEL_GRID_INDEX)) {
163
+ for (const roomGridIndex of iRange(MAX_LEVEL_GRID_INDEX)) {
227
164
  const roomDescriptor = level.GetRoomByIdx(roomGridIndex, dimension);
228
165
  if (roomDescriptor.Data !== undefined) {
229
166
  const ptrHash = GetPtrHash(roomDescriptor);
@@ -239,11 +176,11 @@ function getRoomsInsideGrid(includeExtraDimensionalRooms = false) {
239
176
  *
240
177
  * Room descriptors without any data are assumed to be non-existent and are not included.
241
178
  */
242
- function getRoomsOfDimension(dimension) {
243
- const level = cachedClasses_1.game.GetLevel();
179
+ export function getRoomsOfDimension(dimension) {
180
+ const level = game.GetLevel();
244
181
  /** We use a map instead of an array because room shapes occupy more than one room grid index. */
245
182
  const roomsMap = new Map();
246
- for (const roomGridIndex of (0, utils_1.iRange)(constants_1.MAX_LEVEL_GRID_INDEX)) {
183
+ for (const roomGridIndex of iRange(MAX_LEVEL_GRID_INDEX)) {
247
184
  const roomDescriptor = level.GetRoomByIdx(roomGridIndex, dimension);
248
185
  if (roomDescriptor.Data !== undefined) {
249
186
  const ptrHash = GetPtrHash(roomDescriptor);
@@ -258,27 +195,27 @@ function getRoomsOfDimension(dimension) {
258
195
  *
259
196
  * Room descriptors without any data are assumed to be non-existent and are not included.
260
197
  */
261
- function getRoomsOutsideGrid() {
198
+ export function getRoomsOutsideGrid() {
262
199
  // We filter an array of all rooms instead of iterating over the `GridRoom` enum because it is
263
200
  // possible for mods to insert data at arbitrary negative room grid indexes.
264
201
  const readOnlyRooms = getReadOnlyRooms();
265
202
  const readOnlyRoomsOffGrid = readOnlyRooms.filter((readOnlyRoomDescriptor) => readOnlyRoomDescriptor.SafeGridIndex < 0);
266
- return readOnlyRoomsOffGrid.map((readOnlyRoomDescriptor) => (0, roomData_1.getRoomDescriptor)(readOnlyRoomDescriptor.SafeGridIndex));
203
+ return readOnlyRoomsOffGrid.map((readOnlyRoomDescriptor) => getRoomDescriptor(readOnlyRoomDescriptor.SafeGridIndex));
267
204
  }
268
205
  /**
269
206
  * Helper function to get the proper name of a room type.
270
207
  *
271
208
  * For example, `RoomType.TREASURE` will return "Treasure Room".
272
209
  */
273
- function getRoomTypeName(roomType) {
274
- return roomTypeNames_1.ROOM_TYPE_NAMES[roomType];
210
+ export function getRoomTypeName(roomType) {
211
+ return ROOM_TYPE_NAMES[roomType];
275
212
  }
276
213
  /**
277
214
  * Helper function to determine if the current room shape is equal to `RoomShape.1x2` or
278
215
  * `RoomShape.2x1`.
279
216
  */
280
- function in2x1Room() {
281
- const roomData = (0, roomData_1.getRoomData)();
217
+ export function in2x1Room() {
218
+ const roomData = getRoomData();
282
219
  return is2x1Room(roomData);
283
220
  }
284
221
  /**
@@ -287,8 +224,8 @@ function in2x1Room() {
287
224
  * Under the hood, this checks the room type being equal to `RoomType.ANGEL` (15) and the sub-type
288
225
  * being equal to `AngelRoomSubType.SHOP` (1).
289
226
  */
290
- function inAngelShop() {
291
- const roomData = (0, roomData_1.getRoomData)();
227
+ export function inAngelShop() {
228
+ const roomData = getRoomData();
292
229
  return isAngelShop(roomData);
293
230
  }
294
231
  /**
@@ -299,24 +236,24 @@ function inAngelShop() {
299
236
  * Under the hood, this checks the room type being equal to `RoomType.DUNGEON` (16) and the sub-type
300
237
  * being equal to `DungeonSubType.BEAST_ROOM` (4).
301
238
  */
302
- function inBeastRoom() {
303
- const roomData = (0, roomData_1.getRoomData)();
239
+ export function inBeastRoom() {
240
+ const roomData = getRoomData();
304
241
  return isBeastRoom(roomData);
305
242
  }
306
243
  /**
307
244
  * Helper function to detect if the current room is big. Specifically, this is all 1x2 rooms, 2x2
308
245
  * rooms, and L rooms.
309
246
  */
310
- function inBigRoom() {
311
- const roomData = (0, roomData_1.getRoomData)();
247
+ export function inBigRoom() {
248
+ const roomData = getRoomData();
312
249
  return isBigRoom(roomData);
313
250
  }
314
251
  /**
315
252
  * Helper function to check if the current room is the Boss Room for a particular boss. This will
316
253
  * only work for bosses that have dedicated boss rooms in the "00.special rooms.stb" file.
317
254
  */
318
- function inBossRoomOf(bossID) {
319
- const roomData = (0, roomData_1.getRoomData)();
255
+ export function inBossRoomOf(bossID) {
256
+ const roomData = getRoomData();
320
257
  return isBossRoomOf(roomData, bossID);
321
258
  }
322
259
  /**
@@ -324,23 +261,23 @@ function inBossRoomOf(bossID) {
324
261
  * comparing to `RoomType.DUNGEON` or `GridRoom.DUNGEON_IDX` since there is a special case of the
325
262
  * player being in a boss fight that takes place in a dungeon.
326
263
  */
327
- function inCrawlSpace() {
328
- const roomData = (0, roomData_1.getRoomData)();
264
+ export function inCrawlSpace() {
265
+ const roomData = getRoomData();
329
266
  return isCrawlSpace(roomData);
330
267
  }
331
268
  /**
332
269
  * Helper function for checking whether the current room is a crawl space with a door corresponding
333
270
  * to `DoorSlotFlag.RIGHT_0` (1 << 2).
334
271
  */
335
- function inCrawlSpaceWithBlackMarketEntrance() {
336
- const roomData = (0, roomData_1.getRoomData)();
272
+ export function inCrawlSpaceWithBlackMarketEntrance() {
273
+ const roomData = getRoomData();
337
274
  return isCrawlSpaceWithBlackMarketEntrance(roomData);
338
275
  }
339
276
  /**
340
277
  * Helper function to detect if the current room is one of the rooms in the Death Certificate area.
341
278
  */
342
- function inDeathCertificateArea() {
343
- const roomData = (0, roomData_1.getRoomData)();
279
+ export function inDeathCertificateArea() {
280
+ const roomData = getRoomData();
344
281
  return isDeathCertificateArea(roomData);
345
282
  }
346
283
  /**
@@ -349,8 +286,8 @@ function inDeathCertificateArea() {
349
286
  *
350
287
  * Under the hood, this checks for `RoomDescriptorFlag.DEVIL_TREASURE`.
351
288
  */
352
- function inDevilsCrownTreasureRoom() {
353
- const roomDescriptor = (0, roomData_1.getRoomDescriptorReadOnly)();
289
+ export function inDevilsCrownTreasureRoom() {
290
+ const roomDescriptor = getRoomDescriptorReadOnly();
354
291
  return isDevilsCrownTreasureRoom(roomDescriptor);
355
292
  }
356
293
  /**
@@ -366,8 +303,8 @@ function inDevilsCrownTreasureRoom() {
366
303
  * Dogma Boss Room that exists in vanilla) and the sub-type being equal to
367
304
  * `HomeRoomSubType.LIVING_ROOM` (3).
368
305
  */
369
- function inDogmaRoom() {
370
- const roomData = (0, roomData_1.getRoomData)();
306
+ export function inDogmaRoom() {
307
+ const roomData = getRoomData();
371
308
  return isDogmaRoom(roomData);
372
309
  }
373
310
  /**
@@ -381,13 +318,13 @@ function inDogmaRoom() {
381
318
  * range of 3700 through 3850. We intentionally do not use this method since it may not work as well
382
319
  * with modded rooms.
383
320
  */
384
- function inDoubleTrouble() {
385
- const roomData = (0, roomData_1.getRoomData)();
321
+ export function inDoubleTrouble() {
322
+ const roomData = getRoomData();
386
323
  return isDoubleTrouble(roomData);
387
324
  }
388
325
  /** Helper function to determine if the current room index is equal to `GridRoom.GENESIS`. */
389
- function inGenesisRoom() {
390
- const roomGridIndex = (0, roomData_1.getRoomGridIndex)();
326
+ export function inGenesisRoom() {
327
+ const roomGridIndex = getRoomGridIndex();
391
328
  return isGenesisRoom(roomGridIndex);
392
329
  }
393
330
  /**
@@ -396,42 +333,42 @@ function inGenesisRoom() {
396
333
  *
397
334
  * Home closets have a unique shape that is different from any other room in the game.
398
335
  */
399
- function inHomeCloset() {
400
- const roomData = (0, roomData_1.getRoomData)();
336
+ export function inHomeCloset() {
337
+ const roomData = getRoomData();
401
338
  return isHomeCloset(roomData);
402
339
  }
403
340
  /** Helper function to determine if the current room shape is one of the four L room shapes. */
404
- function inLRoom() {
405
- const roomData = (0, roomData_1.getRoomData)();
341
+ export function inLRoom() {
342
+ const roomData = getRoomData();
406
343
  return isLRoom(roomData);
407
344
  }
408
345
  /** Helper function to determine if the current room index is equal to `GridRoom.MEGA_SATAN`. */
409
- function inMegaSatanRoom() {
410
- const roomGridIndex = (0, roomData_1.getRoomGridIndex)();
346
+ export function inMegaSatanRoom() {
347
+ const roomGridIndex = getRoomGridIndex();
411
348
  return isMegaSatanRoom(roomGridIndex);
412
349
  }
413
350
  /**
414
351
  * Helper function to determine if the current room is part of the Repentance "escape sequence" in
415
352
  * the Mines/Ashpit.
416
353
  */
417
- function inMineShaft() {
418
- const roomData = (0, roomData_1.getRoomData)();
354
+ export function inMineShaft() {
355
+ const roomData = getRoomData();
419
356
  return isMineShaft(roomData);
420
357
  }
421
358
  /**
422
359
  * Helper function to check if the current room is a miniboss room for a particular miniboss. This
423
360
  * will only work for mini-bosses that have dedicated boss rooms in the "00.special rooms.stb" file.
424
361
  */
425
- function inMinibossRoomOf(minibossID) {
426
- const roomData = (0, roomData_1.getRoomData)();
362
+ export function inMinibossRoomOf(minibossID) {
363
+ const roomData = getRoomData();
427
364
  return isMinibossRoomOf(roomData, minibossID);
428
365
  }
429
366
  /**
430
367
  * Helper function to check if the current room is a "mirror room" in Downpour or Dross. (These
431
368
  * rooms are marked with a specific sub-type.)
432
369
  */
433
- function inMirrorRoom() {
434
- const roomData = (0, roomData_1.getRoomData)();
370
+ export function inMirrorRoom() {
371
+ const roomData = getRoomData();
435
372
  return isMirrorRoom(roomData);
436
373
  }
437
374
  /**
@@ -439,8 +376,8 @@ function inMirrorRoom() {
439
376
  *
440
377
  * This function is variadic, which means you can pass as many room shapes as you want to match for.
441
378
  */
442
- function inRoomShape(...roomShapes) {
443
- const roomData = (0, roomData_1.getRoomData)();
379
+ export function inRoomShape(...roomShapes) {
380
+ const roomData = getRoomData();
444
381
  return isRoomShape(roomData, ...roomShapes);
445
382
  }
446
383
  /**
@@ -448,16 +385,16 @@ function inRoomShape(...roomShapes) {
448
385
  *
449
386
  * This function is variadic, which means you can pass as many room types as you want to match for.
450
387
  */
451
- function inRoomType(...roomTypes) {
452
- const roomData = (0, roomData_1.getRoomData)();
388
+ export function inRoomType(...roomTypes) {
389
+ const roomData = getRoomData();
453
390
  return isRoomType(roomData, ...roomTypes);
454
391
  }
455
392
  /**
456
393
  * Helper function for checking if the current room is a secret exit that leads to a Repentance
457
394
  * floor.
458
395
  */
459
- function inSecretExit() {
460
- const roomGridIndex = (0, roomData_1.getRoomGridIndex)();
396
+ export function inSecretExit() {
397
+ const roomGridIndex = getRoomGridIndex();
461
398
  return isSecretExit(roomGridIndex);
462
399
  }
463
400
  /**
@@ -468,8 +405,8 @@ function inSecretExit() {
468
405
  * words, they will have the same room type, room variant, and room sub-type of a normal shop. Thus,
469
406
  * the only way to detect them is by using the grid index.
470
407
  */
471
- function inSecretShop() {
472
- const roomGridIndex = (0, roomData_1.getRoomGridIndex)();
408
+ export function inSecretShop() {
409
+ const roomGridIndex = getRoomGridIndex();
473
410
  return isSecretShop(roomGridIndex);
474
411
  }
475
412
  /**
@@ -477,17 +414,17 @@ function inSecretShop() {
477
414
  * returns true for the starting room of the primary dimension (meaning that being in the starting
478
415
  * room of the mirror world does not count).
479
416
  */
480
- function inStartingRoom() {
481
- const level = cachedClasses_1.game.GetLevel();
417
+ export function inStartingRoom() {
418
+ const level = game.GetLevel();
482
419
  const startingRoomGridIndex = level.GetStartingRoomIndex();
483
- const roomGridIndex = (0, roomData_1.getRoomGridIndex)();
484
- return roomGridIndex === startingRoomGridIndex && (0, dimensions_1.inDimension)(isaac_typescript_definitions_1.Dimension.MAIN);
420
+ const roomGridIndex = getRoomGridIndex();
421
+ return roomGridIndex === startingRoomGridIndex && inDimension(Dimension.MAIN);
485
422
  }
486
423
  /**
487
424
  * Helper function to determine if the provided room is equal to `RoomShape.1x2` or `RoomShape.2x1`.
488
425
  */
489
- function is2x1Room(roomData) {
490
- return (0, roomShape_1.is2x1RoomShape)(roomData.Shape);
426
+ export function is2x1Room(roomData) {
427
+ return is2x1RoomShape(roomData.Shape);
491
428
  }
492
429
  /**
493
430
  * Helper function to loop through every room on the floor and see if it has been cleared.
@@ -504,28 +441,28 @@ function is2x1Room(roomData) {
504
441
  * false.
505
442
  * @allowEmptyVariadic
506
443
  */
507
- function isAllRoomsClear(onlyCheckRoomTypes, includeSecretRoom = false, includeSuperSecretRoom = false, includeUltraSecretRoom = false) {
444
+ export function isAllRoomsClear(onlyCheckRoomTypes, includeSecretRoom = false, includeSuperSecretRoom = false, includeUltraSecretRoom = false) {
508
445
  const roomsInsideGrid = getRoomsInsideGrid();
509
446
  let matchingRooms;
510
447
  if (onlyCheckRoomTypes === undefined) {
511
448
  matchingRooms = roomsInsideGrid;
512
449
  }
513
450
  else {
514
- const roomTypeWhitelist = new ReadonlySet_1.ReadonlySet(onlyCheckRoomTypes);
451
+ const roomTypeWhitelist = new ReadonlySet(onlyCheckRoomTypes);
515
452
  matchingRooms = roomsInsideGrid.filter((roomDescriptor) => roomDescriptor.Data !== undefined
516
453
  && roomTypeWhitelist.has(roomDescriptor.Data.Type));
517
454
  }
518
455
  if (!includeSecretRoom) {
519
456
  matchingRooms = matchingRooms.filter((roomDescriptor) => roomDescriptor.Data !== undefined
520
- && roomDescriptor.Data.Type !== isaac_typescript_definitions_1.RoomType.SECRET);
457
+ && roomDescriptor.Data.Type !== RoomType.SECRET);
521
458
  }
522
459
  if (!includeSuperSecretRoom) {
523
460
  matchingRooms = matchingRooms.filter((roomDescriptor) => roomDescriptor.Data !== undefined
524
- && roomDescriptor.Data.Type !== isaac_typescript_definitions_1.RoomType.SUPER_SECRET);
461
+ && roomDescriptor.Data.Type !== RoomType.SUPER_SECRET);
525
462
  }
526
463
  if (!includeUltraSecretRoom) {
527
464
  matchingRooms = matchingRooms.filter((roomDescriptor) => roomDescriptor.Data !== undefined
528
- && roomDescriptor.Data.Type !== isaac_typescript_definitions_1.RoomType.ULTRA_SECRET);
465
+ && roomDescriptor.Data.Type !== RoomType.ULTRA_SECRET);
529
466
  }
530
467
  return matchingRooms.every((roomDescriptor) => roomDescriptor.Clear);
531
468
  }
@@ -535,10 +472,10 @@ function isAllRoomsClear(onlyCheckRoomTypes, includeSecretRoom = false, includeS
535
472
  * Under the hood, this checks the room type being equal to `RoomType.ANGEL` (15) and the sub-type
536
473
  * being equal to `AngelRoomSubType.SHOP` (1).
537
474
  */
538
- function isAngelShop(roomData) {
539
- return (roomData.Type === isaac_typescript_definitions_1.RoomType.ANGEL
475
+ export function isAngelShop(roomData) {
476
+ return (roomData.Type === RoomType.ANGEL
540
477
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
541
- && roomData.Subtype === isaac_typescript_definitions_1.AngelRoomSubType.SHOP);
478
+ && roomData.Subtype === AngelRoomSubType.SHOP);
542
479
  }
543
480
  /**
544
481
  * Helper function to check to see if the provided room is the Boss Room for The Beast.
@@ -548,25 +485,25 @@ function isAngelShop(roomData) {
548
485
  * Under the hood, this checks the room type being equal to `RoomType.DUNGEON` (16) and the sub-type
549
486
  * being equal to `DungeonSubType.BEAST_ROOM` (4).
550
487
  */
551
- function isBeastRoom(roomData) {
552
- return (roomData.Type === isaac_typescript_definitions_1.RoomType.DUNGEON
488
+ export function isBeastRoom(roomData) {
489
+ return (roomData.Type === RoomType.DUNGEON
553
490
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
554
- && roomData.Subtype === isaac_typescript_definitions_1.DungeonSubType.BEAST_ROOM);
491
+ && roomData.Subtype === DungeonSubType.BEAST_ROOM);
555
492
  }
556
493
  /**
557
494
  * Helper function to detect if the provided room is big. Specifically, this is all 1x2 rooms, 2x2
558
495
  * rooms, and L rooms.
559
496
  */
560
- function isBigRoom(roomData) {
561
- return (0, roomShape_1.isBigRoomShape)(roomData.Shape);
497
+ export function isBigRoom(roomData) {
498
+ return isBigRoomShape(roomData.Shape);
562
499
  }
563
500
  /**
564
501
  * Helper function to check if the provided room is the Boss Room for a particular boss. This will
565
502
  * only work for bosses that have dedicated boss rooms in the "00.special rooms.stb" file.
566
503
  */
567
- function isBossRoomOf(roomData, bossID) {
568
- return (roomData.Type === isaac_typescript_definitions_1.RoomType.BOSS
569
- && roomData.StageID === isaac_typescript_definitions_1.StageID.SPECIAL_ROOMS
504
+ export function isBossRoomOf(roomData, bossID) {
505
+ return (roomData.Type === RoomType.BOSS
506
+ && roomData.StageID === StageID.SPECIAL_ROOMS
570
507
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
571
508
  && roomData.Subtype === bossID);
572
509
  }
@@ -575,27 +512,27 @@ function isBossRoomOf(roomData, bossID) {
575
512
  * over comparing to `RoomType.DUNGEON` or `GridRoom.DUNGEON_IDX` since there is a special case of
576
513
  * the player being in a boss fight that takes place in a dungeon.
577
514
  */
578
- function isCrawlSpace(roomData) {
579
- return (roomData.Type === isaac_typescript_definitions_1.RoomType.DUNGEON
515
+ export function isCrawlSpace(roomData) {
516
+ return (roomData.Type === RoomType.DUNGEON
580
517
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
581
- && roomData.Subtype === isaac_typescript_definitions_1.DungeonSubType.NORMAL);
518
+ && roomData.Subtype === DungeonSubType.NORMAL);
582
519
  }
583
520
  /**
584
521
  * Helper function for checking whether the provided room is a crawl space with a door corresponding
585
522
  * to `DoorSlotFlag.RIGHT_0` (1 << 2).
586
523
  */
587
- function isCrawlSpaceWithBlackMarketEntrance(roomData) {
588
- return (isCrawlSpace(roomData) && (0, flag_1.hasFlag)(roomData.Doors, isaac_typescript_definitions_1.DoorSlotFlag.RIGHT_0));
524
+ export function isCrawlSpaceWithBlackMarketEntrance(roomData) {
525
+ return (isCrawlSpace(roomData) && hasFlag(roomData.Doors, DoorSlotFlag.RIGHT_0));
589
526
  }
590
527
  /**
591
528
  * Helper function to detect if the provided room is one of the rooms in the Death Certificate area.
592
529
  */
593
- function isDeathCertificateArea(roomData) {
594
- return (roomData.StageID === isaac_typescript_definitions_1.StageID.HOME
530
+ export function isDeathCertificateArea(roomData) {
531
+ return (roomData.StageID === StageID.HOME
595
532
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
596
- && (roomData.Subtype === isaac_typescript_definitions_1.HomeRoomSubType.DEATH_CERTIFICATE_ENTRANCE
533
+ && (roomData.Subtype === HomeRoomSubType.DEATH_CERTIFICATE_ENTRANCE
597
534
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
598
- || roomData.Subtype === isaac_typescript_definitions_1.HomeRoomSubType.DEATH_CERTIFICATE_ITEMS));
535
+ || roomData.Subtype === HomeRoomSubType.DEATH_CERTIFICATE_ITEMS));
599
536
  }
600
537
  /**
601
538
  * Helper function to detect if the provided room is a Treasure Room created when entering with a
@@ -603,8 +540,8 @@ function isDeathCertificateArea(roomData) {
603
540
  *
604
541
  * Under the hood, this checks for `RoomDescriptorFlag.DEVIL_TREASURE`.
605
542
  */
606
- function isDevilsCrownTreasureRoom(roomDescriptor) {
607
- return (0, flag_1.hasFlag)(roomDescriptor.Flags, isaac_typescript_definitions_1.RoomDescriptorFlag.DEVIL_TREASURE);
543
+ export function isDevilsCrownTreasureRoom(roomDescriptor) {
544
+ return hasFlag(roomDescriptor.Flags, RoomDescriptorFlag.DEVIL_TREASURE);
608
545
  }
609
546
  /**
610
547
  * Helper function to check to see if the provided room is the Boss Room for Dogma.
@@ -619,12 +556,12 @@ function isDevilsCrownTreasureRoom(roomDescriptor) {
619
556
  * Dogma Boss Room that exists in vanilla) and the sub-type being equal to
620
557
  * `HomeRoomSubType.LIVING_ROOM` (3).
621
558
  */
622
- function isDogmaRoom(roomData) {
623
- return (roomData.StageID === isaac_typescript_definitions_1.StageID.HOME
624
- && roomData.Type === isaac_typescript_definitions_1.RoomType.DEFAULT
559
+ export function isDogmaRoom(roomData) {
560
+ return (roomData.StageID === StageID.HOME
561
+ && roomData.Type === RoomType.DEFAULT
625
562
  && roomData.Variant === 1000
626
563
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
627
- && roomData.Subtype === isaac_typescript_definitions_1.HomeRoomSubType.LIVING_ROOM);
564
+ && roomData.Subtype === HomeRoomSubType.LIVING_ROOM);
628
565
  }
629
566
  /**
630
567
  * Helper function to detect if the provided room is a Double Trouble Boss Room.
@@ -637,15 +574,15 @@ function isDogmaRoom(roomData) {
637
574
  * range of 3700 through 3850. We intentionally do not use this method since it may not work as well
638
575
  * with modded rooms.
639
576
  */
640
- function isDoubleTrouble(roomData) {
641
- return (roomData.Type === isaac_typescript_definitions_1.RoomType.BOSS && roomData.Name.includes("Double Trouble"));
577
+ export function isDoubleTrouble(roomData) {
578
+ return (roomData.Type === RoomType.BOSS && roomData.Name.includes("Double Trouble"));
642
579
  }
643
580
  /**
644
581
  * Helper function to determine if the index of the provided room is equal to `GridRoom.GENESIS`.
645
582
  */
646
- function isGenesisRoom(roomGridIndex) {
583
+ export function isGenesisRoom(roomGridIndex) {
647
584
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
648
- return roomGridIndex === isaac_typescript_definitions_1.GridRoom.GENESIS;
585
+ return roomGridIndex === GridRoom.GENESIS;
649
586
  }
650
587
  /**
651
588
  * Helper function to check if the provided room is either the left Home closet (behind the red
@@ -653,40 +590,40 @@ function isGenesisRoom(roomGridIndex) {
653
590
  *
654
591
  * Home closets have a unique shape that is different from any other room in the game.
655
592
  */
656
- function isHomeCloset(roomData) {
657
- return (roomData.StageID === isaac_typescript_definitions_1.StageID.HOME
593
+ export function isHomeCloset(roomData) {
594
+ return (roomData.StageID === StageID.HOME
658
595
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
659
- && (roomData.Subtype === isaac_typescript_definitions_1.HomeRoomSubType.CLOSET_LEFT
596
+ && (roomData.Subtype === HomeRoomSubType.CLOSET_LEFT
660
597
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
661
- || roomData.Subtype === isaac_typescript_definitions_1.HomeRoomSubType.CLOSET_RIGHT));
598
+ || roomData.Subtype === HomeRoomSubType.CLOSET_RIGHT));
662
599
  }
663
600
  /** Helper function to determine if the provided room is one of the four L room shapes. */
664
- function isLRoom(roomData) {
665
- return (0, roomShape_1.isLRoomShape)(roomData.Shape);
601
+ export function isLRoom(roomData) {
602
+ return isLRoomShape(roomData.Shape);
666
603
  }
667
604
  /**
668
605
  * Helper function to determine if the index of the provided room is equal to `GridRoom.MEGA_SATAN`.
669
606
  */
670
- function isMegaSatanRoom(roomGridIndex) {
607
+ export function isMegaSatanRoom(roomGridIndex) {
671
608
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
672
- return roomGridIndex === isaac_typescript_definitions_1.GridRoom.MEGA_SATAN;
609
+ return roomGridIndex === GridRoom.MEGA_SATAN;
673
610
  }
674
611
  /**
675
612
  * Helper function to determine if the provided room is part of the Repentance "escape sequence" in
676
613
  * the Mines/Ashpit.
677
614
  */
678
- function isMineShaft(roomData) {
679
- return ((roomData.StageID === isaac_typescript_definitions_1.StageID.MINES || roomData.StageID === isaac_typescript_definitions_1.StageID.ASHPIT)
615
+ export function isMineShaft(roomData) {
616
+ return ((roomData.StageID === StageID.MINES || roomData.StageID === StageID.ASHPIT)
680
617
  // eslint-disable-next-line complete/strict-enums
681
- && mineShaftRoomSubTypesSet_1.MINE_SHAFT_ROOM_SUB_TYPE_SET.has(roomData.Subtype));
618
+ && MINE_SHAFT_ROOM_SUB_TYPE_SET.has(roomData.Subtype));
682
619
  }
683
620
  /**
684
621
  * Helper function to check if the provided room is a miniboss room for a particular miniboss. This
685
622
  * will only work for mini-bosses that have dedicated boss rooms in the "00.special rooms.stb" file.
686
623
  */
687
- function isMinibossRoomOf(roomData, minibossID) {
688
- return (roomData.Type === isaac_typescript_definitions_1.RoomType.MINI_BOSS
689
- && roomData.StageID === isaac_typescript_definitions_1.StageID.SPECIAL_ROOMS
624
+ export function isMinibossRoomOf(roomData, minibossID) {
625
+ return (roomData.Type === RoomType.MINI_BOSS
626
+ && roomData.StageID === StageID.SPECIAL_ROOMS
690
627
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
691
628
  && roomData.Subtype === minibossID);
692
629
  }
@@ -694,19 +631,19 @@ function isMinibossRoomOf(roomData, minibossID) {
694
631
  * Helper function to check if the provided room is a "mirror room" in Downpour or Dross. (These
695
632
  * rooms are marked with a specific sub-type.)
696
633
  */
697
- function isMirrorRoom(roomData) {
698
- return (roomData.Type === isaac_typescript_definitions_1.RoomType.DEFAULT
699
- && (roomData.StageID === isaac_typescript_definitions_1.StageID.DOWNPOUR
700
- || roomData.StageID === isaac_typescript_definitions_1.StageID.DROSS)
634
+ export function isMirrorRoom(roomData) {
635
+ return (roomData.Type === RoomType.DEFAULT
636
+ && (roomData.StageID === StageID.DOWNPOUR
637
+ || roomData.StageID === StageID.DROSS)
701
638
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
702
- && roomData.Subtype === isaac_typescript_definitions_1.DownpourRoomSubType.MIRROR);
639
+ && roomData.Subtype === DownpourRoomSubType.MIRROR);
703
640
  }
704
641
  /**
705
642
  * Helper function to check if the provided room matches one of the given room shapes.
706
643
  *
707
644
  * This function is variadic, which means you can pass as many room shapes as you want to match for.
708
645
  */
709
- function isRoomShape(roomData, ...roomShapes) {
646
+ export function isRoomShape(roomData, ...roomShapes) {
710
647
  return roomShapes.includes(roomData.Shape);
711
648
  }
712
649
  /**
@@ -714,22 +651,22 @@ function isRoomShape(roomData, ...roomShapes) {
714
651
  *
715
652
  * This function is variadic, which means you can pass as many room types as you want to match for.
716
653
  */
717
- function isRoomType(roomData, ...roomTypes) {
654
+ export function isRoomType(roomData, ...roomTypes) {
718
655
  return roomTypes.includes(roomData.Type);
719
656
  }
720
657
  /**
721
658
  * Helper function for checking if the provided room is a secret exit that leads to a Repentance
722
659
  * floor.
723
660
  */
724
- function isSecretExit(roomGridIndex) {
661
+ export function isSecretExit(roomGridIndex) {
725
662
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
726
- return roomGridIndex === isaac_typescript_definitions_1.GridRoom.SECRET_EXIT;
663
+ return roomGridIndex === GridRoom.SECRET_EXIT;
727
664
  }
728
665
  /**
729
666
  * Helper function to detect if a room type is a Secret Room, a Super Secret Room, or an Ultra
730
667
  * Secret Room.
731
668
  */
732
- function isSecretRoomType(roomType) {
669
+ export function isSecretRoomType(roomType) {
733
670
  return SECRET_ROOM_TYPES.has(roomType);
734
671
  }
735
672
  /**
@@ -740,9 +677,9 @@ function isSecretRoomType(roomType) {
740
677
  * words, they will have the same room type, room variant, and room sub-type of a normal shop. Thus,
741
678
  * the only way to detect them is by using the grid index.
742
679
  */
743
- function isSecretShop(roomGridIndex) {
680
+ export function isSecretShop(roomGridIndex) {
744
681
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
745
- return roomGridIndex === isaac_typescript_definitions_1.GridRoom.SECRET_SHOP;
682
+ return roomGridIndex === GridRoom.SECRET_SHOP;
746
683
  }
747
684
  /**
748
685
  * If the `Room.Update` method is called in a `POST_NEW_ROOM` callback, then some entities will
@@ -750,55 +687,55 @@ function isSecretShop(roomGridIndex) {
750
687
  * them to zero will have no effect. Thus, a generic solution is to record all of the entity
751
688
  * positions/velocities before updating the room, and then restore those positions/velocities.
752
689
  */
753
- function roomUpdateSafe() {
754
- const room = cachedClasses_1.game.GetRoom();
755
- const entities = (0, entities_1.getEntities)();
756
- const entityPositions = (0, positionVelocity_1.getEntityPositions)(entities);
757
- const entityVelocities = (0, positionVelocity_1.getEntityVelocities)(entities);
690
+ export function roomUpdateSafe() {
691
+ const room = game.GetRoom();
692
+ const entities = getEntities();
693
+ const entityPositions = getEntityPositions(entities);
694
+ const entityVelocities = getEntityVelocities(entities);
758
695
  room.Update();
759
- (0, positionVelocity_1.setEntityPositions)(entityPositions, entities);
760
- (0, positionVelocity_1.setEntityVelocities)(entityVelocities, entities);
696
+ setEntityPositions(entityPositions, entities);
697
+ setEntityVelocities(entityVelocities, entities);
761
698
  }
762
699
  /** Helper function to set the backdrop (i.e. background) of the current room. */
763
- function setBackdrop(backdropType) {
764
- cachedClasses_1.game.ShowHallucination(0, backdropType);
765
- cachedClasses_1.sfxManager.Stop(isaac_typescript_definitions_1.SoundEffect.DEATH_CARD);
700
+ export function setBackdrop(backdropType) {
701
+ game.ShowHallucination(0, backdropType);
702
+ sfxManager.Stop(SoundEffect.DEATH_CARD);
766
703
  }
767
704
  /**
768
705
  * Helper function to convert an uncleared room to a cleared room in the `POST_NEW_ROOM` callback.
769
706
  * This is useful because if enemies are removed in this callback, a room drop will be awarded and
770
707
  * the doors will start closed and then open.
771
708
  */
772
- function setRoomCleared() {
773
- const room = cachedClasses_1.game.GetRoom();
709
+ export function setRoomCleared() {
710
+ const room = game.GetRoom();
774
711
  const roomClear = room.IsClear();
775
712
  // If the room is already cleared, we don't have to do anything.
776
713
  if (roomClear) {
777
714
  return;
778
715
  }
779
716
  room.SetClear(true);
780
- for (const door of (0, doors_1.getDoors)()) {
781
- if ((0, doors_1.isHiddenSecretRoomDoor)(door)) {
717
+ for (const door of getDoors()) {
718
+ if (isHiddenSecretRoomDoor(door)) {
782
719
  continue;
783
720
  }
784
721
  // We don't use the `EntityDoor.Open` method since that will cause the door to play an
785
722
  // animation.
786
- (0, doors_1.openDoorFast)(door);
723
+ openDoorFast(door);
787
724
  // If this is a mini-boss room, then the door would be barred in addition to being closed.
788
725
  // Ensure that the bar is not visible.
789
726
  door.ExtraVisible = false;
790
727
  }
791
- cachedClasses_1.sfxManager.Stop(isaac_typescript_definitions_1.SoundEffect.DOOR_HEAVY_OPEN);
728
+ sfxManager.Stop(SoundEffect.DOOR_HEAVY_OPEN);
792
729
  // If the room contained Mom's Hands, then a screen shake will be queued. Override it with a 0
793
730
  // frame shake.
794
- cachedClasses_1.game.ShakeScreen(0);
731
+ game.ShakeScreen(0);
795
732
  }
796
733
  /**
797
734
  * Helper function to emulate what happens when you bomb an Angel Statue or push a Reward Plate that
798
735
  * spawns an NPC.
799
736
  */
800
- function setRoomUncleared() {
801
- const room = cachedClasses_1.game.GetRoom();
737
+ export function setRoomUncleared() {
738
+ const room = game.GetRoom();
802
739
  room.SetClear(false);
803
- (0, doors_1.closeAllDoors)();
740
+ closeAllDoors();
804
741
  }