isaacscript-common 87.9.7 → 87.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/dist/cachedEnumValues.js +29 -32
  2. package/dist/callbackClasses.js +142 -289
  3. package/dist/callbacks.js +147 -183
  4. package/dist/classes/DefaultMap.js +4 -8
  5. package/dist/classes/ModFeature.js +21 -25
  6. package/dist/classes/ModUpgraded.js +43 -47
  7. package/dist/classes/callbacks/EntityTakeDmgFilter.js +6 -10
  8. package/dist/classes/callbacks/EntityTakeDmgPlayer.js +7 -11
  9. package/dist/classes/callbacks/InputActionFilter.js +4 -8
  10. package/dist/classes/callbacks/InputActionPlayer.js +4 -8
  11. package/dist/classes/callbacks/PostAmbushFinished.js +10 -14
  12. package/dist/classes/callbacks/PostAmbushStarted.js +10 -14
  13. package/dist/classes/callbacks/PostBombExploded.js +8 -12
  14. package/dist/classes/callbacks/PostBombInitFilter.js +6 -10
  15. package/dist/classes/callbacks/PostBombInitLate.js +6 -10
  16. package/dist/classes/callbacks/PostBombRenderFilter.js +6 -10
  17. package/dist/classes/callbacks/PostBombUpdateFilter.js +6 -10
  18. package/dist/classes/callbacks/PostBoneSwing.js +7 -11
  19. package/dist/classes/callbacks/PostCollectibleEmpty.js +6 -10
  20. package/dist/classes/callbacks/PostCursedTeleport.js +30 -34
  21. package/dist/classes/callbacks/PostCustomRevive.js +4 -8
  22. package/dist/classes/callbacks/PostDiceRoomActivated.js +9 -13
  23. package/dist/classes/callbacks/PostDoorRender.js +8 -12
  24. package/dist/classes/callbacks/PostDoorUpdate.js +8 -12
  25. package/dist/classes/callbacks/PostEffectInitFilter.js +6 -10
  26. package/dist/classes/callbacks/PostEffectInitLate.js +6 -10
  27. package/dist/classes/callbacks/PostEffectRenderFilter.js +6 -10
  28. package/dist/classes/callbacks/PostEffectStateChanged.js +8 -12
  29. package/dist/classes/callbacks/PostEffectUpdateFilter.js +6 -10
  30. package/dist/classes/callbacks/PostEntityKillFilter.js +6 -10
  31. package/dist/classes/callbacks/PostEntityRemoveFilter.js +6 -10
  32. package/dist/classes/callbacks/PostEsauJr.js +4 -8
  33. package/dist/classes/callbacks/PostFamiliarInitFilter.js +6 -10
  34. package/dist/classes/callbacks/PostFamiliarInitLate.js +6 -10
  35. package/dist/classes/callbacks/PostFamiliarRenderFilter.js +6 -10
  36. package/dist/classes/callbacks/PostFamiliarStateChanged.js +8 -12
  37. package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +6 -10
  38. package/dist/classes/callbacks/PostFirstEsauJr.js +4 -8
  39. package/dist/classes/callbacks/PostFirstFlip.js +4 -8
  40. package/dist/classes/callbacks/PostFlip.js +4 -8
  41. package/dist/classes/callbacks/PostGameEndFilter.js +6 -10
  42. package/dist/classes/callbacks/PostGameStartedReordered.js +6 -10
  43. package/dist/classes/callbacks/PostGameStartedReorderedLast.js +6 -10
  44. package/dist/classes/callbacks/PostGreedModeWave.js +7 -11
  45. package/dist/classes/callbacks/PostGridEntityBroken.js +6 -10
  46. package/dist/classes/callbacks/PostGridEntityCollision.js +4 -8
  47. package/dist/classes/callbacks/PostGridEntityCustomBroken.js +6 -10
  48. package/dist/classes/callbacks/PostGridEntityCustomCollision.js +4 -8
  49. package/dist/classes/callbacks/PostGridEntityCustomInit.js +6 -10
  50. package/dist/classes/callbacks/PostGridEntityCustomRemove.js +4 -8
  51. package/dist/classes/callbacks/PostGridEntityCustomRender.js +6 -10
  52. package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +6 -10
  53. package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +6 -10
  54. package/dist/classes/callbacks/PostGridEntityInit.js +6 -10
  55. package/dist/classes/callbacks/PostGridEntityRemove.js +4 -8
  56. package/dist/classes/callbacks/PostGridEntityRender.js +6 -10
  57. package/dist/classes/callbacks/PostGridEntityStateChanged.js +6 -10
  58. package/dist/classes/callbacks/PostGridEntityUpdate.js +6 -10
  59. package/dist/classes/callbacks/PostHolyMantleRemoved.js +15 -19
  60. package/dist/classes/callbacks/PostItemDischarge.js +23 -27
  61. package/dist/classes/callbacks/PostItemPickup.js +6 -10
  62. package/dist/classes/callbacks/PostKeyboardChanged.js +9 -13
  63. package/dist/classes/callbacks/PostKnifeInitFilter.js +6 -10
  64. package/dist/classes/callbacks/PostKnifeInitLate.js +6 -10
  65. package/dist/classes/callbacks/PostKnifeRenderFilter.js +6 -10
  66. package/dist/classes/callbacks/PostKnifeUpdateFilter.js +6 -10
  67. package/dist/classes/callbacks/PostLaserInitFilter.js +6 -10
  68. package/dist/classes/callbacks/PostLaserInitLate.js +6 -10
  69. package/dist/classes/callbacks/PostLaserRenderFilter.js +6 -10
  70. package/dist/classes/callbacks/PostLaserUpdateFilter.js +6 -10
  71. package/dist/classes/callbacks/PostNPCDeathFilter.js +6 -10
  72. package/dist/classes/callbacks/PostNPCInitFilter.js +6 -10
  73. package/dist/classes/callbacks/PostNPCInitLate.js +6 -10
  74. package/dist/classes/callbacks/PostNPCRenderFilter.js +6 -10
  75. package/dist/classes/callbacks/PostNPCStateChanged.js +8 -12
  76. package/dist/classes/callbacks/PostNPCUpdateFilter.js +6 -10
  77. package/dist/classes/callbacks/PostNewLevelReordered.js +6 -10
  78. package/dist/classes/callbacks/PostNewRoomEarly.js +17 -21
  79. package/dist/classes/callbacks/PostNewRoomReordered.js +6 -10
  80. package/dist/classes/callbacks/PostPEffectUpdateReordered.js +6 -10
  81. package/dist/classes/callbacks/PostPickupChanged.js +6 -10
  82. package/dist/classes/callbacks/PostPickupCollect.js +8 -12
  83. package/dist/classes/callbacks/PostPickupInitFilter.js +6 -10
  84. package/dist/classes/callbacks/PostPickupInitFirst.js +10 -14
  85. package/dist/classes/callbacks/PostPickupInitLate.js +6 -10
  86. package/dist/classes/callbacks/PostPickupRenderFilter.js +6 -10
  87. package/dist/classes/callbacks/PostPickupSelectionFilter.js +4 -8
  88. package/dist/classes/callbacks/PostPickupStateChanged.js +8 -12
  89. package/dist/classes/callbacks/PostPickupUpdateFilter.js +6 -10
  90. package/dist/classes/callbacks/PostPitRender.js +8 -12
  91. package/dist/classes/callbacks/PostPitUpdate.js +8 -12
  92. package/dist/classes/callbacks/PostPlayerChangeHealth.js +14 -18
  93. package/dist/classes/callbacks/PostPlayerChangeStat.js +26 -30
  94. package/dist/classes/callbacks/PostPlayerChangeType.js +11 -15
  95. package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +6 -10
  96. package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +6 -10
  97. package/dist/classes/callbacks/PostPlayerFatalDamage.js +24 -28
  98. package/dist/classes/callbacks/PostPlayerInitFirst.js +12 -16
  99. package/dist/classes/callbacks/PostPlayerInitLate.js +9 -13
  100. package/dist/classes/callbacks/PostPlayerRenderReordered.js +6 -10
  101. package/dist/classes/callbacks/PostPlayerUpdateReordered.js +6 -10
  102. package/dist/classes/callbacks/PostPoopRender.js +8 -12
  103. package/dist/classes/callbacks/PostPoopUpdate.js +8 -12
  104. package/dist/classes/callbacks/PostPressurePlateRender.js +8 -12
  105. package/dist/classes/callbacks/PostPressurePlateUpdate.js +8 -12
  106. package/dist/classes/callbacks/PostProjectileInitFilter.js +6 -10
  107. package/dist/classes/callbacks/PostProjectileInitLate.js +6 -10
  108. package/dist/classes/callbacks/PostProjectileKill.js +8 -12
  109. package/dist/classes/callbacks/PostProjectileRenderFilter.js +6 -10
  110. package/dist/classes/callbacks/PostProjectileUpdateFilter.js +6 -10
  111. package/dist/classes/callbacks/PostPurchase.js +21 -25
  112. package/dist/classes/callbacks/PostRockRender.js +8 -12
  113. package/dist/classes/callbacks/PostRockUpdate.js +8 -12
  114. package/dist/classes/callbacks/PostRoomClearChanged.js +9 -13
  115. package/dist/classes/callbacks/PostSacrifice.js +12 -16
  116. package/dist/classes/callbacks/PostSlotAnimationChanged.js +6 -10
  117. package/dist/classes/callbacks/PostSlotCollision.js +8 -12
  118. package/dist/classes/callbacks/PostSlotDestroyed.js +6 -10
  119. package/dist/classes/callbacks/PostSlotInit.js +6 -10
  120. package/dist/classes/callbacks/PostSlotRender.js +6 -10
  121. package/dist/classes/callbacks/PostSlotUpdate.js +6 -10
  122. package/dist/classes/callbacks/PostSpikesRender.js +8 -12
  123. package/dist/classes/callbacks/PostSpikesUpdate.js +8 -12
  124. package/dist/classes/callbacks/PostTNTRender.js +8 -12
  125. package/dist/classes/callbacks/PostTNTUpdate.js +8 -12
  126. package/dist/classes/callbacks/PostTearInitFilter.js +6 -10
  127. package/dist/classes/callbacks/PostTearInitLate.js +6 -10
  128. package/dist/classes/callbacks/PostTearInitVeryLate.js +6 -10
  129. package/dist/classes/callbacks/PostTearKill.js +8 -12
  130. package/dist/classes/callbacks/PostTearRenderFilter.js +6 -10
  131. package/dist/classes/callbacks/PostTearUpdateFilter.js +6 -10
  132. package/dist/classes/callbacks/PostTransformation.js +10 -14
  133. package/dist/classes/callbacks/PostTrinketBreak.js +16 -20
  134. package/dist/classes/callbacks/PostUsePillFilter.js +18 -22
  135. package/dist/classes/callbacks/PreBerserkDeath.js +14 -18
  136. package/dist/classes/callbacks/PreBombCollisionFilter.js +6 -10
  137. package/dist/classes/callbacks/PreCustomRevive.js +6 -10
  138. package/dist/classes/callbacks/PreEntitySpawnFilter.js +4 -8
  139. package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +6 -10
  140. package/dist/classes/callbacks/PreGetPedestal.js +8 -12
  141. package/dist/classes/callbacks/PreItemPickup.js +6 -10
  142. package/dist/classes/callbacks/PreKnifeCollisionFilter.js +6 -10
  143. package/dist/classes/callbacks/PreNPCCollisionFilter.js +6 -10
  144. package/dist/classes/callbacks/PreNPCUpdateFilter.js +6 -10
  145. package/dist/classes/callbacks/PreNewLevel.js +10 -14
  146. package/dist/classes/callbacks/PreProjectileCollisionFilter.js +6 -10
  147. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +4 -8
  148. package/dist/classes/callbacks/PreTearCollisionFilter.js +6 -10
  149. package/dist/classes/features/callbackLogic/CustomGridEntities.js +46 -50
  150. package/dist/classes/features/callbackLogic/CustomRevive.js +28 -32
  151. package/dist/classes/features/callbackLogic/EsauJrDetection.js +11 -15
  152. package/dist/classes/features/callbackLogic/FlipDetection.js +11 -15
  153. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +26 -30
  154. package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +10 -14
  155. package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +6 -10
  156. package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +12 -16
  157. package/dist/classes/features/callbackLogic/ItemPickupDetection.js +17 -21
  158. package/dist/classes/features/callbackLogic/PickupChangeDetection.js +6 -10
  159. package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +39 -43
  160. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +18 -22
  161. package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +17 -21
  162. package/dist/classes/features/callbackLogic/SlotRenderDetection.js +8 -12
  163. package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +9 -13
  164. package/dist/classes/features/other/CharacterHealthConversion.js +13 -17
  165. package/dist/classes/features/other/CharacterStats.js +9 -13
  166. package/dist/classes/features/other/CollectibleItemPoolType.js +17 -21
  167. package/dist/classes/features/other/CustomHotkeys.js +15 -19
  168. package/dist/classes/features/other/CustomItemPools.js +20 -24
  169. package/dist/classes/features/other/CustomPickups.js +15 -19
  170. package/dist/classes/features/other/CustomStages.js +116 -153
  171. package/dist/classes/features/other/CustomTrapdoors.js +119 -123
  172. package/dist/classes/features/other/DebugDisplay.js +77 -81
  173. package/dist/classes/features/other/DeployJSONRoom.js +65 -69
  174. package/dist/classes/features/other/DisableAllSound.js +14 -18
  175. package/dist/classes/features/other/DisableInputs.js +24 -28
  176. package/dist/classes/features/other/EdenStartingStatsHealth.js +36 -40
  177. package/dist/classes/features/other/ExtraConsoleCommands.js +65 -102
  178. package/dist/classes/features/other/FadeInRemover.js +9 -13
  179. package/dist/classes/features/other/FastReset.js +18 -22
  180. package/dist/classes/features/other/FlyingDetection.js +10 -14
  181. package/dist/classes/features/other/ForgottenSwitch.js +8 -12
  182. package/dist/classes/features/other/ItemPoolDetection.js +35 -39
  183. package/dist/classes/features/other/ModdedElementDetection.js +43 -47
  184. package/dist/classes/features/other/ModdedElementSets.js +135 -139
  185. package/dist/classes/features/other/NoSirenSteal.js +7 -11
  186. package/dist/classes/features/other/Pause.js +48 -52
  187. package/dist/classes/features/other/PersistentEntities.js +16 -20
  188. package/dist/classes/features/other/PickupIndexCreation.js +31 -35
  189. package/dist/classes/features/other/PlayerCollectibleTracking.js +18 -22
  190. package/dist/classes/features/other/PonyDetection.js +22 -26
  191. package/dist/classes/features/other/PressInput.js +10 -14
  192. package/dist/classes/features/other/PreventChildEntities.js +6 -10
  193. package/dist/classes/features/other/PreventGridEntityRespawn.js +34 -38
  194. package/dist/classes/features/other/RerunDetection.js +11 -15
  195. package/dist/classes/features/other/RoomClearFrame.js +11 -15
  196. package/dist/classes/features/other/RoomHistory.js +30 -34
  197. package/dist/classes/features/other/RunInNFrames.js +24 -28
  198. package/dist/classes/features/other/RunNextRoom.js +8 -12
  199. package/dist/classes/features/other/RunNextRun.js +8 -12
  200. package/dist/classes/features/other/SaveDataManager.js +61 -65
  201. package/dist/classes/features/other/SpawnRockAltRewards.js +115 -119
  202. package/dist/classes/features/other/StageHistory.js +76 -80
  203. package/dist/classes/features/other/StartAmbush.js +12 -16
  204. package/dist/classes/features/other/TaintedLazarusPlayers.js +10 -14
  205. package/dist/classes/features/other/UnlockAchievementsDetection.js +10 -14
  206. package/dist/classes/features/other/customStages/backdrop.js +68 -71
  207. package/dist/classes/features/other/customStages/constants.js +7 -10
  208. package/dist/classes/features/other/customStages/gridEntities.js +23 -30
  209. package/dist/classes/features/other/customStages/shadows.js +27 -30
  210. package/dist/classes/features/other/customStages/streakText.js +55 -60
  211. package/dist/classes/features/other/customStages/utils.js +13 -17
  212. package/dist/classes/features/other/customStages/v.js +4 -7
  213. package/dist/classes/features/other/customStages/versusScreen.js +46 -50
  214. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +8 -12
  215. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +8 -12
  216. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +8 -12
  217. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +8 -12
  218. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +8 -12
  219. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +8 -12
  220. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +8 -12
  221. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +8 -12
  222. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +8 -12
  223. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +8 -12
  224. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +8 -12
  225. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +8 -12
  226. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +8 -12
  227. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +8 -12
  228. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +8 -12
  229. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +8 -12
  230. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +8 -12
  231. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +8 -12
  232. package/dist/classes/features/other/debugDisplay/utils.js +6 -10
  233. package/dist/classes/features/other/extraConsoleCommands/commands.js +411 -557
  234. package/dist/classes/features/other/extraConsoleCommands/subroutines.js +47 -57
  235. package/dist/classes/features/other/extraConsoleCommands/v.js +1 -4
  236. package/dist/classes/features/other/saveDataManager/constants.js +1 -4
  237. package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +17 -21
  238. package/dist/classes/features/other/saveDataManager/loadFromDisk.js +19 -22
  239. package/dist/classes/features/other/saveDataManager/restoreDefaults.js +20 -25
  240. package/dist/classes/features/other/saveDataManager/saveToDisk.js +13 -16
  241. package/dist/classes/private/CustomCallback.js +4 -8
  242. package/dist/classes/private/Feature.js +1 -5
  243. package/dist/core/cachedClasses.js +12 -15
  244. package/dist/core/constants.js +126 -130
  245. package/dist/core/constantsFirstLast.js +22 -25
  246. package/dist/core/constantsVanilla.js +25 -28
  247. package/dist/core/upgradeMod.js +7 -10
  248. package/dist/decorators.js +6 -10
  249. package/dist/enums/AmbushType.js +2 -5
  250. package/dist/enums/CornerType.js +2 -5
  251. package/dist/enums/HealthType.js +2 -5
  252. package/dist/enums/ISCFeature.js +2 -5
  253. package/dist/enums/LadderSubTypeCustom.js +2 -5
  254. package/dist/enums/ModCallbackCustom.js +2 -5
  255. package/dist/enums/MysteriousPaperEffect.js +2 -5
  256. package/dist/enums/PlayerStat.js +2 -5
  257. package/dist/enums/PocketItemType.js +2 -5
  258. package/dist/enums/RockAltType.js +2 -5
  259. package/dist/enums/SaveDataKey.js +2 -5
  260. package/dist/enums/SerializationType.js +2 -5
  261. package/dist/enums/SlotDestructionType.js +2 -5
  262. package/dist/enums/private/GridEntityTypeCustom.js +1 -4
  263. package/dist/enums/private/SerializationBrand.js +2 -5
  264. package/dist/enums/private/StageTravelState.js +2 -5
  265. package/dist/enums/private/TrapdoorAnimation.js +2 -5
  266. package/dist/enums/private/UIStreakAnimation.js +2 -5
  267. package/dist/features.js +138 -141
  268. package/dist/functions/ambush.js +9 -12
  269. package/dist/functions/array.js +45 -76
  270. package/dist/functions/arrayLua.js +7 -16
  271. package/dist/functions/benchmark.js +4 -7
  272. package/dist/functions/bitSet128.js +19 -26
  273. package/dist/functions/bitwise.js +14 -23
  274. package/dist/functions/bombs.js +1 -4
  275. package/dist/functions/bosses.js +68 -85
  276. package/dist/functions/cards.js +44 -62
  277. package/dist/functions/challenges.js +28 -39
  278. package/dist/functions/characters.js +68 -87
  279. package/dist/functions/charge.js +41 -52
  280. package/dist/functions/chargeBar.js +2 -6
  281. package/dist/functions/collectibleTag.js +9 -13
  282. package/dist/functions/collectibles.js +133 -172
  283. package/dist/functions/color.js +29 -38
  284. package/dist/functions/console.js +4 -8
  285. package/dist/functions/curses.js +6 -10
  286. package/dist/functions/debugFunctions.js +7 -14
  287. package/dist/functions/decorators.js +13 -19
  288. package/dist/functions/deepCopy.js +96 -99
  289. package/dist/functions/deepCopyTests.js +56 -59
  290. package/dist/functions/dimensions.js +10 -14
  291. package/dist/functions/direction.js +22 -30
  292. package/dist/functions/doors.js +104 -154
  293. package/dist/functions/easing.js +30 -62
  294. package/dist/functions/effects.js +6 -10
  295. package/dist/functions/emptyRoom.js +30 -34
  296. package/dist/functions/entities.js +88 -115
  297. package/dist/functions/entitiesSpecific.js +83 -125
  298. package/dist/functions/entityTypes.js +3 -6
  299. package/dist/functions/enums.js +27 -41
  300. package/dist/functions/external.js +4 -8
  301. package/dist/functions/familiars.js +17 -25
  302. package/dist/functions/flag.js +10 -19
  303. package/dist/functions/frames.js +31 -51
  304. package/dist/functions/globals.js +26 -66
  305. package/dist/functions/gridEntities.js +231 -269
  306. package/dist/functions/gridEntitiesSpecific.js +86 -126
  307. package/dist/functions/gridIndex.js +8 -11
  308. package/dist/functions/hash.js +1 -4
  309. package/dist/functions/hex.js +7 -11
  310. package/dist/functions/input.js +65 -88
  311. package/dist/functions/isaacAPIClass.js +28 -53
  312. package/dist/functions/itemPool.js +39 -48
  313. package/dist/functions/jsonHelpers.js +5 -42
  314. package/dist/functions/jsonRoom.js +39 -46
  315. package/dist/functions/kColor.js +30 -39
  316. package/dist/functions/language.js +3 -6
  317. package/dist/functions/level.js +20 -26
  318. package/dist/functions/levelGrid.js +81 -108
  319. package/dist/functions/log.js +6 -12
  320. package/dist/functions/logEntities.js +49 -59
  321. package/dist/functions/logMisc.js +183 -214
  322. package/dist/functions/map.js +10 -20
  323. package/dist/functions/math.js +16 -31
  324. package/dist/functions/merge.js +48 -51
  325. package/dist/functions/mergeTests.js +34 -37
  326. package/dist/functions/minimap.js +34 -46
  327. package/dist/functions/modFeatures.js +1 -4
  328. package/dist/functions/newArray.js +5 -8
  329. package/dist/functions/nextStage.js +63 -67
  330. package/dist/functions/npcDataStructures.js +9 -20
  331. package/dist/functions/npcs.js +37 -45
  332. package/dist/functions/pickupVariants.js +26 -39
  333. package/dist/functions/pickups.js +43 -59
  334. package/dist/functions/pickupsSpecific.js +76 -118
  335. package/dist/functions/pills.js +52 -72
  336. package/dist/functions/playerCenter.js +13 -16
  337. package/dist/functions/playerCollectibles.js +59 -79
  338. package/dist/functions/playerDataStructures.js +18 -29
  339. package/dist/functions/playerEffects.js +12 -19
  340. package/dist/functions/playerHealth.js +91 -113
  341. package/dist/functions/playerIndex.js +22 -33
  342. package/dist/functions/playerTrinkets.js +31 -43
  343. package/dist/functions/players.js +87 -126
  344. package/dist/functions/pocketItems.js +33 -43
  345. package/dist/functions/positionVelocity.js +23 -32
  346. package/dist/functions/pressurePlate.js +7 -10
  347. package/dist/functions/projectiles.js +11 -15
  348. package/dist/functions/random.js +8 -13
  349. package/dist/functions/readOnly.js +3 -8
  350. package/dist/functions/render.js +7 -12
  351. package/dist/functions/revive.js +38 -45
  352. package/dist/functions/rng.js +31 -44
  353. package/dist/functions/rockAlt.js +18 -22
  354. package/dist/functions/roomData.js +24 -40
  355. package/dist/functions/roomGrid.js +17 -25
  356. package/dist/functions/roomShape.js +39 -55
  357. package/dist/functions/roomShapeWalls.js +67 -71
  358. package/dist/functions/roomTransition.js +13 -17
  359. package/dist/functions/rooms.js +181 -244
  360. package/dist/functions/run.js +29 -39
  361. package/dist/functions/seeds.js +6 -10
  362. package/dist/functions/serialization.js +27 -34
  363. package/dist/functions/set.js +24 -40
  364. package/dist/functions/slots.js +18 -22
  365. package/dist/functions/sort.js +9 -15
  366. package/dist/functions/sound.js +12 -16
  367. package/dist/functions/spawnCollectible.js +21 -26
  368. package/dist/functions/sprites.js +16 -24
  369. package/dist/functions/stage.js +122 -164
  370. package/dist/functions/stats.js +37 -43
  371. package/dist/functions/storyBosses.js +36 -40
  372. package/dist/functions/string.js +19 -33
  373. package/dist/functions/table.js +21 -31
  374. package/dist/functions/tears.js +6 -14
  375. package/dist/functions/transformations.js +35 -42
  376. package/dist/functions/trinketGive.js +29 -36
  377. package/dist/functions/trinkets.js +45 -60
  378. package/dist/functions/tstlClass.js +11 -20
  379. package/dist/functions/types.js +22 -46
  380. package/dist/functions/ui.js +25 -40
  381. package/dist/functions/utils.js +22 -36
  382. package/dist/functions/vector.js +33 -46
  383. package/dist/functions/versusScreen.js +12 -18
  384. package/dist/functions/weighted.js +8 -12
  385. package/dist/index.js +150 -166
  386. package/dist/index.rollup.d.ts +11 -11
  387. package/dist/indexLua.js +151 -167
  388. package/dist/interfaces/ChargeBarSprites.js +1 -2
  389. package/dist/interfaces/Corner.js +1 -2
  390. package/dist/interfaces/CustomStageTSConfig.js +1 -2
  391. package/dist/interfaces/GridEntityCustomData.js +1 -2
  392. package/dist/interfaces/JSONRoomsFile.js +1 -2
  393. package/dist/interfaces/PlayerHealth.d.ts +11 -11
  394. package/dist/interfaces/PlayerHealth.d.ts.map +1 -1
  395. package/dist/interfaces/PlayerHealth.js +1 -2
  396. package/dist/interfaces/PlayerStats.js +2 -4
  397. package/dist/interfaces/PocketItemDescription.js +1 -2
  398. package/dist/interfaces/RoomDescription.js +1 -2
  399. package/dist/interfaces/SaveData.js +1 -2
  400. package/dist/interfaces/StageHistoryEntry.js +1 -2
  401. package/dist/interfaces/TSTLClassMetatable.js +1 -2
  402. package/dist/interfaces/TrinketSituation.js +1 -2
  403. package/dist/interfaces/private/AddCallbackParametersCustom.js +2 -4
  404. package/dist/interfaces/private/CustomStage.js +1 -2
  405. package/dist/interfaces/private/CustomTrapdoorDescription.js +1 -2
  406. package/dist/interfaces/private/ModUpgradedInterface.js +1 -2
  407. package/dist/isaacscript-common.lua +1 -1
  408. package/dist/maps/PHDPillConversionsMap.js +19 -22
  409. package/dist/maps/cardNameToTypeMap.js +205 -208
  410. package/dist/maps/characterNameToTypeMap.js +85 -88
  411. package/dist/maps/collectibleNameToTypeMap.js +5 -8
  412. package/dist/maps/defaultPlayerStatMap.js +10 -13
  413. package/dist/maps/entityTypeVariantToBossIDMap.js +3 -6
  414. package/dist/maps/falsePHDPillConversionsMap.js +33 -36
  415. package/dist/maps/gridEntityTypeToBrokenStateMap.js +15 -18
  416. package/dist/maps/gridEntityXMLMap.js +52 -55
  417. package/dist/maps/itemPoolTypeToItemPoolName.js +33 -36
  418. package/dist/maps/keyboardToStringMap.js +66 -69
  419. package/dist/maps/pillNameToEffectMap.js +83 -86
  420. package/dist/maps/roomNameToTypeMap.js +38 -41
  421. package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +9 -12
  422. package/dist/maps/transformationNameToPlayerFormMap.js +30 -33
  423. package/dist/maps/trinketNameToTypeMap.js +5 -8
  424. package/dist/objects/LRoomShapeToRectangles.js +22 -25
  425. package/dist/objects/backdropTypeToRockAltType.js +65 -68
  426. package/dist/objects/batteryNames.js +8 -11
  427. package/dist/objects/bombNames.js +11 -14
  428. package/dist/objects/bossIDToEntityTypeVariant.js +116 -119
  429. package/dist/objects/bossNamePNGFileNames.js +104 -107
  430. package/dist/objects/bossNames.js +105 -108
  431. package/dist/objects/bossPortraitPNGFileNames.js +104 -107
  432. package/dist/objects/cardDescriptions.js +101 -104
  433. package/dist/objects/cardNames.js +101 -104
  434. package/dist/objects/challengeBosses.js +49 -52
  435. package/dist/objects/challengeCharacters.js +49 -52
  436. package/dist/objects/challengeCollectibleTypes.js +160 -163
  437. package/dist/objects/challengeNames.js +49 -52
  438. package/dist/objects/challengeTrinketType.js +48 -51
  439. package/dist/objects/characterDamageMultipliers.js +44 -47
  440. package/dist/objects/characterNames.js +44 -47
  441. package/dist/objects/characterSpritePNGFileNames.js +44 -47
  442. package/dist/objects/characterStartingCollectibleTypes.js +49 -52
  443. package/dist/objects/characterStartingTrinketTypes.js +44 -47
  444. package/dist/objects/chestNames.js +15 -18
  445. package/dist/objects/coinNames.js +11 -14
  446. package/dist/objects/coinSubTypeToValue.js +11 -14
  447. package/dist/objects/collectibleDescriptions.js +725 -728
  448. package/dist/objects/collectibleNames.js +725 -728
  449. package/dist/objects/colors.js +1 -4
  450. package/dist/objects/directionNames.js +7 -10
  451. package/dist/objects/directionToDegrees.js +7 -10
  452. package/dist/objects/directionToMoveAction.js +7 -10
  453. package/dist/objects/directionToShootAction.js +7 -10
  454. package/dist/objects/directionToVector.js +9 -12
  455. package/dist/objects/doorSlotFlagToDoorSlot.js +11 -14
  456. package/dist/objects/doorSlotToDirection.js +11 -14
  457. package/dist/objects/doorSlotToDoorSlotFlag.js +11 -14
  458. package/dist/objects/gridEntityTypeToANM2Name.js +30 -33
  459. package/dist/objects/heartNames.js +16 -19
  460. package/dist/objects/isaacAPIClassTypeToBrand.js +8 -11
  461. package/dist/objects/isaacAPIClassTypeToFunctions.js +37 -40
  462. package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +9 -45
  463. package/dist/objects/kColors.js +1 -4
  464. package/dist/objects/keyNames.js +8 -11
  465. package/dist/objects/languageNames.js +9 -12
  466. package/dist/objects/oppositeDoorSlots.js +11 -14
  467. package/dist/objects/pillEffectClasses.js +53 -56
  468. package/dist/objects/pillEffectNames.js +53 -56
  469. package/dist/objects/pillEffectTypeToPillEffects.js +11 -14
  470. package/dist/objects/pillEffectTypes.js +53 -56
  471. package/dist/objects/playerNamePNGFileNames.js +44 -47
  472. package/dist/objects/playerPortraitPNGFileNames.js +44 -47
  473. package/dist/objects/roomShapeBounds.js +23 -26
  474. package/dist/objects/roomShapeCorners.js +128 -131
  475. package/dist/objects/roomShapeLayoutSizes.js +23 -26
  476. package/dist/objects/roomShapeToBottomRightPosition.js +17 -20
  477. package/dist/objects/roomShapeToDoorSlotCoordinates.js +78 -81
  478. package/dist/objects/roomShapeToDoorSlots.js +48 -51
  479. package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +82 -85
  480. package/dist/objects/roomShapeToGridWidth.js +14 -17
  481. package/dist/objects/roomShapeToTopLeftPosition.js +18 -21
  482. package/dist/objects/roomShapeVolumes.js +21 -24
  483. package/dist/objects/roomTypeNames.js +32 -35
  484. package/dist/objects/roomTypeSpecialGotoPrefixes.js +32 -35
  485. package/dist/objects/sackNames.js +6 -9
  486. package/dist/objects/slotNames.js +21 -24
  487. package/dist/objects/stageIDNames.js +33 -36
  488. package/dist/objects/stageToMusic.js +69 -72
  489. package/dist/objects/stageToStageID.js +90 -93
  490. package/dist/objects/stageTypeSuffixes.js +8 -11
  491. package/dist/objects/transformationNames.js +16 -19
  492. package/dist/objects/trinketDescriptions.js +192 -195
  493. package/dist/objects/trinketNames.js +192 -195
  494. package/dist/objects/versusScreenBackgroundColors.js +39 -42
  495. package/dist/objects/versusScreenDirtSpotColors.js +39 -42
  496. package/dist/patchErrorFunctions.js +4 -7
  497. package/dist/serialization.js +6 -9
  498. package/dist/sets/LRoomShapesSet.js +7 -10
  499. package/dist/sets/bigRoomShapesSet.js +10 -13
  500. package/dist/sets/bossSets.js +261 -264
  501. package/dist/sets/charactersThatStartWithAnActiveItemSet.js +14 -17
  502. package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +5 -8
  503. package/dist/sets/charactersWithFreeDevilDealsSet.js +3 -6
  504. package/dist/sets/charactersWithNoRedHeartsSet.js +11 -14
  505. package/dist/sets/charactersWithNoSoulHeartsSet.js +8 -11
  506. package/dist/sets/consoleCommandsSet.js +2 -5
  507. package/dist/sets/entitiesWithArmorSet.js +44 -47
  508. package/dist/sets/familiarsThatShootPlayerTearsSet.js +11 -14
  509. package/dist/sets/itemConfigCardTypesForCards.js +7 -10
  510. package/dist/sets/lostStyleCharactersSet.js +8 -11
  511. package/dist/sets/mineShaftRoomSubTypesSet.js +8 -11
  512. package/dist/sets/narrowRoomShapesSet.js +7 -10
  513. package/dist/sets/poopGridEntityXMLTypesSet.js +12 -15
  514. package/dist/sets/redHeartSubTypesSet.js +6 -9
  515. package/dist/sets/repentanceBossIDsSet.js +26 -29
  516. package/dist/sets/sinEntityTypesSet.js +10 -13
  517. package/dist/sets/singleUseActiveCollectibleTypesSet.js +11 -14
  518. package/dist/shaderCrashFix.js +4 -7
  519. package/dist/shouldFire.js +28 -58
  520. package/dist/types/AddSubtract.js +1 -2
  521. package/dist/types/AllButFirst.js +1 -2
  522. package/dist/types/AllButLast.js +1 -2
  523. package/dist/types/AnyClass.js +1 -2
  524. package/dist/types/AnyEntity.js +1 -2
  525. package/dist/types/AnyFunction.js +1 -2
  526. package/dist/types/AnyGridEntity.js +1 -2
  527. package/dist/types/CompositionTypeSatisfiesEnum.js +1 -2
  528. package/dist/types/ConversionHeartSubType.js +1 -2
  529. package/dist/types/Decrement.js +1 -2
  530. package/dist/types/ERange.js +1 -2
  531. package/dist/types/EntityID.js +1 -2
  532. package/dist/types/FunctionTuple.js +1 -2
  533. package/dist/types/GridEntityID.js +1 -2
  534. package/dist/types/HasFunction.js +1 -2
  535. package/dist/types/IRange.js +1 -2
  536. package/dist/types/Immutable.js +1 -2
  537. package/dist/types/Increment.js +1 -2
  538. package/dist/types/LowercaseKeys.js +1 -2
  539. package/dist/types/NaturalNumbersLessThan.js +1 -2
  540. package/dist/types/NaturalNumbersLessThanOrEqualTo.js +1 -2
  541. package/dist/types/ObjectValues.js +1 -2
  542. package/dist/types/PickingUpItem.js +15 -22
  543. package/dist/types/PickupIndex.js +1 -2
  544. package/dist/types/PlayerIndex.js +1 -2
  545. package/dist/types/PossibleStatType.js +1 -2
  546. package/dist/types/PublicInterface.js +1 -2
  547. package/dist/types/ReadonlyMap.js +1 -4
  548. package/dist/types/ReadonlyRecord.js +1 -2
  549. package/dist/types/ReadonlySet.js +1 -4
  550. package/dist/types/StartsWithLowercase.js +1 -2
  551. package/dist/types/StartsWithUppercase.js +1 -2
  552. package/dist/types/TSTLClass.js +1 -2
  553. package/dist/types/Tuple.js +1 -2
  554. package/dist/types/TupleKeys.js +1 -2
  555. package/dist/types/TupleToIntersection.js +1 -2
  556. package/dist/types/TupleToUnion.js +1 -2
  557. package/dist/types/TupleWithLengthBetween.js +1 -2
  558. package/dist/types/TupleWithMaxLength.js +1 -2
  559. package/dist/types/UnionToIntersection.js +1 -2
  560. package/dist/types/UppercaseKeys.js +1 -2
  561. package/dist/types/WeightedArray.js +1 -2
  562. package/dist/types/WidenLiteral.js +1 -2
  563. package/dist/types/Writable.js +1 -2
  564. package/dist/types/private/CallbackTuple.js +1 -2
  565. package/dist/types/private/ModUpgradedWithFeatures.js +1 -2
  566. package/package.json +3 -3
  567. package/src/interfaces/PlayerHealth.ts +12 -11
