isaacscript-common 84.0.0 → 84.1.0

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