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,69 +1,47 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addPlayerHealthType = addPlayerHealthType;
4
- exports.canPickEternalHearts = canPickEternalHearts;
5
- exports.doesPlayerHaveAllBlackHearts = doesPlayerHaveAllBlackHearts;
6
- exports.doesPlayerHaveAllSoulHearts = doesPlayerHaveAllSoulHearts;
7
- exports.getPlayerAvailableHeartSlots = getPlayerAvailableHeartSlots;
8
- exports.getPlayerBlackHearts = getPlayerBlackHearts;
9
- exports.getPlayerHealth = getPlayerHealth;
10
- exports.getPlayerHealthType = getPlayerHealthType;
11
- exports.getPlayerHearts = getPlayerHearts;
12
- exports.getPlayerLastHeart = getPlayerLastHeart;
13
- exports.getPlayerMaxHeartContainers = getPlayerMaxHeartContainers;
14
- exports.getPlayerSoulHearts = getPlayerSoulHearts;
15
- exports.getTaintedMagdaleneNonTemporaryMaxHearts = getTaintedMagdaleneNonTemporaryMaxHearts;
16
- exports.newPlayerHealth = newPlayerHealth;
17
- exports.playerConvertBlackHeartsToSoulHearts = playerConvertBlackHeartsToSoulHearts;
18
- exports.playerConvertSoulHeartsToBlackHearts = playerConvertSoulHeartsToBlackHearts;
19
- exports.playerHasHealthLeft = playerHasHealthLeft;
20
- exports.removeAllPlayerHealth = removeAllPlayerHealth;
21
- exports.setPlayerHealth = setPlayerHealth;
22
- exports.wouldDamageTaintedMagdaleneNonTemporaryHeartContainers = wouldDamageTaintedMagdaleneNonTemporaryHeartContainers;
23
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
24
- const constants_1 = require("../core/constants");
25
- const HealthType_1 = require("../enums/HealthType");
26
- const bitwise_1 = require("./bitwise");
27
- const characters_1 = require("./characters");
28
- const charge_1 = require("./charge");
29
- const playerCollectibles_1 = require("./playerCollectibles");
30
- const players_1 = require("./players");
31
- const utils_1 = require("./utils");
32
- function addPlayerHealthType(player, healthType, numHearts) {
1
+ import { CollectibleType, HeartSubType, PlayerType, TrinketType, } from "isaac-typescript-definitions";
2
+ import { MAX_PLAYER_HEART_CONTAINERS } from "../core/constants";
3
+ import { HealthType } from "../enums/HealthType";
4
+ import { countSetBits, getKBitOfN, getNumBitsOfN } from "./bitwise";
5
+ import { getCharacterMaxHeartContainers } from "./characters";
6
+ import { getTotalCharge } from "./charge";
7
+ import { getActiveItemSlots, setActiveItem } from "./playerCollectibles";
8
+ import { isCharacter, isKeeper } from "./players";
9
+ import { repeat } from "./utils";
10
+ export function addPlayerHealthType(player, healthType, numHearts) {
33
11
  switch (healthType) {
34
- case HealthType_1.HealthType.RED: {
12
+ case HealthType.RED: {
35
13
  player.AddHearts(numHearts);
36
14
  break;
37
15
  }
38
- case HealthType_1.HealthType.SOUL: {
16
+ case HealthType.SOUL: {
39
17
  player.AddSoulHearts(numHearts);
40
18
  break;
41
19
  }
42
- case HealthType_1.HealthType.ETERNAL: {
20
+ case HealthType.ETERNAL: {
43
21
  player.AddEternalHearts(numHearts);
44
22
  break;
45
23
  }
46
- case HealthType_1.HealthType.BLACK: {
24
+ case HealthType.BLACK: {
47
25
  player.AddBlackHearts(numHearts);
48
26
  break;
49
27
  }
50
- case HealthType_1.HealthType.GOLDEN: {
28
+ case HealthType.GOLDEN: {
51
29
  player.AddGoldenHearts(numHearts);
52
30
  break;
53
31
  }
54
- case HealthType_1.HealthType.BONE: {
32
+ case HealthType.BONE: {
55
33
  player.AddBoneHearts(numHearts);
56
34
  break;
57
35
  }
58
- case HealthType_1.HealthType.ROTTEN: {
36
+ case HealthType.ROTTEN: {
59
37
  player.AddRottenHearts(numHearts);
60
38
  break;
61
39
  }
62
- case HealthType_1.HealthType.BROKEN: {
40
+ case HealthType.BROKEN: {
63
41
  player.AddBrokenHearts(numHearts);
64
42
  break;
65
43
  }
66
- case HealthType_1.HealthType.MAX_HEARTS: {
44
+ case HealthType.MAX_HEARTS: {
67
45
  player.AddMaxHearts(numHearts, false);
68
46
  break;
69
47
  }
@@ -76,7 +54,7 @@ function addPlayerHealthType(player, healthType, numHearts) {
76
54
  *
77
55
  * This function's name matches the existing `EntityPlayer` methods.
78
56
  */
79
- function canPickEternalHearts(player) {
57
+ export function canPickEternalHearts(player) {
80
58
  const eternalHearts = player.GetEternalHearts();
81
59
  const maxHearts = player.GetMaxHearts();
82
60
  const heartLimit = player.GetHeartLimit();
@@ -95,7 +73,7 @@ function canPickEternalHearts(player) {
95
73
  * - If the player has one red heart container and three black hearts, this function would return
96
74
  * true.
97
75
  */
98
- function doesPlayerHaveAllBlackHearts(player) {
76
+ export function doesPlayerHaveAllBlackHearts(player) {
99
77
  const soulHearts = getPlayerSoulHearts(player);
100
78
  const blackHearts = getPlayerBlackHearts(player);
101
79
  return blackHearts > 0 && soulHearts === 0;
@@ -112,7 +90,7 @@ function doesPlayerHaveAllBlackHearts(player) {
112
90
  * - If the player has one red heart container and three soul hearts, this function would return
113
91
  * true.
114
92
  */
115
- function doesPlayerHaveAllSoulHearts(player) {
93
+ export function doesPlayerHaveAllSoulHearts(player) {
116
94
  const soulHearts = getPlayerSoulHearts(player);
117
95
  const blackHearts = getPlayerBlackHearts(player);
118
96
  return soulHearts > 0 && blackHearts === 0;
@@ -122,7 +100,7 @@ function doesPlayerHaveAllSoulHearts(player) {
122
100
  * for broken hearts. For example, if the player is Judas and has 1 red heart containers and 2 full
123
101
  * soul hearts and 3 broken hearts, then this function would return 6 (i.e. 12 - 1 - 2 - 3).
124
102
  */
125
- function getPlayerAvailableHeartSlots(player) {
103
+ export function getPlayerAvailableHeartSlots(player) {
126
104
  const maxHeartContainers = getPlayerMaxHeartContainers(player);
127
105
  const effectiveMaxHearts = player.GetEffectiveMaxHearts();
128
106
  const normalAndBoneHeartContainers = effectiveMaxHearts / 2;
@@ -140,9 +118,9 @@ function getPlayerAvailableHeartSlots(player) {
140
118
  *
141
119
  * This is different from the `EntityPlayer.GetBlackHearts` method, since that returns a bitmask.
142
120
  */
143
- function getPlayerBlackHearts(player) {
121
+ export function getPlayerBlackHearts(player) {
144
122
  const blackHeartsBitmask = player.GetBlackHearts();
145
- const blackHeartBits = (0, bitwise_1.countSetBits)(blackHeartsBitmask);
123
+ const blackHeartBits = countSetBits(blackHeartsBitmask);
146
124
  return blackHeartBits * 2;
147
125
  }
148
126
  /**
@@ -152,7 +130,7 @@ function getPlayerBlackHearts(player) {
152
130
  *
153
131
  * This is based on the `REVEL.StoreHealth` function in the Revelations mod.
154
132
  */
155
- function getPlayerHealth(player) {
133
+ export function getPlayerHealth(player) {
156
134
  const character = player.GetPlayerType();
157
135
  let maxHearts = player.GetMaxHearts();
158
136
  let hearts = getPlayerHearts(player); // We use the helper function to remove rotten hearts
@@ -166,7 +144,7 @@ function getPlayerHealth(player) {
166
144
  const soulCharges = player.GetEffectiveSoulCharge();
167
145
  const bloodCharges = player.GetEffectiveBloodCharge();
168
146
  // The Forgotten and The Soul has special health, so we need to account for this.
169
- if (subPlayer !== undefined && character === isaac_typescript_definitions_1.PlayerType.FORGOTTEN) {
147
+ if (subPlayer !== undefined && character === PlayerType.FORGOTTEN) {
170
148
  // The Forgotten does not have red heart containers.
171
149
  maxHearts = boneHearts * 2;
172
150
  boneHearts = 0;
@@ -174,7 +152,7 @@ function getPlayerHealth(player) {
174
152
  // sub player.
175
153
  soulHearts = subPlayer.GetSoulHearts();
176
154
  }
177
- else if (subPlayer !== undefined && character === isaac_typescript_definitions_1.PlayerType.SOUL) {
155
+ else if (subPlayer !== undefined && character === PlayerType.SOUL) {
178
156
  // The Soul will always have 0 bone hearts; we need to get the bone heart amount from the sub
179
157
  // player. We need to store it as "maxHearts" instead of "boneHearts".
180
158
  maxHearts = subPlayer.GetBoneHearts() * 2;
@@ -188,23 +166,23 @@ function getPlayerHealth(player) {
188
166
  const soulHeartTypes = [];
189
167
  for (let i = 0; i < extraHearts; i++) {
190
168
  let isBoneHeart = player.IsBoneHeart(i);
191
- if (subPlayer !== undefined && character === isaac_typescript_definitions_1.PlayerType.FORGOTTEN) {
169
+ if (subPlayer !== undefined && character === PlayerType.FORGOTTEN) {
192
170
  isBoneHeart = subPlayer.IsBoneHeart(i);
193
171
  }
194
172
  if (isBoneHeart) {
195
- soulHeartTypes.push(isaac_typescript_definitions_1.HeartSubType.BONE);
173
+ soulHeartTypes.push(HeartSubType.BONE);
196
174
  }
197
175
  else {
198
176
  // We need to add 1 here because only the second half of a black heart is considered black.
199
177
  let isBlackHeart = player.IsBlackHeart(currentSoulHeart + 1);
200
- if (subPlayer !== undefined && character === isaac_typescript_definitions_1.PlayerType.FORGOTTEN) {
178
+ if (subPlayer !== undefined && character === PlayerType.FORGOTTEN) {
201
179
  isBlackHeart = subPlayer.IsBlackHeart(currentSoulHeart + 1);
202
180
  }
203
181
  if (isBlackHeart) {
204
- soulHeartTypes.push(isaac_typescript_definitions_1.HeartSubType.BLACK);
182
+ soulHeartTypes.push(HeartSubType.BLACK);
205
183
  }
206
184
  else {
207
- soulHeartTypes.push(isaac_typescript_definitions_1.HeartSubType.SOUL);
185
+ soulHeartTypes.push(HeartSubType.SOUL);
208
186
  }
209
187
  // Move to the next heart.
210
188
  currentSoulHeart += 2;
@@ -224,46 +202,46 @@ function getPlayerHealth(player) {
224
202
  soulHeartTypes,
225
203
  };
226
204
  }
227
- function getPlayerHealthType(player, healthType) {
205
+ export function getPlayerHealthType(player, healthType) {
228
206
  switch (healthType) {
229
207
  // 5.10.1
230
- case HealthType_1.HealthType.RED: {
208
+ case HealthType.RED: {
231
209
  // We use the standard library helper function since the `EntityPlayer.GetHearts` method
232
210
  // returns a value that includes rotten hearts.
233
211
  return getPlayerHearts(player);
234
212
  }
235
213
  // 5.10.3
236
- case HealthType_1.HealthType.SOUL: {
214
+ case HealthType.SOUL: {
237
215
  // We use the standard library helper function since the `EntityPlayer.GetSoulHearts` method
238
216
  // returns a value that includes black hearts.
239
217
  return getPlayerSoulHearts(player);
240
218
  }
241
219
  // 5.10.4
242
- case HealthType_1.HealthType.ETERNAL: {
220
+ case HealthType.ETERNAL: {
243
221
  return player.GetEternalHearts();
244
222
  }
245
223
  // 5.10.6
246
- case HealthType_1.HealthType.BLACK: {
224
+ case HealthType.BLACK: {
247
225
  // We use the standard library helper function since the `EntityPlayer.GetBlackHearts` method
248
226
  // returns a bit mask.
249
227
  return getPlayerBlackHearts(player);
250
228
  }
251
229
  // 5.10.7
252
- case HealthType_1.HealthType.GOLDEN: {
230
+ case HealthType.GOLDEN: {
253
231
  return player.GetGoldenHearts();
254
232
  }
255
233
  // 5.10.11
256
- case HealthType_1.HealthType.BONE: {
234
+ case HealthType.BONE: {
257
235
  return player.GetBoneHearts();
258
236
  }
259
237
  // 5.10.12
260
- case HealthType_1.HealthType.ROTTEN: {
238
+ case HealthType.ROTTEN: {
261
239
  return player.GetRottenHearts();
262
240
  }
263
- case HealthType_1.HealthType.BROKEN: {
241
+ case HealthType.BROKEN: {
264
242
  return player.GetBrokenHearts();
265
243
  }
266
- case HealthType_1.HealthType.MAX_HEARTS: {
244
+ case HealthType.MAX_HEARTS: {
267
245
  return player.GetMaxHearts();
268
246
  }
269
247
  }
@@ -276,7 +254,7 @@ function getPlayerHealthType(player, healthType) {
276
254
  * This is different from the `EntityPlayer.GetHearts` method, since that returns a value that
277
255
  * includes rotten hearts.
278
256
  */
279
- function getPlayerHearts(player) {
257
+ export function getPlayerHearts(player) {
280
258
  const rottenHearts = player.GetRottenHearts();
281
259
  const hearts = player.GetHearts();
282
260
  return hearts - rottenHearts * 2;
@@ -285,7 +263,7 @@ function getPlayerHearts(player) {
285
263
  * Helper function that returns the type of the rightmost heart. This does not including golden
286
264
  * hearts or broken hearts, since they cannot be damaged directly.
287
265
  */
288
- function getPlayerLastHeart(player) {
266
+ export function getPlayerLastHeart(player) {
289
267
  const hearts = player.GetHearts();
290
268
  const effectiveMaxHearts = player.GetEffectiveMaxHearts();
291
269
  const soulHearts = player.GetSoulHearts();
@@ -299,33 +277,33 @@ function getPlayerLastHeart(player) {
299
277
  if (isLastHeartBone) {
300
278
  const isLastContainerEmpty = hearts <= effectiveMaxHearts - 2;
301
279
  if (isLastContainerEmpty) {
302
- return HealthType_1.HealthType.BONE;
280
+ return HealthType.BONE;
303
281
  }
304
282
  if (rottenHearts > 0) {
305
- return HealthType_1.HealthType.ROTTEN;
283
+ return HealthType.ROTTEN;
306
284
  }
307
285
  if (eternalHearts > 0) {
308
- return HealthType_1.HealthType.ETERNAL;
286
+ return HealthType.ETERNAL;
309
287
  }
310
- return HealthType_1.HealthType.RED;
288
+ return HealthType.RED;
311
289
  }
312
290
  if (soulHearts > 0) {
313
- const numBits = (0, bitwise_1.getNumBitsOfN)(blackHearts);
314
- const finalBit = (0, bitwise_1.getKBitOfN)(numBits - 1, blackHearts);
291
+ const numBits = getNumBitsOfN(blackHearts);
292
+ const finalBit = getKBitOfN(numBits - 1, blackHearts);
315
293
  const isBlack = finalBit === 1;
316
294
  if (isBlack) {
317
- return HealthType_1.HealthType.BLACK;
295
+ return HealthType.BLACK;
318
296
  }
319
297
  // If it is not a black heart, it must be a soul heart.
320
- return HealthType_1.HealthType.SOUL;
298
+ return HealthType.SOUL;
321
299
  }
322
300
  if (eternalHearts > 0) {
323
- return HealthType_1.HealthType.ETERNAL;
301
+ return HealthType.ETERNAL;
324
302
  }
325
303
  if (rottenHearts > 0) {
326
- return HealthType_1.HealthType.ROTTEN;
304
+ return HealthType.ROTTEN;
327
305
  }
328
- return HealthType_1.HealthType.RED;
306
+ return HealthType.RED;
329
307
  }
330
308
  /**
331
309
  * Returns the maximum heart containers that the provided player can have. Normally, this is 12, but
@@ -333,22 +311,22 @@ function getPlayerLastHeart(player) {
333
311
  * This function does not account for Broken Hearts; use the `getPlayerAvailableHeartSlots` helper
334
312
  * function for that.
335
313
  */
336
- function getPlayerMaxHeartContainers(player) {
314
+ export function getPlayerMaxHeartContainers(player) {
337
315
  const character = player.GetPlayerType();
338
- const characterMaxHeartContainers = (0, characters_1.getCharacterMaxHeartContainers)(character);
316
+ const characterMaxHeartContainers = getCharacterMaxHeartContainers(character);
339
317
  // 1
340
318
  // Magdalene can increase her maximum heart containers with Birthright.
341
- if (character === isaac_typescript_definitions_1.PlayerType.MAGDALENE
342
- && player.HasCollectible(isaac_typescript_definitions_1.CollectibleType.BIRTHRIGHT)) {
319
+ if (character === PlayerType.MAGDALENE
320
+ && player.HasCollectible(CollectibleType.BIRTHRIGHT)) {
343
321
  const extraMaxHeartContainersFromBirthright = 6;
344
322
  return characterMaxHeartContainers + extraMaxHeartContainersFromBirthright;
345
323
  }
346
324
  // 14, 33
347
325
  // Keeper and Tainted Keeper can increase their coin containers with Mother's Kiss and Greed's
348
326
  // Gullet.
349
- if ((0, players_1.isKeeper)(player)) {
350
- const numMothersKisses = player.GetTrinketMultiplier(isaac_typescript_definitions_1.TrinketType.MOTHERS_KISS);
351
- const hasGreedsGullet = player.HasCollectible(isaac_typescript_definitions_1.CollectibleType.GREEDS_GULLET);
327
+ if (isKeeper(player)) {
328
+ const numMothersKisses = player.GetTrinketMultiplier(TrinketType.MOTHERS_KISS);
329
+ const hasGreedsGullet = player.HasCollectible(CollectibleType.GREEDS_GULLET);
352
330
  const coins = player.GetNumCoins();
353
331
  const greedsGulletCoinContainers = hasGreedsGullet
354
332
  ? Math.floor(coins / 25)
@@ -367,7 +345,7 @@ function getPlayerMaxHeartContainers(player) {
367
345
  * This is different from the `EntityPlayer.GetSoulHearts` method, since that returns the combined
368
346
  * number of soul hearts and black hearts.
369
347
  */
370
- function getPlayerSoulHearts(player) {
348
+ export function getPlayerSoulHearts(player) {
371
349
  const soulHearts = player.GetSoulHearts();
372
350
  const blackHearts = getPlayerBlackHearts(player);
373
351
  return soulHearts - blackHearts;
@@ -382,14 +360,14 @@ function getPlayerSoulHearts(player) {
382
360
  * This function does not validate whether the provided player is Tainted Magdalene; that should be
383
361
  * accomplished before invoking this function.
384
362
  */
385
- function getTaintedMagdaleneNonTemporaryMaxHearts(player) {
363
+ export function getTaintedMagdaleneNonTemporaryMaxHearts(player) {
386
364
  const maxHearts = player.GetMaxHearts();
387
- const hasBirthright = player.HasCollectible(isaac_typescript_definitions_1.CollectibleType.BIRTHRIGHT);
365
+ const hasBirthright = player.HasCollectible(CollectibleType.BIRTHRIGHT);
388
366
  const maxNonTemporaryMaxHearts = hasBirthright ? 6 : 4;
389
367
  return Math.min(maxHearts, maxNonTemporaryMaxHearts);
390
368
  }
391
369
  /** Returns a `PlayerHealth` object with all zeros. */
392
- function newPlayerHealth() {
370
+ export function newPlayerHealth() {
393
371
  return {
394
372
  maxHearts: 0,
395
373
  hearts: 0,
@@ -408,10 +386,10 @@ function newPlayerHealth() {
408
386
  * Helper function to remove all of a player's black hearts and add the corresponding amount of soul
409
387
  * hearts.
410
388
  */
411
- function playerConvertBlackHeartsToSoulHearts(player) {
389
+ export function playerConvertBlackHeartsToSoulHearts(player) {
412
390
  const playerHealth = getPlayerHealth(player);
413
391
  removeAllPlayerHealth(player);
414
- const newSoulHeartTypes = playerHealth.soulHeartTypes.map((soulHeartType) => soulHeartType === isaac_typescript_definitions_1.HeartSubType.BLACK ? isaac_typescript_definitions_1.HeartSubType.SOUL : soulHeartType);
392
+ const newSoulHeartTypes = playerHealth.soulHeartTypes.map((soulHeartType) => soulHeartType === HeartSubType.BLACK ? HeartSubType.SOUL : soulHeartType);
415
393
  const playerHealthWithSoulHearts = {
416
394
  ...playerHealth,
417
395
  soulHeartTypes: newSoulHeartTypes,
@@ -422,10 +400,10 @@ function playerConvertBlackHeartsToSoulHearts(player) {
422
400
  * Helper function to remove all of a player's soul hearts and add the corresponding amount of black
423
401
  * hearts.
424
402
  */
425
- function playerConvertSoulHeartsToBlackHearts(player) {
403
+ export function playerConvertSoulHeartsToBlackHearts(player) {
426
404
  const playerHealth = getPlayerHealth(player);
427
405
  removeAllPlayerHealth(player);
428
- const newSoulHeartTypes = playerHealth.soulHeartTypes.map((soulHeartType) => soulHeartType === isaac_typescript_definitions_1.HeartSubType.SOUL ? isaac_typescript_definitions_1.HeartSubType.BLACK : soulHeartType);
406
+ const newSoulHeartTypes = playerHealth.soulHeartTypes.map((soulHeartType) => soulHeartType === HeartSubType.SOUL ? HeartSubType.BLACK : soulHeartType);
429
407
  const playerHealthWithBlackHearts = {
430
408
  ...playerHealth,
431
409
  soulHeartTypes: newSoulHeartTypes,
@@ -438,13 +416,13 @@ function playerConvertSoulHeartsToBlackHearts(player) {
438
416
  * Specifically, this function will return false if the player has 0 red hearts, 0 soul/black
439
417
  * hearts, and 0 bone hearts.
440
418
  */
441
- function playerHasHealthLeft(player) {
419
+ export function playerHasHealthLeft(player) {
442
420
  const hearts = player.GetHearts();
443
421
  const soulHearts = player.GetSoulHearts();
444
422
  const boneHearts = player.GetBoneHearts();
445
423
  return hearts > 0 || soulHearts > 0 || boneHearts > 0;
446
424
  }
447
- function removeAllPlayerHealth(player) {
425
+ export function removeAllPlayerHealth(player) {
448
426
  const goldenHearts = player.GetGoldenHearts();
449
427
  const eternalHearts = player.GetEternalHearts();
450
428
  const boneHearts = player.GetBoneHearts();
@@ -455,11 +433,11 @@ function removeAllPlayerHealth(player) {
455
433
  player.AddEternalHearts(-eternalHearts);
456
434
  player.AddBoneHearts(-boneHearts);
457
435
  player.AddBrokenHearts(-brokenHearts);
458
- player.AddMaxHearts(constants_1.MAX_PLAYER_HEART_CONTAINERS * -2, true);
459
- player.AddSoulHearts(constants_1.MAX_PLAYER_HEART_CONTAINERS * -2);
436
+ player.AddMaxHearts(MAX_PLAYER_HEART_CONTAINERS * -2, true);
437
+ player.AddSoulHearts(MAX_PLAYER_HEART_CONTAINERS * -2);
460
438
  // If we are The Soul, the `EntityPlayer.AddBoneHearts` method will not remove Forgotten's bone
461
439
  // hearts, so we need to explicitly handle this.
462
- if ((0, players_1.isCharacter)(player, isaac_typescript_definitions_1.PlayerType.SOUL)) {
440
+ if (isCharacter(player, PlayerType.SOUL)) {
463
441
  const forgotten = player.GetSubPlayer();
464
442
  if (forgotten !== undefined) {
465
443
  const forgottenBoneHearts = forgotten.GetBoneHearts();
@@ -474,16 +452,16 @@ function removeAllPlayerHealth(player) {
474
452
  *
475
453
  * Based on the `REVEL.LoadHealth` function in the Revelations mod.
476
454
  */
477
- function setPlayerHealth(player, playerHealth) {
455
+ export function setPlayerHealth(player, playerHealth) {
478
456
  const character = player.GetPlayerType();
479
457
  const subPlayer = player.GetSubPlayer();
480
458
  // Before we add or remove any health, we have to take away Alabaster Box, if present. (Removing
481
459
  // soul hearts from the player will remove Alabaster Box charges.)
482
460
  const alabasterBoxDescriptions = [];
483
- const alabasterBoxActiveSlots = (0, playerCollectibles_1.getActiveItemSlots)(player, isaac_typescript_definitions_1.CollectibleType.ALABASTER_BOX);
461
+ const alabasterBoxActiveSlots = getActiveItemSlots(player, CollectibleType.ALABASTER_BOX);
484
462
  for (const activeSlot of alabasterBoxActiveSlots) {
485
- const totalCharge = (0, charge_1.getTotalCharge)(player, activeSlot);
486
- (0, playerCollectibles_1.setActiveItem)(player, isaac_typescript_definitions_1.CollectibleType.NULL, activeSlot);
463
+ const totalCharge = getTotalCharge(player, activeSlot);
464
+ setActiveItem(player, CollectibleType.NULL, activeSlot);
487
465
  alabasterBoxDescriptions.push({
488
466
  activeSlot,
489
467
  totalCharge,
@@ -491,7 +469,7 @@ function setPlayerHealth(player, playerHealth) {
491
469
  }
492
470
  removeAllPlayerHealth(player);
493
471
  // Add the red heart containers.
494
- if (subPlayer !== undefined && character === isaac_typescript_definitions_1.PlayerType.SOUL) {
472
+ if (subPlayer !== undefined && character === PlayerType.SOUL) {
495
473
  // Adding health to The Soul is a special case.
496
474
  subPlayer.AddMaxHearts(playerHealth.maxHearts, false);
497
475
  }
@@ -508,20 +486,20 @@ function setPlayerHealth(player, playerHealth) {
508
486
  * Fix the bug where a half soul heart to the left of a bone heart will be treated as a full
509
487
  * soul heart.
510
488
  */
511
- const shouldAddOneSoulHeart = isHalf || soulHeartType === isaac_typescript_definitions_1.HeartSubType.BONE || soulHeartsRemaining < 2;
489
+ const shouldAddOneSoulHeart = isHalf || soulHeartType === HeartSubType.BONE || soulHeartsRemaining < 2;
512
490
  const numSoulHearts = shouldAddOneSoulHeart ? 1 : 2;
513
491
  switch (soulHeartType) {
514
- case isaac_typescript_definitions_1.HeartSubType.SOUL: {
492
+ case HeartSubType.SOUL: {
515
493
  player.AddSoulHearts(numSoulHearts);
516
494
  soulHeartsRemaining -= numSoulHearts;
517
495
  break;
518
496
  }
519
- case isaac_typescript_definitions_1.HeartSubType.BLACK: {
497
+ case HeartSubType.BLACK: {
520
498
  player.AddBlackHearts(numSoulHearts);
521
499
  soulHeartsRemaining -= numSoulHearts;
522
500
  break;
523
501
  }
524
- case isaac_typescript_definitions_1.HeartSubType.BONE: {
502
+ case HeartSubType.BONE: {
525
503
  player.AddBoneHearts(numSoulHearts);
526
504
  break;
527
505
  }
@@ -538,9 +516,9 @@ function setPlayerHealth(player, playerHealth) {
538
516
  * functions in that a value of 1 is equivalent to a half-heart.
539
517
  */
540
518
  player.AddRottenHearts(playerHealth.rottenHearts * 2);
541
- if (character === isaac_typescript_definitions_1.PlayerType.MAGDALENE_B) {
519
+ if (character === PlayerType.MAGDALENE_B) {
542
520
  // Adding 1 heart to Tainted Magdalene will actually add two hearts.
543
- (0, utils_1.repeat)(playerHealth.hearts, () => {
521
+ repeat(playerHealth.hearts, () => {
544
522
  if (player.HasFullHearts()) {
545
523
  return;
546
524
  }
@@ -560,15 +538,15 @@ function setPlayerHealth(player, playerHealth) {
560
538
  player.AddGoldenHearts(playerHealth.goldenHearts);
561
539
  player.AddBrokenHearts(playerHealth.brokenHearts);
562
540
  // Set the Bethany / Tainted Bethany charges.
563
- if (character === isaac_typescript_definitions_1.PlayerType.BETHANY) {
541
+ if (character === PlayerType.BETHANY) {
564
542
  player.SetSoulCharge(playerHealth.soulCharges);
565
543
  }
566
- else if (character === isaac_typescript_definitions_1.PlayerType.BETHANY_B) {
544
+ else if (character === PlayerType.BETHANY_B) {
567
545
  player.SetBloodCharge(playerHealth.bloodCharges);
568
546
  }
569
547
  // Re-add the Alabaster Box, if present.
570
548
  for (const { activeSlot, totalCharge } of alabasterBoxDescriptions) {
571
- (0, playerCollectibles_1.setActiveItem)(player, isaac_typescript_definitions_1.CollectibleType.ALABASTER_BOX, activeSlot, totalCharge);
549
+ setActiveItem(player, CollectibleType.ALABASTER_BOX, activeSlot, totalCharge);
572
550
  }
573
551
  }
574
552
  /**
@@ -581,7 +559,7 @@ function setPlayerHealth(player, playerHealth) {
581
559
  * Before using this function, it is expected that you check to see if the player is Tainted
582
560
  * Magdalene first, or else it will give a nonsensical result.
583
561
  */
584
- function wouldDamageTaintedMagdaleneNonTemporaryHeartContainers(player, damageAmount) {
562
+ export function wouldDamageTaintedMagdaleneNonTemporaryHeartContainers(player, damageAmount) {
585
563
  // Regardless of the damage amount, damage to a player cannot remove a soul heart and a red heart
586
564
  // at the same time.
587
565
  const soulHearts = player.GetSoulHearts();
@@ -1,21 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAllPlayers = getAllPlayers;
4
- exports.getOtherPlayers = getOtherPlayers;
5
- exports.getPlayerFromIndex = getPlayerFromIndex;
6
- exports.getPlayerIndex = getPlayerIndex;
7
- exports.getPlayerIndexVanilla = getPlayerIndexVanilla;
8
- exports.getPlayers = getPlayers;
9
- exports.getSubPlayerParent = getSubPlayerParent;
10
- exports.isChildPlayer = isChildPlayer;
11
- exports.isFoundSoul = isFoundSoul;
12
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
13
- const cachedClasses_1 = require("../core/cachedClasses");
14
- const ReadonlySet_1 = require("../types/ReadonlySet");
15
- const DEFAULT_COLLECTIBLE_TYPE = isaac_typescript_definitions_1.CollectibleType.SAD_ONION;
16
- const EXCLUDED_CHARACTERS = new ReadonlySet_1.ReadonlySet([
17
- isaac_typescript_definitions_1.PlayerType.ESAU, // 20
18
- isaac_typescript_definitions_1.PlayerType.SOUL_B, // 40
1
+ import { BabySubType, CollectibleType, PlayerType, PlayerVariant, } from "isaac-typescript-definitions";
2
+ import { game } from "../core/cachedClasses";
3
+ import { ReadonlySet } from "../types/ReadonlySet";
4
+ const DEFAULT_COLLECTIBLE_TYPE = CollectibleType.SAD_ONION;
5
+ const EXCLUDED_CHARACTERS = new ReadonlySet([
6
+ PlayerType.ESAU, // 20
7
+ PlayerType.SOUL_B, // 40
19
8
  ]);
20
9
  /**
21
10
  * Helper function to get every player with no restrictions, by using `Game.GetNumPlayers` and
@@ -24,8 +13,8 @@ const EXCLUDED_CHARACTERS = new ReadonlySet_1.ReadonlySet([
24
13
  * This function is almost never what you want to use. For most purposes, use the `getPlayers`
25
14
  * helper function instead to get a filtered list of players.
26
15
  */
27
- function getAllPlayers() {
28
- const numPlayers = cachedClasses_1.game.GetNumPlayers();
16
+ export function getAllPlayers() {
17
+ const numPlayers = game.GetNumPlayers();
29
18
  const players = [];
30
19
  for (let i = 0; i < numPlayers; i++) {
31
20
  const player = Isaac.GetPlayer(i);
@@ -37,7 +26,7 @@ function getAllPlayers() {
37
26
  * Helper function to get all of the other players in the room besides the one provided. (This
38
27
  * includes "child" players.)
39
28
  */
40
- function getOtherPlayers(player) {
29
+ export function getOtherPlayers(player) {
41
30
  const playerPtrHash = GetPtrHash(player);
42
31
  const players = getAllPlayers();
43
32
  return players.filter((otherPlayer) => GetPtrHash(otherPlayer) !== playerPtrHash);
@@ -46,7 +35,7 @@ function getOtherPlayers(player) {
46
35
  * Helper function to get the corresponding `EntityPlayer` object that corresponds to a
47
36
  * `PlayerIndex`.
48
37
  */
49
- function getPlayerFromIndex(playerIndex) {
38
+ export function getPlayerFromIndex(playerIndex) {
50
39
  const players = getAllPlayers();
51
40
  return players.find((player) => getPlayerIndex(player) === playerIndex);
52
41
  }
@@ -80,7 +69,7 @@ function getPlayerFromIndex(playerIndex) {
80
69
  * 4. With that said, in almost all cases, you should be lazy-initializing your data structures in
81
70
  * other callbacks, so this should not be an issue.
82
71
  */
83
- function getPlayerIndex(player, differentiateForgottenAndSoul = false) {
72
+ export function getPlayerIndex(player, differentiateForgottenAndSoul = false) {
84
73
  // Sub-players use separate RNG values for some reason, so we need to always use the main player:
85
74
  // https://github.com/Meowlala/RepentanceAPIIssueTracker/issues/443
86
75
  // We can safely ignore the player's character because regardless of whether the main player ends
@@ -111,8 +100,8 @@ function getPlayerIndex(player, differentiateForgottenAndSoul = false) {
111
100
  * Note that if you storing information about a player in a data structure, you never want to use
112
101
  * this index; use the `getPlayerIndex` function instead.
113
102
  */
114
- function getPlayerIndexVanilla(playerToFind) {
115
- const numPlayers = cachedClasses_1.game.GetNumPlayers();
103
+ export function getPlayerIndexVanilla(playerToFind) {
104
+ const numPlayers = game.GetNumPlayers();
116
105
  const playerToFindHash = GetPtrHash(playerToFind);
117
106
  for (let i = 0; i < numPlayers; i++) {
118
107
  const player = Isaac.GetPlayer(i);
@@ -132,7 +121,7 @@ function getPlayerIndexVanilla(playerToFind) {
132
121
  * @param performCharacterExclusions Whether to exclude characters that are not directly controlled
133
122
  * by the player (i.e. Esau & Tainted Soul). Default is false.
134
123
  */
135
- function getPlayers(performCharacterExclusions = false) {
124
+ export function getPlayers(performCharacterExclusions = false) {
136
125
  const players = getAllPlayers();
137
126
  const nonChildPlayers = players.filter((player) => !isChildPlayer(player));
138
127
  const nonChildPlayersFiltered = nonChildPlayers.filter((player) => {
@@ -146,7 +135,7 @@ function getPlayers(performCharacterExclusions = false) {
146
135
  * is useful because calling the `EntityPlayer.GetSubPlayer` method on a sub-player object will
147
136
  * return undefined.
148
137
  */
149
- function getSubPlayerParent(subPlayer) {
138
+ export function getSubPlayerParent(subPlayer) {
150
139
  const subPlayerPtrHash = GetPtrHash(subPlayer);
151
140
  const players = getPlayers();
152
141
  return players.find((player) => {
@@ -162,23 +151,23 @@ function getSubPlayerParent(subPlayer) {
162
151
  * Helper function to detect if a particular player is a "child" player, meaning that they have a
163
152
  * non-undefined `EntityPlayer.Parent` field. (For example, the Strawman Keeper.)
164
153
  */
165
- function isChildPlayer(player) {
154
+ export function isChildPlayer(player) {
166
155
  return player.Parent !== undefined;
167
156
  }
168
157
  /**
169
158
  * Helper function to detect if a particular player is the Found Soul player provided by the
170
159
  * trinket.
171
160
  */
172
- function isFoundSoul(player) {
161
+ export function isFoundSoul(player) {
173
162
  return (isChildPlayer(player)
174
- && player.Variant === isaac_typescript_definitions_1.PlayerVariant.COOP_BABY
175
- && player.SubType === isaac_typescript_definitions_1.BabySubType.FOUND_SOUL);
163
+ && player.Variant === PlayerVariant.COOP_BABY
164
+ && player.SubType === BabySubType.FOUND_SOUL);
176
165
  }
177
166
  function getPlayerIndexCollectibleType(player, differentiateForgottenAndSoul) {
178
167
  const character = player.GetPlayerType();
179
- if (character === isaac_typescript_definitions_1.PlayerType.SOUL) {
168
+ if (character === PlayerType.SOUL) {
180
169
  return differentiateForgottenAndSoul
181
- ? isaac_typescript_definitions_1.CollectibleType.INNER_EYE
170
+ ? CollectibleType.INNER_EYE
182
171
  : DEFAULT_COLLECTIBLE_TYPE;
183
172
  }
184
173
  return DEFAULT_COLLECTIBLE_TYPE;