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,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Consider the following code that uses a number enum:
4
3
  *
@@ -28,36 +27,13 @@
28
27
  *
29
28
  * @module
30
29
  */
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.asCardType = asCardType;
33
- exports.asCollectibleType = asCollectibleType;
34
- exports.asFloat = asFloat;
35
- exports.asInt = asInt;
36
- exports.asLevelStage = asLevelStage;
37
- exports.asNPCState = asNPCState;
38
- exports.asNumber = asNumber;
39
- exports.asPillColor = asPillColor;
40
- exports.asPillEffect = asPillEffect;
41
- exports.asPlayerType = asPlayerType;
42
- exports.asRoomType = asRoomType;
43
- exports.asString = asString;
44
- exports.asTrinketType = asTrinketType;
45
- exports.isBoolean = isBoolean;
46
- exports.isFunction = isFunction;
47
- exports.isInteger = isInteger;
48
- exports.isNumber = isNumber;
49
- exports.isPrimitive = isPrimitive;
50
- exports.isString = isString;
51
- exports.isTable = isTable;
52
- exports.isUserdata = isUserdata;
53
- exports.parseIntSafe = parseIntSafe;
54
30
  /**
55
31
  * Helper function to safely cast an `int` to a `CardType`. (This is better than using the `as`
56
32
  * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
57
33
  *
58
34
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
59
35
  */
