isaacscript-common 87.9.7 → 87.9.8

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 (563) hide show
  1. package/dist/cachedEnumValues.js +29 -32
  2. package/dist/callbackClasses.js +142 -289
  3. package/dist/callbacks.js +147 -183
  4. package/dist/classes/DefaultMap.js +4 -8
  5. package/dist/classes/ModFeature.js +21 -25
  6. package/dist/classes/ModUpgraded.js +43 -47
  7. package/dist/classes/callbacks/EntityTakeDmgFilter.js +6 -10
  8. package/dist/classes/callbacks/EntityTakeDmgPlayer.js +7 -11
  9. package/dist/classes/callbacks/InputActionFilter.js +4 -8
  10. package/dist/classes/callbacks/InputActionPlayer.js +4 -8
  11. package/dist/classes/callbacks/PostAmbushFinished.js +10 -14
  12. package/dist/classes/callbacks/PostAmbushStarted.js +10 -14
  13. package/dist/classes/callbacks/PostBombExploded.js +8 -12
  14. package/dist/classes/callbacks/PostBombInitFilter.js +6 -10
  15. package/dist/classes/callbacks/PostBombInitLate.js +6 -10
  16. package/dist/classes/callbacks/PostBombRenderFilter.js +6 -10
  17. package/dist/classes/callbacks/PostBombUpdateFilter.js +6 -10
  18. package/dist/classes/callbacks/PostBoneSwing.js +7 -11
  19. package/dist/classes/callbacks/PostCollectibleEmpty.js +6 -10
  20. package/dist/classes/callbacks/PostCursedTeleport.js +30 -34
  21. package/dist/classes/callbacks/PostCustomRevive.js +4 -8
  22. package/dist/classes/callbacks/PostDiceRoomActivated.js +9 -13
  23. package/dist/classes/callbacks/PostDoorRender.js +8 -12
  24. package/dist/classes/callbacks/PostDoorUpdate.js +8 -12
  25. package/dist/classes/callbacks/PostEffectInitFilter.js +6 -10
  26. package/dist/classes/callbacks/PostEffectInitLate.js +6 -10
  27. package/dist/classes/callbacks/PostEffectRenderFilter.js +6 -10
  28. package/dist/classes/callbacks/PostEffectStateChanged.js +8 -12
  29. package/dist/classes/callbacks/PostEffectUpdateFilter.js +6 -10
  30. package/dist/classes/callbacks/PostEntityKillFilter.js +6 -10
  31. package/dist/classes/callbacks/PostEntityRemoveFilter.js +6 -10
  32. package/dist/classes/callbacks/PostEsauJr.js +4 -8
  33. package/dist/classes/callbacks/PostFamiliarInitFilter.js +6 -10
  34. package/dist/classes/callbacks/PostFamiliarInitLate.js +6 -10
  35. package/dist/classes/callbacks/PostFamiliarRenderFilter.js +6 -10
  36. package/dist/classes/callbacks/PostFamiliarStateChanged.js +8 -12
  37. package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +6 -10
  38. package/dist/classes/callbacks/PostFirstEsauJr.js +4 -8
  39. package/dist/classes/callbacks/PostFirstFlip.js +4 -8
  40. package/dist/classes/callbacks/PostFlip.js +4 -8
  41. package/dist/classes/callbacks/PostGameEndFilter.js +6 -10
  42. package/dist/classes/callbacks/PostGameStartedReordered.js +6 -10
  43. package/dist/classes/callbacks/PostGameStartedReorderedLast.js +6 -10
  44. package/dist/classes/callbacks/PostGreedModeWave.js +7 -11
  45. package/dist/classes/callbacks/PostGridEntityBroken.js +6 -10
  46. package/dist/classes/callbacks/PostGridEntityCollision.js +4 -8
  47. package/dist/classes/callbacks/PostGridEntityCustomBroken.js +6 -10
  48. package/dist/classes/callbacks/PostGridEntityCustomCollision.js +4 -8
  49. package/dist/classes/callbacks/PostGridEntityCustomInit.js +6 -10
  50. package/dist/classes/callbacks/PostGridEntityCustomRemove.js +4 -8
  51. package/dist/classes/callbacks/PostGridEntityCustomRender.js +6 -10
  52. package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +6 -10
  53. package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +6 -10
  54. package/dist/classes/callbacks/PostGridEntityInit.js +6 -10
  55. package/dist/classes/callbacks/PostGridEntityRemove.js +4 -8
  56. package/dist/classes/callbacks/PostGridEntityRender.js +6 -10
  57. package/dist/classes/callbacks/PostGridEntityStateChanged.js +6 -10
  58. package/dist/classes/callbacks/PostGridEntityUpdate.js +6 -10
  59. package/dist/classes/callbacks/PostHolyMantleRemoved.js +15 -19
  60. package/dist/classes/callbacks/PostItemDischarge.js +23 -27
  61. package/dist/classes/callbacks/PostItemPickup.js +6 -10
  62. package/dist/classes/callbacks/PostKeyboardChanged.js +9 -13
  63. package/dist/classes/callbacks/PostKnifeInitFilter.js +6 -10
  64. package/dist/classes/callbacks/PostKnifeInitLate.js +6 -10
  65. package/dist/classes/callbacks/PostKnifeRenderFilter.js +6 -10
  66. package/dist/classes/callbacks/PostKnifeUpdateFilter.js +6 -10
  67. package/dist/classes/callbacks/PostLaserInitFilter.js +6 -10
  68. package/dist/classes/callbacks/PostLaserInitLate.js +6 -10
  69. package/dist/classes/callbacks/PostLaserRenderFilter.js +6 -10
  70. package/dist/classes/callbacks/PostLaserUpdateFilter.js +6 -10
  71. package/dist/classes/callbacks/PostNPCDeathFilter.js +6 -10
  72. package/dist/classes/callbacks/PostNPCInitFilter.js +6 -10
  73. package/dist/classes/callbacks/PostNPCInitLate.js +6 -10
  74. package/dist/classes/callbacks/PostNPCRenderFilter.js +6 -10
  75. package/dist/classes/callbacks/PostNPCStateChanged.js +8 -12
  76. package/dist/classes/callbacks/PostNPCUpdateFilter.js +6 -10
  77. package/dist/classes/callbacks/PostNewLevelReordered.js +6 -10
  78. package/dist/classes/callbacks/PostNewRoomEarly.js +17 -21
  79. package/dist/classes/callbacks/PostNewRoomReordered.js +6 -10
  80. package/dist/classes/callbacks/PostPEffectUpdateReordered.js +6 -10
  81. package/dist/classes/callbacks/PostPickupChanged.js +6 -10
  82. package/dist/classes/callbacks/PostPickupCollect.js +8 -12
  83. package/dist/classes/callbacks/PostPickupInitFilter.js +6 -10
  84. package/dist/classes/callbacks/PostPickupInitFirst.js +10 -14
  85. package/dist/classes/callbacks/PostPickupInitLate.js +6 -10
  86. package/dist/classes/callbacks/PostPickupRenderFilter.js +6 -10
  87. package/dist/classes/callbacks/PostPickupSelectionFilter.js +4 -8
  88. package/dist/classes/callbacks/PostPickupStateChanged.js +8 -12
  89. package/dist/classes/callbacks/PostPickupUpdateFilter.js +6 -10
  90. package/dist/classes/callbacks/PostPitRender.js +8 -12
  91. package/dist/classes/callbacks/PostPitUpdate.js +8 -12
  92. package/dist/classes/callbacks/PostPlayerChangeHealth.js +14 -18
  93. package/dist/classes/callbacks/PostPlayerChangeStat.js +26 -30
  94. package/dist/classes/callbacks/PostPlayerChangeType.js +11 -15
  95. package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +6 -10
  96. package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +6 -10
  97. package/dist/classes/callbacks/PostPlayerFatalDamage.js +24 -28
  98. package/dist/classes/callbacks/PostPlayerInitFirst.js +12 -16
  99. package/dist/classes/callbacks/PostPlayerInitLate.js +9 -13
  100. package/dist/classes/callbacks/PostPlayerRenderReordered.js +6 -10
  101. package/dist/classes/callbacks/PostPlayerUpdateReordered.js +6 -10
  102. package/dist/classes/callbacks/PostPoopRender.js +8 -12
  103. package/dist/classes/callbacks/PostPoopUpdate.js +8 -12
  104. package/dist/classes/callbacks/PostPressurePlateRender.js +8 -12
  105. package/dist/classes/callbacks/PostPressurePlateUpdate.js +8 -12
  106. package/dist/classes/callbacks/PostProjectileInitFilter.js +6 -10
  107. package/dist/classes/callbacks/PostProjectileInitLate.js +6 -10
  108. package/dist/classes/callbacks/PostProjectileKill.js +8 -12
  109. package/dist/classes/callbacks/PostProjectileRenderFilter.js +6 -10
  110. package/dist/classes/callbacks/PostProjectileUpdateFilter.js +6 -10
  111. package/dist/classes/callbacks/PostPurchase.js +21 -25
  112. package/dist/classes/callbacks/PostRockRender.js +8 -12
  113. package/dist/classes/callbacks/PostRockUpdate.js +8 -12
  114. package/dist/classes/callbacks/PostRoomClearChanged.js +9 -13
  115. package/dist/classes/callbacks/PostSacrifice.js +12 -16
  116. package/dist/classes/callbacks/PostSlotAnimationChanged.js +6 -10
  117. package/dist/classes/callbacks/PostSlotCollision.js +8 -12
  118. package/dist/classes/callbacks/PostSlotDestroyed.js +6 -10
  119. package/dist/classes/callbacks/PostSlotInit.js +6 -10
  120. package/dist/classes/callbacks/PostSlotRender.js +6 -10
  121. package/dist/classes/callbacks/PostSlotUpdate.js +6 -10
  122. package/dist/classes/callbacks/PostSpikesRender.js +8 -12
  123. package/dist/classes/callbacks/PostSpikesUpdate.js +8 -12
  124. package/dist/classes/callbacks/PostTNTRender.js +8 -12
  125. package/dist/classes/callbacks/PostTNTUpdate.js +8 -12
  126. package/dist/classes/callbacks/PostTearInitFilter.js +6 -10
  127. package/dist/classes/callbacks/PostTearInitLate.js +6 -10
  128. package/dist/classes/callbacks/PostTearInitVeryLate.js +6 -10
  129. package/dist/classes/callbacks/PostTearKill.js +8 -12
  130. package/dist/classes/callbacks/PostTearRenderFilter.js +6 -10
  131. package/dist/classes/callbacks/PostTearUpdateFilter.js +6 -10
  132. package/dist/classes/callbacks/PostTransformation.js +10 -14
  133. package/dist/classes/callbacks/PostTrinketBreak.js +16 -20
  134. package/dist/classes/callbacks/PostUsePillFilter.js +18 -22
  135. package/dist/classes/callbacks/PreBerserkDeath.js +14 -18
  136. package/dist/classes/callbacks/PreBombCollisionFilter.js +6 -10
  137. package/dist/classes/callbacks/PreCustomRevive.js +6 -10
  138. package/dist/classes/callbacks/PreEntitySpawnFilter.js +4 -8
  139. package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +6 -10
  140. package/dist/classes/callbacks/PreGetPedestal.js +8 -12
  141. package/dist/classes/callbacks/PreItemPickup.js +6 -10
  142. package/dist/classes/callbacks/PreKnifeCollisionFilter.js +6 -10
  143. package/dist/classes/callbacks/PreNPCCollisionFilter.js +6 -10
  144. package/dist/classes/callbacks/PreNPCUpdateFilter.js +6 -10
  145. package/dist/classes/callbacks/PreNewLevel.js +10 -14
  146. package/dist/classes/callbacks/PreProjectileCollisionFilter.js +6 -10
  147. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +4 -8
  148. package/dist/classes/callbacks/PreTearCollisionFilter.js +6 -10
  149. package/dist/classes/features/callbackLogic/CustomGridEntities.js +46 -50
  150. package/dist/classes/features/callbackLogic/CustomRevive.js +28 -32
  151. package/dist/classes/features/callbackLogic/EsauJrDetection.js +11 -15
  152. package/dist/classes/features/callbackLogic/FlipDetection.js +11 -15
  153. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +26 -30
  154. package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +10 -14
  155. package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +6 -10
  156. package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +12 -16
  157. package/dist/classes/features/callbackLogic/ItemPickupDetection.js +17 -21
  158. package/dist/classes/features/callbackLogic/PickupChangeDetection.js +6 -10
  159. package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +39 -43
  160. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +18 -22
  161. package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +17 -21
  162. package/dist/classes/features/callbackLogic/SlotRenderDetection.js +8 -12
  163. package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +9 -13
  164. package/dist/classes/features/other/CharacterHealthConversion.js +13 -17
  165. package/dist/classes/features/other/CharacterStats.js +9 -13
  166. package/dist/classes/features/other/CollectibleItemPoolType.js +17 -21
  167. package/dist/classes/features/other/CustomHotkeys.js +15 -19
  168. package/dist/classes/features/other/CustomItemPools.js +20 -24
  169. package/dist/classes/features/other/CustomPickups.js +15 -19
  170. package/dist/classes/features/other/CustomStages.js +116 -153
  171. package/dist/classes/features/other/CustomTrapdoors.js +119 -123
  172. package/dist/classes/features/other/DebugDisplay.js +77 -81
  173. package/dist/classes/features/other/DeployJSONRoom.js +65 -69
  174. package/dist/classes/features/other/DisableAllSound.js +14 -18
  175. package/dist/classes/features/other/DisableInputs.js +24 -28
  176. package/dist/classes/features/other/EdenStartingStatsHealth.js +36 -40
  177. package/dist/classes/features/other/ExtraConsoleCommands.js +65 -102
  178. package/dist/classes/features/other/FadeInRemover.js +9 -13
  179. package/dist/classes/features/other/FastReset.js +18 -22
  180. package/dist/classes/features/other/FlyingDetection.js +10 -14
  181. package/dist/classes/features/other/ForgottenSwitch.js +8 -12
  182. package/dist/classes/features/other/ItemPoolDetection.js +35 -39
  183. package/dist/classes/features/other/ModdedElementDetection.js +43 -47
  184. package/dist/classes/features/other/ModdedElementSets.js +135 -139
  185. package/dist/classes/features/other/NoSirenSteal.js +7 -11
  186. package/dist/classes/features/other/Pause.js +48 -52
  187. package/dist/classes/features/other/PersistentEntities.js +16 -20
  188. package/dist/classes/features/other/PickupIndexCreation.js +31 -35
  189. package/dist/classes/features/other/PlayerCollectibleTracking.js +18 -22
  190. package/dist/classes/features/other/PonyDetection.js +22 -26
  191. package/dist/classes/features/other/PressInput.js +10 -14
  192. package/dist/classes/features/other/PreventChildEntities.js +6 -10
  193. package/dist/classes/features/other/PreventGridEntityRespawn.js +34 -38
  194. package/dist/classes/features/other/RerunDetection.js +11 -15
  195. package/dist/classes/features/other/RoomClearFrame.js +11 -15
  196. package/dist/classes/features/other/RoomHistory.js +30 -34
  197. package/dist/classes/features/other/RunInNFrames.js +24 -28
  198. package/dist/classes/features/other/RunNextRoom.js +8 -12
  199. package/dist/classes/features/other/RunNextRun.js +8 -12
  200. package/dist/classes/features/other/SaveDataManager.js +61 -65
  201. package/dist/classes/features/other/SpawnRockAltRewards.js +115 -119
  202. package/dist/classes/features/other/StageHistory.js +76 -80
  203. package/dist/classes/features/other/StartAmbush.js +12 -16
  204. package/dist/classes/features/other/TaintedLazarusPlayers.js +10 -14
  205. package/dist/classes/features/other/UnlockAchievementsDetection.js +10 -14
  206. package/dist/classes/features/other/customStages/backdrop.js +68 -71
  207. package/dist/classes/features/other/customStages/constants.js +7 -10
  208. package/dist/classes/features/other/customStages/gridEntities.js +23 -30
  209. package/dist/classes/features/other/customStages/shadows.js +27 -30
  210. package/dist/classes/features/other/customStages/streakText.js +55 -60
  211. package/dist/classes/features/other/customStages/utils.js +13 -17
  212. package/dist/classes/features/other/customStages/v.js +4 -7
  213. package/dist/classes/features/other/customStages/versusScreen.js +46 -50
  214. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +8 -12
  215. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +8 -12
  216. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +8 -12
  217. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +8 -12
  218. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +8 -12
  219. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +8 -12
  220. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +8 -12
  221. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +8 -12
  222. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +8 -12
  223. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +8 -12
  224. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +8 -12
  225. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +8 -12
  226. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +8 -12
  227. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +8 -12
  228. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +8 -12
  229. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +8 -12
  230. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +8 -12
  231. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +8 -12
  232. package/dist/classes/features/other/debugDisplay/utils.js +6 -10
  233. package/dist/classes/features/other/extraConsoleCommands/commands.js +411 -557
  234. package/dist/classes/features/other/extraConsoleCommands/subroutines.js +47 -57
  235. package/dist/classes/features/other/extraConsoleCommands/v.js +1 -4
  236. package/dist/classes/features/other/saveDataManager/constants.js +1 -4
  237. package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +17 -21
  238. package/dist/classes/features/other/saveDataManager/loadFromDisk.js +19 -22
  239. package/dist/classes/features/other/saveDataManager/restoreDefaults.js +20 -25
  240. package/dist/classes/features/other/saveDataManager/saveToDisk.js +13 -16
  241. package/dist/classes/private/CustomCallback.js +4 -8
  242. package/dist/classes/private/Feature.js +1 -5
  243. package/dist/core/cachedClasses.js +12 -15
  244. package/dist/core/constants.js +126 -130
  245. package/dist/core/constantsFirstLast.js +22 -25
  246. package/dist/core/constantsVanilla.js +25 -28
  247. package/dist/core/upgradeMod.js +7 -10
  248. package/dist/decorators.js +6 -10
  249. package/dist/enums/AmbushType.js +2 -5
  250. package/dist/enums/CornerType.js +2 -5
  251. package/dist/enums/HealthType.js +2 -5
  252. package/dist/enums/ISCFeature.js +2 -5
  253. package/dist/enums/LadderSubTypeCustom.js +2 -5
  254. package/dist/enums/ModCallbackCustom.js +2 -5
  255. package/dist/enums/MysteriousPaperEffect.js +2 -5
  256. package/dist/enums/PlayerStat.js +2 -5
  257. package/dist/enums/PocketItemType.js +2 -5
  258. package/dist/enums/RockAltType.js +2 -5
  259. package/dist/enums/SaveDataKey.js +2 -5
  260. package/dist/enums/SerializationType.js +2 -5
  261. package/dist/enums/SlotDestructionType.js +2 -5
  262. package/dist/enums/private/GridEntityTypeCustom.js +1 -4
  263. package/dist/enums/private/SerializationBrand.js +2 -5
  264. package/dist/enums/private/StageTravelState.js +2 -5
  265. package/dist/enums/private/TrapdoorAnimation.js +2 -5
  266. package/dist/enums/private/UIStreakAnimation.js +2 -5
  267. package/dist/features.js +138 -141
  268. package/dist/functions/ambush.js +9 -12
  269. package/dist/functions/array.js +45 -76
  270. package/dist/functions/arrayLua.js +7 -16
  271. package/dist/functions/benchmark.js +4 -7
  272. package/dist/functions/bitSet128.js +19 -26
  273. package/dist/functions/bitwise.js +14 -23
  274. package/dist/functions/bombs.js +1 -4
  275. package/dist/functions/bosses.js +68 -85
  276. package/dist/functions/cards.js +44 -62
  277. package/dist/functions/challenges.js +28 -39
  278. package/dist/functions/characters.js +68 -87
  279. package/dist/functions/charge.js +41 -52
  280. package/dist/functions/chargeBar.js +2 -6
  281. package/dist/functions/collectibleTag.js +9 -13
  282. package/dist/functions/collectibles.js +133 -172
  283. package/dist/functions/color.js +29 -38
  284. package/dist/functions/console.js +4 -8
  285. package/dist/functions/curses.js +6 -10
  286. package/dist/functions/debugFunctions.js +7 -14
  287. package/dist/functions/decorators.js +13 -19
  288. package/dist/functions/deepCopy.js +96 -99
  289. package/dist/functions/deepCopyTests.js +56 -59
  290. package/dist/functions/dimensions.js +10 -14
  291. package/dist/functions/direction.js +22 -30
  292. package/dist/functions/doors.js +104 -154
  293. package/dist/functions/easing.js +30 -62
  294. package/dist/functions/effects.js +6 -10
  295. package/dist/functions/emptyRoom.js +30 -34
  296. package/dist/functions/entities.js +88 -115
  297. package/dist/functions/entitiesSpecific.js +83 -125
  298. package/dist/functions/entityTypes.js +3 -6
  299. package/dist/functions/enums.js +27 -41
  300. package/dist/functions/external.js +4 -8
  301. package/dist/functions/familiars.js +17 -25
  302. package/dist/functions/flag.js +10 -19
  303. package/dist/functions/frames.js +31 -51
  304. package/dist/functions/globals.js +26 -66
  305. package/dist/functions/gridEntities.js +231 -269
  306. package/dist/functions/gridEntitiesSpecific.js +86 -126
  307. package/dist/functions/gridIndex.js +8 -11
  308. package/dist/functions/hash.js +1 -4
  309. package/dist/functions/hex.js +7 -11
  310. package/dist/functions/input.js +65 -88
  311. package/dist/functions/isaacAPIClass.js +28 -53
  312. package/dist/functions/itemPool.js +39 -48
  313. package/dist/functions/jsonHelpers.js +5 -42
  314. package/dist/functions/jsonRoom.js +39 -46
  315. package/dist/functions/kColor.js +30 -39
  316. package/dist/functions/language.js +3 -6
  317. package/dist/functions/level.js +20 -26
  318. package/dist/functions/levelGrid.js +81 -108
  319. package/dist/functions/log.js +6 -12
  320. package/dist/functions/logEntities.js +49 -59
  321. package/dist/functions/logMisc.js +183 -214
  322. package/dist/functions/map.js +10 -20
  323. package/dist/functions/math.js +16 -31
  324. package/dist/functions/merge.js +48 -51
  325. package/dist/functions/mergeTests.js +34 -37
  326. package/dist/functions/minimap.js +34 -46
  327. package/dist/functions/modFeatures.js +1 -4
  328. package/dist/functions/newArray.js +5 -8
  329. package/dist/functions/nextStage.js +63 -67
  330. package/dist/functions/npcDataStructures.js +9 -20
  331. package/dist/functions/npcs.js +37 -45
  332. package/dist/functions/pickupVariants.js +26 -39
  333. package/dist/functions/pickups.js +43 -59
  334. package/dist/functions/pickupsSpecific.js +76 -118
  335. package/dist/functions/pills.js +52 -72
  336. package/dist/functions/playerCenter.js +13 -16
  337. package/dist/functions/playerCollectibles.js +59 -79
  338. package/dist/functions/playerDataStructures.js +18 -29
  339. package/dist/functions/playerEffects.js +12 -19
  340. package/dist/functions/playerHealth.js +91 -113
  341. package/dist/functions/playerIndex.js +22 -33
  342. package/dist/functions/playerTrinkets.js +31 -43
  343. package/dist/functions/players.js +87 -126
  344. package/dist/functions/pocketItems.js +33 -43
  345. package/dist/functions/positionVelocity.js +23 -32
  346. package/dist/functions/pressurePlate.js +7 -10
  347. package/dist/functions/projectiles.js +11 -15
  348. package/dist/functions/random.js +8 -13
  349. package/dist/functions/readOnly.js +3 -8
  350. package/dist/functions/render.js +7 -12
  351. package/dist/functions/revive.js +38 -45
  352. package/dist/functions/rng.js +31 -44
  353. package/dist/functions/rockAlt.js +18 -22
  354. package/dist/functions/roomData.js +24 -40
  355. package/dist/functions/roomGrid.js +17 -25
  356. package/dist/functions/roomShape.js +39 -55
  357. package/dist/functions/roomShapeWalls.js +67 -71
  358. package/dist/functions/roomTransition.js +13 -17
  359. package/dist/functions/rooms.js +181 -244
  360. package/dist/functions/run.js +29 -39
  361. package/dist/functions/seeds.js +6 -10
  362. package/dist/functions/serialization.js +27 -34
  363. package/dist/functions/set.js +24 -40
  364. package/dist/functions/slots.js +18 -22
  365. package/dist/functions/sort.js +9 -15
  366. package/dist/functions/sound.js +12 -16
  367. package/dist/functions/spawnCollectible.js +21 -26
  368. package/dist/functions/sprites.js +16 -24
  369. package/dist/functions/stage.js +122 -164
  370. package/dist/functions/stats.js +37 -43
  371. package/dist/functions/storyBosses.js +36 -40
  372. package/dist/functions/string.js +19 -33
  373. package/dist/functions/table.js +21 -31
  374. package/dist/functions/tears.js +6 -14
  375. package/dist/functions/transformations.js +35 -42
  376. package/dist/functions/trinketGive.js +29 -36
  377. package/dist/functions/trinkets.js +45 -60
  378. package/dist/functions/tstlClass.js +11 -20
  379. package/dist/functions/types.js +22 -46
  380. package/dist/functions/ui.js +25 -40
  381. package/dist/functions/utils.js +22 -36
  382. package/dist/functions/vector.js +33 -46
  383. package/dist/functions/versusScreen.js +12 -18
  384. package/dist/functions/weighted.js +8 -12
  385. package/dist/index.js +150 -166
  386. package/dist/indexLua.js +151 -167
  387. package/dist/interfaces/ChargeBarSprites.js +1 -2
  388. package/dist/interfaces/Corner.js +1 -2
  389. package/dist/interfaces/CustomStageTSConfig.js +1 -2
  390. package/dist/interfaces/GridEntityCustomData.js +1 -2
  391. package/dist/interfaces/JSONRoomsFile.js +1 -2
  392. package/dist/interfaces/PlayerHealth.js +1 -2
  393. package/dist/interfaces/PlayerStats.js +2 -4
  394. package/dist/interfaces/PocketItemDescription.js +1 -2
  395. package/dist/interfaces/RoomDescription.js +1 -2
  396. package/dist/interfaces/SaveData.js +1 -2
  397. package/dist/interfaces/StageHistoryEntry.js +1 -2
  398. package/dist/interfaces/TSTLClassMetatable.js +1 -2
  399. package/dist/interfaces/TrinketSituation.js +1 -2
  400. package/dist/interfaces/private/AddCallbackParametersCustom.js +2 -4
  401. package/dist/interfaces/private/CustomStage.js +1 -2
  402. package/dist/interfaces/private/CustomTrapdoorDescription.js +1 -2
  403. package/dist/interfaces/private/ModUpgradedInterface.js +1 -2
  404. package/dist/isaacscript-common.lua +1 -1
  405. package/dist/maps/PHDPillConversionsMap.js +19 -22
  406. package/dist/maps/cardNameToTypeMap.js +205 -208
  407. package/dist/maps/characterNameToTypeMap.js +85 -88
  408. package/dist/maps/collectibleNameToTypeMap.js +5 -8
  409. package/dist/maps/defaultPlayerStatMap.js +10 -13
  410. package/dist/maps/entityTypeVariantToBossIDMap.js +3 -6
  411. package/dist/maps/falsePHDPillConversionsMap.js +33 -36
  412. package/dist/maps/gridEntityTypeToBrokenStateMap.js +15 -18
  413. package/dist/maps/gridEntityXMLMap.js +52 -55
  414. package/dist/maps/itemPoolTypeToItemPoolName.js +33 -36
  415. package/dist/maps/keyboardToStringMap.js +66 -69
  416. package/dist/maps/pillNameToEffectMap.js +83 -86
  417. package/dist/maps/roomNameToTypeMap.js +38 -41
  418. package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +9 -12
  419. package/dist/maps/transformationNameToPlayerFormMap.js +30 -33
  420. package/dist/maps/trinketNameToTypeMap.js +5 -8
  421. package/dist/objects/LRoomShapeToRectangles.js +22 -25
  422. package/dist/objects/backdropTypeToRockAltType.js +65 -68
  423. package/dist/objects/batteryNames.js +8 -11
  424. package/dist/objects/bombNames.js +11 -14
  425. package/dist/objects/bossIDToEntityTypeVariant.js +116 -119
  426. package/dist/objects/bossNamePNGFileNames.js +104 -107
  427. package/dist/objects/bossNames.js +105 -108
  428. package/dist/objects/bossPortraitPNGFileNames.js +104 -107
  429. package/dist/objects/cardDescriptions.js +101 -104
  430. package/dist/objects/cardNames.js +101 -104
  431. package/dist/objects/challengeBosses.js +49 -52
  432. package/dist/objects/challengeCharacters.js +49 -52
  433. package/dist/objects/challengeCollectibleTypes.js +160 -163
  434. package/dist/objects/challengeNames.js +49 -52
  435. package/dist/objects/challengeTrinketType.js +48 -51
  436. package/dist/objects/characterDamageMultipliers.js +44 -47
  437. package/dist/objects/characterNames.js +44 -47
  438. package/dist/objects/characterSpritePNGFileNames.js +44 -47
  439. package/dist/objects/characterStartingCollectibleTypes.js +49 -52
  440. package/dist/objects/characterStartingTrinketTypes.js +44 -47
  441. package/dist/objects/chestNames.js +15 -18
  442. package/dist/objects/coinNames.js +11 -14
  443. package/dist/objects/coinSubTypeToValue.js +11 -14
  444. package/dist/objects/collectibleDescriptions.js +725 -728
  445. package/dist/objects/collectibleNames.js +725 -728
  446. package/dist/objects/colors.js +1 -4
  447. package/dist/objects/directionNames.js +7 -10
  448. package/dist/objects/directionToDegrees.js +7 -10
  449. package/dist/objects/directionToMoveAction.js +7 -10
  450. package/dist/objects/directionToShootAction.js +7 -10
  451. package/dist/objects/directionToVector.js +9 -12
  452. package/dist/objects/doorSlotFlagToDoorSlot.js +11 -14
  453. package/dist/objects/doorSlotToDirection.js +11 -14
  454. package/dist/objects/doorSlotToDoorSlotFlag.js +11 -14
  455. package/dist/objects/gridEntityTypeToANM2Name.js +30 -33
  456. package/dist/objects/heartNames.js +16 -19
  457. package/dist/objects/isaacAPIClassTypeToBrand.js +8 -11
  458. package/dist/objects/isaacAPIClassTypeToFunctions.js +37 -40
  459. package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +9 -45
  460. package/dist/objects/kColors.js +1 -4
  461. package/dist/objects/keyNames.js +8 -11
  462. package/dist/objects/languageNames.js +9 -12
  463. package/dist/objects/oppositeDoorSlots.js +11 -14
  464. package/dist/objects/pillEffectClasses.js +53 -56
  465. package/dist/objects/pillEffectNames.js +53 -56
  466. package/dist/objects/pillEffectTypeToPillEffects.js +11 -14
  467. package/dist/objects/pillEffectTypes.js +53 -56
  468. package/dist/objects/playerNamePNGFileNames.js +44 -47
  469. package/dist/objects/playerPortraitPNGFileNames.js +44 -47
  470. package/dist/objects/roomShapeBounds.js +23 -26
  471. package/dist/objects/roomShapeCorners.js +128 -131
  472. package/dist/objects/roomShapeLayoutSizes.js +23 -26
  473. package/dist/objects/roomShapeToBottomRightPosition.js +17 -20
  474. package/dist/objects/roomShapeToDoorSlotCoordinates.js +78 -81
  475. package/dist/objects/roomShapeToDoorSlots.js +48 -51
  476. package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +82 -85
  477. package/dist/objects/roomShapeToGridWidth.js +14 -17
  478. package/dist/objects/roomShapeToTopLeftPosition.js +18 -21
  479. package/dist/objects/roomShapeVolumes.js +21 -24
  480. package/dist/objects/roomTypeNames.js +32 -35
  481. package/dist/objects/roomTypeSpecialGotoPrefixes.js +32 -35
  482. package/dist/objects/sackNames.js +6 -9
  483. package/dist/objects/slotNames.js +21 -24
  484. package/dist/objects/stageIDNames.js +33 -36
  485. package/dist/objects/stageToMusic.js +69 -72
  486. package/dist/objects/stageToStageID.js +90 -93
  487. package/dist/objects/stageTypeSuffixes.js +8 -11
  488. package/dist/objects/transformationNames.js +16 -19
  489. package/dist/objects/trinketDescriptions.js +192 -195
  490. package/dist/objects/trinketNames.js +192 -195
  491. package/dist/objects/versusScreenBackgroundColors.js +39 -42
  492. package/dist/objects/versusScreenDirtSpotColors.js +39 -42
  493. package/dist/patchErrorFunctions.js +4 -7
  494. package/dist/serialization.js +6 -9
  495. package/dist/sets/LRoomShapesSet.js +7 -10
  496. package/dist/sets/bigRoomShapesSet.js +10 -13
  497. package/dist/sets/bossSets.js +261 -264
  498. package/dist/sets/charactersThatStartWithAnActiveItemSet.js +14 -17
  499. package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +5 -8
  500. package/dist/sets/charactersWithFreeDevilDealsSet.js +3 -6
  501. package/dist/sets/charactersWithNoRedHeartsSet.js +11 -14
  502. package/dist/sets/charactersWithNoSoulHeartsSet.js +8 -11
  503. package/dist/sets/consoleCommandsSet.js +2 -5
  504. package/dist/sets/entitiesWithArmorSet.js +44 -47
  505. package/dist/sets/familiarsThatShootPlayerTearsSet.js +11 -14
  506. package/dist/sets/itemConfigCardTypesForCards.js +7 -10
  507. package/dist/sets/lostStyleCharactersSet.js +8 -11
  508. package/dist/sets/mineShaftRoomSubTypesSet.js +8 -11
  509. package/dist/sets/narrowRoomShapesSet.js +7 -10
  510. package/dist/sets/poopGridEntityXMLTypesSet.js +12 -15
  511. package/dist/sets/redHeartSubTypesSet.js +6 -9
  512. package/dist/sets/repentanceBossIDsSet.js +26 -29
  513. package/dist/sets/sinEntityTypesSet.js +10 -13
  514. package/dist/sets/singleUseActiveCollectibleTypesSet.js +11 -14
  515. package/dist/shaderCrashFix.js +4 -7
  516. package/dist/shouldFire.js +28 -58
  517. package/dist/types/AddSubtract.js +1 -2
  518. package/dist/types/AllButFirst.js +1 -2
  519. package/dist/types/AllButLast.js +1 -2
  520. package/dist/types/AnyClass.js +1 -2
  521. package/dist/types/AnyEntity.js +1 -2
  522. package/dist/types/AnyFunction.js +1 -2
  523. package/dist/types/AnyGridEntity.js +1 -2
  524. package/dist/types/CompositionTypeSatisfiesEnum.js +1 -2
  525. package/dist/types/ConversionHeartSubType.js +1 -2
  526. package/dist/types/Decrement.js +1 -2
  527. package/dist/types/ERange.js +1 -2
  528. package/dist/types/EntityID.js +1 -2
  529. package/dist/types/FunctionTuple.js +1 -2
  530. package/dist/types/GridEntityID.js +1 -2
  531. package/dist/types/HasFunction.js +1 -2
  532. package/dist/types/IRange.js +1 -2
  533. package/dist/types/Immutable.js +1 -2
  534. package/dist/types/Increment.js +1 -2
  535. package/dist/types/LowercaseKeys.js +1 -2
  536. package/dist/types/NaturalNumbersLessThan.js +1 -2
  537. package/dist/types/NaturalNumbersLessThanOrEqualTo.js +1 -2
  538. package/dist/types/ObjectValues.js +1 -2
  539. package/dist/types/PickingUpItem.js +15 -22
  540. package/dist/types/PickupIndex.js +1 -2
  541. package/dist/types/PlayerIndex.js +1 -2
  542. package/dist/types/PossibleStatType.js +1 -2
  543. package/dist/types/PublicInterface.js +1 -2
  544. package/dist/types/ReadonlyMap.js +1 -4
  545. package/dist/types/ReadonlyRecord.js +1 -2
  546. package/dist/types/ReadonlySet.js +1 -4
  547. package/dist/types/StartsWithLowercase.js +1 -2
  548. package/dist/types/StartsWithUppercase.js +1 -2
  549. package/dist/types/TSTLClass.js +1 -2
  550. package/dist/types/Tuple.js +1 -2
  551. package/dist/types/TupleKeys.js +1 -2
  552. package/dist/types/TupleToIntersection.js +1 -2
  553. package/dist/types/TupleToUnion.js +1 -2
  554. package/dist/types/TupleWithLengthBetween.js +1 -2
  555. package/dist/types/TupleWithMaxLength.js +1 -2
  556. package/dist/types/UnionToIntersection.js +1 -2
  557. package/dist/types/UppercaseKeys.js +1 -2
  558. package/dist/types/WeightedArray.js +1 -2
  559. package/dist/types/WidenLiteral.js +1 -2
  560. package/dist/types/Writable.js +1 -2
  561. package/dist/types/private/CallbackTuple.js +1 -2
  562. package/dist/types/private/ModUpgradedWithFeatures.js +1 -2
  563. package/package.json +3 -3
