isaacscript-common 84.0.1 → 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 +2 -0
  383. package/dist/functions/utils.d.ts.map +1 -1
  384. package/dist/functions/utils.js +195 -0
  385. package/dist/functions/utils.lua +4 -1
  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 +2 -0
  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 +5 -2
  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 +4 -1
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setRoomDisplayFlags = exports.setFloorDisplayFlags = exports.setAllDisplayFlags = exports.isRoomVisible = exports.hideRoomOnMinimap = exports.getRoomDisplayFlags = exports.getFloorDisplayFlags = exports.clearRoomDisplayFlags = exports.clearFloorDisplayFlags = exports.addRoomDisplayFlag = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const cachedClasses_1 = require("../core/cachedClasses");
6
+ const flag_1 = require("./flag");
7
+ const roomData_1 = require("./roomData");
8
+ const rooms_1 = require("./rooms");
9
+ const types_1 = require("./types");
10
+ const utils_1 = require("./utils");
11
+ /**
12
+ * Helper function to add a `DisplayFlag` to a particular room's minimap display flags (e.g. whether
13
+ * it is visible and so on).
14
+ *
15
+ * This function automatically accounts for if MinimapAPI is being used.
16
+ *
17
+ * @param roomGridIndex Set to undefined to use the current room index.
18
+ * @param displayFlag The `DisplayFlag` to set. (See the `DisplayFlag` enum.)
19
+ * @param updateVisibility Optional. Whether to call the `Level.UpdateVisibility` method in order to
20
+ * make the changes immediately visible. Default is true.
21
+ */
22
+ function addRoomDisplayFlag(roomGridIndex, displayFlag, updateVisibility = true) {
23
+ const oldDisplayFlags = getRoomDisplayFlags(roomGridIndex);
24
+ const newDisplayFlags = (0, flag_1.addFlag)(oldDisplayFlags, displayFlag);
25
+ setRoomDisplayFlags(roomGridIndex, newDisplayFlags, updateVisibility);
26
+ }
27
+ exports.addRoomDisplayFlag = addRoomDisplayFlag;
28
+ /**
29
+ * Helper function to set the value of `DisplayFlag` for every room on the floor to 0.
30
+ *
31
+ * This function automatically accounts for if MinimapAPI is being used.
32
+ *
33
+ * This function automatically calls the `Level.UpdateVisibility` after setting the flags so that
34
+ * the changes will be immediately visible.
35
+ */
36
+ function clearFloorDisplayFlags() {
37
+ setAllDisplayFlags(isaac_typescript_definitions_1.DisplayFlagZero);
38
+ }
39
+ exports.clearFloorDisplayFlags = clearFloorDisplayFlags;
40
+ /**
41
+ * Helper function to set the value of `DisplayFlag` for a room 0.
42
+ *
43
+ * This function automatically accounts for if MinimapAPI is being used.
44
+ *
45
+ * This function automatically calls the `Level.UpdateVisibility` after setting the flags so that
46
+ * the changes will be immediately visible.
47
+ *
48
+ * Note that if you clear the display flags of a room but then the player travels to the room (or an
49
+ * adjacent room), the room will appear on the minimap again. If you want to permanently hide the
50
+ * room even in this circumstance, use the `hideRoomOnMinimap` helper function instead.
51
+ */
52
+ function clearRoomDisplayFlags(roomGridIndex) {
53
+ setRoomDisplayFlags(roomGridIndex, isaac_typescript_definitions_1.DisplayFlagZero);
54
+ }
55
+ exports.clearRoomDisplayFlags = clearRoomDisplayFlags;
56
+ /**
57
+ * Helper function to get the minimap `DisplayFlag` value for every room on the floor. Returns a map
58
+ * that is indexed by the room's safe grid index.
59
+ *
60
+ * This function automatically accounts for if MinimapAPI is being used.
61
+ *
62
+ * @param minimapAPI Optional. If MinimapAPI should be used, if present. Default is true.
63
+ */
64
+ function getFloorDisplayFlags(minimapAPI = true) {
65
+ const displayFlagsMap = new Map();
66
+ for (const roomDescriptor of (0, rooms_1.getRoomsInsideGrid)()) {
67
+ const roomGridIndex = roomDescriptor.SafeGridIndex;
68
+ const displayFlags = getRoomDisplayFlags(roomGridIndex, minimapAPI);
69
+ displayFlagsMap.set(roomGridIndex, displayFlags);
70
+ }
71
+ return displayFlagsMap;
72
+ }
73
+ exports.getFloorDisplayFlags = getFloorDisplayFlags;
74
+ /**
75
+ * Helper function to get a particular room's minimap display flags (e.g. whether it is visible and
76
+ * so on).
77
+ *
78
+ * This function automatically accounts for if MinimapAPI is being used.
79
+ *
80
+ * @param roomGridIndex Optional. Default is the current room index.
81
+ * @param minimapAPI Optional. If MinimapAPI should be used, if present. Default is true.
82
+ */
83
+ function getRoomDisplayFlags(roomGridIndex, minimapAPI = true) {
84
+ if (roomGridIndex === undefined) {
85
+ roomGridIndex = (0, roomData_1.getRoomGridIndex)();
86
+ }
87
+ if (MinimapAPI === undefined || !minimapAPI) {
88
+ const roomDescriptor = (0, roomData_1.getRoomDescriptor)(roomGridIndex);
89
+ return roomDescriptor.DisplayFlags;
90
+ }
91
+ const minimapAPIRoomDescriptor = MinimapAPI.GetRoomByIdx(roomGridIndex);
92
+ (0, utils_1.assertDefined)(minimapAPIRoomDescriptor, `Failed to get the MinimapAPI room descriptor for the room at grid index: ${roomGridIndex}`);
93
+ return minimapAPIRoomDescriptor.GetDisplayFlags();
94
+ }
95
+ exports.getRoomDisplayFlags = getRoomDisplayFlags;
96
+ /**
97
+ * Helper function to hide a specific room on the minimap.
98
+ *
99
+ * If you want the room to be permanently hidden, you must to call this function on every new room.
100
+ * This is because if the player enters into the room or walks into an adjacent room, the room will
101
+ * reappear on the minimap.
102
+ *
103
+ * This function automatically accounts for if MinimapAPI is being used.
104
+ */
105
+ function hideRoomOnMinimap(roomGridIndex) {
106
+ clearRoomDisplayFlags(roomGridIndex);
107
+ // In vanilla, the map only updates at the beginning of every room. In MinimapAPI, it constant
108
+ // updates, so we must specifically tell MinimapAPI that the room should be hidden using the
109
+ // `Hidden` property.
110
+ if (MinimapAPI !== undefined) {
111
+ const minimapAPIRoomDescriptor = MinimapAPI.GetRoomByIdx(roomGridIndex);
112
+ (0, utils_1.assertDefined)(minimapAPIRoomDescriptor, `Failed to get the MinimapAPI room descriptor for the room at grid index: ${roomGridIndex}`);
113
+ minimapAPIRoomDescriptor.Hidden = true;
114
+ }
115
+ }
116
+ exports.hideRoomOnMinimap = hideRoomOnMinimap;
117
+ /**
118
+ * Helper function to check if a given room is visible on the minimap.
119
+ *
120
+ * @param roomGridIndexOrRoomDescriptor The room to check.
121
+ * @param minimapAPI Optional. Whether MinimapAPI should be used, if present. Default is true.
122
+ */
123
+ function isRoomVisible(roomGridIndexOrRoomDescriptor, minimapAPI = true) {
124
+ const roomGridIndex = (0, types_1.isInteger)(roomGridIndexOrRoomDescriptor)
125
+ ? roomGridIndexOrRoomDescriptor
126
+ : roomGridIndexOrRoomDescriptor.SafeGridIndex;
127
+ const roomDisplayFlags = getRoomDisplayFlags(roomGridIndex, minimapAPI);
128
+ return roomDisplayFlags !== isaac_typescript_definitions_1.DisplayFlagZero;
129
+ }
130
+ exports.isRoomVisible = isRoomVisible;
131
+ /**
132
+ * Helper function to set the minimap `DisplayFlag` value for every room on the floor at once.
133
+ *
134
+ * This function automatically calls the `Level.UpdateVisibility` after setting the flags so that
135
+ * the changes will be immediately visible.
136
+ *
137
+ * This function automatically accounts for if MinimapAPI is being used.
138
+ */
139
+ function setAllDisplayFlags(displayFlags) {
140
+ for (const room of (0, rooms_1.getRoomsInsideGrid)()) {
141
+ // We pass false to the `updateVisibility` argument as a small optimization.
142
+ setRoomDisplayFlags(room.SafeGridIndex, displayFlags, false);
143
+ }
144
+ // In vanilla, we must call the "Level.UpdateVisibility" method for the changes to be visible.
145
+ if (MinimapAPI === undefined) {
146
+ const level = cachedClasses_1.game.GetLevel();
147
+ level.UpdateVisibility();
148
+ }
149
+ }
150
+ exports.setAllDisplayFlags = setAllDisplayFlags;
151
+ /**
152
+ * Helper function to set the minimap `DisplayFlag` value for multiple rooms at once.
153
+ *
154
+ * This function automatically calls the `Level.UpdateVisibility` after setting the flags so that
155
+ * the changes will be immediately visible.
156
+ *
157
+ * This function automatically accounts for if MinimapAPI is being used.
158
+ *
159
+ * @param displayFlagsMap A map of the display flags that is indexed by the room's safe grid index.
160
+ */
161
+ function setFloorDisplayFlags(displayFlagsMap) {
162
+ for (const [roomGridIndex, displayFlags] of displayFlagsMap) {
163
+ // We pass false to the `updateVisibility` argument as a small optimization.
164
+ setRoomDisplayFlags(roomGridIndex, displayFlags, false);
165
+ }
166
+ // In vanilla, we must call the "Level.UpdateVisibility" method for the changes to be visible.
167
+ if (MinimapAPI === undefined) {
168
+ const level = cachedClasses_1.game.GetLevel();
169
+ level.UpdateVisibility();
170
+ }
171
+ }
172
+ exports.setFloorDisplayFlags = setFloorDisplayFlags;
173
+ /**
174
+ * Helper function to set a particular room's minimap display flags (e.g. whether it is visible and
175
+ * so on).
176
+ *
177
+ * This function automatically accounts for if MinimapAPI is being used.
178
+ *
179
+ * @param roomGridIndex Set to undefined to use the current room index.
180
+ * @param displayFlags The bit flags value to set. (See the `DisplayFlag` enum.)
181
+ * @param updateVisibility Optional. Whether to call the `Level.UpdateVisibility` method in order to
182
+ * make the changes immediately visible. Default is true. Set this to false
183
+ * if you are doing a bunch of display flag setting and then manually call
184
+ * the `Level.UpdateVisibility` method after you are done.
185
+ */
186
+ function setRoomDisplayFlags(roomGridIndex, displayFlags, updateVisibility = true) {
187
+ if (roomGridIndex === undefined) {
188
+ roomGridIndex = (0, roomData_1.getRoomGridIndex)();
189
+ }
190
+ if (MinimapAPI === undefined) {
191
+ const roomDescriptor = (0, roomData_1.getRoomDescriptor)(roomGridIndex);
192
+ roomDescriptor.DisplayFlags = displayFlags;
193
+ if (updateVisibility) {
194
+ const level = cachedClasses_1.game.GetLevel();
195
+ level.UpdateVisibility();
196
+ }
197
+ }
198
+ else {
199
+ const minimapAPIRoomDescriptor = MinimapAPI.GetRoomByIdx(roomGridIndex);
200
+ (0, utils_1.assertDefined)(minimapAPIRoomDescriptor, `Failed to get the MinimapAPI room descriptor for the room at grid index: ${roomGridIndex}`);
201
+ minimapAPIRoomDescriptor.SetDisplayFlags(displayFlags);
202
+ }
203
+ }
204
+ exports.setRoomDisplayFlags = setRoomDisplayFlags;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initModFeatures = void 0;
4
+ /**
5
+ * Helper function to instantiate an array of mod features all at once. Use this function if your
6
+ * mod uses the pattern of expressing mod features as `ModFeature` classes.
7
+ *
8
+ * If your feature classes have `v` variables, then this function will successfully register them
9
+ * with the save data manager.
10
+ *
11
+ * For example:
12
+ *
13
+ * ```ts
14
+ * const MOD_FEATURES = [
15
+ * MyFeature1,
16
+ * MyFeature2,
17
+ * MyFeature3,
18
+ * ] as const;
19
+ * initModFeatures(mod, MOD_FEATURES);
20
+ * ```
21
+ *
22
+ * @param mod The upgraded mod to use.
23
+ * @param modFeatures An array of the feature classes that you have in your mod.
24
+ * @param init Optional. Whether to automatically add the callbacks on the feature. Defaults to
25
+ * true.
26
+ * @returns An array of the instantiated features in the same order that the constructors were
27
+ * passed in. (In most cases, you probably won't need the returned array.)
28
+ */
29
+ function initModFeatures(mod, modFeatures, init = true) {
30
+ const instantiatedModFeatures = [];
31
+ for (const modFeature of modFeatures) {
32
+ // eslint-disable-next-line new-cap
33
+ const instantiatedModFeature = new modFeature(mod, false);
34
+ instantiatedModFeature.init(init);
35
+ instantiatedModFeatures.push(instantiatedModFeature);
36
+ }
37
+ return instantiatedModFeatures;
38
+ }
39
+ exports.initModFeatures = initModFeatures;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.newArray = void 0;
4
+ const deepCopy_1 = require("./deepCopy");
5
+ const utils_1 = require("./utils");
6
+ /**
7
+ * Initializes an array with all of the elements containing the specified default value.
8
+ *
9
+ * The provided default value will be copied with the `deepCopy` function before adding it to the
10
+ * new array. Thus, you can initialize an array of arrays, or an array of maps, and so on. (If the
11
+ * `deepCopy` function was not used, then all of the array elements would just be references to the
12
+ * same underlying data structure.)
13
+ *
14
+ * For example:
15
+ *
16
+ * ```ts
17
+ * const arrayWithZeroes = newArray(0, 10); // Has 10 elements of 0.
18
+ * const arrayWithArrays = newArray([0], 20); // Has 20 elements of an array with a 0 in it.
19
+ * ```
20
+ */
21
+ // eslint-disable-next-line isaacscript/no-mutable-return
22
+ function newArray(defaultValue, size) {
23
+ const array = [];
24
+ (0, utils_1.repeat)(size, () => {
25
+ const copy = (0, deepCopy_1.deepCopy)(defaultValue);
26
+ array.push(copy);
27
+ });
28
+ return array;
29
+ }
30
+ exports.newArray = newArray;
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNextStageType = exports.getNextStage = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const cachedClasses_1 = require("../core/cachedClasses");
6
+ const curses_1 = require("./curses");
7
+ const roomData_1 = require("./roomData");
8
+ const stage_1 = require("./stage");
9
+ /**
10
+ * Helper function to get the stage that a trapdoor or heaven door would take the player to, based
11
+ * on the current stage, room, and game state flags.
12
+ *
13
+ * If you want to account for the player having visited Repentance floors in The Ascent, use the
14
+ * `getNextStageUsingHistory` helper function instead (from the stage history feature). Handling
15
+ * this requires stateful tracking as the player progresses through the run.
16
+ */
17
+ function getNextStage() {
18
+ const level = cachedClasses_1.game.GetLevel();
19
+ const backwardsPath = cachedClasses_1.game.GetStateFlag(isaac_typescript_definitions_1.GameStateFlag.BACKWARDS_PATH);
20
+ const mausoleumHeartKilled = cachedClasses_1.game.GetStateFlag(isaac_typescript_definitions_1.GameStateFlag.MAUSOLEUM_HEART_KILLED);
21
+ const stage = level.GetStage();
22
+ const repentanceStage = (0, stage_1.onRepentanceStage)();
23
+ const roomGridIndex = (0, roomData_1.getRoomGridIndex)();
24
+ // First, handle the special case of being on the backwards path.
25
+ if (backwardsPath) {
26
+ const nextStage = stage - 1;
27
+ return nextStage === 0 ? isaac_typescript_definitions_1.LevelStage.HOME : nextStage;
28
+ }
29
+ // Second, handle the special case of being in a specific off-grid room.
30
+ switch (roomGridIndex) {
31
+ // -8
32
+ case isaac_typescript_definitions_1.GridRoom.BLUE_WOMB: {
33
+ return isaac_typescript_definitions_1.LevelStage.BLUE_WOMB;
34
+ }
35
+ // -9
36
+ case isaac_typescript_definitions_1.GridRoom.VOID: {
37
+ return isaac_typescript_definitions_1.LevelStage.VOID;
38
+ }
39
+ // -10
40
+ case isaac_typescript_definitions_1.GridRoom.SECRET_EXIT: {
41
+ if (repentanceStage) {
42
+ // e.g. From Downpour 2 to Mines 1, etc.
43
+ return stage + 1;
44
+ }
45
+ if (stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_2 ||
46
+ (stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_1 && (0, curses_1.hasCurse)(isaac_typescript_definitions_1.LevelCurse.LABYRINTH))) {
47
+ // From Depths 2 to Mausoleum 2 through the strange door.
48
+ return isaac_typescript_definitions_1.LevelStage.DEPTHS_2;
49
+ }
50
+ // e.g. From Basement 1 to Downpour 1, from Basement 2 to Downpour 2, etc.
51
+ return stage;
52
+ }
53
+ }
54
+ // 2
55
+ if (repentanceStage && stage === isaac_typescript_definitions_1.LevelStage.BASEMENT_2) {
56
+ // From Downpour 2 to Caves 2.
57
+ return isaac_typescript_definitions_1.LevelStage.CAVES_2;
58
+ }
59
+ // 4
60
+ if (repentanceStage && stage === isaac_typescript_definitions_1.LevelStage.CAVES_2) {
61
+ // From Mines 2 to Depths 2.
62
+ return isaac_typescript_definitions_1.LevelStage.DEPTHS_2;
63
+ }
64
+ // 6
65
+ if (repentanceStage && stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_2) {
66
+ if (mausoleumHeartKilled) {
67
+ // From Mausoleum 2 to Corpse 1.
68
+ return isaac_typescript_definitions_1.LevelStage.WOMB_1;
69
+ }
70
+ // From Mausoleum 2 to Womb 2.
71
+ return isaac_typescript_definitions_1.LevelStage.WOMB_2;
72
+ }
73
+ // 8
74
+ if (stage === isaac_typescript_definitions_1.LevelStage.WOMB_2) {
75
+ // From Womb 2 to Sheol or Cathedral.
76
+ return isaac_typescript_definitions_1.LevelStage.SHEOL_CATHEDRAL;
77
+ }
78
+ // 11
79
+ if (stage === isaac_typescript_definitions_1.LevelStage.DARK_ROOM_CHEST) {
80
+ // - The Chest goes to The Chest.
81
+ // - The Dark Room goes to the Dark Room.
82
+ return isaac_typescript_definitions_1.LevelStage.DARK_ROOM_CHEST;
83
+ }
84
+ // 12
85
+ if (stage === isaac_typescript_definitions_1.LevelStage.VOID) {
86
+ // The Void goes to The Void.
87
+ return isaac_typescript_definitions_1.LevelStage.VOID;
88
+ }
89
+ // By default, go to the next floor.
90
+ return stage + 1;
91
+ }
92
+ exports.getNextStage = getNextStage;
93
+ /**
94
+ * Helper function to get the stage type that a trapdoor or heaven door would take the player to,
95
+ * based on the current stage, room, and game state flags.
96
+ *
97
+ * If you want to account for previous floors visited on The Ascent, use the
98
+ * `getNextStageTypeUsingHistory` helper function instead (from the stage history feature). Handling
99
+ * this requires stateful tracking as the player progresses through the run.
100
+ *
101
+ * @param upwards Whether the player should go up to Cathedral in the case of being on Womb 2.
102
+ * Default is false.
103
+ */
104
+ function getNextStageType(upwards = false) {
105
+ const backwardsPath = cachedClasses_1.game.GetStateFlag(isaac_typescript_definitions_1.GameStateFlag.BACKWARDS_PATH);
106
+ const mausoleumHeartKilled = cachedClasses_1.game.GetStateFlag(isaac_typescript_definitions_1.GameStateFlag.MAUSOLEUM_HEART_KILLED);
107
+ const level = cachedClasses_1.game.GetLevel();
108
+ const stage = level.GetStage();
109
+ const stageType = level.GetStageType();
110
+ const repentanceStage = (0, stage_1.onRepentanceStage)();
111
+ const roomGridIndex = (0, roomData_1.getRoomGridIndex)();
112
+ const nextStage = getNextStage();
113
+ // First, handle the special case of being on the backwards path.
114
+ if (backwardsPath) {
115
+ return (0, stage_1.calculateStageType)(nextStage);
116
+ }
117
+ // Second, handle the special case of being in a specific off-grid room.
118
+ if (roomGridIndex === isaac_typescript_definitions_1.GridRoom.SECRET_EXIT) {
119
+ return (0, stage_1.calculateStageTypeRepentance)(nextStage);
120
+ }
121
+ if (repentanceStage &&
122
+ (stage === isaac_typescript_definitions_1.LevelStage.BASEMENT_1 || // 1
123
+ stage === isaac_typescript_definitions_1.LevelStage.CAVES_1 || // 3
124
+ stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_1 || // 5
125
+ stage === isaac_typescript_definitions_1.LevelStage.WOMB_1) // 7
126
+ ) {
127
+ return (0, stage_1.calculateStageTypeRepentance)(nextStage);
128
+ }
129
+ if (repentanceStage &&
130
+ stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_2 &&
131
+ mausoleumHeartKilled) {
132
+ return (0, stage_1.calculateStageTypeRepentance)(nextStage);
133
+ }
134
+ // 9
135
+ if (nextStage === isaac_typescript_definitions_1.LevelStage.BLUE_WOMB) {
136
+ // Blue Womb does not have any alternate floors.
137
+ return isaac_typescript_definitions_1.StageType.ORIGINAL;
138
+ }
139
+ // 10
140
+ if (nextStage === isaac_typescript_definitions_1.LevelStage.SHEOL_CATHEDRAL) {
141
+ if (upwards) {
142
+ // Go to Cathedral (10.1).
143
+ return isaac_typescript_definitions_1.StageType.WRATH_OF_THE_LAMB;
144
+ }
145
+ // Go to Sheol (10.0).
146
+ return isaac_typescript_definitions_1.StageType.ORIGINAL;
147
+ }
148
+ // 11
149
+ if (nextStage === isaac_typescript_definitions_1.LevelStage.DARK_ROOM_CHEST) {
150
+ if (stageType === isaac_typescript_definitions_1.StageType.ORIGINAL) {
151
+ // Sheol (10.0) goes to the Dark Room (11.0).
152
+ return isaac_typescript_definitions_1.StageType.ORIGINAL;
153
+ }
154
+ // Cathedral (10.1) goes to The Chest (11.1).
155
+ return isaac_typescript_definitions_1.StageType.WRATH_OF_THE_LAMB;
156
+ }
157
+ // 12
158
+ if (nextStage === isaac_typescript_definitions_1.LevelStage.VOID) {
159
+ // The Void does not have any alternate floors.
160
+ return isaac_typescript_definitions_1.StageType.ORIGINAL;
161
+ }
162
+ // 13
163
+ if (nextStage === isaac_typescript_definitions_1.LevelStage.HOME) {
164
+ // Home does not have any alternate floors.
165
+ return isaac_typescript_definitions_1.StageType.ORIGINAL;
166
+ }
167
+ return (0, stage_1.calculateStageType)(nextStage);
168
+ }
169
+ exports.getNextStageType = getNextStageType;
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setHasNPC = exports.setDeleteNPC = exports.setAddNPC = exports.mapSetNPC = exports.mapHasNPC = exports.mapGetNPC = exports.mapDeleteNPC = exports.defaultMapSetNPC = exports.defaultMapGetNPC = void 0;
4
+ /**
5
+ * Helper function to make using default maps with an index of `PtrHash` easier. Use this instead of
6
+ * the `DefaultMap.getAndSetDefault` method if you have a default map of this type.
7
+ *
8
+ * For example:
9
+ *
10
+ * ```ts
11
+ * const v = {
12
+ * run: {
13
+ * npcsSpeedBoost: new DefaultMap<PtrHash, int>(0),
14
+ * },
15
+ * };
16
+ *
17
+ * function npcUpdate(npc: EntityNPC) {
18
+ * const speedBoost = defaultMapGetNPC(v.run.npcsSpeedBoost, npc);
19
+ * // Do something with the speed boost.
20
+ * }
21
+ * ```
22
+ *
23
+ * Note that not all NPCs should be stored in a map with a `PtrHash` as an index, so only use this
24
+ * in the situations where that would be okay. (For example, Dark Esau should never be stored in a
25
+ * map like this, because the scope of `PtrHash` is per room and Dark Esau is persistent between
26
+ * rooms.)
27
+ */
28
+ function defaultMapGetNPC(map, npc, ...extraArgs) {
29
+ const ptrHash = GetPtrHash(npc);
30
+ return map.getAndSetDefault(ptrHash, ...extraArgs);
31
+ }
32
+ exports.defaultMapGetNPC = defaultMapGetNPC;
33
+ /**
34
+ * Helper function to make using maps with an index of `PtrHash` easier. Use this instead of the
35
+ * `Map.set` method if you have a map of this type.
36
+ *
37
+ * Since `Map` and `DefaultMap` set values in the same way, this function is simply an alias for the
38
+ * `mapSetNPC` helper function.
39
+ */
40
+ function defaultMapSetNPC(
41
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
42
+ map, npc, value) {
43
+ mapSetNPC(map, npc, value);
44
+ }
45
+ exports.defaultMapSetNPC = defaultMapSetNPC;
46
+ /**
47
+ * Helper function to make using maps with an type of `PtrHash` easier. Use this instead of the
48
+ * `Map.delete` method if you have a set of this type.
49
+ */
50
+ function mapDeleteNPC(
51
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
52
+ map, npc) {
53
+ const ptrHash = GetPtrHash(npc);
54
+ return map.delete(ptrHash);
55
+ }
56
+ exports.mapDeleteNPC = mapDeleteNPC;
57
+ /**
58
+ * Helper function to make using maps with an index of `PtrHash` easier. Use this instead of the
59
+ * `Map.get` method if you have a map of this type.
60
+ *
61
+ * For example:
62
+ *
63
+ * ```ts
64
+ * const v = {
65
+ * run: {
66
+ * npcsSpeedBoost: new Map<PtrHash, int>(),
67
+ * },
68
+ * };
69
+ *
70
+ * function incrementSpeedBoost(npc: EntityNPC) {
71
+ * const oldSpeedBoost = mapGetNPC(v.run.npcsSpeedBoost, npc);
72
+ * const newSpeedBoost = oldSpeedBoost + 0.1;
73
+ * mapSetNPC(v.run.npcsSpeedBoost, npc);
74
+ * }
75
+ * ```
76
+ */
77
+ function mapGetNPC(map, npc) {
78
+ const ptrHash = GetPtrHash(npc);
79
+ return map.get(ptrHash);
80
+ }
81
+ exports.mapGetNPC = mapGetNPC;
82
+ /**
83
+ * Helper function to make using maps with an index of `PtrHash` easier. Use this instead of the
84
+ * `Map.has` method if you have a map of this type.
85
+ */
86
+ function mapHasNPC(map, npc) {
87
+ const ptrHash = GetPtrHash(npc);
88
+ return map.has(ptrHash);
89
+ }
90
+ exports.mapHasNPC = mapHasNPC;
91
+ /**
92
+ * Helper function to make using maps with an index of `PtrHash` easier. Use this instead of the
93
+ * `Map.set` method if you have a map of this type.
94
+ *
95
+ * For example:
96
+ *
97
+ * ```ts
98
+ * const v = {
99
+ * run: {
100
+ * npcsSpeedBoost: new Map<PtrHash, int>(),
101
+ * },
102
+ * };
103
+ *
104
+ * function incrementSpeedBoost(npc: EntityNPC) {
105
+ * const oldSpeedBoost = mapGetNPC(v.run.npcsSpeedBoost, npc);
106
+ * const newSpeedBoost = oldSpeedBoost + 0.1;
107
+ * mapSetNPC(v.run.npcsSpeedBoost, npc);
108
+ * }
109
+ * ```
110
+ */
111
+ function mapSetNPC(
112
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
113
+ map, npc, value) {
114
+ const ptrHash = GetPtrHash(npc);
115
+ map.set(ptrHash, value);
116
+ }
117
+ exports.mapSetNPC = mapSetNPC;
118
+ /**
119
+ * Helper function to make using sets with an type of `PtrHash` easier. Use this instead of the
120
+ * `Set.add` method if you have a set of this type.
121
+ */
122
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
123
+ function setAddNPC(set, npc) {
124
+ const ptrHash = GetPtrHash(npc);
125
+ set.add(ptrHash);
126
+ }
127
+ exports.setAddNPC = setAddNPC;
128
+ /**
129
+ * Helper function to make using sets with an type of `PtrHash` easier. Use this instead of the
130
+ * `Set.delete` method if you have a set of this type.
131
+ */
132
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
133
+ function setDeleteNPC(set, npc) {
134
+ const ptrHash = GetPtrHash(npc);
135
+ return set.delete(ptrHash);
136
+ }
137
+ exports.setDeleteNPC = setDeleteNPC;
138
+ /**
139
+ * Helper function to make using sets with an type of `PtrHash` easier. Use this instead of the
140
+ * `Set.has` method if you have a set of this type.
141
+ */
142
+ function setHasNPC(set, npc) {
143
+ const ptrHash = GetPtrHash(npc);
144
+ return set.has(ptrHash);
145
+ }
146
+ exports.setHasNPC = setHasNPC;