isaacscript-common 84.0.0 → 84.1.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 (568) hide show
  1. package/dist/arrays/cachedEnumValues.js +33 -0
  2. package/dist/callbackClasses.js +289 -0
  3. package/dist/callbacks.js +181 -0
  4. package/dist/classes/DefaultMap.js +171 -0
  5. package/dist/classes/ModFeature.js +244 -0
  6. package/dist/classes/ModUpgraded.js +324 -0
  7. package/dist/classes/callbacks/EntityTakeDmgFilter.js +19 -0
  8. package/dist/classes/callbacks/EntityTakeDmgPlayer.js +29 -0
  9. package/dist/classes/callbacks/InputActionFilter.js +24 -0
  10. package/dist/classes/callbacks/InputActionPlayer.js +37 -0
  11. package/dist/classes/callbacks/PostAmbushFinished.js +40 -0
  12. package/dist/classes/callbacks/PostAmbushStarted.js +40 -0
  13. package/dist/classes/callbacks/PostBombExploded.js +24 -0
  14. package/dist/classes/callbacks/PostBombInitFilter.js +21 -0
  15. package/dist/classes/callbacks/PostBombInitLate.js +31 -0
  16. package/dist/classes/callbacks/PostBombRenderFilter.js +21 -0
  17. package/dist/classes/callbacks/PostBombUpdateFilter.js +21 -0
  18. package/dist/classes/callbacks/PostBoneSwing.js +53 -0
  19. package/dist/classes/callbacks/PostCollectibleEmpty.js +50 -0
  20. package/dist/classes/callbacks/PostCursedTeleport.js +119 -0
  21. package/dist/classes/callbacks/PostCustomRevive.js +17 -0
  22. package/dist/classes/callbacks/PostDiceRoomActivated.js +50 -0
  23. package/dist/classes/callbacks/PostDoorRender.js +24 -0
  24. package/dist/classes/callbacks/PostDoorUpdate.js +24 -0
  25. package/dist/classes/callbacks/PostEffectInitFilter.js +21 -0
  26. package/dist/classes/callbacks/PostEffectInitLate.js +31 -0
  27. package/dist/classes/callbacks/PostEffectRenderFilter.js +21 -0
  28. package/dist/classes/callbacks/PostEffectStateChanged.js +34 -0
  29. package/dist/classes/callbacks/PostEffectUpdateFilter.js +21 -0
  30. package/dist/classes/callbacks/PostEntityKillFilter.js +21 -0
  31. package/dist/classes/callbacks/PostEsauJr.js +12 -0
  32. package/dist/classes/callbacks/PostFamiliarInitFilter.js +21 -0
  33. package/dist/classes/callbacks/PostFamiliarInitLate.js +31 -0
  34. package/dist/classes/callbacks/PostFamiliarRenderFilter.js +21 -0
  35. package/dist/classes/callbacks/PostFamiliarStateChanged.js +34 -0
  36. package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +21 -0
  37. package/dist/classes/callbacks/PostFirstEsauJr.js +12 -0
  38. package/dist/classes/callbacks/PostFirstFlip.js +12 -0
  39. package/dist/classes/callbacks/PostFlip.js +12 -0
  40. package/dist/classes/callbacks/PostGameEndFilter.js +21 -0
  41. package/dist/classes/callbacks/PostGameStartedReordered.js +14 -0
  42. package/dist/classes/callbacks/PostGameStartedReorderedLast.js +14 -0
  43. package/dist/classes/callbacks/PostGreedModeWave.js +35 -0
  44. package/dist/classes/callbacks/PostGridEntityBroken.js +14 -0
  45. package/dist/classes/callbacks/PostGridEntityCollision.js +28 -0
  46. package/dist/classes/callbacks/PostGridEntityCustomBroken.js +14 -0
  47. package/dist/classes/callbacks/PostGridEntityCustomCollision.js +24 -0
  48. package/dist/classes/callbacks/PostGridEntityCustomInit.js +14 -0
  49. package/dist/classes/callbacks/PostGridEntityCustomRemove.js +18 -0
  50. package/dist/classes/callbacks/PostGridEntityCustomRender.js +14 -0
  51. package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +14 -0
  52. package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +14 -0
  53. package/dist/classes/callbacks/PostGridEntityInit.js +14 -0
  54. package/dist/classes/callbacks/PostGridEntityRemove.js +19 -0
  55. package/dist/classes/callbacks/PostGridEntityRender.js +14 -0
  56. package/dist/classes/callbacks/PostGridEntityStateChanged.js +14 -0
  57. package/dist/classes/callbacks/PostGridEntityUpdate.js +14 -0
  58. package/dist/classes/callbacks/PostHolyMantleRemoved.js +43 -0
  59. package/dist/classes/callbacks/PostItemDischarge.js +122 -0
  60. package/dist/classes/callbacks/PostItemPickup.js +14 -0
  61. package/dist/classes/callbacks/PostKeyboardChanged.js +46 -0
  62. package/dist/classes/callbacks/PostKnifeInitFilter.js +21 -0
  63. package/dist/classes/callbacks/PostKnifeInitLate.js +31 -0
  64. package/dist/classes/callbacks/PostKnifeRenderFilter.js +21 -0
  65. package/dist/classes/callbacks/PostKnifeUpdateFilter.js +21 -0
  66. package/dist/classes/callbacks/PostLaserInitFilter.js +21 -0
  67. package/dist/classes/callbacks/PostLaserInitLate.js +31 -0
  68. package/dist/classes/callbacks/PostLaserRenderFilter.js +21 -0
  69. package/dist/classes/callbacks/PostLaserUpdateFilter.js +21 -0
  70. package/dist/classes/callbacks/PostNPCDeathFilter.js +21 -0
  71. package/dist/classes/callbacks/PostNPCInitFilter.js +21 -0
  72. package/dist/classes/callbacks/PostNPCInitLate.js +31 -0
  73. package/dist/classes/callbacks/PostNPCRenderFilter.js +21 -0
  74. package/dist/classes/callbacks/PostNPCStateChanged.js +34 -0
  75. package/dist/classes/callbacks/PostNPCUpdateFilter.js +21 -0
  76. package/dist/classes/callbacks/PostNewLevelReordered.js +14 -0
  77. package/dist/classes/callbacks/PostNewRoomEarly.js +74 -0
  78. package/dist/classes/callbacks/PostNewRoomReordered.js +14 -0
  79. package/dist/classes/callbacks/PostPEffectUpdateReordered.js +14 -0
  80. package/dist/classes/callbacks/PostPickupChanged.js +14 -0
  81. package/dist/classes/callbacks/PostPickupCollect.js +38 -0
  82. package/dist/classes/callbacks/PostPickupInitFilter.js +21 -0
  83. package/dist/classes/callbacks/PostPickupInitFirst.js +33 -0
  84. package/dist/classes/callbacks/PostPickupInitLate.js +31 -0
  85. package/dist/classes/callbacks/PostPickupRenderFilter.js +21 -0
  86. package/dist/classes/callbacks/PostPickupSelectionFilter.js +29 -0
  87. package/dist/classes/callbacks/PostPickupStateChanged.js +34 -0
  88. package/dist/classes/callbacks/PostPickupUpdateFilter.js +21 -0
  89. package/dist/classes/callbacks/PostPitRender.js +24 -0
  90. package/dist/classes/callbacks/PostPitUpdate.js +24 -0
  91. package/dist/classes/callbacks/PostPlayerChangeHealth.js +47 -0
  92. package/dist/classes/callbacks/PostPlayerChangeStat.js +79 -0
  93. package/dist/classes/callbacks/PostPlayerChangeType.js +36 -0
  94. package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +14 -0
  95. package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +14 -0
  96. package/dist/classes/callbacks/PostPlayerFatalDamage.js +83 -0
  97. package/dist/classes/callbacks/PostPlayerInitFirst.js +41 -0
  98. package/dist/classes/callbacks/PostPlayerInitLate.js +33 -0
  99. package/dist/classes/callbacks/PostPlayerRenderReordered.js +14 -0
  100. package/dist/classes/callbacks/PostPlayerUpdateReordered.js +14 -0
  101. package/dist/classes/callbacks/PostPoopRender.js +24 -0
  102. package/dist/classes/callbacks/PostPoopUpdate.js +24 -0
  103. package/dist/classes/callbacks/PostPressurePlateRender.js +24 -0
  104. package/dist/classes/callbacks/PostPressurePlateUpdate.js +24 -0
  105. package/dist/classes/callbacks/PostProjectileInitFilter.js +21 -0
  106. package/dist/classes/callbacks/PostProjectileInitLate.js +31 -0
  107. package/dist/classes/callbacks/PostProjectileKill.js +52 -0
  108. package/dist/classes/callbacks/PostProjectileRenderFilter.js +21 -0
  109. package/dist/classes/callbacks/PostProjectileUpdateFilter.js +21 -0
  110. package/dist/classes/callbacks/PostPurchase.js +90 -0
  111. package/dist/classes/callbacks/PostRockRender.js +24 -0
  112. package/dist/classes/callbacks/PostRockUpdate.js +24 -0
  113. package/dist/classes/callbacks/PostRoomClearChanged.js +46 -0
  114. package/dist/classes/callbacks/PostSacrifice.js +36 -0
  115. package/dist/classes/callbacks/PostSlotAnimationChanged.js +14 -0
  116. package/dist/classes/callbacks/PostSlotCollision.js +25 -0
  117. package/dist/classes/callbacks/PostSlotDestroyed.js +14 -0
  118. package/dist/classes/callbacks/PostSlotInit.js +14 -0
  119. package/dist/classes/callbacks/PostSlotRender.js +14 -0
  120. package/dist/classes/callbacks/PostSlotUpdate.js +14 -0
  121. package/dist/classes/callbacks/PostSpikesRender.js +24 -0
  122. package/dist/classes/callbacks/PostSpikesUpdate.js +24 -0
  123. package/dist/classes/callbacks/PostTNTRender.js +24 -0
  124. package/dist/classes/callbacks/PostTNTUpdate.js +24 -0
  125. package/dist/classes/callbacks/PostTearInitFilter.js +21 -0
  126. package/dist/classes/callbacks/PostTearInitLate.js +31 -0
  127. package/dist/classes/callbacks/PostTearInitVeryLate.js +35 -0
  128. package/dist/classes/callbacks/PostTearKill.js +52 -0
  129. package/dist/classes/callbacks/PostTearRenderFilter.js +21 -0
  130. package/dist/classes/callbacks/PostTearUpdateFilter.js +21 -0
  131. package/dist/classes/callbacks/PostTransformation.js +47 -0
  132. package/dist/classes/callbacks/PostTrinketBreak.js +70 -0
  133. package/dist/classes/callbacks/PostUsePillFilter.js +76 -0
  134. package/dist/classes/callbacks/PreBerserkDeath.js +41 -0
  135. package/dist/classes/callbacks/PreBombCollisionFilter.js +19 -0
  136. package/dist/classes/callbacks/PreCustomRevive.js +14 -0
  137. package/dist/classes/callbacks/PreEntitySpawnFilter.js +24 -0
  138. package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +19 -0
  139. package/dist/classes/callbacks/PreGetPedestal.js +46 -0
  140. package/dist/classes/callbacks/PreItemPickup.js +14 -0
  141. package/dist/classes/callbacks/PreKnifeCollisionFilter.js +19 -0
  142. package/dist/classes/callbacks/PreNPCCollisionFilter.js +19 -0
  143. package/dist/classes/callbacks/PreNPCUpdateFilter.js +19 -0
  144. package/dist/classes/callbacks/PreNewLevel.js +51 -0
  145. package/dist/classes/callbacks/PreProjectileCollisionFilter.js +19 -0
  146. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +26 -0
  147. package/dist/classes/callbacks/PreTearCollisionFilter.js +19 -0
  148. package/dist/classes/features/callbackLogic/CustomGridEntities.js +359 -0
  149. package/dist/classes/features/callbackLogic/CustomRevive.js +170 -0
  150. package/dist/classes/features/callbackLogic/EsauJrDetection.js +70 -0
  151. package/dist/classes/features/callbackLogic/FlipDetection.js +61 -0
  152. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +220 -0
  153. package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +62 -0
  154. package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +35 -0
  155. package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +147 -0
  156. package/dist/classes/features/callbackLogic/ItemPickupDetection.js +68 -0
  157. package/dist/classes/features/callbackLogic/PickupChangeDetection.js +43 -0
  158. package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +193 -0
  159. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +109 -0
  160. package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +95 -0
  161. package/dist/classes/features/callbackLogic/SlotRenderDetection.js +48 -0
  162. package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +52 -0
  163. package/dist/classes/features/other/CharacterHealthConversion.js +112 -0
  164. package/dist/classes/features/other/CharacterStats.js +68 -0
  165. package/dist/classes/features/other/CollectibleItemPoolType.js +75 -0
  166. package/dist/classes/features/other/CustomHotkeys.js +144 -0
  167. package/dist/classes/features/other/CustomItemPools.js +128 -0
  168. package/dist/classes/features/other/CustomPickups.js +118 -0
  169. package/dist/classes/features/other/CustomStages.js +471 -0
  170. package/dist/classes/features/other/CustomTrapdoors.js +596 -0
  171. package/dist/classes/features/other/DebugDisplay.js +699 -0
  172. package/dist/classes/features/other/DeployJSONRoom.js +301 -0
  173. package/dist/classes/features/other/DisableAllSound.js +90 -0
  174. package/dist/classes/features/other/DisableInputs.js +249 -0
  175. package/dist/classes/features/other/EdenStartingStatsHealth.js +197 -0
  176. package/dist/classes/features/other/ExtraConsoleCommands.js +292 -0
  177. package/dist/classes/features/other/FadeInRemover.js +67 -0
  178. package/dist/classes/features/other/FastReset.js +88 -0
  179. package/dist/classes/features/other/FlyingDetection.js +64 -0
  180. package/dist/classes/features/other/ForgottenSwitch.js +43 -0
  181. package/dist/classes/features/other/ItemPoolDetection.js +187 -0
  182. package/dist/classes/features/other/ModdedElementDetection.js +399 -0
  183. package/dist/classes/features/other/ModdedElementSets.js +1251 -0
  184. package/dist/classes/features/other/NoSirenSteal.js +88 -0
  185. package/dist/classes/features/other/Pause.js +197 -0
  186. package/dist/classes/features/other/PersistentEntities.js +168 -0
  187. package/dist/classes/features/other/PickupIndexCreation.js +229 -0
  188. package/dist/classes/features/other/PlayerCollectibleTracking.js +102 -0
  189. package/dist/classes/features/other/PonyDetection.js +86 -0
  190. package/dist/classes/features/other/PressInput.js +71 -0
  191. package/dist/classes/features/other/PreventChildEntities.js +60 -0
  192. package/dist/classes/features/other/PreventGridEntityRespawn.js +159 -0
  193. package/dist/classes/features/other/RerunDetection.js +69 -0
  194. package/dist/classes/features/other/RoomClearFrame.js +94 -0
  195. package/dist/classes/features/other/RoomHistory.js +196 -0
  196. package/dist/classes/features/other/RunInNFrames.js +323 -0
  197. package/dist/classes/features/other/RunNextRoom.js +53 -0
  198. package/dist/classes/features/other/RunNextRun.js +60 -0
  199. package/dist/classes/features/other/SaveDataManager.js +383 -0
  200. package/dist/classes/features/other/SpawnRockAltRewards.js +469 -0
  201. package/dist/classes/features/other/StageHistory.js +244 -0
  202. package/dist/classes/features/other/StartAmbush.js +62 -0
  203. package/dist/classes/features/other/TaintedLazarusPlayers.js +115 -0
  204. package/dist/classes/features/other/UnlockAchievementsDetection.js +60 -0
  205. package/dist/classes/features/other/customStages/backdrop.js +195 -0
  206. package/dist/classes/features/other/customStages/constants.js +19 -0
  207. package/dist/classes/features/other/customStages/gridEntities.js +177 -0
  208. package/dist/classes/features/other/customStages/shadows.js +67 -0
  209. package/dist/classes/features/other/customStages/streakText.js +222 -0
  210. package/dist/classes/features/other/customStages/utils.js +65 -0
  211. package/dist/classes/features/other/customStages/v.js +27 -0
  212. package/dist/classes/features/other/customStages/versusScreen.js +227 -0
  213. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +23 -0
  214. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +22 -0
  215. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +23 -0
  216. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +23 -0
  217. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +23 -0
  218. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +23 -0
  219. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +23 -0
  220. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +23 -0
  221. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +22 -0
  222. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +25 -0
  223. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +22 -0
  224. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +25 -0
  225. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +23 -0
  226. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +22 -0
  227. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +22 -0
  228. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +22 -0
  229. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +22 -0
  230. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +23 -0
  231. package/dist/classes/features/other/debugDisplay/utils.js +13 -0
  232. package/dist/classes/features/other/extraConsoleCommands/commands.js +1598 -0
  233. package/dist/classes/features/other/extraConsoleCommands/subroutines.js +135 -0
  234. package/dist/classes/features/other/extraConsoleCommands/v.js +30 -0
  235. package/dist/classes/features/other/saveDataManager/constants.js +4 -0
  236. package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +106 -0
  237. package/dist/classes/features/other/saveDataManager/loadFromDisk.js +69 -0
  238. package/dist/classes/features/other/saveDataManager/restoreDefaults.js +69 -0
  239. package/dist/classes/features/other/saveDataManager/saveToDisk.js +46 -0
  240. package/dist/classes/private/CustomCallback.js +59 -0
  241. package/dist/classes/private/Feature.js +39 -0
  242. package/dist/core/cachedClasses.js +61 -0
  243. package/dist/core/constants.js +289 -0
  244. package/dist/core/constantsFirstLast.js +98 -0
  245. package/dist/core/constantsVanilla.js +131 -0
  246. package/dist/core/upgradeMod.js +71 -0
  247. package/dist/customStageMetadata.json +1 -0
  248. package/dist/data/itempools.json +16625 -0
  249. package/dist/decorators.js +21 -0
  250. package/dist/enums/AmbushType.js +9 -0
  251. package/dist/enums/CornerType.js +11 -0
  252. package/dist/enums/HealthType.js +20 -0
  253. package/dist/enums/ISCFeature.js +65 -0
  254. package/dist/enums/LadderSubTypeCustom.js +20 -0
  255. package/dist/enums/ModCallbackCustom.js +2477 -0
  256. package/dist/enums/MysteriousPaperEffect.js +16 -0
  257. package/dist/enums/PlayerStat.js +37 -0
  258. package/dist/enums/PocketItemType.js +13 -0
  259. package/dist/enums/RockAltType.js +23 -0
  260. package/dist/enums/SaveDataKey.js +14 -0
  261. package/dist/enums/SerializationType.js +10 -0
  262. package/dist/enums/SlotDestructionType.js +22 -0
  263. package/dist/enums/private/GridEntityTypeCustom.js +10 -0
  264. package/dist/enums/private/SerializationBrand.js +42 -0
  265. package/dist/enums/private/StageTravelState.js +13 -0
  266. package/dist/enums/private/TrapdoorAnimation.js +9 -0
  267. package/dist/enums/private/UIStreakAnimation.js +10 -0
  268. package/dist/features.js +150 -0
  269. package/dist/functions/ambush.js +26 -0
  270. package/dist/functions/array.js +586 -0
  271. package/dist/functions/arrayLua.js +81 -0
  272. package/dist/functions/benchmark.js +36 -0
  273. package/dist/functions/bitSet128.js +64 -0
  274. package/dist/functions/bitwise.js +82 -0
  275. package/dist/functions/bombs.js +14 -0
  276. package/dist/functions/bosses.js +238 -0
  277. package/dist/functions/cards.js +164 -0
  278. package/dist/functions/challenges.js +117 -0
  279. package/dist/functions/characters.js +182 -0
  280. package/dist/functions/charge.js +251 -0
  281. package/dist/functions/chargeBar.js +54 -0
  282. package/dist/functions/collectibleTag.js +24 -0
  283. package/dist/functions/collectibles.js +581 -0
  284. package/dist/functions/color.js +88 -0
  285. package/dist/functions/console.js +18 -0
  286. package/dist/functions/curses.js +37 -0
  287. package/dist/functions/debugFunctions.js +108 -0
  288. package/dist/functions/decorators.js +113 -0
  289. package/dist/functions/deepCopy.js +406 -0
  290. package/dist/functions/deepCopyTests.js +361 -0
  291. package/dist/functions/dimensions.js +30 -0
  292. package/dist/functions/direction.js +78 -0
  293. package/dist/functions/doors.js +524 -0
  294. package/dist/functions/easing.js +327 -0
  295. package/dist/functions/effects.js +14 -0
  296. package/dist/functions/emptyRoom.js +79 -0
  297. package/dist/functions/entities.js +529 -0
  298. package/dist/functions/entitiesSpecific.js +582 -0
  299. package/dist/functions/entityTypes.js +9 -0
  300. package/dist/functions/enums.js +244 -0
  301. package/dist/functions/external.js +59 -0
  302. package/dist/functions/familiars.js +136 -0
  303. package/dist/functions/flag.js +146 -0
  304. package/dist/functions/frames.js +166 -0
  305. package/dist/functions/globals.js +291 -0
  306. package/dist/functions/gridEntities.js +990 -0
  307. package/dist/functions/gridEntitiesSpecific.js +456 -0
  308. package/dist/functions/gridIndex.js +35 -0
  309. package/dist/functions/hash.js +75 -0
  310. package/dist/functions/hex.js +57 -0
  311. package/dist/functions/input.js +185 -0
  312. package/dist/functions/isaacAPIClass.js +157 -0
  313. package/dist/functions/itemPool.js +118 -0
  314. package/dist/functions/jsonHelpers.js +73 -0
  315. package/dist/functions/jsonRoom.js +184 -0
  316. package/dist/functions/kColor.js +89 -0
  317. package/dist/functions/language.js +16 -0
  318. package/dist/functions/level.js +66 -0
  319. package/dist/functions/levelGrid.js +497 -0
  320. package/dist/functions/log.js +86 -0
  321. package/dist/functions/logEntities.js +308 -0
  322. package/dist/functions/logMisc.js +510 -0
  323. package/dist/functions/map.js +121 -0
  324. package/dist/functions/math.js +149 -0
  325. package/dist/functions/merge.js +159 -0
  326. package/dist/functions/mergeTests.js +313 -0
  327. package/dist/functions/minimap.js +204 -0
  328. package/dist/functions/modFeatures.js +39 -0
  329. package/dist/functions/newArray.js +30 -0
  330. package/dist/functions/nextStage.js +169 -0
  331. package/dist/functions/npcDataStructures.js +146 -0
  332. package/dist/functions/npcs.js +132 -0
  333. package/dist/functions/pickupVariants.js +63 -0
  334. package/dist/functions/pickups.js +168 -0
  335. package/dist/functions/pickupsSpecific.js +376 -0
  336. package/dist/functions/pills.js +200 -0
  337. package/dist/functions/playerCenter.js +53 -0
  338. package/dist/functions/playerCollectibles.js +300 -0
  339. package/dist/functions/playerDataStructures.js +145 -0
  340. package/dist/functions/playerEffects.js +63 -0
  341. package/dist/functions/playerHealth.js +604 -0
  342. package/dist/functions/playerIndex.js +186 -0
  343. package/dist/functions/playerTrinkets.js +149 -0
  344. package/dist/functions/players.js +471 -0
  345. package/dist/functions/pocketItems.js +165 -0
  346. package/dist/functions/positionVelocity.js +158 -0
  347. package/dist/functions/pressurePlate.js +26 -0
  348. package/dist/functions/projectiles.js +57 -0
  349. package/dist/functions/random.js +90 -0
  350. package/dist/functions/readOnly.js +33 -0
  351. package/dist/functions/render.js +36 -0
  352. package/dist/functions/revive.js +151 -0
  353. package/dist/functions/rng.js +140 -0
  354. package/dist/functions/rockAlt.js +50 -0
  355. package/dist/functions/roomData.js +155 -0
  356. package/dist/functions/roomGrid.js +97 -0
  357. package/dist/functions/roomShape.js +143 -0
  358. package/dist/functions/roomShapeWalls.js +187 -0
  359. package/dist/functions/roomTransition.js +43 -0
  360. package/dist/functions/rooms.js +782 -0
  361. package/dist/functions/run.js +121 -0
  362. package/dist/functions/seeds.js +22 -0
  363. package/dist/functions/serialization.js +98 -0
  364. package/dist/functions/set.js +215 -0
  365. package/dist/functions/slots.js +41 -0
  366. package/dist/functions/sort.js +158 -0
  367. package/dist/functions/sound.js +45 -0
  368. package/dist/functions/spawnCollectible.js +112 -0
  369. package/dist/functions/sprites.js +130 -0
  370. package/dist/functions/stage.js +540 -0
  371. package/dist/functions/stats.js +104 -0
  372. package/dist/functions/storyBosses.js +63 -0
  373. package/dist/functions/string.js +194 -0
  374. package/dist/functions/table.js +162 -0
  375. package/dist/functions/tears.js +128 -0
  376. package/dist/functions/transformations.js +89 -0
  377. package/dist/functions/trinketGive.js +145 -0
  378. package/dist/functions/trinkets.js +213 -0
  379. package/dist/functions/tstlClass.js +97 -0
  380. package/dist/functions/types.js +225 -0
  381. package/dist/functions/ui.js +148 -0
  382. package/dist/functions/utils.d.ts +4 -1
  383. package/dist/functions/utils.d.ts.map +1 -1
  384. package/dist/functions/utils.js +195 -0
  385. package/dist/functions/utils.lua +6 -2
  386. package/dist/functions/vector.js +150 -0
  387. package/dist/functions/versusScreen.js +58 -0
  388. package/dist/functions/weighted.js +57 -0
  389. package/dist/index.js +219 -0
  390. package/dist/index.rollup.d.ts +4 -1
  391. package/dist/indexLua.js +220 -0
  392. package/dist/interfaces/ChargeBarSprites.js +2 -0
  393. package/dist/interfaces/Corner.js +2 -0
  394. package/dist/interfaces/CustomStageTSConfig.js +2 -0
  395. package/dist/interfaces/GridEntityCustomData.js +2 -0
  396. package/dist/interfaces/JSONRoomsFile.js +2 -0
  397. package/dist/interfaces/PlayerHealth.js +2 -0
  398. package/dist/interfaces/PlayerStats.js +4 -0
  399. package/dist/interfaces/PocketItemDescription.js +2 -0
  400. package/dist/interfaces/RoomDescription.js +2 -0
  401. package/dist/interfaces/SaveData.js +98 -0
  402. package/dist/interfaces/StageHistoryEntry.js +2 -0
  403. package/dist/interfaces/TSTLClassMetatable.js +2 -0
  404. package/dist/interfaces/TrinketSituation.js +2 -0
  405. package/dist/interfaces/private/AddCallbackParametersCustom.js +4 -0
  406. package/dist/interfaces/private/CustomStage.js +2 -0
  407. package/dist/interfaces/private/CustomTrapdoorDescription.js +2 -0
  408. package/dist/interfaces/private/ModUpgradedInterface.js +2 -0
  409. package/dist/isaacscript-common.lua +7 -3
  410. package/dist/maps/PHDPillConversionsMap.js +23 -0
  411. package/dist/maps/cardNameToTypeMap.js +211 -0
  412. package/dist/maps/characterNameToTypeMap.js +91 -0
  413. package/dist/maps/collectibleNameToTypeMap.js +19 -0
  414. package/dist/maps/defaultPlayerStatMap.js +17 -0
  415. package/dist/maps/entityTypeVariantToBossIDMap.js +11 -0
  416. package/dist/maps/falsePHDPillConversionsMap.js +37 -0
  417. package/dist/maps/gridEntityTypeToBrokenStateMap.js +32 -0
  418. package/dist/maps/gridEntityXMLMap.js +133 -0
  419. package/dist/maps/itemPoolTypeToItemPoolName.js +38 -0
  420. package/dist/maps/keyboardToStringMap.js +71 -0
  421. package/dist/maps/pillNameToEffectMap.js +91 -0
  422. package/dist/maps/roomNameToTypeMap.js +43 -0
  423. package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +17 -0
  424. package/dist/maps/transformationNameToPlayerFormMap.js +35 -0
  425. package/dist/maps/trinketNameToTypeMap.js +19 -0
  426. package/dist/objects/LRoomShapeToRectangles.js +43 -0
  427. package/dist/objects/backdropTypeToRockAltType.js +68 -0
  428. package/dist/objects/batteryNames.js +13 -0
  429. package/dist/objects/bombNames.js +17 -0
  430. package/dist/objects/bossIDToEntityTypeVariant.js +228 -0
  431. package/dist/objects/bossNamePNGFileNames.js +120 -0
  432. package/dist/objects/bossNames.js +119 -0
  433. package/dist/objects/bossPortraitPNGFileNames.js +123 -0
  434. package/dist/objects/cardDescriptions.js +106 -0
  435. package/dist/objects/cardNames.js +106 -0
  436. package/dist/objects/challengeBosses.js +60 -0
  437. package/dist/objects/challengeCharacters.js +58 -0
  438. package/dist/objects/challengeCollectibleTypes.js +255 -0
  439. package/dist/objects/challengeNames.js +54 -0
  440. package/dist/objects/challengeTrinketType.js +58 -0
  441. package/dist/objects/characterDamageMultipliers.js +49 -0
  442. package/dist/objects/characterNames.js +48 -0
  443. package/dist/objects/characterSpritePNGFileNames.js +50 -0
  444. package/dist/objects/characterStartingCollectibleTypes.js +105 -0
  445. package/dist/objects/characterStartingTrinketTypes.js +90 -0
  446. package/dist/objects/chestNames.js +20 -0
  447. package/dist/objects/coinNames.js +16 -0
  448. package/dist/objects/coinSubTypeToValue.js +15 -0
  449. package/dist/objects/collectibleDescriptions.js +742 -0
  450. package/dist/objects/collectibleNames.js +745 -0
  451. package/dist/objects/colors.js +26 -0
  452. package/dist/objects/directionNames.js +11 -0
  453. package/dist/objects/directionToDegrees.js +11 -0
  454. package/dist/objects/directionToMoveAction.js +11 -0
  455. package/dist/objects/directionToShootAction.js +11 -0
  456. package/dist/objects/directionToVector.js +13 -0
  457. package/dist/objects/doorSlotFlagToDoorSlot.js +15 -0
  458. package/dist/objects/doorSlotToDirection.js +15 -0
  459. package/dist/objects/doorSlotToDoorSlotFlag.js +15 -0
  460. package/dist/objects/gridEntityTypeToANM2Name.js +37 -0
  461. package/dist/objects/heartNames.js +21 -0
  462. package/dist/objects/isaacAPIClassTypeToBrand.js +12 -0
  463. package/dist/objects/isaacAPIClassTypeToFunctions.js +46 -0
  464. package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +57 -0
  465. package/dist/objects/kColors.js +27 -0
  466. package/dist/objects/keyNames.js +13 -0
  467. package/dist/objects/languageNames.js +13 -0
  468. package/dist/objects/oppositeDoorSlots.js +15 -0
  469. package/dist/objects/pillEffectClasses.js +57 -0
  470. package/dist/objects/pillEffectNames.js +57 -0
  471. package/dist/objects/pillEffectTypeToPillEffects.js +23 -0
  472. package/dist/objects/pillEffectTypes.js +57 -0
  473. package/dist/objects/playerNamePNGFileNames.js +57 -0
  474. package/dist/objects/playerPortraitPNGFileNames.js +54 -0
  475. package/dist/objects/roomShapeBounds.js +48 -0
  476. package/dist/objects/roomShapeCorners.js +330 -0
  477. package/dist/objects/roomShapeLayoutSizes.js +41 -0
  478. package/dist/objects/roomShapeToBottomRightPosition.js +25 -0
  479. package/dist/objects/roomShapeToDoorSlotCoordinates.js +111 -0
  480. package/dist/objects/roomShapeToDoorSlots.js +72 -0
  481. package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +118 -0
  482. package/dist/objects/roomShapeToGridWidth.js +20 -0
  483. package/dist/objects/roomShapeToTopLeftPosition.js +26 -0
  484. package/dist/objects/roomShapeVolumes.js +32 -0
  485. package/dist/objects/roomTypeNames.js +35 -0
  486. package/dist/objects/roomTypeSpecialGotoPrefixes.js +35 -0
  487. package/dist/objects/sackNames.js +11 -0
  488. package/dist/objects/slotNames.js +26 -0
  489. package/dist/objects/stageIDNames.js +43 -0
  490. package/dist/objects/stageToMusic.js +91 -0
  491. package/dist/objects/stageToStageID.js +117 -0
  492. package/dist/objects/stageTypeSuffixes.js +14 -0
  493. package/dist/objects/transformationNames.js +20 -0
  494. package/dist/objects/trinketDescriptions.js +199 -0
  495. package/dist/objects/trinketNames.js +202 -0
  496. package/dist/objects/versusScreenBackgroundColors.js +46 -0
  497. package/dist/objects/versusScreenDirtSpotColors.js +46 -0
  498. package/dist/patchErrorFunctions.js +65 -0
  499. package/dist/serialization.js +21 -0
  500. package/dist/sets/LRoomShapesSet.js +11 -0
  501. package/dist/sets/bigRoomShapesSet.js +14 -0
  502. package/dist/sets/bossSets.js +465 -0
  503. package/dist/sets/charactersThatStartWithAnActiveItemSet.js +18 -0
  504. package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +9 -0
  505. package/dist/sets/charactersWithFreeDevilDealsSet.js +6 -0
  506. package/dist/sets/charactersWithNoRedHeartsSet.js +19 -0
  507. package/dist/sets/charactersWithNoSoulHeartsSet.js +16 -0
  508. package/dist/sets/consoleCommandsSet.js +64 -0
  509. package/dist/sets/entitiesWithArmorSet.js +59 -0
  510. package/dist/sets/familiarsThatShootPlayerTearsSet.js +15 -0
  511. package/dist/sets/itemConfigCardTypesForCards.js +14 -0
  512. package/dist/sets/lostStyleCharactersSet.js +16 -0
  513. package/dist/sets/mineShaftRoomSubTypesSet.js +12 -0
  514. package/dist/sets/narrowRoomShapesSet.js +11 -0
  515. package/dist/sets/poopGridEntityXMLTypesSet.js +16 -0
  516. package/dist/sets/redHeartSubTypesSet.js +10 -0
  517. package/dist/sets/repentanceBossIDsSet.js +30 -0
  518. package/dist/sets/sinEntityTypesSet.js +14 -0
  519. package/dist/sets/singleUseActiveCollectibleTypesSet.js +15 -0
  520. package/dist/shaderCrashFix.js +24 -0
  521. package/dist/shouldFire.js +226 -0
  522. package/dist/types/AddSubtract.js +2 -0
  523. package/dist/types/AllButFirst.js +2 -0
  524. package/dist/types/AllButLast.js +2 -0
  525. package/dist/types/AnyClass.js +2 -0
  526. package/dist/types/AnyEntity.js +2 -0
  527. package/dist/types/AnyFunction.js +2 -0
  528. package/dist/types/AnyGridEntity.js +2 -0
  529. package/dist/types/CompositionTypeSatisfiesEnum.js +11 -0
  530. package/dist/types/ConversionHeartSubType.js +2 -0
  531. package/dist/types/Decrement.js +2 -0
  532. package/dist/types/ERange.js +2 -0
  533. package/dist/types/EntityID.js +2 -0
  534. package/dist/types/FunctionTuple.js +2 -0
  535. package/dist/types/GridEntityID.js +2 -0
  536. package/dist/types/HasFunction.js +2 -0
  537. package/dist/types/IRange.js +2 -0
  538. package/dist/types/Immutable.js +2 -0
  539. package/dist/types/Increment.js +2 -0
  540. package/dist/types/LowercaseKeys.js +2 -0
  541. package/dist/types/NaturalNumbersLessThan.js +2 -0
  542. package/dist/types/NaturalNumbersLessThanOrEqualTo.js +2 -0
  543. package/dist/types/PickingUpItem.js +44 -0
  544. package/dist/types/PickupIndex.js +2 -0
  545. package/dist/types/PlayerIndex.js +2 -0
  546. package/dist/types/PossibleStatType.js +2 -0
  547. package/dist/types/PublicInterface.js +2 -0
  548. package/dist/types/ReadonlyMap.js +6 -0
  549. package/dist/types/ReadonlyRecord.js +2 -0
  550. package/dist/types/ReadonlySet.js +6 -0
  551. package/dist/types/StartsWithLowercase.js +2 -0
  552. package/dist/types/StartsWithUppercase.js +2 -0
  553. package/dist/types/TSTLClass.js +2 -0
  554. package/dist/types/Tuple.js +2 -0
  555. package/dist/types/TupleKeys.js +2 -0
  556. package/dist/types/TupleToIntersection.js +2 -0
  557. package/dist/types/TupleToUnion.js +2 -0
  558. package/dist/types/TupleWithLengthBetween.js +22 -0
  559. package/dist/types/TupleWithMaxLength.js +27 -0
  560. package/dist/types/UnionToIntersection.js +2 -0
  561. package/dist/types/UppercaseKeys.js +2 -0
  562. package/dist/types/WeightedArray.js +2 -0
  563. package/dist/types/WidenLiteral.js +2 -0
  564. package/dist/types/Writable.js +2 -0
  565. package/dist/types/private/CallbackTuple.js +2 -0
  566. package/dist/types/private/ModUpgradedWithFeatures.js +2 -0
  567. package/package.json +1 -1
  568. package/src/functions/utils.ts +6 -2