@@ -1,45 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.countEntities = countEntities;
4
- exports.doesAnyEntityExist = doesAnyEntityExist;
5
- exports.doesEntityExist = doesEntityExist;
6
- exports.getClosestEntityTo = getClosestEntityTo;
7
- exports.getConstituentsFromEntityID = getConstituentsFromEntityID;
8
- exports.getEntities = getEntities;
9
- exports.getEntityFields = getEntityFields;
10
- exports.getEntityFromPtrHash = getEntityFromPtrHash;
11
- exports.getEntityID = getEntityID;
12
- exports.getEntityIDFromConstituents = getEntityIDFromConstituents;
13
- exports.getFilteredNewEntities = getFilteredNewEntities;
14
- exports.hasArmor = hasArmor;
15
- exports.isActiveEnemy = isActiveEnemy;
16
- exports.isEntityMoving = isEntityMoving;
17
- exports.parseEntityID = parseEntityID;
18
- exports.parseEntityTypeVariantString = parseEntityTypeVariantString;
19
- exports.removeAllMatchingEntities = removeAllMatchingEntities;
20
- exports.removeEntities = removeEntities;
21
- exports.rerollEnemy = rerollEnemy;
22
- exports.setEntityDamageFlash = setEntityDamageFlash;
23
- exports.setEntityOpacity = setEntityOpacity;
24
- exports.setEntityRandomColor = setEntityRandomColor;
25
- exports.spawn = spawn;
26
- exports.spawnEntityID = spawnEntityID;
27
- exports.spawnWithSeed = spawnWithSeed;
28
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
29
- const cachedClasses_1 = require("../core/cachedClasses");
30
- const constants_1 = require("../core/constants");
31
- const entitiesWithArmorSet_1 = require("../sets/entitiesWithArmorSet");
32
- const isaacAPIClass_1 = require("./isaacAPIClass");
33
- const random_1 = require("./random");
34
- const readOnly_1 = require("./readOnly");
35
- const rng_1 = require("./rng");
36
- const sprites_1 = require("./sprites");
37
- const tstlClass_1 = require("./tstlClass");
38
- const types_1 = require("./types");
39
- const utils_1 = require("./utils");
40
- const vector_1 = require("./vector");
1
+ import { EntityFlag, EntityType, MotherVariant, NPCState, UltraGreedState, UltraGreedVariant, UltraGreedierState, } from "isaac-typescript-definitions";
2
+ import { game } from "../core/cachedClasses";
3
+ import { VectorZero } from "../core/constants";
4
+ import { ENTITIES_WITH_ARMOR_SET } from "../sets/entitiesWithArmorSet";
5
+ import { getIsaacAPIClassName } from "./isaacAPIClass";
6
+ import { getRandom } from "./random";
7
+ import { newReadonlyColor } from "./readOnly";
8
+ import { getRandomSeed, isRNG, newRNG } from "./rng";
9
+ import { setSpriteOpacity } from "./sprites";
10
+ import { isTSTLSet } from "./tstlClass";
11
+ import { asNPCState, isPrimitive, parseIntSafe } from "./types";
12
+ import { assertDefined } from "./utils";
13
+ import { doesVectorHaveLength, isVector, vectorToString } from "./vector";
41
14
  /** From DeadInfinity. */