@@ -1,47 +1,37 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getActivePocketItemSlot = getActivePocketItemSlot;
4
- exports.getFirstCard = getFirstCard;
5
- exports.getFirstCardOrPill = getFirstCardOrPill;
6
- exports.getFirstPill = getFirstPill;
7
- exports.getPocketItems = getPocketItems;
8
- exports.hasOpenPocketItemSlot = hasOpenPocketItemSlot;
9
- exports.isFirstSlotPocketActiveItem = isFirstSlotPocketActiveItem;
10
- exports.pocketItemsEquals = pocketItemsEquals;
11
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
12
- const cachedEnumValues_1 = require("../cachedEnumValues");
13
- const PocketItemType_1 = require("../enums/PocketItemType");
14
- const players_1 = require("./players");
1
+ import { ActiveSlot, CardType, CollectibleType, PillColor, PlayerType, } from "isaac-typescript-definitions";
2
+ import { POCKET_ITEM_SLOT_VALUES } from "../cachedEnumValues";
3
+ import { PocketItemType } from "../enums/PocketItemType";
4
+ import { isCharacter } from "./players";
15
5
  /**
16
6
  * Helper function to get the `PocketItemSlot` that the player's pocket active collectible item is
17
7
  * in, if any. Returns undefined if the player does not have a pocket active item.
18
8
  */