@@ -0,0 +1,524 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeDoors = exports.removeDoor = exports.removeAllDoors = exports.openDoorFast = exports.openAllDoors = exports.lockDoor = exports.isVoidDoor = exports.isSecretRoomDoor = exports.isRepentanceDoor = exports.isMegaSatanDoor = exports.isHiddenSecretRoomDoor = exports.isDoorToMomsHeart = exports.isDoorToMines = exports.isDoorToMausoleumAscent = exports.isDoorToMausoleum = exports.isDoorToDownpour = exports.isDoorSlotInRoomShape = exports.isDevilRoomDoor = exports.isBossRushDoor = exports.isBlueWombDoor = exports.isAngelRoomDoor = exports.hasUnusedDoorSlot = exports.hasDoorType = exports.getVoidDoor = exports.getUnusedDoorSlots = exports.getRoomShapeDoorSlotCoordinates = exports.getRoomShapeDoorSlot = exports.getRepentanceDoor = exports.getOppositeDoorSlot = exports.getMegaSatanDoor = exports.getDoorsToRoomIndex = exports.getDoors = exports.getDoorSlotsForRoomShape = exports.getDoorSlotEnterPositionOffset = exports.getDoorSlotEnterPosition = exports.getDoorEnterPosition = exports.getDevilRoomOrAngelRoomDoor = exports.getDevilRoomDoor = exports.getBossRushDoor = exports.getBlueWombDoor = exports.getAngelRoomDoor = exports.doorSlotsToDoorSlotFlags = exports.doorSlotToDoorSlotFlag = exports.doorSlotToDirection = exports.doorSlotFlagsToDoorSlots = exports.doorSlotFlagToDoorSlot = exports.closeDoorFast = exports.closeAllDoors = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const cachedEnumValues_1 = require("../arrays/cachedEnumValues");
6
+ const cachedClasses_1 = require("../core/cachedClasses");
7
+ const constants_1 = require("../core/constants");
8
+ const doorSlotFlagToDoorSlot_1 = require("../objects/doorSlotFlagToDoorSlot");
9
+ const doorSlotToDirection_1 = require("../objects/doorSlotToDirection");
10
+ const doorSlotToDoorSlotFlag_1 = require("../objects/doorSlotToDoorSlotFlag");
11
+ const oppositeDoorSlots_1 = require("../objects/oppositeDoorSlots");
12
+ const roomShapeToDoorSlotCoordinates_1 = require("../objects/roomShapeToDoorSlotCoordinates");
13
+ const roomShapeToDoorSlots_1 = require("../objects/roomShapeToDoorSlots");
14
+ const ReadonlySet_1 = require("../types/ReadonlySet");
15
+ const bitwise_1 = require("./bitwise");
16
+ const direction_1 = require("./direction");
17
+ const enums_1 = require("./enums");
18
+ const flag_1 = require("./flag");
19
+ const tstlClass_1 = require("./tstlClass");
20
+ const types_1 = require("./types");
21
+ function closeAllDoors() {
22
+ for (const door of getDoors()) {
23
+ door.Close(true);
24
+ }
25
+ }
26
+ exports.closeAllDoors = closeAllDoors;
27
+ /**
28
+ * Use this instead of the `GridEntityDoor.Close` method if you want the door to immediately close
29
+ * without an animation.
30
+ */
31
+ function closeDoorFast(door) {
32
+ door.State = isaac_typescript_definitions_1.DoorState.CLOSED;
33
+ const sprite = door.GetSprite();
34
+ sprite.Play("Closed", true);
35
+ }
36
+ exports.closeDoorFast = closeDoorFast;
37
+ function doorSlotFlagToDoorSlot(doorSlotFlag) {
38
+ const doorSlot = doorSlotFlagToDoorSlot_1.DOOR_SLOT_FLAG_TO_DOOR_SLOT[doorSlotFlag];
39
+ return doorSlot ?? doorSlotFlagToDoorSlot_1.DEFAULT_DOOR_SLOT;
40
+ }
41
+ exports.doorSlotFlagToDoorSlot = doorSlotFlagToDoorSlot;
42
+ function doorSlotFlagsToDoorSlots(doorSlotFlags) {
43
+ const doorSlots = [];
44
+ for (const doorSlotFlag of cachedEnumValues_1.DOOR_SLOT_FLAG_VALUES) {
45
+ if ((0, flag_1.hasFlag)(doorSlotFlags, doorSlotFlag)) {
46
+ const doorSlot = doorSlotFlagToDoorSlot(doorSlotFlag);
47
+ doorSlots.push(doorSlot);
48
+ }
49
+ }
50
+ return doorSlots;
51
+ }
52
+ exports.doorSlotFlagsToDoorSlots = doorSlotFlagsToDoorSlots;
53
+ function doorSlotToDirection(doorSlot) {
54
+ return doorSlotToDirection_1.DOOR_SLOT_TO_DIRECTION[doorSlot];
55
+ }
56
+ exports.doorSlotToDirection = doorSlotToDirection;
57
+ function doorSlotToDoorSlotFlag(doorSlot) {
58
+ return doorSlotToDoorSlotFlag_1.DOOR_SLOT_TO_DOOR_SLOT_FLAG[doorSlot];
59
+ }
60
+ exports.doorSlotToDoorSlotFlag = doorSlotToDoorSlotFlag;
61
+ /**
62
+ * Helper function to convert an array of door slots or a set of door slots to the resulting bit
63
+ * flag number.
64
+ */
65
+ function doorSlotsToDoorSlotFlags(doorSlots) {
66
+ const doorSlotsMutable = doorSlots;
67
+ const doorSlotArray = (0, tstlClass_1.isTSTLSet)(doorSlotsMutable)
68
+ ? [...doorSlotsMutable.values()]
69
+ : doorSlotsMutable;
70
+ const doorSlotFlagArray = doorSlotArray.map((doorSlot) => doorSlotToDoorSlotFlag(doorSlot));
71
+ return (0, bitwise_1.arrayToBitFlags)(doorSlotFlagArray);
72
+ }
73
+ exports.doorSlotsToDoorSlotFlags = doorSlotsToDoorSlotFlags;
74
+ function getAngelRoomDoor() {
75
+ const angelRoomDoors = getDoors(isaac_typescript_definitions_1.RoomType.ANGEL);
76
+ return angelRoomDoors.length === 0 ? undefined : angelRoomDoors[0];
77
+ }
78
+ exports.getAngelRoomDoor = getAngelRoomDoor;
79
+ /**
80
+ * Helper function to get the door that leads to the off-grid room that contains the hole to the
81
+ * Blue Womb. (In vanilla, the door will only appear in the It Lives Boss Room.)
82
+ *
83
+ * Returns undefined if the room has no Blue Womb doors.
84
+ */
85
+ function getBlueWombDoor() {
86
+ const doors = getDoors();
87
+ return doors.find((door) => isBlueWombDoor(door));
88
+ }
89
+ exports.getBlueWombDoor = getBlueWombDoor;
90
+ /**
91
+ * Helper function to get the door that leads to the Boss Rush. (In vanilla, the door will only
92
+ * appear in the Boss Room of the sixth floor.)
93
+ *
94
+ * Returns undefined if the room has no Boss Rush doors.
95
+ */
96
+ function getBossRushDoor() {
97
+ const doors = getDoors();
98
+ return doors.find((door) => isBossRushDoor(door));
99
+ }
100
+ exports.getBossRushDoor = getBossRushDoor;
101
+ function getDevilRoomDoor() {
102
+ const devilRoomDoors = getDoors(isaac_typescript_definitions_1.RoomType.DEVIL);
103
+ return devilRoomDoors.length === 0 ? undefined : devilRoomDoors[0];
104
+ }
105
+ exports.getDevilRoomDoor = getDevilRoomDoor;
106
+ /**
107
+ * If there is both a Devil Room and an Angel Room door, this function will return door with the
108
+ * lowest slot number.
109
+ */
110
+ function getDevilRoomOrAngelRoomDoor() {
111
+ const devilRoomOrAngelRoomDoors = getDoors(isaac_typescript_definitions_1.RoomType.DEVIL, isaac_typescript_definitions_1.RoomType.ANGEL);
112
+ return devilRoomOrAngelRoomDoors.length === 0
113
+ ? undefined
114
+ : devilRoomOrAngelRoomDoors[0];
115
+ }
116
+ exports.getDevilRoomOrAngelRoomDoor = getDevilRoomOrAngelRoomDoor;
117
+ /**
118
+ * Helper function to get the position that a player will enter a room at corresponding to a door.
119
+ *
120
+ * When players enter a room, they do not appear exactly on the location of the door, because then
121
+ * they would immediately collide with the loading zone. Instead, they appear on the grid tile next
122
+ * to the door.
123
+ */
124
+ function getDoorEnterPosition(door) {
125
+ const offset = getDoorSlotEnterPositionOffset(door.Slot);
126
+ return door.Position.add(offset);
127
+ }
128
+ exports.getDoorEnterPosition = getDoorEnterPosition;
129
+ /**
130
+ * Helper function to get the position that a player will enter a room at corresponding to a door
131
+ * slot.
132
+ *
133
+ * When players enter a room, they do not appear exactly on the location of the door, because then
134
+ * they would immediately collide with the loading zone. Instead, they appear on the grid tile next
135
+ * to the door.
136
+ */
137
+ function getDoorSlotEnterPosition(doorSlot) {
138
+ const room = cachedClasses_1.game.GetRoom();
139
+ const position = room.GetDoorSlotPosition(doorSlot);
140
+ const offset = getDoorSlotEnterPositionOffset(doorSlot);
141
+ return position.add(offset);
142
+ }
143
+ exports.getDoorSlotEnterPosition = getDoorSlotEnterPosition;
144
+ /**
145
+ * Helper function to get the offset from a door position that a player will enter a room at.
146
+ *
147
+ * When players enter a room, they do not appear exactly on the location of the door, because then
148
+ * they would immediately collide with the loading zone. Instead, they appear on the grid tile next
149
+ * to the door.
150
+ */
151
+ function getDoorSlotEnterPositionOffset(doorSlot) {
152
+ const direction = doorSlotToDirection(doorSlot);
153
+ const vector = (0, direction_1.directionToVector)(direction);
154
+ // The player appears in the opposite direction of the way that the door is oriented in the room.
155
+ const oppositeVector = vector.mul(-1);
156
+ return oppositeVector.mul(constants_1.DISTANCE_OF_GRID_TILE);
157
+ }
158
+ exports.getDoorSlotEnterPositionOffset = getDoorSlotEnterPositionOffset;
159
+ /** Helper function to get the possible door slots that can exist for a given room shape. */
160
+ function getDoorSlotsForRoomShape(roomShape) {
161
+ return roomShapeToDoorSlots_1.ROOM_SHAPE_TO_DOOR_SLOTS[roomShape];
162
+ }
163
+ exports.getDoorSlotsForRoomShape = getDoorSlotsForRoomShape;
164
+ /**
165
+ * Helper function to get all of the doors in the room. By default, it will return every door.
166
+ *
167
+ * You can optionally specify one or more room types to return only the doors that match the
168
+ * specified room types.
169
+ *
170
+ * @allowEmptyVariadic
171
+ */
172
+ function getDoors(...roomTypes) {
173
+ const room = cachedClasses_1.game.GetRoom();
174
+ const roomShape = room.GetRoomShape();
175
+ const roomTypesSet = new ReadonlySet_1.ReadonlySet(roomTypes);
176
+ // We iterate over the possible door slots for this room shape instead of all door slots in order
177
+ // to prevent crashes from accessing invalid memory.
178
+ const possibleDoorSlots = getDoorSlotsForRoomShape(roomShape);
179
+ const doors = [];
180
+ for (const doorSlot of possibleDoorSlots) {
181
+ const door = room.GetDoor(doorSlot);
182
+ if (door === undefined) {
183
+ continue;
184
+ }
185
+ // In Repentance, sometimes doors won't be doors for some reason.
186
+ const gridEntityType = door.GetType();
187
+ if (gridEntityType !== isaac_typescript_definitions_1.GridEntityType.DOOR) {
188
+ continue;
189
+ }
190
+ if (roomTypesSet.size === 0 || roomTypesSet.has(door.TargetRoomType)) {
191
+ doors.push(door);
192
+ }
193
+ }
194
+ return doors;
195
+ }
196
+ exports.getDoors = getDoors;
197
+ /**
198
+ * Helper function to get all of the doors in the room that lead to the provided room index.
199
+ *
200
+ * This function is variadic, meaning that you can specify N arguments to return all of the doors
201
+ * that match any of the N room grid indexes.
202
+ */
203
+ function getDoorsToRoomIndex(...roomGridIndex) {
204
+ const roomGridIndexesSet = new ReadonlySet_1.ReadonlySet(roomGridIndex);
205
+ const doors = getDoors();
206
+ return doors.filter((door) => roomGridIndexesSet.has(door.TargetRoomIndex));
207
+ }
208
+ exports.getDoorsToRoomIndex = getDoorsToRoomIndex;
209
+ /**
210
+ * Helper function to get the door that leads to the Mega Satan Boss Room. (In vanilla, the door
211
+ * will only appear in the starting room of The Chest / Dark Room.)
212
+ *
213
+ * Returns undefined if the room has no Mega Satan doors.
214
+ */
215
+ function getMegaSatanDoor() {
216
+ const doors = getDoors();
217
+ return doors.find((door) => isMegaSatanDoor(door));
218
+ }
219
+ exports.getMegaSatanDoor = getMegaSatanDoor;
220
+ function getOppositeDoorSlot(doorSlot) {
221
+ return oppositeDoorSlots_1.OPPOSITE_DOOR_SLOTS[doorSlot];
222
+ }
223
+ exports.getOppositeDoorSlot = getOppositeDoorSlot;
224
+ /**
225
+ * Helper function to get the door that leads to the "secret exit" off-grid room that takes you to
226
+ * the Repentance floor or to the version of Depths 2 that has Dad's Key.
227
+ *
228
+ * Returns undefined if the room has no Repentance doors.
229
+ */
230
+ function getRepentanceDoor() {
231
+ const doors = getDoors();
232
+ return doors.find((door) => isRepentanceDoor(door));
233
+ }
234
+ exports.getRepentanceDoor = getRepentanceDoor;
235
+ /**
236
+ * Helper function to get the corresponding door slot for a given room shape and grid coordinates.
237
+ */
238
+ function getRoomShapeDoorSlot(roomShape, x, y) {
239
+ const doorSlotCoordinates = roomShapeToDoorSlotCoordinates_1.ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES[roomShape];
240
+ for (const [doorSlotString, coordinates] of Object.entries(doorSlotCoordinates)) {
241
+ const doorSlot = (0, types_1.parseIntSafe)(doorSlotString);
242
+ if (doorSlot === undefined || !(0, enums_1.isEnumValue)(doorSlot, isaac_typescript_definitions_1.DoorSlot)) {
243
+ continue;
244
+ }
245
+ const [doorX, doorY] = coordinates;
246
+ if (x === doorX && y === doorY) {
247
+ return doorSlot;
248
+ }
249
+ }
250
+ return undefined;
251
+ }
252
+ exports.getRoomShapeDoorSlot = getRoomShapeDoorSlot;
253
+ /**
254
+ * Helper function to get the room grid coordinates for a specific room shape and door slot
255
+ * combination.
256
+ */
257
+ function getRoomShapeDoorSlotCoordinates(roomShape, doorSlot) {
258
+ const doorSlotCoordinates = roomShapeToDoorSlotCoordinates_1.ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES[roomShape];
259
+ return doorSlotCoordinates[doorSlot];
260
+ }
261
+ exports.getRoomShapeDoorSlotCoordinates = getRoomShapeDoorSlotCoordinates;
262
+ /**
263
+ * Helper function to find unused door slots in the current room that can be used to make custom
264
+ * doors.
265
+ */
266
+ function getUnusedDoorSlots() {
267
+ const room = cachedClasses_1.game.GetRoom();
268
+ return cachedEnumValues_1.DOOR_SLOT_VALUES.filter((doorSlot) =>
269
+ // We need to filter out the -1 value to prevent crashes.
270
+ doorSlot !== isaac_typescript_definitions_1.DoorSlot.NO_DOOR_SLOT &&
271
+ room.IsDoorSlotAllowed(doorSlot) &&
272
+ room.GetDoor(doorSlot) === undefined);
273
+ }
274
+ exports.getUnusedDoorSlots = getUnusedDoorSlots;
275
+ /**
276
+ * Helper function to get the door that leads to the off-grid room that contains the portal to The
277
+ * Void. (In vanilla, the door will only appear in the Hush Boss Room.)
278
+ *
279
+ * Returns undefined if the room has no Void doors.
280
+ */
281
+ function getVoidDoor() {
282
+ const doors = getDoors();
283
+ return doors.find((door) => isVoidDoor(door));
284
+ }
285
+ exports.getVoidDoor = getVoidDoor;
286
+ /**
287
+ * Helper function to check if the current room has one or more doors that lead to the given room
288
+ * type.
289
+ *
290
+ * This function is variadic, meaning that you can supply as many door types as you want to check
291
+ * for. This function will return true if one or more room types match.
292
+ */
293
+ function hasDoorType(...roomTypes) {
294
+ const doors = getDoors();
295
+ const doorsOfThisRoomType = doors.filter((door) => roomTypes.some((roomType) => door.IsRoomType(roomType)));
296
+ return doorsOfThisRoomType.length > 0;
297
+ }
298
+ exports.hasDoorType = hasDoorType;
299
+ /**
300
+ * Helper function to check if the current room has one or more open door slots that can be used to
301
+ * make custom doors.
302
+ */
303
+ function hasUnusedDoorSlot() {
304
+ const unusedDoorSlots = getUnusedDoorSlots();
305
+ return unusedDoorSlots.length > 0;
306
+ }
307
+ exports.hasUnusedDoorSlot = hasUnusedDoorSlot;
308
+ function isAngelRoomDoor(door) {
309
+ return door.TargetRoomType === isaac_typescript_definitions_1.RoomType.ANGEL;
310
+ }
311
+ exports.isAngelRoomDoor = isAngelRoomDoor;
312
+ /**
313
+ * Helper function to check if the provided door is the one that leads to the off-grid room that
314
+ * contains the hole to the Blue Womb. (In vanilla, the door will only appear in the It Lives Boss
315
+ * Room.)
316
+ */
317
+ function isBlueWombDoor(door) {
318
+ return door.TargetRoomIndex === isaac_typescript_definitions_1.GridRoom.BLUE_WOMB;
319
+ }
320
+ exports.isBlueWombDoor = isBlueWombDoor;
321
+ /**
322
+ * Helper function to check if the provided door is the one that leads to the Boss Rush room. (In
323
+ * vanilla, the door will only appear in the Boss Room of the sixth floor.)
324
+ */
325
+ function isBossRushDoor(door) {
326
+ return door.TargetRoomIndex === isaac_typescript_definitions_1.GridRoom.BOSS_RUSH;
327
+ }
328
+ exports.isBossRushDoor = isBossRushDoor;
329
+ function isDevilRoomDoor(door) {
330
+ return door.TargetRoomType === isaac_typescript_definitions_1.RoomType.DEVIL;
331
+ }
332
+ exports.isDevilRoomDoor = isDevilRoomDoor;
333
+ /** Helper function to see if a door slot could exist for a given room shape. */
334
+ function isDoorSlotInRoomShape(doorSlot, roomShape) {
335
+ const doorSlots = getDoorSlotsForRoomShape(roomShape);
336
+ return doorSlots.has(doorSlot);
337
+ }
338
+ exports.isDoorSlotInRoomShape = isDoorSlotInRoomShape;
339
+ /**
340
+ * This refers to the Repentance door that spawns in a boss room after defeating the boss. You have
341
+ * to spend one key to open it. It has a sprite filename of "gfx/grid/door_downpour.anm2".
342
+ */
343
+ function isDoorToDownpour(door) {
344
+ if (!isRepentanceDoor(door)) {
345
+ return false;
346
+ }
347
+ const sprite = door.GetSprite();
348
+ const fileName = sprite.GetFilename();
349
+ // On Windows, this is: "gfx/grid/Door_Downpour.anm2"
350
+ return fileName.toLowerCase() === "gfx/grid/door_downpour.anm2";
351
+ }
352
+ exports.isDoorToDownpour = isDoorToDownpour;
353
+ /**
354
+ * This refers to the Repentance door that spawns in a boss room after defeating the boss. You have
355
+ * to spend two hearts to open it. It has a sprite filename of "gfx/grid/door_mausoleum.anm2".
356
+ */
357
+ function isDoorToMausoleum(door) {
358
+ if (!isRepentanceDoor(door)) {
359
+ return false;
360
+ }
361
+ const sprite = door.GetSprite();
362
+ const fileName = sprite.GetFilename();
363
+ // On Windows, this is: "gfx/grid/Door_Mausoleum.anm2"
364
+ return fileName.toLowerCase() === "gfx/grid/door_mausoleum.anm2";
365
+ }
366
+ exports.isDoorToMausoleum = isDoorToMausoleum;
367
+ /**
368
+ * This refers to the "strange door" located on the first room of Depths 2. You open it with either
369
+ * a Polaroid or a Negative. It has a sprite filename of "gfx/grid/door_mausoleum_alt.anm2".
370
+ */
371
+ function isDoorToMausoleumAscent(door) {
372
+ if (!isRepentanceDoor(door)) {
373
+ return false;
374
+ }
375
+ const sprite = door.GetSprite();
376
+ const fileName = sprite.GetFilename();
377
+ // On Windows, this is: "gfx/grid/Door_Mausoleum_Alt.anm2"
378
+ return fileName.toLowerCase() === "gfx/grid/door_mausoleum_alt.anm2";
379
+ }
380
+ exports.isDoorToMausoleumAscent = isDoorToMausoleumAscent;
381
+ /**
382
+ * This refers to the Repentance door that spawns in a boss room after defeating the boss. You have
383
+ * to spend two bombs to open it. It has a sprite filename of "gfx/grid/door_mines.anm2".
384
+ */
385
+ function isDoorToMines(door) {
386
+ if (!isRepentanceDoor(door)) {
387
+ return false;
388
+ }
389
+ const sprite = door.GetSprite();
390
+ const fileName = sprite.GetFilename();
391
+ // On Windows, this is: "gfx/grid/Door_Mines.anm2"
392
+ return fileName.toLowerCase() === "gfx/grid/door_mines.anm2";
393
+ }
394
+ exports.isDoorToMines = isDoorToMines;
395
+ /**
396
+ * This refers to the Repentance door that spawns after defeating Mom. You open it with the
397
+ * completed knife. It has a sprite filename of "gfx/grid/door_momsheart.anm2".
398
+ */
399
+ function isDoorToMomsHeart(door) {
400
+ if (!isRepentanceDoor(door)) {
401
+ return false;
402
+ }
403
+ const sprite = door.GetSprite();
404
+ const fileName = sprite.GetFilename();
405
+ // On Windows, this is: "gfx/grid/Door_MomsHeart.anm2"
406
+ return fileName.toLowerCase() === "gfx/grid/door_momsheart.anm2"; // cspell:ignore momsheart
407
+ }
408
+ exports.isDoorToMomsHeart = isDoorToMomsHeart;
409
+ function isHiddenSecretRoomDoor(door) {
410
+ const sprite = door.GetSprite();
411
+ const animation = sprite.GetAnimation();
412
+ return isSecretRoomDoor(door) && animation === "Hidden";
413
+ }
414
+ exports.isHiddenSecretRoomDoor = isHiddenSecretRoomDoor;
415
+ /**
416
+ * Helper function to check if the provided door is the one that leads to the Mega Satan Boss Room.
417
+ * (In vanilla, the door will only appear in the starting room of The Chest / Dark Room.)
418
+ */
419
+ function isMegaSatanDoor(door) {
420
+ return door.TargetRoomIndex === isaac_typescript_definitions_1.GridRoom.MEGA_SATAN;
421
+ }
422
+ exports.isMegaSatanDoor = isMegaSatanDoor;
423
+ /**
424
+ * Helper function to check if the provided door leads to the "secret exit" off-grid room that takes
425
+ * you to the Repentance floor.
426
+ */
427
+ function isRepentanceDoor(door) {
428
+ return door.TargetRoomIndex === isaac_typescript_definitions_1.GridRoom.SECRET_EXIT;
429
+ }
430
+ exports.isRepentanceDoor = isRepentanceDoor;
431
+ /**
432
+ * This refers to the hole in the wall that appears after bombing the entrance to a secret room.
433
+ * Note that the door still exists before it has been bombed open. It has a sprite filename of
434
+ * "gfx/grid/door_08_holeinwall.anm2".
435
+ *
436
+ * Note that since Ultra Secret Rooms do not use holes, this function will not detect an Ultra
437
+ * Secret Room door.
438
+ */
439
+ function isSecretRoomDoor(door) {
440
+ const sprite = door.GetSprite();
441
+ const fileName = sprite.GetFilename();
442
+ // On Windows, this is: "gfx/grid/Door_08_HoleInWall.anm2"
443
+ return fileName.toLowerCase() === "gfx/grid/door_08_holeinwall.anm2"; // cspell:ignore holeinwall
444
+ }
445
+ exports.isSecretRoomDoor = isSecretRoomDoor;
446
+ /**
447
+ * Helper function to check if the provided door is the one that leads to the off-grid room that
448
+ * contains the portal to The Void. (In vanilla, the door will only appear in the Hush Boss Room.)
449
+ */
450
+ function isVoidDoor(door) {
451
+ return door.TargetRoomIndex === isaac_typescript_definitions_1.GridRoom.VOID;
452
+ }
453
+ exports.isVoidDoor = isVoidDoor;
454
+ /**
455
+ * Helper function to reset an unlocked door back to a locked state. Doing this is non-trivial
456
+ * because in addition to calling the `GridEntityDoor.SetLocked` method, you must also:
457
+ *
458
+ * - Set the `VisitedCount` of the room's `RoomDescription` to 0.
459
+ * - Set the variant to `DoorVariant.DOOR_LOCKED`.
460
+ * - Close the door.
461
+ */
462
+ function lockDoor(door) {
463
+ const level = cachedClasses_1.game.GetLevel();
464
+ // We can't use the "getRoomDescriptor" function since it will cause a dependency cycle.
465
+ const roomDescriptor = level.GetRoomByIdx(door.TargetRoomIndex);
466
+ roomDescriptor.VisitedCount = 0;
467
+ door.SetVariant(isaac_typescript_definitions_1.DoorVariant.LOCKED);
468
+ door.SetLocked(true);
469
+ door.Close(true);
470
+ }
471
+ exports.lockDoor = lockDoor;
472
+ /**
473
+ * For the purposes of this function, doors to Secret Rooms or Super Secret Rooms that have not been
474
+ * discovered yet will not be opened.
475
+ */
476
+ function openAllDoors() {
477
+ for (const door of getDoors()) {
478
+ // If we try to open a hidden Secret Room door (or Super Secret Room door), then nothing will
479
+ // happen.
480
+ door.Open();
481
+ }
482
+ }
483
+ exports.openAllDoors = openAllDoors;
484
+ /**
485
+ * Use this instead of the `GridEntityDoor.Open` method if you want the door to immediately open
486
+ * without an animation.
487
+ */
488
+ function openDoorFast(door) {
489
+ door.State = isaac_typescript_definitions_1.DoorState.OPEN;
490
+ const sprite = door.GetSprite();
491
+ sprite.Play("Opened", true);
492
+ }
493
+ exports.openDoorFast = openDoorFast;
494
+ /**
495
+ * Helper function to remove all of the doors in the room. By default, it will remove every door.
496
+ * You can optionally specify one or more room types to remove only the doors that match the
497
+ * specified room types.
498
+ *
499
+ * @returns The number of doors removed.
500
+ * @allowEmptyVariadic
501
+ */
502
+ function removeAllDoors(...roomTypes) {
503
+ const doors = getDoors(...roomTypes);
504
+ removeDoors(...doors);
505
+ return doors.length;
506
+ }
507
+ exports.removeAllDoors = removeAllDoors;
508
+ /** Helper function to remove a single door. */
509
+ function removeDoor(door) {
510
+ const room = cachedClasses_1.game.GetRoom();
511
+ room.RemoveDoor(door.Slot);
512
+ }
513
+ exports.removeDoor = removeDoor;
514
+ /**
515
+ * Helper function to remove the doors provided.
516
+ *
517
+ * This function is variadic, meaning that you can specify as many doors as you want to remove.
518
+ */
519
+ function removeDoors(...doors) {
520
+ for (const door of doors) {
521
+ removeDoor(door);
522
+ }
523
+ }
524
+ exports.removeDoors = removeDoors;