42
- const DAMAGE_FLASH_COLOR = (0, readOnly_1.newReadonlyColor)(0.5, 0.5, 0.5, 1, 200 / 255, 0, 0);
15
+ const DAMAGE_FLASH_COLOR = newReadonlyColor(0.5, 0.5, 0.5, 1, 200 / 255, 0, 0);
43
16
  /**
44
17
  * Helper function to count the number of entities in room. Use this over the vanilla
45
18
  * `Isaac.CountEntities` method to avoid having to specify a spawner and to handle ignoring charmed
@@ -51,7 +24,7 @@ const DAMAGE_FLASH_COLOR = (0, readOnly_1.newReadonlyColor)(0.5, 0.5, 0.5, 1, 20
51
24
  * @param ignoreFriendly Optional. Default is false. Will throw a runtime error if set to true and
52
25
  * the `entityType` is equal to -1.
53
26
  */
54
- function countEntities(entityType = -1, variant = -1, subType = -1, ignoreFriendly = false) {
27
+ export function countEntities(entityType = -1, variant = -1, subType = -1, ignoreFriendly = false) {
55
28
  if (entityType === -1) {
56
29
  // The `Isaac.CountEntities` method requires an argument of `EntityType`, so we must revert to
57
30
  // using the `Isaac.GetRoomEntities` method, which is slower.
@@ -59,7 +32,7 @@ function countEntities(entityType = -1, variant = -1, subType = -1, ignoreFriend
59
32
  if (!ignoreFriendly) {
60
33
  return entities.length;
61
34
  }
62
- const nonFriendlyEntities = entities.filter((entity) => !entity.HasEntityFlags(isaac_typescript_definitions_1.EntityFlag.FRIENDLY));
35
+ const nonFriendlyEntities = entities.filter((entity) => !entity.HasEntityFlags(EntityFlag.FRIENDLY));
63
36
  return nonFriendlyEntities.length;
64
37
  }
65
38
  if (!ignoreFriendly) {
@@ -76,9 +49,9 @@ function countEntities(entityType = -1, variant = -1, subType = -1, ignoreFriend
76
49
  * true if any of the provided entity types exist.
77
50
  * @param ignoreFriendly Optional. Default is false.
78
51
  */
79
- function doesAnyEntityExist(entityTypes, ignoreFriendly = false) {
52
+ export function doesAnyEntityExist(entityTypes, ignoreFriendly = false) {
80
53
  const entityTypesMutable = entityTypes;
81
- const entityTypesArray = (0, tstlClass_1.isTSTLSet)(entityTypesMutable)
54
+ const entityTypesArray = isTSTLSet(entityTypesMutable)
82
55
  ? [...entityTypesMutable]
83
56
  : entityTypesMutable;
84
57
  return entityTypesArray.some((entityType) => doesEntityExist(entityType, -1, -1, ignoreFriendly));
@@ -92,7 +65,7 @@ function doesAnyEntityExist(entityTypes, ignoreFriendly = false) {
92
65
  * @param subType Optional. Default is -1, which matches every sub-type.
93
66
  * @param ignoreFriendly Optional. Default is false.
94
67
  */
95
- function doesEntityExist(entityType = -1, variant = -1, subType = -1, ignoreFriendly = false) {
68
+ export function doesEntityExist(entityType = -1, variant = -1, subType = -1, ignoreFriendly = false) {
96
69
  const count = countEntities(entityType, variant, subType, ignoreFriendly);
97
70
  return count > 0;
98
71
  }
@@ -113,7 +86,7 @@ function doesEntityExist(entityType = -1, variant = -1, subType = -1, ignoreFrie
113
86
  * @param filterFunc Optional. A function to filter for a specific type of entity, like e.g. an
114
87
  * enemy with a certain amount of HP left.
115
88
  */
116
- function getClosestEntityTo(referenceEntity, entities, filterFunc) {
89
+ export function getClosestEntityTo(referenceEntity, entities, filterFunc) {
117
90
  let closestEntity;
118
91
  let closestDistance = Infinity;
119
92
  for (const entity of entities) {
@@ -127,21 +100,21 @@ function getClosestEntityTo(referenceEntity, entities, filterFunc) {
127
100
  return closestEntity;
128
101
  }
129
102
  /** Helper function to get the entity type, variant, and sub-type from an `EntityID`. */
130
- function getConstituentsFromEntityID(entityID) {
103
+ export function getConstituentsFromEntityID(entityID) {
131
104
  const parts = entityID.split(".");
132
105
  if (parts.length !== 3) {
133
106
  error(`Failed to get the constituents from entity ID: ${entityID}`);
134
107
  }
135
108
  const [entityTypeString, variantString, subTypeString] = parts;
136
- (0, utils_1.assertDefined)(entityTypeString, `Failed to get the first constituent from an entity ID: ${entityID}`);
137
- (0, utils_1.assertDefined)(variantString, `Failed to get the second constituent from an entity ID: ${entityID}`);
138
- (0, utils_1.assertDefined)(subTypeString, `Failed to get the third constituent from an entity ID: ${entityID}`);
139
- const entityType = (0, types_1.parseIntSafe)(entityTypeString);
140
- (0, utils_1.assertDefined)(entityType, `Failed to convert the entity type to an integer: ${entityTypeString}`);
141
- const variant = (0, types_1.parseIntSafe)(variantString);
142
- (0, utils_1.assertDefined)(variant, `Failed to convert the entity variant to an integer: ${variantString}`);
143
- const subType = (0, types_1.parseIntSafe)(subTypeString);
144
- (0, utils_1.assertDefined)(subType, `Failed to convert the entity sub-type to an integer: ${subTypeString}`);
109
+ assertDefined(entityTypeString, `Failed to get the first constituent from an entity ID: ${entityID}`);
110
+ assertDefined(variantString, `Failed to get the second constituent from an entity ID: ${entityID}`);
111
+ assertDefined(subTypeString, `Failed to get the third constituent from an entity ID: ${entityID}`);
112
+ const entityType = parseIntSafe(entityTypeString);
113
+ assertDefined(entityType, `Failed to convert the entity type to an integer: ${entityTypeString}`);
114
+ const variant = parseIntSafe(variantString);
115
+ assertDefined(variant, `Failed to convert the entity variant to an integer: ${variantString}`);
116
+ const subType = parseIntSafe(subTypeString);
117
+ assertDefined(subType, `Failed to convert the entity sub-type to an integer: ${subTypeString}`);
145
118
  return [entityType, variant, subType];
146
119
  }
147
120
  /**
@@ -171,7 +144,7 @@ function getConstituentsFromEntityID(entityID) {
171
144
  * returned. Default is false. Will only be taken into account if the
172
145
  * `entityType` is specified.
173
146
  */
174
- function getEntities(entityType = -1, variant = -1, subType = -1, ignoreFriendly = false) {
147
+ export function getEntities(entityType = -1, variant = -1, subType = -1, ignoreFriendly = false) {
175
148
  if (entityType === -1) {
176
149
  return Isaac.GetRoomEntities();
177
150
  }
@@ -184,20 +157,20 @@ function getEntities(entityType = -1, variant = -1, subType = -1, ignoreFriendly
184
157
  * This function will only get fields that are equal to booleans, numbers, or strings, or Vectors,
185
158
  * as comparing other types is non-trivial.
186
159
  */
187
- function getEntityFields(entity) {
160
+ export function getEntityFields(entity) {
188
161
  const entityFields = new LuaMap();
189
162
  const metatable = getmetatable(entity);
190
- (0, utils_1.assertDefined)(metatable, "Failed to get the metatable for an entity.");
163
+ assertDefined(metatable, "Failed to get the metatable for an entity.");
191
164
  setPrimitiveEntityFields(entity, metatable, entityFields);
192
165
  // If this is a class that inherits from `Entity` (like `EntityPlayer`), the "__propget" table
193
166
  // will not contain the attributes for `Entity`. Thus, if this is not an `Entity`, we have
194
167
  // additional fields to add.
195
- const className = (0, isaacAPIClass_1.getIsaacAPIClassName)(entity);
168
+ const className = getIsaacAPIClassName(entity);
196
169
  if (className === "Entity") {
197
170
  return entityFields;
198
171
  }
199
172
  const parentTable = metatable.get("__parent");
200
- (0, utils_1.assertDefined)(parentTable, 'Failed to get the "__parent" table for an entity.');
173
+ assertDefined(parentTable, 'Failed to get the "__parent" table for an entity.');
201
174
  setPrimitiveEntityFields(entity, parentTable, entityFields);
202
175
  return entityFields;
203
176
  }
@@ -206,25 +179,25 @@ function getEntityFields(entity) {
206
179
  * should only use this function when debugging. (Normally, if you need to work backwards from a
207
180
  * reference, you would use an `EntityPtr` instead of a `PtrHash`.
208
181
  */
209
- function getEntityFromPtrHash(ptrHash) {
182
+ export function getEntityFromPtrHash(ptrHash) {
210
183
  const entities = getEntities();
211
184
  return entities.find((entity) => GetPtrHash(entity) === ptrHash);
212
185
  }
213
186
  /** Helper function to get a string containing the entity's type, variant, and sub-type. */
214
- function getEntityID(entity) {
187
+ export function getEntityID(entity) {
215
188
  return `${entity.Type}.${entity.Variant}.${entity.SubType}`;
216
189
  }
217
190
  /**
218
191
  * Helper function to get a formatted string in the format returned by the `getEntityID` function.
219
192
  */
220
- function getEntityIDFromConstituents(entityType, variant, subType) {
193
+ export function getEntityIDFromConstituents(entityType, variant, subType) {
221
194
  return `${entityType}.${variant}.${subType}`;
222
195
  }
223
196
  /**
224
197
  * Helper function to compare two different arrays of entities. Returns the entities that are in the
225
198
  * second array but not in the first array.
226
199
  */
227
- function getFilteredNewEntities(oldEntities, newEntities) {
200
+ export function getFilteredNewEntities(oldEntities, newEntities) {
228
201
  const oldEntitiesSet = new Set();
229
202
  for (const entity of oldEntities) {
230
203
  const ptrHash = GetPtrHash(entity);
@@ -241,47 +214,47 @@ function getFilteredNewEntities(oldEntities, newEntities) {
241
214
  *
242
215
  * For more on armor, see the wiki: https://bindingofisaacrebirth.fandom.com/wiki/Damage_Scaling
243
216
  */
244
- function hasArmor(entity) {
217
+ export function hasArmor(entity) {
245
218
  const typeVariantString = `${entity.Type}.${entity.Variant}`;
246
- return entitiesWithArmorSet_1.ENTITIES_WITH_ARMOR_SET.has(typeVariantString);
219
+ return ENTITIES_WITH_ARMOR_SET.has(typeVariantString);
247
220
  }
248
221
  /**
249
222
  * Helper function to detect if a particular entity is an active enemy. Use this over the
250
223
  * `Entity.IsActiveEnemy` method since it is bugged with friendly enemies, Grimaces, Ultra Greed,
251
224
  * and Mother.
252
225
  */
253
- function isActiveEnemy(entity) {
254
- if (entity.HasEntityFlags(isaac_typescript_definitions_1.EntityFlag.FRIENDLY)) {
226
+ export function isActiveEnemy(entity) {
227
+ if (entity.HasEntityFlags(EntityFlag.FRIENDLY)) {
255
228
  return false;
256
229
  }
257
- const room = cachedClasses_1.game.GetRoom();
230
+ const room = game.GetRoom();
258
231
  const isClear = room.IsClear();
259
232
  // Some entities count as being "active" enemies, but they deactivate when the room is cleared.
260
233
  if (isClear) {
261
234
  switch (entity.Type) {
262
235
  // 42
263
- case isaac_typescript_definitions_1.EntityType.GRIMACE: {
236
+ case EntityType.GRIMACE: {
264
237
  return false;
265
238
  }
266
239
  // 294
267
- case isaac_typescript_definitions_1.EntityType.ULTRA_DOOR: {
240
+ case EntityType.ULTRA_DOOR: {
268
241
  return false;
269
242
  }
270
243
  // 406
271
- case isaac_typescript_definitions_1.EntityType.ULTRA_GREED: {
244
+ case EntityType.ULTRA_GREED: {
272
245
  const npc = entity.ToNPC();
273
246
  if (npc !== undefined) {
274
247
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
275
248
  const ultraGreedVariant = npc.Variant;
276
249
  switch (ultraGreedVariant) {
277
- case isaac_typescript_definitions_1.UltraGreedVariant.ULTRA_GREED: {
278
- if (npc.State === (0, types_1.asNPCState)(isaac_typescript_definitions_1.UltraGreedState.GOLD_STATUE)) {
250
+ case UltraGreedVariant.ULTRA_GREED: {
251
+ if (npc.State === asNPCState(UltraGreedState.GOLD_STATUE)) {
279
252
  return false;
280
253
  }
281
254
  break;
282
255
  }
283
- case isaac_typescript_definitions_1.UltraGreedVariant.ULTRA_GREEDIER: {
284
- if (npc.State === (0, types_1.asNPCState)(isaac_typescript_definitions_1.UltraGreedierState.POST_EXPLOSION)) {
256
+ case UltraGreedVariant.ULTRA_GREEDIER: {
257
+ if (npc.State === asNPCState(UltraGreedierState.POST_EXPLOSION)) {
285
258
  return false;
286
259
  }
287
260
  break;
@@ -291,11 +264,11 @@ function isActiveEnemy(entity) {
291
264
  break;
292
265
  }
293
266
  // 912
294
- case isaac_typescript_definitions_1.EntityType.MOTHER: {
267
+ case EntityType.MOTHER: {
295
268
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
296
- if (entity.Variant === isaac_typescript_definitions_1.MotherVariant.MOTHER_1) {
269
+ if (entity.Variant === MotherVariant.MOTHER_1) {
297
270
  const npc = entity.ToNPC();
298
- if (npc !== undefined && npc.State === isaac_typescript_definitions_1.NPCState.SPECIAL) {
271
+ if (npc !== undefined && npc.State === NPCState.SPECIAL) {
299
272
  return false;
300
273
  }
301
274
  }
@@ -319,8 +292,8 @@ function isActiveEnemy(entity) {
319
292
  * @param entity The entity whose velocity to measure.
320
293
  * @param threshold Optional. The threshold from 0 to consider to be moving. Default is 0.01.
321
294
  */
322
- function isEntityMoving(entity, threshold = 0.01) {
323
- return (0, vector_1.doesVectorHaveLength)(entity.Velocity, threshold);
295
+ export function isEntityMoving(entity, threshold = 0.01) {
296
+ return doesVectorHaveLength(entity.Velocity, threshold);
324
297
  }
325
298
  /**
326
299
  * Helper function to parse a string that contains an entity type, a variant, and a sub-type,
@@ -330,7 +303,7 @@ function isEntityMoving(entity, threshold = 0.01) {
330
303
  *
331
304
  * Returns undefined if the string cannot be parsed.
332
305
  */
333
- function parseEntityID(entityID) {
306
+ export function parseEntityID(entityID) {
334
307
  const entityIDArray = entityID.split(".");
335
308
  if (entityIDArray.length !== 3) {
336
309
  return undefined;
@@ -341,9 +314,9 @@ function parseEntityID(entityID) {
341
314
  || subTypeString === undefined) {
342
315
  return undefined;
343
316
  }
344
- const entityType = (0, types_1.parseIntSafe)(entityTypeString);
345
- const variant = (0, types_1.parseIntSafe)(variantString);
346
- const subType = (0, types_1.parseIntSafe)(subTypeString);
317
+ const entityType = parseIntSafe(entityTypeString);
318
+ const variant = parseIntSafe(variantString);
319
+ const subType = parseIntSafe(subTypeString);
347
320
  if (entityType === undefined
348
321
  || variant === undefined
349
322
  || subType === undefined) {
@@ -359,7 +332,7 @@ function parseEntityID(entityID) {
359
332
  *
360
333
  * Returns undefined if the string cannot be parsed.
361
334
  */
362
- function parseEntityTypeVariantString(entityTypeVariantString) {
335
+ export function parseEntityTypeVariantString(entityTypeVariantString) {
363
336
  const entityTypeVariantArray = entityTypeVariantString.split(".");
364
337
  if (entityTypeVariantArray.length !== 2) {
365
338
  return undefined;
@@ -368,8 +341,8 @@ function parseEntityTypeVariantString(entityTypeVariantString) {
368
341
  if (entityTypeString === undefined || variantString === undefined) {
369
342
  return undefined;
370
343
  }
371
- const entityType = (0, types_1.parseIntSafe)(entityTypeString);
372
- const variant = (0, types_1.parseIntSafe)(variantString);
344
+ const entityType = parseIntSafe(entityTypeString);
345
+ const variant = parseIntSafe(variantString);
373
346
  if (entityType === undefined || variant === undefined) {
374
347
  return undefined;
375
348
  }
@@ -385,7 +358,7 @@ function parseEntityTypeVariantString(entityTypeVariantString) {
385
358
  * @param cap Optional. If specified, will only remove the given amount of collectibles.
386
359
  * @returns An array of the entities that were removed.
387
360
  */
388
- function removeAllMatchingEntities(entityType, entityVariant = -1, entitySubType = -1, cap) {
361
+ export function removeAllMatchingEntities(entityType, entityVariant = -1, entitySubType = -1, cap) {
389
362
  const entities = getEntities(entityType, entityVariant, entitySubType);
390
363
  return removeEntities(entities, cap);
391
364
  }
@@ -396,7 +369,7 @@ function removeAllMatchingEntities(entityType, entityVariant = -1, entitySubType
396
369
  * @param cap Optional. If specified, will only remove the given amount of entities.
397
370
  * @returns An array of the entities that were removed.
398
371
  */
399
- function removeEntities(entities, cap) {
372
+ export function removeEntities(entities, cap) {
400
373
  if (entities.length === 0) {
401
374
  return [];
402
375
  }
@@ -418,9 +391,9 @@ function removeEntities(entities, cap) {
418
391
  * @returns If the game failed to reroll the enemy, returns undefined. Otherwise, returns the
419
392
  * rerolled entity.
420
393
  */
421
- function rerollEnemy(entity) {
394
+ export function rerollEnemy(entity) {
422
395
  const oldEntities = getEntities();
423
- const wasRerolled = cachedClasses_1.game.RerollEnemy(entity);
396
+ const wasRerolled = game.RerollEnemy(entity);
424
397
  if (!wasRerolled) {
425
398
  return undefined;
426
399
  }
@@ -436,7 +409,7 @@ function rerollEnemy(entity) {
436
409
  * want to make it appear as if an entity is taking damage without actually dealing any damage to
437
410
  * it.
438
411
  */
439
- function setEntityDamageFlash(entity) {
412
+ export function setEntityDamageFlash(entity) {
440
413
  entity.SetColor(DAMAGE_FLASH_COLOR, 2, 0);
441
414
  }
442
415
  /**
@@ -446,16 +419,16 @@ function setEntityDamageFlash(entity) {
446
419
  * @param entity The entity to set.
447
420
  * @param alpha A value between 0 and 1 that represents the fade amount.
448
421
  */
449
- function setEntityOpacity(entity, alpha) {
422
+ export function setEntityOpacity(entity, alpha) {
450
423
  const sprite = entity.GetSprite();
451
- (0, sprites_1.setSpriteOpacity)(sprite, alpha);
424
+ setSpriteOpacity(sprite, alpha);
452
425
  }
453
- function setEntityRandomColor(entity) {
454
- const seed = entity.InitSeed === 0 ? (0, rng_1.getRandomSeed)() : entity.InitSeed;
455
- const rng = (0, rng_1.newRNG)(seed);
456
- const r = (0, random_1.getRandom)(rng);
457
- const g = (0, random_1.getRandom)(rng);
458
- const b = (0, random_1.getRandom)(rng);
426
+ export function setEntityRandomColor(entity) {
427
+ const seed = entity.InitSeed === 0 ? getRandomSeed() : entity.InitSeed;
428
+ const rng = newRNG(seed);
429
+ const r = getRandom(rng);
430
+ const g = getRandom(rng);
431
+ const b = getRandom(rng);
459
432
  const color = Color(r, g, b);
460
433
  entity.SetColor(color, 100_000, 100_000, false, false);
461
434
  }
@@ -475,20 +448,20 @@ function setEntityRandomColor(entity) {
475
448
  * entity. Default is undefined, which will make the entity spawn with a random
476
449
  * seed.
477
450
  */
478
- function spawn(entityType, variant, subType, positionOrGridIndex, velocity = constants_1.VectorZero, spawner, seedOrRNG) {
479
- const room = cachedClasses_1.game.GetRoom();
451
+ export function spawn(entityType, variant, subType, positionOrGridIndex, velocity = VectorZero, spawner, seedOrRNG) {
452
+ const room = game.GetRoom();
480
453
  // We do an explicit check to prevent run-time errors in Lua environments.
481
454
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
482
455
  if (positionOrGridIndex === undefined) {
483
456
  const entityID = getEntityIDFromConstituents(entityType, variant, subType);
484
457
  error(`Failed to spawn entity ${entityID} since an undefined position was passed to the "spawn" function.`);
485
458
  }
486
- const position = (0, vector_1.isVector)(positionOrGridIndex)
459
+ const position = isVector(positionOrGridIndex)
487
460
  ? positionOrGridIndex
488
461
  : room.GetGridPosition(positionOrGridIndex);
489
- seedOrRNG ??= (0, rng_1.newRNG)();
490
- const seed = (0, rng_1.isRNG)(seedOrRNG) ? seedOrRNG.Next() : seedOrRNG;
491
- return cachedClasses_1.game.Spawn(entityType, variant, position, velocity, spawner, subType, seed);
462
+ seedOrRNG ??= newRNG();
463
+ const seed = isRNG(seedOrRNG) ? seedOrRNG.Next() : seedOrRNG;
464
+ return game.Spawn(entityType, variant, position, velocity, spawner, subType, seed);
492
465
  }
493
466
  /**
494
467
  * Helper function to spawn the entity corresponding to an `EntityID`.
@@ -501,7 +474,7 @@ function spawn(entityType, variant, subType, positionOrGridIndex, velocity = con
501
474
  * entity. Default is undefined, which will make the entity spawn with a random
502
475
  * seed using the `Isaac.Spawn` method.
503
476
  */
504
- function spawnEntityID(entityID, positionOrGridIndex, velocity = constants_1.VectorZero, spawner, seedOrRNG) {
477
+ export function spawnEntityID(entityID, positionOrGridIndex, velocity = VectorZero, spawner, seedOrRNG) {
505
478
  const [entityType, variant, subType] = getConstituentsFromEntityID(entityID);
506
479
  return spawn(entityType, variant, subType, positionOrGridIndex, velocity, spawner, seedOrRNG);
507
480
  }
@@ -509,21 +482,21 @@ function spawnEntityID(entityID, positionOrGridIndex, velocity = constants_1.Vec
509
482
  * Helper function to spawn an entity. Use this instead of the `Game.Spawn` method if you do not
510
483
  * need to specify the velocity or spawner.
511
484
  */
512
- function spawnWithSeed(entityType, variant, subType, positionOrGridIndex, seedOrRNG, velocity = constants_1.VectorZero, spawner) {
485
+ export function spawnWithSeed(entityType, variant, subType, positionOrGridIndex, seedOrRNG, velocity = VectorZero, spawner) {
513
486
  return spawn(entityType, variant, subType, positionOrGridIndex, velocity, spawner, seedOrRNG);
514
487
  }
515
488
  function setPrimitiveEntityFields(entity, metatable, entityFields) {
516
489
  const propGetTable = metatable.get("__propget");
517
- (0, utils_1.assertDefined)(propGetTable, 'Failed to get the "__propget" table for an entity.');
490
+ assertDefined(propGetTable, 'Failed to get the "__propget" table for an entity.');
518
491
  for (const [key] of propGetTable) {
519
492
  // The values of this table are functions. Thus, we use the key to index the original entity.
520
493
  const indexKey = key;
521
494
  const value = entity[indexKey];
522
- if ((0, types_1.isPrimitive)(value)) {
495
+ if (isPrimitive(value)) {
523
496
  entityFields.set(indexKey, value);
524
497
  }
525
- else if ((0, vector_1.isVector)(value)) {
526
- entityFields.set(indexKey, (0, vector_1.vectorToString)(value));
498
+ else if (isVector(value)) {
499
+ entityFields.set(indexKey, vectorToString(value));
527
500
  }
528
501
  }
529
502
  }