19
- function getActivePocketItemSlot(player) {
9
+ export function getActivePocketItemSlot(player) {
20
10
  const pocketItems = getPocketItems(player);
21
11
  for (const pocketItem of pocketItems) {
22
- if (pocketItem.type === PocketItemType_1.PocketItemType.ACTIVE_ITEM) {
12
+ if (pocketItem.type === PocketItemType.ACTIVE_ITEM) {
23
13
  return pocketItem.slot;
24
14
  }
25
15
  }
26
16
  return undefined;
27
17
  }
28
18
  /** Helper item to get the first card that a player is holding in their pocket item slots. */
29
- function getFirstCard(player) {
19
+ export function getFirstCard(player) {
30
20
  const pocketItems = getPocketItems(player);
31
- return pocketItems.find((pocketItem) => pocketItem.type === PocketItemType_1.PocketItemType.CARD);
21
+ return pocketItems.find((pocketItem) => pocketItem.type === PocketItemType.CARD);
32
22
  }
33
23
  /**
34
24
  * Helper item to get the first card or pill that a player is holding in their pocket item slots.
35
25
  */
36
- function getFirstCardOrPill(player) {
26
+ export function getFirstCardOrPill(player) {
37
27
  const pocketItems = getPocketItems(player);
38
- return pocketItems.find((pocketItem) => pocketItem.type === PocketItemType_1.PocketItemType.CARD
39
- || pocketItem.type === PocketItemType_1.PocketItemType.PILL);
28
+ return pocketItems.find((pocketItem) => pocketItem.type === PocketItemType.CARD
29
+ || pocketItem.type === PocketItemType.PILL);
40
30
  }
41
31
  /** Helper item to get the first pill that a player is holding in their pocket item slots. */
42
- function getFirstPill(player) {
32
+ export function getFirstPill(player) {
43
33
  const pocketItems = getPocketItems(player);
44
- return pocketItems.find((pocketItem) => pocketItem.type === PocketItemType_1.PocketItemType.PILL);
34
+ return pocketItems.find((pocketItem) => pocketItem.type === PocketItemType.PILL);
45
35
  }
46
36
  /**
47
37
  * Use this helper function as a workaround for the `EntityPlayer.GetPocketItem` method not working
@@ -53,29 +43,29 @@ function getFirstPill(player) {
53
43
  * cannot determine the identity of a particular slot, it will mark the type of the slot as
54
44
  * `PocketItemType.UNDETERMINABLE`.
55
45
  */
56
- function getPocketItems(player) {
57
- const pocketItem = player.GetActiveItem(isaac_typescript_definitions_1.ActiveSlot.POCKET);
58
- const hasPocketItem = pocketItem !== isaac_typescript_definitions_1.CollectibleType.NULL;
59
- const pocketItem2 = player.GetActiveItem(isaac_typescript_definitions_1.ActiveSlot.POCKET_SINGLE_USE);
60
- const hasPocketItem2 = pocketItem2 !== isaac_typescript_definitions_1.CollectibleType.NULL;
46
+ export function getPocketItems(player) {
47
+ const pocketItem = player.GetActiveItem(ActiveSlot.POCKET);
48
+ const hasPocketItem = pocketItem !== CollectibleType.NULL;
49
+ const pocketItem2 = player.GetActiveItem(ActiveSlot.POCKET_SINGLE_USE);
50
+ const hasPocketItem2 = pocketItem2 !== CollectibleType.NULL;
61
51
  const maxPocketItems = player.GetMaxPocketItems();
62
52
  const pocketItems = [];
63
53
  let pocketItemIdentified = false;
64
54
  let pocketItem2Identified = false;
65
- for (const slot of cachedEnumValues_1.POCKET_ITEM_SLOT_VALUES) {
55
+ for (const slot of POCKET_ITEM_SLOT_VALUES) {
66
56
  const cardType = player.GetCard(slot);
67
57
  const pillColor = player.GetPill(slot);
68
- if (cardType !== isaac_typescript_definitions_1.CardType.NULL) {
58
+ if (cardType !== CardType.NULL) {
69
59
  pocketItems.push({
70
60
  slot,
71
- type: PocketItemType_1.PocketItemType.CARD,
61
+ type: PocketItemType.CARD,
72
62
  subType: cardType,
73
63
  });
74
64
  }
75
- else if (pillColor !== isaac_typescript_definitions_1.PillColor.NULL) {
65
+ else if (pillColor !== PillColor.NULL) {
76
66
  pocketItems.push({
77
67
  slot,
78
- type: PocketItemType_1.PocketItemType.PILL,
68
+ type: PocketItemType.PILL,
79
69
  subType: pillColor,
80
70
  });
81
71
  }
@@ -83,7 +73,7 @@ function getPocketItems(player) {
83
73
  pocketItemIdentified = true;
84
74
  pocketItems.push({
85
75
  slot,
86
- type: PocketItemType_1.PocketItemType.ACTIVE_ITEM,
76
+ type: PocketItemType.ACTIVE_ITEM,
87
77
  subType: pocketItem,
88
78
  });
89
79
  }
@@ -91,21 +81,21 @@ function getPocketItems(player) {
91
81
  pocketItem2Identified = true;
92
82
  pocketItems.push({
93
83
  slot,
94
- type: PocketItemType_1.PocketItemType.DICE_BAG_DICE,
84
+ type: PocketItemType.DICE_BAG_DICE,
95
85
  subType: pocketItem2,
96
86
  });
97
87
  }
98
88
  else if (hasPocketItem && hasPocketItem2) {
99
89
  pocketItems.push({
100
90
  slot,
101
- type: PocketItemType_1.PocketItemType.UNDETERMINABLE,
91
+ type: PocketItemType.UNDETERMINABLE,
102
92
  subType: 0,
103
93
  });
104
94
  }
105
95
  else {
106
96
  pocketItems.push({
107
97
  slot,
108
- type: PocketItemType_1.PocketItemType.EMPTY,
98
+ type: PocketItemType.EMPTY,
109
99
  subType: 0,
110
100
  });
111
101
  }
@@ -123,27 +113,27 @@ function getPocketItems(player) {
123
113
  * If the player is the Tainted Soul, this always returns false, since that character cannot pick up
124
114
  * items. (Only Tainted Forgotten can pick up items.)
125
115
  */
126
- function hasOpenPocketItemSlot(player) {
127
- if ((0, players_1.isCharacter)(player, isaac_typescript_definitions_1.PlayerType.SOUL_B)) {
116
+ export function hasOpenPocketItemSlot(player) {
117
+ if (isCharacter(player, PlayerType.SOUL_B)) {
128
118
  return false;
129
119
  }
130
120
  const pocketItems = getPocketItems(player);
131
- return pocketItems.some((pocketItem) => pocketItem.type === PocketItemType_1.PocketItemType.EMPTY);
121
+ return pocketItems.some((pocketItem) => pocketItem.type === PocketItemType.EMPTY);
132
122
  }
133
123
  /**
134
124
  * Helper function to determine whether the player's "active" pocket item slot is set to their
135
125
  * pocket active item.
136
126
  */
137
- function isFirstSlotPocketActiveItem(player) {
127
+ export function isFirstSlotPocketActiveItem(player) {
138
128
  const pocketItems = getPocketItems(player);
139
129
  const firstPocketItem = pocketItems[0];
140
130
  if (firstPocketItem === undefined) {
141
131
  return false;
142
132
  }
143
- return firstPocketItem.type === PocketItemType_1.PocketItemType.ACTIVE_ITEM;
133
+ return firstPocketItem.type === PocketItemType.ACTIVE_ITEM;
144
134
  }
145
135
  /** Helper function to see if two sets of pocket item descriptions are identical. */
146
- function pocketItemsEquals(pocketItems1, pocketItems2) {
136
+ export function pocketItemsEquals(pocketItems1, pocketItems2) {
147
137
  if (pocketItems1.length !== pocketItems2.length) {
148
138
  return false;
149
139
  }
@@ -1,21 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.anyEntityCloserThan = anyEntityCloserThan;
4
- exports.anyPlayerCloserThan = anyPlayerCloserThan;
5
- exports.findFreePosition = findFreePosition;
6
- exports.getEntityPositions = getEntityPositions;
7
- exports.getEntityVelocities = getEntityVelocities;
8
- exports.setEntityPositions = setEntityPositions;
9
- exports.setEntityVelocities = setEntityVelocities;
10
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
11
- const cachedClasses_1 = require("../core/cachedClasses");
12
- const constants_1 = require("../core/constants");
13
- const entities_1 = require("./entities");
14
- const entitiesSpecific_1 = require("./entitiesSpecific");
15
- const playerIndex_1 = require("./playerIndex");
16
- const players_1 = require("./players");
1
+ import { EffectVariant, HeavenLightDoorSubType, } from "isaac-typescript-definitions";
2
+ import { game } from "../core/cachedClasses";
3
+ import { DISTANCE_OF_GRID_TILE } from "../core/constants";
4
+ import { getEntities } from "./entities";
5
+ import { getEffects } from "./entitiesSpecific";
6
+ import { getPlayers } from "./playerIndex";
7
+ import { getPlayerCloserThan } from "./players";
17
8
  const MAX_FIND_FREE_POSITION_ATTEMPTS = 100;
18
- function anyEntityCloserThan(entities, position, distance) {
9
+ export function anyEntityCloserThan(entities, position, distance) {
19
10
  return entities.some((entity) => position.Distance(entity.Position) <= distance);
20
11
  }
21
12
  /**
@@ -24,8 +15,8 @@ function anyEntityCloserThan(entities, position, distance) {
24
15
  * Note that this function does not consider players with a non-undefined parent, since they are not
25
16
  * real players (e.g. the Strawman Keeper).
26
17
  */
27
- function anyPlayerCloserThan(position, distance) {
28
- const players = (0, playerIndex_1.getPlayers)();
18
+ export function anyPlayerCloserThan(position, distance) {
19
+ const players = getPlayers();
29
20
  return players.some((player) => player.Position.Distance(position) <= distance);
30
21
  }
31
22
  /**
@@ -41,16 +32,16 @@ function anyPlayerCloserThan(position, distance) {
41
32
  * @param minimumDistance Optional. If specified, will ensure that the randomly generated position
42
33
  * is equal to or greater than the distance provided.
43
34
  */
44
- function findFreePosition(startingPosition, avoidActiveEntities = false, minimumDistance) {
45
- const room = cachedClasses_1.game.GetRoom();
46
- const heavenDoors = (0, entitiesSpecific_1.getEffects)(isaac_typescript_definitions_1.EffectVariant.HEAVEN_LIGHT_DOOR, isaac_typescript_definitions_1.HeavenLightDoorSubType.HEAVEN_DOOR);
35
+ export function findFreePosition(startingPosition, avoidActiveEntities = false, minimumDistance) {
36
+ const room = game.GetRoom();
37
+ const heavenDoors = getEffects(EffectVariant.HEAVEN_LIGHT_DOOR, HeavenLightDoorSubType.HEAVEN_DOOR);
47
38
  for (let initialStep = 0; initialStep < MAX_FIND_FREE_POSITION_ATTEMPTS; initialStep++) {
48
39
  const position = room.FindFreePickupSpawnPosition(startingPosition, initialStep, avoidActiveEntities);
49
- const closePlayer = (0, players_1.getPlayerCloserThan)(position, constants_1.DISTANCE_OF_GRID_TILE);
40
+ const closePlayer = getPlayerCloserThan(position, DISTANCE_OF_GRID_TILE);
50
41
  if (closePlayer !== undefined) {
51
42
  continue;
52
43
  }
53
- const isCloseHeavenDoor = anyEntityCloserThan(heavenDoors, position, constants_1.DISTANCE_OF_GRID_TILE);
44
+ const isCloseHeavenDoor = anyEntityCloserThan(heavenDoors, position, DISTANCE_OF_GRID_TILE);
54
45
  if (isCloseHeavenDoor) {
55
46
  continue;
56
47
  }
@@ -74,8 +65,8 @@ function findFreePosition(startingPosition, avoidActiveEntities = false, minimum
74
65
  * this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
75
66
  * multiple times.
76
67
  */
77
- function getEntityPositions(entities) {
78
- entities ??= (0, entities_1.getEntities)();
68
+ export function getEntityPositions(entities) {
69
+ entities ??= getEntities();
79
70
  const entityPositions = new Map();
80
71
  for (const entity of entities) {
81
72
  const ptrHash = GetPtrHash(entity);
@@ -92,8 +83,8 @@ function getEntityPositions(entities) {
92
83
  * this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
93
84
  * multiple times.
94
85
  */
95
- function getEntityVelocities(entities) {
96
- entities ??= (0, entities_1.getEntities)();
86
+ export function getEntityVelocities(entities) {
87
+ entities ??= getEntities();
97
88
  const entityVelocities = new Map();
98
89
  for (const entity of entities) {
99
90
  const ptrHash = GetPtrHash(entity);
@@ -114,8 +105,8 @@ function getEntityVelocities(entities) {
114
105
  * this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
115
106
  * multiple times.
116
107
  */
117
- function setEntityPositions(entityPositions, entities) {
118
- entities ??= (0, entities_1.getEntities)();
108
+ export function setEntityPositions(entityPositions, entities) {
109
+ entities ??= getEntities();
119
110
  for (const entity of entities) {
120
111
  const ptrHash = GetPtrHash(entity);
121
112
  const entityPosition = entityPositions.get(ptrHash);
@@ -137,8 +128,8 @@ function setEntityPositions(entityPositions, entities) {
137
128
  * this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
138
129
  * multiple times.
139
130
  */
140
- function setEntityVelocities(entityVelocities, entities) {
141
- entities ??= (0, entities_1.getEntities)();
131
+ export function setEntityVelocities(entityVelocities, entities) {
132
+ entities ??= getEntities();
142
133
  for (const entity of entities) {
143
134
  const ptrHash = GetPtrHash(entity);
144
135
  const entityVelocity = entityVelocities.get(ptrHash);
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAllPressurePlatesPushed = isAllPressurePlatesPushed;
4
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
- const cachedClasses_1 = require("../core/cachedClasses");
6
- const gridEntitiesSpecific_1 = require("./gridEntitiesSpecific");
1
+ import { PressurePlateState, PressurePlateVariant, } from "isaac-typescript-definitions";
2
+ import { game } from "../core/cachedClasses";
3
+ import { getPressurePlates } from "./gridEntitiesSpecific";
7
4
  /**
8
5
  * Helper function to check if all of the pressure plates in the room are pushed.
9
6
  *
@@ -14,12 +11,12 @@ const gridEntitiesSpecific_1 = require("./gridEntitiesSpecific");
14
11
  *
15
12
  * Returns true if there are no pressure plates in the room.
16
13
  */
17
- function isAllPressurePlatesPushed() {
18
- const room = cachedClasses_1.game.GetRoom();
14
+ export function isAllPressurePlatesPushed() {
15
+ const room = game.GetRoom();
19
16
  const hasPressurePlates = room.HasTriggerPressurePlates();
20
17
  if (!hasPressurePlates) {
21
18
  return true;
22
19
  }
23
- const pressurePlates = (0, gridEntitiesSpecific_1.getPressurePlates)(isaac_typescript_definitions_1.PressurePlateVariant.PRESSURE_PLATE);
24
- return pressurePlates.every((pressurePlate) => pressurePlate.State === isaac_typescript_definitions_1.PressurePlateState.PRESSURE_PLATE_PRESSED);
20
+ const pressurePlates = getPressurePlates(PressurePlateVariant.PRESSURE_PLATE);
21
+ return pressurePlates.every((pressurePlate) => pressurePlate.State === PressurePlateState.PRESSURE_PLATE_PRESSED);
25
22
  }
@@ -1,10 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fireProjectiles = fireProjectiles;
4
- exports.fireProjectilesInCircle = fireProjectilesInCircle;
5
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
6
- const entities_1 = require("./entities");
7
- const entitiesSpecific_1 = require("./entitiesSpecific");
1
+ import { EntityFlag, EntityType, ProjectilesMode, } from "isaac-typescript-definitions";
2
+ import { getFilteredNewEntities } from "./entities";
3
+ import { getProjectiles, spawnNPC } from "./entitiesSpecific";
8
4
  /**
9
5
  * Helper function to make an NPC fire one or more projectiles. Returns the fired projectile(s).
10
6
  *
@@ -22,22 +18,22 @@ const entitiesSpecific_1 = require("./entitiesSpecific");
22
18
  * `ProjectileParams()`.
23
19
  * @returns The fired projectile(s).
24
20
  */
25
- function fireProjectiles(npc, position, velocity, projectilesMode = isaac_typescript_definitions_1.ProjectilesMode.ONE_PROJECTILE, projectileParams = ProjectileParams()) {
26
- const oldProjectiles = (0, entitiesSpecific_1.getProjectiles)(projectileParams.Variant);
21
+ export function fireProjectiles(npc, position, velocity, projectilesMode = ProjectilesMode.ONE_PROJECTILE, projectileParams = ProjectileParams()) {
22
+ const oldProjectiles = getProjectiles(projectileParams.Variant);
27
23
  let spawnedFly = false;
28
24
  if (npc === undefined) {
29
25
  // Since the `EntityNPC.FireProjectiles` method is not static, we arbitrarily spawn a fly.
30
26
  spawnedFly = true;
31
- npc = (0, entitiesSpecific_1.spawnNPC)(isaac_typescript_definitions_1.EntityType.FLY, 0, 0, position);
27
+ npc = spawnNPC(EntityType.FLY, 0, 0, position);
32
28
  npc.Visible = false;
33
- npc.ClearEntityFlags(isaac_typescript_definitions_1.EntityFlag.APPEAR);
29
+ npc.ClearEntityFlags(EntityFlag.APPEAR);
34
30
  }
35
31
  npc.FireProjectiles(position, velocity, projectilesMode, projectileParams);
36
- const newProjectiles = (0, entitiesSpecific_1.getProjectiles)(projectileParams.Variant);
32
+ const newProjectiles = getProjectiles(projectileParams.Variant);
37
33
  if (spawnedFly) {
38
34
  npc.Remove();
39
35
  }
40
- return (0, entities_1.getFilteredNewEntities)(oldProjectiles, newProjectiles);
36
+ return getFilteredNewEntities(oldProjectiles, newProjectiles);
41
37
  }
42
38
  /**
43
39
  * Helper function to spawn projectiles in a circle around a position. Under the hood, this
@@ -50,7 +46,7 @@ function fireProjectiles(npc, position, velocity, projectilesMode = isaac_typesc
50
46
  * @param numProjectiles The amount of projectiles to spawn.
51
47
  * @returns The fired projectile(s).
52
48
  */
53
- function fireProjectilesInCircle(npc, position, speed, numProjectiles) {
49
+ export function fireProjectilesInCircle(npc, position, speed, numProjectiles) {
54
50
  const velocity = Vector(speed, numProjectiles);
55
- return fireProjectiles(npc, position, velocity, isaac_typescript_definitions_1.ProjectilesMode.N_PROJECTILES_IN_CIRCLE);
51
+ return fireProjectiles(npc, position, velocity, ProjectilesMode.N_PROJECTILES_IN_CIRCLE);
56
52
  }
@@ -1,10 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRandom = getRandom;
4
- exports.getRandomFloat = getRandomFloat;
5
- exports.getRandomInt = getRandomInt;
6
- const ReadonlySet_1 = require("../types/ReadonlySet");
7
- const rng_1 = require("./rng");
1
+ import { ReadonlySet } from "../types/ReadonlySet";
2
+ import { isRNG, newRNG } from "./rng";
8
3
  /**
9
4
  * Returns a random float between 0 and 1. It is inclusive on the low end, but exclusive on the high
10
5
  * end. (This is because the `RNG.RandomFloat` method will never return a value of exactly 1.)
@@ -16,8 +11,8 @@ const rng_1 = require("./rng");
16
11
  * `RNG.Next` method will be called. If `undefined` is provided, it will default to
17
12
  * a random seed.
18
13
  */
19
- function getRandom(seedOrRNG) {
20
- const rng = (0, rng_1.isRNG)(seedOrRNG) ? seedOrRNG : (0, rng_1.newRNG)(seedOrRNG);
14
+ export function getRandom(seedOrRNG) {
15
+ const rng = isRNG(seedOrRNG) ? seedOrRNG : newRNG(seedOrRNG);
21
16
  return rng.RandomFloat();
22
17
  }
23
18
  /**
@@ -38,7 +33,7 @@ function getRandom(seedOrRNG) {
38
33
  * `RNG.Next` method will be called. If `undefined` is provided, it will default to
39
34
  * a random seed.
40
35
  */
41
- function getRandomFloat(min, max, seedOrRNG) {
36
+ export function getRandomFloat(min, max, seedOrRNG) {
42
37
  if (min > max) {
43
38
  const oldMin = min;
44
39
  const oldMax = max;
@@ -70,8 +65,8 @@ function getRandomFloat(min, max, seedOrRNG) {
70
65
  * `[2]` would cause the function to return either 1, 3, or 4. Default is an empty
71
66
  * array.
72
67
  */
73
- function getRandomInt(min, max, seedOrRNG, exceptions = []) {
74
- const rng = (0, rng_1.isRNG)(seedOrRNG) ? seedOrRNG : (0, rng_1.newRNG)(seedOrRNG);
68
+ export function getRandomInt(min, max, seedOrRNG, exceptions = []) {
69
+ const rng = isRNG(seedOrRNG) ? seedOrRNG : newRNG(seedOrRNG);
75
70
  min = Math.ceil(min);
76
71
  max = Math.floor(max);
77
72
  if (min > max) {
@@ -80,7 +75,7 @@ function getRandomInt(min, max, seedOrRNG, exceptions = []) {
80
75
  min = oldMax;
81
76
  max = oldMin;
82
77
  }
83
- const exceptionsSet = new ReadonlySet_1.ReadonlySet(exceptions);
78
+ const exceptionsSet = new ReadonlySet(exceptions);
84
79
  let randomInt;
85
80
  do {
86
81
  randomInt = rng.RandomInt(max - min + 1) + min;
@@ -1,15 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newReadonlyColor = newReadonlyColor;
4
- exports.newReadonlyKColor = newReadonlyKColor;
5
- exports.newReadonlyVector = newReadonlyVector;
6
1
  /**
7
2
  * Helper function to create a read-only `Color` object. (Otherwise, you would have to manually
8
3
  * specify both the type and the constructor.)
9
4
  *
10
5
  * Note that read-only colors will be writable at run-time.
11
6
  */
12
- function newReadonlyColor(r, g, b, a, ro, go, bo) {
7
+ export function newReadonlyColor(r, g, b, a, ro, go, bo) {
13
8
  return Color(r, g, b, a, ro, go, bo);
14
9
  }
15
10
  /**
@@ -18,7 +13,7 @@ function newReadonlyColor(r, g, b, a, ro, go, bo) {
18
13
  *
19
14
  * Note that read-only colors will be writable at run-time.
20
15
  */
21
- function newReadonlyKColor(r, g, b, a) {
16
+ export function newReadonlyKColor(r, g, b, a) {
22
17
  return KColor(r, g, b, a);
23
18
  }
24
19
  /**
@@ -27,6 +22,6 @@ function newReadonlyKColor(r, g, b, a) {
27
22
  *
28
23
  * Note that read-only vectors will be writable at run-time.
29
24
  */
30
- function newReadonlyVector(x, y) {
25
+ export function newReadonlyVector(x, y) {
31
26
  return Vector(x, y);
32
27
  }
@@ -1,10 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isReflectionRender = isReflectionRender;
4
- exports.renderScaledTextOnEntity = renderScaledTextOnEntity;
5
- exports.renderTextOnEntity = renderTextOnEntity;
6
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
7
- const cachedClasses_1 = require("../core/cachedClasses");
1
+ import { RenderMode } from "isaac-typescript-definitions";
2
+ import { game } from "../core/cachedClasses";
8
3
  /**
9
4
  * Helper function to see if the current render callback is rendering a water reflection.
10
5
  *
@@ -14,19 +9,19 @@ const cachedClasses_1 = require("../core/cachedClasses");
14
9
  *
15
10
  * This function is typically used to early return from a render function if it returns true.
16
11
  */
17
- function isReflectionRender() {
18
- const room = cachedClasses_1.game.GetRoom();
12
+ export function isReflectionRender() {
13
+ const room = game.GetRoom();
19
14
  const renderMode = room.GetRenderMode();
20
- return renderMode === isaac_typescript_definitions_1.RenderMode.WATER_REFLECT;
15
+ return renderMode === RenderMode.WATER_REFLECT;
21
16
  }
22
- function renderScaledTextOnEntity(entity, text, scaleX, scaleY) {
17
+ export function renderScaledTextOnEntity(entity, text, scaleX, scaleY) {
23
18
  if (isReflectionRender()) {
24
19
  return;
25
20
  }
26
21
  const position = Isaac.WorldToScreen(entity.Position);
27
22
  Isaac.RenderScaledText(text, position.X, position.Y, scaleX, scaleY, 1, 1, 1, 1);
28
23
  }
29
- function renderTextOnEntity(entity, text) {
24
+ export function renderTextOnEntity(entity, text) {
30
25
  if (isReflectionRender()) {
31
26
  return;
32
27
  }
@@ -1,34 +1,27 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isDamageToPlayerFatal = isDamageToPlayerFatal;
4
- exports.willMysteriousPaperRevive = willMysteriousPaperRevive;
5
- exports.willPlayerRevive = willPlayerRevive;
6
- exports.willReviveFromHeartbreak = willReviveFromHeartbreak;
7
- exports.willReviveFromSpiritShackles = willReviveFromSpiritShackles;
8
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
9
- const constants_1 = require("../core/constants");
10
- const MysteriousPaperEffect_1 = require("../enums/MysteriousPaperEffect");
11
- const characters_1 = require("./characters");
12
- const frames_1 = require("./frames");
13
- const playerHealth_1 = require("./playerHealth");
14
- const players_1 = require("./players");
15
- const sprites_1 = require("./sprites");
16
- const trinketGive_1 = require("./trinketGive");
17
- const trinkets_1 = require("./trinkets");
1
+ import { CollectibleType, EntityType, NullItemID, PlayerType, TrinketType, } from "isaac-typescript-definitions";
2
+ import { MAX_TAINTED_SAMSON_BERSERK_CHARGE, TAINTED_SAMSON_BERSERK_CHARGE_FROM_TAKING_DAMAGE, } from "../core/constants";
3
+ import { MysteriousPaperEffect } from "../enums/MysteriousPaperEffect";
4
+ import { getCharacterDeathAnimationName } from "./characters";
5
+ import { onGameFrame } from "./frames";
6
+ import { getPlayerMaxHeartContainers } from "./playerHealth";
7
+ import { getPlayerNumHitsRemaining, hasLostCurse, isKeeper } from "./players";
8
+ import { getLastFrameOfAnimation } from "./sprites";
9
+ import { giveTrinketsBack, temporarilyRemoveTrinket } from "./trinketGive";
10
+ import { getMysteriousPaperEffectForFrame } from "./trinkets";
18
11
  /**
19
12
  * Uses the player's current health and other miscellaneous things to determine if incoming damage
20
13
  * will be fatal.
21
14
  */
22
- function isDamageToPlayerFatal(player, amount, source, lastDamageGameFrame) {
15
+ export function isDamageToPlayerFatal(player, amount, source, lastDamageGameFrame) {
23
16
  const character = player.GetPlayerType();
24
17
  // If we are Tainted Jacob and the damage source is Dark Esau, this will not be fatal damage
25
18
  // (because we will transform into Tainted Jacob's lost form).
26
- if (character === isaac_typescript_definitions_1.PlayerType.JACOB_B
27
- && source.Type === isaac_typescript_definitions_1.EntityType.DARK_ESAU) {
19
+ if (character === PlayerType.JACOB_B
20
+ && source.Type === EntityType.DARK_ESAU) {
28
21
  return false;
29
22
  }
30
23
  const effects = player.GetEffects();
31
- const isBerserk = effects.HasCollectibleEffect(isaac_typescript_definitions_1.CollectibleType.BERSERK);
24
+ const isBerserk = effects.HasCollectibleEffect(CollectibleType.BERSERK);
32
25
  // If we are berserk, no damage is fatal. (The death is deferred until the end of the berserk
33
26
  // effect.)
34
27
  if (isBerserk) {
@@ -37,9 +30,9 @@ function isDamageToPlayerFatal(player, amount, source, lastDamageGameFrame) {
37
30
  // If we are playing Tainted Samson and the incoming hit will cause us to become Berserk, then
38
31
  // this will not be fatal damage.
39
32
  const berserkChargeAfterHit = player.SamsonBerserkCharge
40
- + constants_1.TAINTED_SAMSON_BERSERK_CHARGE_FROM_TAKING_DAMAGE;
41
- if (character === isaac_typescript_definitions_1.PlayerType.SAMSON_B
42
- && berserkChargeAfterHit >= constants_1.MAX_TAINTED_SAMSON_BERSERK_CHARGE) {
33
+ + TAINTED_SAMSON_BERSERK_CHARGE_FROM_TAKING_DAMAGE;
34
+ if (character === PlayerType.SAMSON_B
35
+ && berserkChargeAfterHit >= MAX_TAINTED_SAMSON_BERSERK_CHARGE) {
43
36
  return false;
44
37
  }
45
38
  // If Spirit Shackles is activated, no damage is fatal.
@@ -48,14 +41,14 @@ function isDamageToPlayerFatal(player, amount, source, lastDamageGameFrame) {
48
41
  }
49
42
  // If we are Tainted Jacob in the Lost Form, we may have plenty of health left, but we will still
50
43
  // die in one hit to anything.
51
- if (character === isaac_typescript_definitions_1.PlayerType.JACOB_2_B) {
44
+ if (character === PlayerType.JACOB_2_B) {
52
45
  return true;
53
46
  }
54
47
  // If we are in the "Lost Curse" form from touching a white fire, all damage will be fatal.
55
- if ((0, players_1.hasLostCurse)(player)) {
48
+ if (hasLostCurse(player)) {
56
49
  return true;
57
50
  }
58
- const playerNumAllHearts = (0, players_1.getPlayerNumHitsRemaining)(player);
51
+ const playerNumAllHearts = getPlayerNumHitsRemaining(player);
59
52
  if (amount < playerNumAllHearts) {
60
53
  return false;
61
54
  }
@@ -66,8 +59,8 @@ function isDamageToPlayerFatal(player, amount, source, lastDamageGameFrame) {
66
59
  }
67
60
  // This will not be fatal damage if we have Glass Cannon and this is the second time we are taking
68
61
  // damage on the same frame.
69
- if (player.HasCollectible(isaac_typescript_definitions_1.CollectibleType.BROKEN_GLASS_CANNON)
70
- && (0, frames_1.onGameFrame)(lastDamageGameFrame)) {
62
+ if (player.HasCollectible(CollectibleType.BROKEN_GLASS_CANNON)
63
+ && onGameFrame(lastDamageGameFrame)) {
71
64
  return false;
72
65
  }
73
66
  // This will not be fatal damage if we have two different kinds of hearts. For example, a bomb
@@ -92,29 +85,29 @@ function isDamageToPlayerFatal(player, amount, source, lastDamageGameFrame) {
92
85
  * Mysterious Paper rotates between the 4 items on every frame, in order. The formula for whether
93
86
  * Mysterious Paper be Missing Power is: `gameFrameCount % 4 === 3`
94
87
  */
95
- function willMysteriousPaperRevive(player) {
88
+ export function willMysteriousPaperRevive(player) {
96
89
  const sprite = player.GetSprite();
97
90
  // We want to explicitly check the length of the death animation because we might be playing on a
98
91
  // modded character that has a custom death animation.
99
92
  const character = player.GetPlayerType();
100
- const animation = (0, characters_1.getCharacterDeathAnimationName)(character);
101
- const deathAnimationFrames = (0, sprites_1.getLastFrameOfAnimation)(sprite, animation);
93
+ const animation = getCharacterDeathAnimationName(character);
94
+ const deathAnimationFrames = getLastFrameOfAnimation(sprite, animation);
102
95
  const frameOfDeath = player.FrameCount + deathAnimationFrames;
103
- const mysteriousPaperEffect = (0, trinkets_1.getMysteriousPaperEffectForFrame)(player, frameOfDeath);
96
+ const mysteriousPaperEffect = getMysteriousPaperEffectForFrame(player, frameOfDeath);
104
97
  if (mysteriousPaperEffect === undefined) {
105
98
  return false;
106
99
  }
107
- return mysteriousPaperEffect === MysteriousPaperEffect_1.MysteriousPaperEffect.MISSING_POSTER;
100
+ return mysteriousPaperEffect === MysteriousPaperEffect.MISSING_POSTER;
108
101
  }
109
102
  /**
110
103
  * The `EntityPlayer.WillPlayerRevive` method does not properly account for Mysterious Paper, so use
111
104
  * this helper function instead for more robust revival detection.
112
105
  */
113
- function willPlayerRevive(player) {
114
- const trinketSituation = (0, trinketGive_1.temporarilyRemoveTrinket)(player, isaac_typescript_definitions_1.TrinketType.MYSTERIOUS_PAPER);
106
+ export function willPlayerRevive(player) {
107
+ const trinketSituation = temporarilyRemoveTrinket(player, TrinketType.MYSTERIOUS_PAPER);
115
108
  const willRevive = player.WillPlayerRevive()
116
109
  || (trinketSituation !== undefined && willMysteriousPaperRevive(player));
117
- (0, trinketGive_1.giveTrinketsBack)(player, trinketSituation);
110
+ giveTrinketsBack(player, trinketSituation);
118
111
  return willRevive;
119
112
  }
120
113
  /**
@@ -122,12 +115,12 @@ function willPlayerRevive(player) {
122
115
  * take fatal damage. This is contingent on the character that they are playing as and the amount of
123
116
  * broken hearts that they already have.
124
117
  */
125
- function willReviveFromHeartbreak(player) {
126
- if (!player.HasCollectible(isaac_typescript_definitions_1.CollectibleType.HEARTBREAK)) {
118
+ export function willReviveFromHeartbreak(player) {
119
+ if (!player.HasCollectible(CollectibleType.HEARTBREAK)) {
127
120
  return false;
128
121
  }
129
- const maxHeartContainers = (0, playerHealth_1.getPlayerMaxHeartContainers)(player);
130
- const numBrokenHeartsThatWillBeAdded = (0, players_1.isKeeper)(player) ? 1 : 2;
122
+ const maxHeartContainers = getPlayerMaxHeartContainers(player);
123
+ const numBrokenHeartsThatWillBeAdded = isKeeper(player) ? 1 : 2;
131
124
  const brokenHearts = player.GetBrokenHearts();
132
125
  const numBrokenHeartsAfterRevival = numBrokenHeartsThatWillBeAdded + brokenHearts;
133
126
  return maxHeartContainers > numBrokenHeartsAfterRevival;
@@ -136,12 +129,12 @@ function willReviveFromHeartbreak(player) {
136
129
  * Helper function to determine if the Spirit Shackles item is in an enabled state. (It can be
137
130
  * either enabled or disabled.)
138
131
  */
139
- function willReviveFromSpiritShackles(player) {
140
- if (!player.HasCollectible(isaac_typescript_definitions_1.CollectibleType.SPIRIT_SHACKLES)) {
132
+ export function willReviveFromSpiritShackles(player) {
133
+ if (!player.HasCollectible(CollectibleType.SPIRIT_SHACKLES)) {
141
134
  return false;
142
135
  }
143
136
  const effects = player.GetEffects();
144
- const spiritShacklesEnabled = !effects.HasNullEffect(isaac_typescript_definitions_1.NullItemID.SPIRIT_SHACKLES_DISABLED);
145
- const playerInSoulForm = effects.HasNullEffect(isaac_typescript_definitions_1.NullItemID.SPIRIT_SHACKLES_SOUL);
137
+ const spiritShacklesEnabled = !effects.HasNullEffect(NullItemID.SPIRIT_SHACKLES_DISABLED);
138
+ const playerInSoulForm = effects.HasNullEffect(NullItemID.SPIRIT_SHACKLES_SOUL);
146
139
  return spiritShacklesEnabled && !playerInSoulForm;
147
140
  }