60
- function asCardType(num) {
36
+ export function asCardType(num) {
61
37
  return num;
62
38
  }
63
39
  /**
@@ -66,7 +42,7 @@ function asCardType(num) {
66
42
  *
67
43
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
68
44
  */
69
- function asCollectibleType(num) {
45
+ export function asCollectibleType(num) {
70
46
  return num;
71
47
  }
72
48
  /**
@@ -75,7 +51,7 @@ function asCollectibleType(num) {
75
51
  *
76
52
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
77
53
  */
78
- function asFloat(num) {
54
+ export function asFloat(num) {
79
55
  return num;
80
56
  }
81
57
  /**
@@ -84,7 +60,7 @@ function asFloat(num) {
84
60
  *
85
61
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
86
62
  */
87
- function asInt(num) {
63
+ export function asInt(num) {
88
64
  return num;
89
65
  }
90
66
  /**
@@ -93,7 +69,7 @@ function asInt(num) {
93
69
  *
94
70
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
95
71
  */
96
- function asLevelStage(num) {
72
+ export function asLevelStage(num) {
97
73
  return num;
98
74
  }
99
75
  /**
@@ -102,7 +78,7 @@ function asLevelStage(num) {
102
78
  *
103
79
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
104
80
  */
105
- function asNPCState(num) {
81
+ export function asNPCState(num) {
106
82
  return num;
107
83
  }
108
84
  /**
@@ -111,7 +87,7 @@ function asNPCState(num) {
111
87
  *
112
88
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
113
89
  */
114
- function asNumber(num) {
90
+ export function asNumber(num) {
115
91
  return num;
116
92
  }
117
93
  /**
@@ -120,7 +96,7 @@ function asNumber(num) {
120
96
  *
121
97
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
122
98
  */
123
- function asPillColor(num) {
99
+ export function asPillColor(num) {
124
100
  return num;
125
101
  }
126
102
  /**
@@ -129,7 +105,7 @@ function asPillColor(num) {
129
105
  *
130
106
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
131
107
  */
132
- function asPillEffect(num) {
108
+ export function asPillEffect(num) {
133
109
  return num;
134
110
  }
135
111
  /**
@@ -138,7 +114,7 @@ function asPillEffect(num) {
138
114
  *
139
115
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
140
116
  */
141
- function asPlayerType(num) {
117
+ export function asPlayerType(num) {
142
118
  return num;
143
119
  }
144
120
  /**
@@ -147,7 +123,7 @@ function asPlayerType(num) {
147
123
  *
148
124
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
149
125
  */
150
- function asRoomType(num) {
126
+ export function asRoomType(num) {
151
127
  return num;
152
128
  }
153
129
  /**
@@ -156,7 +132,7 @@ function asRoomType(num) {
156
132
  *
157
133
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
158
134
  */
159
- function asString(str) {
135
+ export function asString(str) {
160
136
  return str;
161
137
  }
162
138
  /**
@@ -165,17 +141,17 @@ function asString(str) {
165
141
  *
166
142
  * This is useful to satisfy the "complete/strict-enums" ESLint rule.
167
143
  */
168
- function asTrinketType(num) {
144
+ export function asTrinketType(num) {
169
145
  return num;
170
146
  }
171
- function isBoolean(variable) {
147
+ export function isBoolean(variable) {
172
148
  return typeof variable === "boolean";
173
149
  }
174
150
  // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
175
- function isFunction(variable) {
151
+ export function isFunction(variable) {
176
152
  return typeof variable === "function";
177
153
  }
178
- function isInteger(variable) {
154
+ export function isInteger(variable) {
179
155
  if (!isNumber(variable)) {
180
156
  return false;
181
157
  }
@@ -183,24 +159,24 @@ function isInteger(variable) {
183
159
  // eslint-disable-next-line unicorn/prefer-number-is-safe-integer
184
160
  return variable === Math.floor(variable);
185
161
  }
186
- function isNumber(variable) {
162
+ export function isNumber(variable) {
187
163
  return typeof variable === "number";
188
164
  }
189
165
  /** Helper function to detect if a variable is a boolean, number, or string. */
190
- function isPrimitive(variable) {
166
+ export function isPrimitive(variable) {
191
167
  const variableType = typeof variable;
192
168
  return (variableType === "boolean"
193
169
  || variableType === "number"
194
170
  || variableType === "string");
195
171
  }
196
- function isString(variable) {
172
+ export function isString(variable) {
197
173
  return typeof variable === "string";
198
174
  }
199
- function isTable(variable) {
175
+ export function isTable(variable) {
200
176
  // We cannot use `typeof` here since "table" is not a JavaScript type.
201
177
  return type(variable) === "table";
202
178
  }
203
- function isUserdata(variable) {
179
+ export function isUserdata(variable) {
204
180
  // We cannot use `typeof` here since "userdata" is not a JavaScript type.
205
181
  return type(variable) === "userdata";
206
182
  }
@@ -212,7 +188,7 @@ function isUserdata(variable) {
212
188
  *
213
189
  * This is named `parseIntSafe` in order to match the helper function from `complete-common`.
214
190
  */
215
- function parseIntSafe(string) {
191
+ export function parseIntSafe(string) {
216
192
  if (!isString(string)) {
217
193
  return undefined;
218
194
  }
@@ -1,27 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getHeartRowLength = getHeartRowLength;
4
- exports.getHeartsUIWidth = getHeartsUIWidth;
5
- exports.getHUDOffsetVector = getHUDOffsetVector;
6
- exports.getScreenBottomCenterPos = getScreenBottomCenterPos;
7
- exports.getScreenBottomLeftPos = getScreenBottomLeftPos;
8
- exports.getScreenBottomRightPos = getScreenBottomRightPos;
9
- exports.getScreenBottomY = getScreenBottomY;
10
- exports.getScreenCenterPos = getScreenCenterPos;
11
- exports.getScreenRightX = getScreenRightX;
12
- exports.getScreenTopCenterPos = getScreenTopCenterPos;
13
- exports.getScreenTopLeftPos = getScreenTopLeftPos;
14
- exports.getScreenTopRightPos = getScreenTopRightPos;
15
- exports.getVisibleHearts = getVisibleHearts;
16
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
17
- const cachedClasses_1 = require("../core/cachedClasses");
18
- const constants_1 = require("../core/constants");
19
- const vector_1 = require("./vector");
1
+ import { CollectibleType, LevelCurse } from "isaac-typescript-definitions";
2
+ import { game } from "../core/cachedClasses";
3
+ import { UI_HEART_WIDTH, VectorZero } from "../core/constants";
4
+ import { copyVector } from "./vector";
20
5
  /**
21
6
  * Returns how many hearts are in the heart UI row. If the player has more than 6 hearts, this
22
7
  * function will return 6.
23
8
  */
24
- function getHeartRowLength(player) {
9
+ export function getHeartRowLength(player) {
25
10
  const maxHearts = player.GetMaxHearts();
26
11
  const soulHearts = player.GetSoulHearts();
27
12
  const boneHearts = player.GetBoneHearts();
@@ -37,30 +22,30 @@ function getHeartRowLength(player) {
37
22
  * drawing UI elements to the right of where the player's hearts are. Make sure to use this in
38
23
  * combination with the `getHUDOffsetVector` helper function.
39
24
  */
40
- function getHeartsUIWidth() {
41
- const level = cachedClasses_1.game.GetLevel();
25
+ export function getHeartsUIWidth() {
26
+ const level = game.GetLevel();
42
27
  const curses = level.GetCurses();
43
28
  const player = Isaac.GetPlayer();
44
29
  const extraLives = player.GetExtraLives();
45
30
  const effects = player.GetEffects();
46
- const hasHolyMantleEffect = effects.HasCollectibleEffect(isaac_typescript_definitions_1.CollectibleType.HOLY_MANTLE);
31
+ const hasHolyMantleEffect = effects.HasCollectibleEffect(CollectibleType.HOLY_MANTLE);
47
32
  let heartRowLength = getHeartRowLength(player);
48
33
  if (hasHolyMantleEffect) {
49
34
  heartRowLength++;
50
35
  }
51
- if (curses === isaac_typescript_definitions_1.LevelCurse.UNKNOWN) {
36
+ if (curses === LevelCurse.UNKNOWN) {
52
37
  heartRowLength = 1;
53
38
  }
54
- let width = heartRowLength * constants_1.UI_HEART_WIDTH;
39
+ let width = heartRowLength * UI_HEART_WIDTH;
55
40
  if (extraLives > 9) {
56
41
  width += 20;
57
- if (player.HasCollectible(isaac_typescript_definitions_1.CollectibleType.GUPPYS_COLLAR)) {
42
+ if (player.HasCollectible(CollectibleType.GUPPYS_COLLAR)) {
58
43
  width += 6;
59
44
  }
60
45
  }
61
46
  else if (extraLives > 0) {
62
47
  width += 16;
63
- if (player.HasCollectible(isaac_typescript_definitions_1.CollectibleType.GUPPYS_COLLAR)) {
48
+ if (player.HasCollectible(CollectibleType.GUPPYS_COLLAR)) {
64
49
  width += 4;
65
50
  }
66
51
  }
@@ -76,12 +61,12 @@ function getHeartsUIWidth() {
76
61
  * - If the user does not have a HUD offset configured, this function will return `Vector(0, 0)`.
77
62
  * - If the user has a HUD offset of 1.0 configured, this function will return `Vector(20, 12)`.
78
63
  */
79
- function getHUDOffsetVector() {
64
+ export function getHUDOffsetVector() {
80
65
  // Convert e.g. 0.4 to 4.
81
66
  const hudOffset = Math.floor(Options.HUDOffset * 10);
82
67
  // Expected values are integers between 1 and 10.
83
68
  if (hudOffset < 1 || hudOffset > 10) {
84
- return (0, vector_1.copyVector)(constants_1.VectorZero);
69
+ return copyVector(VectorZero);
85
70
  }
86
71
  const x = hudOffset * 2;
87
72
  let y = hudOffset;
@@ -93,39 +78,39 @@ function getHUDOffsetVector() {
93
78
  }
94
79
  return Vector(x, y);
95
80
  }
96
- function getScreenBottomCenterPos() {
81
+ export function getScreenBottomCenterPos() {
97
82
  const bottomRightPos = getScreenBottomRightPos();
98
83
  return Vector(bottomRightPos.X / 2, bottomRightPos.Y);
99
84
  }
100
- function getScreenBottomLeftPos() {
85
+ export function getScreenBottomLeftPos() {
101
86
  const bottomRightPos = getScreenBottomRightPos();
102
87
  return Vector(0, bottomRightPos.Y);
103
88
  }
104
- function getScreenBottomRightPos() {
89
+ export function getScreenBottomRightPos() {
105
90
  const screenWidth = Isaac.GetScreenWidth();
106
91
  const screenHeight = Isaac.GetScreenHeight();
107
92
  return Vector(screenWidth, screenHeight);
108
93
  }
109
- function getScreenBottomY() {
94
+ export function getScreenBottomY() {
110
95
  const bottomRightPos = getScreenBottomRightPos();
111
96
  return bottomRightPos.Y;
112
97
  }
113
- function getScreenCenterPos() {
98
+ export function getScreenCenterPos() {
114
99
  const bottomRightPos = getScreenBottomRightPos();
115
100
  return bottomRightPos.div(2);
116
101
  }
117
- function getScreenRightX() {
102
+ export function getScreenRightX() {
118
103
  const bottomRightPos = getScreenBottomRightPos();
119
104
  return bottomRightPos.X;
120
105
  }
121
- function getScreenTopCenterPos() {
106
+ export function getScreenTopCenterPos() {
122
107
  const bottomRightPos = getScreenBottomRightPos();
123
108
  return Vector(bottomRightPos.X / 2, 0);
124
109
  }
125
- function getScreenTopLeftPos() {
126
- return (0, vector_1.copyVector)(constants_1.VectorZero);
110
+ export function getScreenTopLeftPos() {
111
+ return copyVector(VectorZero);
127
112
  }
128
- function getScreenTopRightPos() {
113
+ export function getScreenTopRightPos() {
129
114
  const bottomRightPos = getScreenBottomRightPos();
130
115
  return Vector(bottomRightPos.X, 0);
131
116
  }
@@ -134,7 +119,7 @@ function getScreenTopRightPos() {
134
119
  *
135
120
  * This function is originally from piber20 Helper.
136
121
  */
137
- function getVisibleHearts(player) {
122
+ export function getVisibleHearts(player) {
138
123
  const effectiveMaxHearts = player.GetEffectiveMaxHearts();
139
124
  const soulHearts = player.GetSoulHearts();
140
125
  const boneHearts = player.GetBoneHearts();
@@ -1,28 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertDefined = assertDefined;
4
- exports.assertNotNull = assertNotNull;
5
- exports.eRange = eRange;
6
- exports.getTraversalDescription = getTraversalDescription;
7
- exports.inRange = inRange;
8
- exports.iRange = iRange;
9
- exports.isMultiplayer = isMultiplayer;
10
- exports.isRepentance = isRepentance;
11
- exports.isRepentancePlus = isRepentancePlus;
12
- exports.isRepentogon = isRepentogon;
13
- exports.repeat = repeat;
14
- exports.todo = todo;
15
- const cachedClasses_1 = require("../core/cachedClasses");
16
- const ReadonlySet_1 = require("../types/ReadonlySet");
17
- const playerIndex_1 = require("./playerIndex");
18
- const types_1 = require("./types");
1
+ import { game } from "../core/cachedClasses";
2
+ import { ReadonlySet } from "../types/ReadonlySet";
3
+ import { getAllPlayers } from "./playerIndex";
4
+ import { isFunction } from "./types";
19
5
  /**
20
6
  * Helper function to throw an error (using the `error` Lua function) if the provided value is equal
21
7
  * to `undefined`.
22
8
  *
23
9
  * This is useful to have TypeScript narrow a `T | undefined` value to `T` in a concise way.
24
10
  */
25
- function assertDefined(value, ...[msg]) {
11
+ export function assertDefined(value, ...[msg]) {
26
12
  if (value === undefined) {
27
13
  error(msg);
28
14
  }
@@ -33,7 +19,7 @@ function assertDefined(value, ...[msg]) {
33
19
  *
34
20
  * This is useful to have TypeScript narrow a `T | null` value to `T` in a concise way.
35
21
  */
36
- function assertNotNull(value, ...[msg]) {
22
+ export function assertNotNull(value, ...[msg]) {
37
23
  if (value === null) {
38
24
  error(msg);
39
25
  }
@@ -60,7 +46,7 @@ function assertNotNull(value, ...[msg]) {
60
46
  * first argument will be the end.
61
47
  * @param increment Optional. The increment to use. Default is 1.
62
48
  */
63
- function eRange(start, end, increment = 1) {
49
+ export function eRange(start, end, increment = 1) {
64
50
  if (end === undefined) {
65
51
  // eslint-disable-next-line unicorn/no-useless-recursion
66
52
  return eRange(0, start, increment);
@@ -75,7 +61,7 @@ function eRange(start, end, increment = 1) {
75
61
  * Helper function to log what is happening in functions that recursively move through nested data
76
62
  * structures.
77
63
  */
78
- function getTraversalDescription(key, traversalDescription) {
64
+ export function getTraversalDescription(key, traversalDescription) {
79
65
  if (traversalDescription !== "") {
80
66
  traversalDescription += " --> ";
81
67
  }
@@ -92,7 +78,7 @@ function getTraversalDescription(key, traversalDescription) {
92
78
  * @param start The start of the range to check.
93
79
  * @param end The end of the range to check.
94
80
  */
95
- function inRange(num, start, end) {
81
+ export function inRange(num, start, end) {
96
82
  return num >= start && num <= end;
97
83
  }
98
84
  /**
@@ -116,7 +102,7 @@ function inRange(num, start, end) {
116
102
  * first argument will be the end.
117
103
  * @param increment Optional. The increment to use. Default is 1.
118
104
  */
119
- function iRange(start, end, increment = 1) {
105
+ export function iRange(start, end, increment = 1) {
120
106
  if (end === undefined) {
121
107
  // eslint-disable-next-line unicorn/no-useless-recursion
122
108
  return iRange(0, start, increment);
@@ -133,10 +119,10 @@ function iRange(start, end, increment = 1) {
133
119
  * `ControllerIndex` will not be set properly. As a workaround, you can use it in the
134
120
  * `POST_PLAYER_INIT_FIRST` callback (or some other callback like `POST_UPDATE`).
135
121
  */
136
- function isMultiplayer() {
137
- const players = (0, playerIndex_1.getAllPlayers)();
122
+ export function isMultiplayer() {
123
+ const players = getAllPlayers();
138
124
  const controllerIndexes = players.map((player) => player.ControllerIndex);
139
- const controllerIndexesSet = new ReadonlySet_1.ReadonlySet(controllerIndexes);
125
+ const controllerIndexesSet = new ReadonlySet(controllerIndexes);
140
126
  return controllerIndexesSet.size > 1;
141
127
  }
142
128
  /**
@@ -147,13 +133,13 @@ function isMultiplayer() {
147
133
  * Specifically, this function checks for the `Sprite.GetAnimation` method:
148
134
  * https://bindingofisaacrebirth.fandom.com/wiki/V1.06.J818#Lua_Changes
149
135
  */
150
- function isRepentance() {
136
+ export function isRepentance() {
151
137
  const metatable = getmetatable(Sprite);
152
138
  assertDefined(metatable, "Failed to get the metatable of the Sprite global table.");
153
139
  const classTable = metatable.get("__class");
154
140
  assertDefined(classTable, 'Failed to get the "__class" key of the Sprite metatable.');
155
141
  const getAnimation = classTable.get("GetAnimation");
156
- return (0, types_1.isFunction)(getAnimation);
142
+ return isFunction(getAnimation);
157
143
  }
158
144
  /**
159
145
  * Helper function to check if the player has the Repentance+ DLC installed.
@@ -164,12 +150,12 @@ function isRepentance() {
164
150
  * Specifically, this function checks for `Room:DamageGridWithSource` method:
165
151
  * https://bindingofisaacrebirth.wiki.gg/wiki/The_Binding_of_Isaac:_Repentance%2B#Modding_Changes
166
152
  */
167
- function isRepentancePlus() {
168
- const room = cachedClasses_1.game.GetRoom();
153
+ export function isRepentancePlus() {
154
+ const room = game.GetRoom();
169
155
  const metatable = getmetatable(room);
170
156
  assertDefined(metatable, "Failed to get the metatable of the room class.");
171
157
  const damageGridWithSource = metatable.get("DamageGridWithSource");
172
- return (0, types_1.isFunction)(damageGridWithSource);
158
+ return isFunction(damageGridWithSource);
173
159
  }
174
160
  /**
175
161
  * Helper function to check if the player is using REPENTOGON, an exe-hack which expands the modding
@@ -181,13 +167,13 @@ function isRepentancePlus() {
181
167
  * Specifically, this function checks for the `Sprite.Continue` method:
182
168
  * https://repentogon.com/Sprite.html#continue
183
169
  */
184
- function isRepentogon() {
170
+ export function isRepentogon() {
185
171
  const metatable = getmetatable(Sprite);
186
172
  assertDefined(metatable, "Failed to get the metatable of the Sprite global table.");
187
173
  const classTable = metatable.get("__class");
188
174
  assertDefined(classTable, 'Failed to get the "__class" key of the Sprite metatable.');
189
175
  const getAnimation = classTable.get("Continue");
190
- return (0, types_1.isFunction)(getAnimation);
176
+ return isFunction(getAnimation);
191
177
  }
192
178
  /**
193
179
  * Helper function to repeat code N times. This is faster to type and cleaner than using a for loop.
@@ -209,7 +195,7 @@ function isRepentogon() {
209
195
  * });
210
196
  * ```
211
197
  */
212
- function repeat(num, func) {
198
+ export function repeat(num, func) {
213
199
  for (let i = 0; i < num; i++) {
214
200
  func(i);
215
201
  }
@@ -230,4 +216,4 @@ function repeat(num, func) {
230
216
  * @allowEmptyVariadic
231
217
  */
232
218
  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
233
- function todo(...args) { }
219
+ export function todo(...args) { }
@@ -1,28 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.copyVector = copyVector;
4
- exports.deserializeVector = deserializeVector;
5
- exports.doesVectorHaveLength = doesVectorHaveLength;
6
- exports.getClosestVectorTo = getClosestVectorTo;
7
- exports.getRandomVector = getRandomVector;
8
- exports.isSerializedVector = isSerializedVector;
9
- exports.isVector = isVector;
10
- exports.serializeVector = serializeVector;
11
- exports.vectorEquals = vectorEquals;
12
- exports.vectorToDirection = vectorToDirection;
13
- exports.vectorToString = vectorToString;
14
- const SerializationBrand_1 = require("../enums/private/SerializationBrand");
15
- const direction_1 = require("./direction");
16
- const isaacAPIClass_1 = require("./isaacAPIClass");
17
- const random_1 = require("./random");
18
- const rng_1 = require("./rng");
19
- const table_1 = require("./table");
20
- const types_1 = require("./types");
21
- const utils_1 = require("./utils");
1
+ import { SerializationBrand } from "../enums/private/SerializationBrand";
2
+ import { angleToDirection } from "./direction";
3
+ import { isIsaacAPIClassOfType, isaacAPIClassEquals } from "./isaacAPIClass";
4
+ import { getRandomFloat } from "./random";
5
+ import { isRNG, newRNG } from "./rng";
6
+ import { copyUserdataValuesToTable, getNumbersFromTable, tableHasKeys, } from "./table";
7
+ import { isTable } from "./types";
8
+ import { assertDefined } from "./utils";
22
9
  const OBJECT_NAME = "Vector";
23
10
  const KEYS = ["X", "Y"];
24
11
  /** Helper function to copy a `Vector` Isaac API class. */
25
- function copyVector(vector) {
12
+ export function copyVector(vector) {
26
13
  if (!isVector(vector)) {
27
14
  error(`Failed to copy a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`);
28
15
  }
@@ -32,13 +19,13 @@ function copyVector(vector) {
32
19
  * Helper function to convert a `SerializedVector` object to a normal `RNG` object. (This is used by
33
20
  * the save data manager when reading data from the "save#.dat" file.)
34
21
  */
35
- function deserializeVector(vector) {
36
- if (!(0, types_1.isTable)(vector)) {
22
+ export function deserializeVector(vector) {
23
+ if (!isTable(vector)) {
37
24
  error(`Failed to deserialize a ${OBJECT_NAME} object since the provided object was not a Lua table.`);
38
25
  }
39
- const [x, y] = (0, table_1.getNumbersFromTable)(vector, OBJECT_NAME, ...KEYS);
40
- (0, utils_1.assertDefined)(x, `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: X`);
41
- (0, utils_1.assertDefined)(y, `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: Y`);
26
+ const [x, y] = getNumbersFromTable(vector, OBJECT_NAME, ...KEYS);
27
+ assertDefined(x, `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: X`);
28
+ assertDefined(y, `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: Y`);
42
29
  return Vector(x, y);
43
30
  }
44
31
  /**
@@ -52,7 +39,7 @@ function deserializeVector(vector) {
52
39
  * @param threshold Optional. The threshold from 0 to consider to be a non-zero vector. Default is
53
40
  * 0.01.
54
41
  */
55
- function doesVectorHaveLength(vector, threshold = 0.01) {
42
+ export function doesVectorHaveLength(vector, threshold = 0.01) {
56
43
  return vector.Length() >= threshold;
57
44
  }
58
45
  /**
@@ -62,7 +49,7 @@ function doesVectorHaveLength(vector, threshold = 0.01) {
62
49
  * @param referenceVector The vector to compare against.
63
50
  * @param vectors The array of vectors to look through.
64
51
  */
65
- function getClosestVectorTo(referenceVector, vectors) {
52
+ export function getClosestVectorTo(referenceVector, vectors) {
66
53
  let closestVector;
67
54
  let closestDistance = Infinity;
68
55
  for (const vector of vectors) {
@@ -88,37 +75,37 @@ function getClosestVectorTo(referenceVector, vectors) {
88
75
  * `RNG.Next` method will be called. If `undefined` is provided, it will default to
89
76
  * a random seed.
90
77
  */
91
- function getRandomVector(seedOrRNG) {
92
- const rng = (0, rng_1.isRNG)(seedOrRNG) ? seedOrRNG : (0, rng_1.newRNG)(seedOrRNG);
93
- const x = (0, random_1.getRandomFloat)(-1, 1, rng);
94
- const y = (0, random_1.getRandomFloat)(-1, 1, rng);
78
+ export function getRandomVector(seedOrRNG) {
79
+ const rng = isRNG(seedOrRNG) ? seedOrRNG : newRNG(seedOrRNG);
80
+ const x = getRandomFloat(-1, 1, rng);
81
+ const y = getRandomFloat(-1, 1, rng);
95
82
  return Vector(x, y);
96
83
  }
97
84
  /**
98
85
  * Used to determine is the given table is a serialized `Vector` object created by the `deepCopy`
99
86
  * function.
100
87
  */
101
- function isSerializedVector(object) {
102
- if (!(0, types_1.isTable)(object)) {
88
+ export function isSerializedVector(object) {
89
+ if (!isTable(object)) {
103
90
  return false;
104
91
  }
105
- return (0, table_1.tableHasKeys)(object, ...KEYS) && object.has(SerializationBrand_1.SerializationBrand.VECTOR);
92
+ return tableHasKeys(object, ...KEYS) && object.has(SerializationBrand.VECTOR);
106
93
  }
107
94
  /** Helper function to check if something is an instantiated `Vector` object. */
108
- function isVector(object) {
109
- return (0, isaacAPIClass_1.isIsaacAPIClassOfType)(object, OBJECT_NAME);
95
+ export function isVector(object) {
96
+ return isIsaacAPIClassOfType(object, OBJECT_NAME);
110
97
  }
111
98
  /**
112
99
  * Helper function to convert a `Vector` object to a `SerializedVector` object. (This is used by the
113
100
  * save data manager when writing data from the "save#.dat" file.)
114
101
  */
115
- function serializeVector(vector) {
102
+ export function serializeVector(vector) {
116
103
  if (!isVector(vector)) {
117
104
  error(`Failed to serialize a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`);
118
105
  }
119
106
  const vectorTable = new LuaMap();
120
- (0, table_1.copyUserdataValuesToTable)(vector, KEYS, vectorTable);
121
- vectorTable.set(SerializationBrand_1.SerializationBrand.VECTOR, "");
107
+ copyUserdataValuesToTable(vector, KEYS, vectorTable);
108
+ vectorTable.set(SerializationBrand.VECTOR, "");
122
109
  return vectorTable;
123
110
  }
124
111
  /**
@@ -127,13 +114,13 @@ function serializeVector(vector) {
127
114
  * This function is useful because vectors are not directly comparable. In other words, `Vector(1.2)
128
115
  * === Vector(1.2)` will be equal to false.
129
116
  */
130
- function vectorEquals(vector1, vector2) {
131
- return (0, isaacAPIClass_1.isaacAPIClassEquals)(vector1, vector2, KEYS);
117
+ export function vectorEquals(vector1, vector2) {
118
+ return isaacAPIClassEquals(vector1, vector2, KEYS);
132
119
  }
133
120
  /** Helper function for finding out which way a vector is pointing. */
134
- function vectorToDirection(vector) {
121
+ export function vectorToDirection(vector) {
135
122
  const angleDegrees = vector.GetAngleDegrees();
136
- return (0, direction_1.angleToDirection)(angleDegrees);
123
+ return angleToDirection(angleDegrees);
137
124
  }
138
125
  /**
139
126
  * Helper function to convert a vector to a string.
@@ -142,7 +129,7 @@ function vectorToDirection(vector) {
142
129
  * @param round Optional. If true, will round the vector values to the nearest integer. Default is
143
130
  * false.
144
131
  */
145
- function vectorToString(vector, round = false) {
132
+ export function vectorToString(vector, round = false) {
146
133
  const x = round ? Math.round(vector.X) : vector.X;
147
134
  const y = round ? Math.round(vector.Y) : vector.Y;
148
135
  return `(${x}, ${y})`;