isaacscript-common 84.0.1 → 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 +2 -0
  383. package/dist/functions/utils.d.ts.map +1 -1
  384. package/dist/functions/utils.js +195 -0
  385. package/dist/functions/utils.lua +4 -1
  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 +2 -0
  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 +5 -2
  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 +4 -1
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keyboardToString = exports.isShootActionTriggeredOnAnyInput = exports.isShootActionTriggered = exports.isShootActionPressedOnAnyInput = exports.isShootActionPressed = exports.isShootAction = exports.isMoveActionTriggeredOnAnyInput = exports.isMoveActionTriggered = exports.isMoveActionPressedOnAnyInput = exports.isMoveActionPressed = exports.isMoveAction = exports.isModifierKeyPressed = exports.isKeyboardPressed = exports.isActionTriggeredOnAnyInput = exports.isActionTriggered = exports.isActionPressedOnAnyInput = exports.isActionPressed = exports.getShootButtonActions = exports.getMoveButtonActions = exports.controllerToString = exports.SHOOTING_BUTTON_ACTIONS_SET = exports.SHOOTING_BUTTON_ACTIONS = exports.MOVEMENT_BUTTON_ACTIONS_SET = exports.MOVEMENT_BUTTON_ACTIONS = exports.MODIFIER_KEYS = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const cachedEnumValues_1 = require("../arrays/cachedEnumValues");
6
+ const keyboardToStringMap_1 = require("../maps/keyboardToStringMap");
7
+ const ReadonlySet_1 = require("../types/ReadonlySet");
8
+ const string_1 = require("./string");
9
+ exports.MODIFIER_KEYS = [
10
+ isaac_typescript_definitions_1.Keyboard.LEFT_SHIFT,
11
+ isaac_typescript_definitions_1.Keyboard.LEFT_CONTROL,
12
+ isaac_typescript_definitions_1.Keyboard.LEFT_ALT,
13
+ isaac_typescript_definitions_1.Keyboard.LEFT_SUPER,
14
+ isaac_typescript_definitions_1.Keyboard.RIGHT_SHIFT,
15
+ isaac_typescript_definitions_1.Keyboard.RIGHT_CONTROL,
16
+ isaac_typescript_definitions_1.Keyboard.RIGHT_ALT,
17
+ isaac_typescript_definitions_1.Keyboard.RIGHT_SUPER, // 347
18
+ ];
19
+ exports.MOVEMENT_BUTTON_ACTIONS = [
20
+ isaac_typescript_definitions_1.ButtonAction.LEFT,
21
+ isaac_typescript_definitions_1.ButtonAction.RIGHT,
22
+ isaac_typescript_definitions_1.ButtonAction.UP,
23
+ isaac_typescript_definitions_1.ButtonAction.DOWN, // 3
24
+ ];
25
+ exports.MOVEMENT_BUTTON_ACTIONS_SET = new ReadonlySet_1.ReadonlySet(exports.MOVEMENT_BUTTON_ACTIONS);
26
+ exports.SHOOTING_BUTTON_ACTIONS = [
27
+ isaac_typescript_definitions_1.ButtonAction.SHOOT_LEFT,
28
+ isaac_typescript_definitions_1.ButtonAction.SHOOT_RIGHT,
29
+ isaac_typescript_definitions_1.ButtonAction.SHOOT_UP,
30
+ isaac_typescript_definitions_1.ButtonAction.SHOOT_DOWN, // 7
31
+ ];
32
+ exports.SHOOTING_BUTTON_ACTIONS_SET = new ReadonlySet_1.ReadonlySet(exports.SHOOTING_BUTTON_ACTIONS);
33
+ /**
34
+ * Helper function to get the enum name for the specified `Controller` value. Note that this will
35
+ * trim off the "BUTTON_" prefix.
36
+ *
37
+ * Returns undefined if the submitted controller value was not valid.
38
+ */
39
+ function controllerToString(controller) {
40
+ const key = isaac_typescript_definitions_1.Controller[controller];
41
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
42
+ if (key === undefined) {
43
+ return undefined;
44
+ }
45
+ return (0, string_1.trimPrefix)(key, "BUTTON_");
46
+ }
47
+ exports.controllerToString = controllerToString;
48
+ /**
49
+ * Helper function to get the movement actions that the specified `ControllerIndex` is currently
50
+ * pressing down. This returns an array because a player can be holding down more than one movement
51
+ * key at a time.
52
+ */
53
+ function getMoveButtonActions(controllerIndex) {
54
+ return exports.MOVEMENT_BUTTON_ACTIONS.filter((buttonAction) => Input.IsActionPressed(buttonAction, controllerIndex));
55
+ }
56
+ exports.getMoveButtonActions = getMoveButtonActions;
57
+ /**
58
+ * Helper function to get the shooting actions that the specified `ControllerIndex` is currently
59
+ * pressing down. This returns an array because a player can be holding down more than one shooting
60
+ * key at a time.
61
+ */
62
+ function getShootButtonActions(controllerIndex) {
63
+ return exports.SHOOTING_BUTTON_ACTIONS.filter((buttonAction) => Input.IsActionPressed(buttonAction, controllerIndex));
64
+ }
65
+ exports.getShootButtonActions = getShootButtonActions;
66
+ /**
67
+ * Helper function to check if a player is pressing a specific button (i.e. holding it down).
68
+ *
69
+ * This is a variadic version of `Input.IsActionPressed`, meaning that you can pass as many buttons
70
+ * as you want to check for. This function will return true if any of the buttons are pressed.
71
+ */
72
+ function isActionPressed(controllerIndex, ...buttonActions) {
73
+ return buttonActions.some((buttonAction) => Input.IsActionPressed(buttonAction, controllerIndex));
74
+ }
75
+ exports.isActionPressed = isActionPressed;
76
+ /**
77
+ * Helper function to iterate over all inputs to determine if a specific button is pressed (i.e.
78
+ * being held down).
79
+ *
80
+ * This function is variadic, meaning you can pass as many buttons as you want to check for. This
81
+ * function will return true if any of the buttons are pressed.
82
+ */
83
+ function isActionPressedOnAnyInput(...buttonActions) {
84
+ return cachedEnumValues_1.CONTROLLER_INDEX_VALUES.some((controllerIndex) => isActionPressed(controllerIndex, ...buttonActions));
85
+ }
86
+ exports.isActionPressedOnAnyInput = isActionPressedOnAnyInput;
87
+ /**
88
+ * Helper function to check if a player is triggering a specific button (i.e. pressing and releasing
89
+ * it).
90
+ *
91
+ * This is a variadic version of `Input.IsActionTriggered`, meaning that you can pass as many
92
+ * buttons as you want to check for. This function will return true if any of the buttons are
93
+ * triggered.
94
+ */
95
+ function isActionTriggered(controllerIndex, ...buttonActions) {
96
+ return buttonActions.some((buttonAction) => Input.IsActionTriggered(buttonAction, controllerIndex));
97
+ }
98
+ exports.isActionTriggered = isActionTriggered;
99
+ /**
100
+ * Iterates over all inputs to determine if a specific button is triggered (i.e. held down and then
101
+ * released).
102
+ *
103
+ * This function is variadic, meaning you can pass as many buttons as you want to check for. This
104
+ * function will return true if any of the buttons are pressed.
105
+ */
106
+ function isActionTriggeredOnAnyInput(...buttonActions) {
107
+ return cachedEnumValues_1.CONTROLLER_INDEX_VALUES.some((controllerIndex) => isActionTriggered(controllerIndex, ...buttonActions));
108
+ }
109
+ exports.isActionTriggeredOnAnyInput = isActionTriggeredOnAnyInput;
110
+ /**
111
+ * Helper function to see if a specific keyboard key is being held down by the player.
112
+ *
113
+ * This function is variadic, meaning you can pass as many keyboard values as you want to check for.
114
+ * This function will return true if any of the values are pressed.
115
+ */
116
+ function isKeyboardPressed(...keys) {
117
+ return keys.some((key) => Input.IsButtonPressed(key, isaac_typescript_definitions_1.ControllerIndex.KEYBOARD));
118
+ }
119
+ exports.isKeyboardPressed = isKeyboardPressed;
120
+ /**
121
+ * Helper function to check if one or more modifier keys are being pressed down on the keyboard.
122
+ *
123
+ * A modifier key is defined as shift, control, alt, or Windows.
124
+ */
125
+ function isModifierKeyPressed() {
126
+ return isKeyboardPressed(...exports.MODIFIER_KEYS);
127
+ }
128
+ exports.isModifierKeyPressed = isModifierKeyPressed;
129
+ function isMoveAction(buttonAction) {
130
+ return exports.MOVEMENT_BUTTON_ACTIONS_SET.has(buttonAction);
131
+ }
132
+ exports.isMoveAction = isMoveAction;
133
+ function isMoveActionPressed(controllerIndex) {
134
+ return isActionPressed(controllerIndex, ...exports.MOVEMENT_BUTTON_ACTIONS);
135
+ }
136
+ exports.isMoveActionPressed = isMoveActionPressed;
137
+ function isMoveActionPressedOnAnyInput() {
138
+ return exports.MOVEMENT_BUTTON_ACTIONS.some((moveAction) => isActionPressedOnAnyInput(moveAction));
139
+ }
140
+ exports.isMoveActionPressedOnAnyInput = isMoveActionPressedOnAnyInput;
141
+ function isMoveActionTriggered(controllerIndex) {
142
+ return isActionTriggered(controllerIndex, ...exports.MOVEMENT_BUTTON_ACTIONS);
143
+ }
144
+ exports.isMoveActionTriggered = isMoveActionTriggered;
145
+ function isMoveActionTriggeredOnAnyInput() {
146
+ return exports.MOVEMENT_BUTTON_ACTIONS.some((moveAction) => isActionTriggeredOnAnyInput(moveAction));
147
+ }
148
+ exports.isMoveActionTriggeredOnAnyInput = isMoveActionTriggeredOnAnyInput;
149
+ function isShootAction(buttonAction) {
150
+ return exports.SHOOTING_BUTTON_ACTIONS_SET.has(buttonAction);
151
+ }
152
+ exports.isShootAction = isShootAction;
153
+ function isShootActionPressed(controllerIndex) {
154
+ return isActionPressed(controllerIndex, ...exports.SHOOTING_BUTTON_ACTIONS);
155
+ }
156
+ exports.isShootActionPressed = isShootActionPressed;
157
+ function isShootActionPressedOnAnyInput() {
158
+ return exports.SHOOTING_BUTTON_ACTIONS.some((shootAction) => isActionPressedOnAnyInput(shootAction));
159
+ }
160
+ exports.isShootActionPressedOnAnyInput = isShootActionPressedOnAnyInput;
161
+ function isShootActionTriggered(controllerIndex) {
162
+ return isActionTriggered(controllerIndex, ...exports.SHOOTING_BUTTON_ACTIONS);
163
+ }
164
+ exports.isShootActionTriggered = isShootActionTriggered;
165
+ function isShootActionTriggeredOnAnyInput() {
166
+ return exports.SHOOTING_BUTTON_ACTIONS.some((shootAction) => isActionTriggeredOnAnyInput(shootAction));
167
+ }
168
+ exports.isShootActionTriggeredOnAnyInput = isShootActionTriggeredOnAnyInput;
169
+ /**
170
+ * Helper function to get the string that would be typed if someone pressed the corresponding key.
171
+ * This is useful for creating in-game chat.
172
+ *
173
+ * Note that this function will only work for the keyboard values that are printable. Thus, it will
174
+ * return undefined for e.g. `Keyboard.LEFT_SHIFT` (340). If all you want is the corresponding name
175
+ * of the key, then simply use the enum reverse mapping (e.g. `Keyboard[keyboard]`).
176
+ */
177
+ function keyboardToString(keyboard, uppercase) {
178
+ const tuple = keyboardToStringMap_1.KEYBOARD_TO_STRING_MAP.get(keyboard);
179
+ if (tuple === undefined) {
180
+ return undefined;
181
+ }
182
+ const [lowercaseCharacter, uppercaseCharacter] = tuple;
183
+ return uppercase ? uppercaseCharacter : lowercaseCharacter;
184
+ }
185
+ exports.keyboardToString = keyboardToString;
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isaacAPIClassEquals = exports.isTear = exports.isTNT = exports.isSpikes = exports.isRock = exports.isProjectile = exports.isPressurePlate = exports.isPoop = exports.isPlayer = exports.isPit = exports.isPickup = exports.isNPC = exports.isLaser = exports.isKnife = exports.isIsaacAPIClassOfType = exports.isIsaacAPIClass = exports.isGridEntity = exports.isFamiliar = exports.isEntity = exports.isEffect = exports.isDoor = exports.isBomb = exports.getIsaacAPIClassName = void 0;
4
+ const string_1 = require("./string");
5
+ const types_1 = require("./types");
6
+ /**
7
+ * Helper function to get the name of a class from the Isaac API. This is contained within the
8
+ * "__type" metatable key.
9
+ *
10
+ * For example, a `Vector` class is has a name of "Vector".
11
+ *
12
+ * Returns undefined if the object is not of type `userdata` or if the "__type" metatable key does
13
+ * not exist.
14
+ *
15
+ * In some cases, Isaac classes can be a read-only. If this is the case, the "__type" field will be
16
+ * prepended with "const ". This function will always strip this prefix, if it exists. For example,
17
+ * the class name returned for "const Vector" will be "Vector".
18
+ */
19
+ function getIsaacAPIClassName(object) {
20
+ if (!(0, types_1.isUserdata)(object)) {
21
+ return undefined;
22
+ }
23
+ const metatable = getmetatable(object);
24
+ if (metatable === undefined) {
25
+ return undefined;
26
+ }
27
+ const classType = metatable.get("__type");
28
+ if (!(0, types_1.isString)(classType)) {
29
+ return undefined;
30
+ }
31
+ return (0, string_1.trimPrefix)(classType, "const ");
32
+ }
33
+ exports.getIsaacAPIClassName = getIsaacAPIClassName;
34
+ /** Helper function to detect if a variable is of type `EntityBomb`. */
35
+ function isBomb(variable) {
36
+ return getIsaacAPIClassName(variable) === "EntityBomb";
37
+ }
38
+ exports.isBomb = isBomb;
39
+ /** Helper function to detect if a variable is of type `GridEntityDoor`. */
40
+ function isDoor(variable) {
41
+ return getIsaacAPIClassName(variable) === "GridEntityDoor";
42
+ }
43
+ exports.isDoor = isDoor;
44
+ /** Helper function to detect if a variable is of type `EntityEffect`. */
45
+ function isEffect(variable) {
46
+ return getIsaacAPIClassName(variable) === "EntityEffect";
47
+ }
48
+ exports.isEffect = isEffect;
49
+ /**
50
+ * Helper function to detect if a variable is of type `Entity`. This will return false for child
51
+ * classes such as `EntityPlayer` or `EntityTear`.
52
+ */
53
+ function isEntity(variable) {
54
+ return getIsaacAPIClassName(variable) === "Entity";
55
+ }
56
+ exports.isEntity = isEntity;
57
+ /** Helper function to detect if a variable is of type `EntityFamiliar`. */
58
+ function isFamiliar(variable) {
59
+ return getIsaacAPIClassName(variable) === "EntityEffect";
60
+ }
61
+ exports.isFamiliar = isFamiliar;
62
+ /** Helper function to detect if a variable is of type `GridEntity`. */
63
+ function isGridEntity(variable) {
64
+ return getIsaacAPIClassName(variable) === "GridEntity";
65
+ }
66
+ exports.isGridEntity = isGridEntity;
67
+ /**
68
+ * Helper function to check if something is an instantiated class from the Isaac API. (All classes
69
+ * from the Isaac API have a type of "userdata" in Lua with a metatable key of "__type" equal to the
70
+ * name of the class.)
71
+ */
72
+ function isIsaacAPIClass(object) {
73
+ const isaacAPIClassType = getIsaacAPIClassName(object);
74
+ return isaacAPIClassType !== undefined;
75
+ }
76
+ exports.isIsaacAPIClass = isIsaacAPIClass;
77
+ function isIsaacAPIClassOfType(object, classType) {
78
+ const isaacAPIClassType = getIsaacAPIClassName(object);
79
+ return (isaacAPIClassType === classType ||
80
+ isaacAPIClassType === `const ${classType}`);
81
+ }
82
+ exports.isIsaacAPIClassOfType = isIsaacAPIClassOfType;
83
+ /** Helper function to detect if a variable is of type `EntityKnife`. */
84
+ function isKnife(variable) {
85
+ return getIsaacAPIClassName(variable) === "EntityKnife";
86
+ }
87
+ exports.isKnife = isKnife;
88
+ /** Helper function to detect if a variable is of type `EntityLaser`. */
89
+ function isLaser(variable) {
90
+ return getIsaacAPIClassName(variable) === "EntityLaser";
91
+ }
92
+ exports.isLaser = isLaser;
93
+ /** Helper function to detect if a variable is of type `EntityNPC`. */
94
+ function isNPC(variable) {
95
+ return getIsaacAPIClassName(variable) === "EntityNPC";
96
+ }
97
+ exports.isNPC = isNPC;
98
+ /** Helper function to detect if a variable is of type `EntityPickup`. */
99
+ function isPickup(variable) {
100
+ return getIsaacAPIClassName(variable) === "EntityPickup";
101
+ }
102
+ exports.isPickup = isPickup;
103
+ /** Helper function to detect if a variable is of type `GridEntityPit`. */
104
+ function isPit(variable) {
105
+ return getIsaacAPIClassName(variable) === "GridEntityPit";
106
+ }
107
+ exports.isPit = isPit;
108
+ /** Helper function to detect if a variable is of type `EntityPlayer`. */
109
+ function isPlayer(variable) {
110
+ return getIsaacAPIClassName(variable) === "EntityPlayer";
111
+ }
112
+ exports.isPlayer = isPlayer;
113
+ /** Helper function to detect if a variable is of type `GridEntityPoop`. */
114
+ function isPoop(variable) {
115
+ return getIsaacAPIClassName(variable) === "GridEntityPoop";
116
+ }
117
+ exports.isPoop = isPoop;
118
+ /** Helper function to detect if a variable is of type `GridEntityPressurePlate`. */
119
+ function isPressurePlate(variable) {
120
+ return getIsaacAPIClassName(variable) === "GridEntityPressurePlate";
121
+ }
122
+ exports.isPressurePlate = isPressurePlate;
123
+ /** Helper function to detect if a variable is of type `EntityProjectile`. */
124
+ function isProjectile(variable) {
125
+ return getIsaacAPIClassName(variable) === "EntityProjectile";
126
+ }
127
+ exports.isProjectile = isProjectile;
128
+ /** Helper function to detect if a variable is of type `GridEntityRock`. */
129
+ function isRock(variable) {
130
+ return getIsaacAPIClassName(variable) === "GridEntityRock";
131
+ }
132
+ exports.isRock = isRock;
133
+ /** Helper function to detect if a variable is of type `GridEntitySpikes`. */
134
+ function isSpikes(variable) {
135
+ return getIsaacAPIClassName(variable) === "GridEntitySpikes";
136
+ }
137
+ exports.isSpikes = isSpikes;
138
+ /** Helper function to detect if a variable is of type `GridEntityTNT`. */
139
+ function isTNT(variable) {
140
+ return getIsaacAPIClassName(variable) === "GridEntityTNT";
141
+ }
142
+ exports.isTNT = isTNT;
143
+ /** Helper function to detect if a variable is of type `EntityTear`. */
144
+ function isTear(variable) {
145
+ return getIsaacAPIClassName(variable) === "EntityTear";
146
+ }
147
+ exports.isTear = isTear;
148
+ /**
149
+ * Helper function to check if an instantiated Isaac API class is equal to another one of the same
150
+ * type. You must provide the list of keys to check for.
151
+ */
152
+ function isaacAPIClassEquals(object1, object2, keys) {
153
+ const table1 = object1;
154
+ const table2 = object2;
155
+ return keys.every((key) => table1.get(key) === table2.get(key));
156
+ }
157
+ exports.isaacAPIClassEquals = isaacAPIClassEquals;
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeTrinketFromPools = exports.removeCollectibleFromPools = exports.isCollectibleTypeInDefaultItemPool = exports.getRandomItemPool = exports.getItemPoolName = exports.getDefaultItemPoolsForCollectibleType = exports.getDefaultCollectibleTypesInItemPool = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const cachedEnumValues_1 = require("../arrays/cachedEnumValues");
6
+ const cachedClasses_1 = require("../core/cachedClasses");
7
+ const itemPoolTypeToItemPoolName_1 = require("../maps/itemPoolTypeToItemPoolName");
8
+ const itemPoolTypeToCollectibleTypesSet_1 = require("../objects/itemPoolTypeToCollectibleTypesSet");
9
+ const array_1 = require("./array");
10
+ const NORMAL_MODE_ONLY_ITEM_POOL_TYPES = [
11
+ isaac_typescript_definitions_1.ItemPoolType.TREASURE,
12
+ isaac_typescript_definitions_1.ItemPoolType.BOSS,
13
+ isaac_typescript_definitions_1.ItemPoolType.SHOP,
14
+ isaac_typescript_definitions_1.ItemPoolType.DEVIL,
15
+ isaac_typescript_definitions_1.ItemPoolType.ANGEL,
16
+ isaac_typescript_definitions_1.ItemPoolType.CURSE,
17
+ isaac_typescript_definitions_1.ItemPoolType.SECRET, // 5
18
+ ];
19
+ const GREED_MODE_ONLY_ITEM_POOL_TYPES = [
20
+ isaac_typescript_definitions_1.ItemPoolType.GREED_TREASURE,
21
+ isaac_typescript_definitions_1.ItemPoolType.GREED_BOSS,
22
+ isaac_typescript_definitions_1.ItemPoolType.GREED_SHOP,
23
+ isaac_typescript_definitions_1.ItemPoolType.GREED_DEVIL,
24
+ isaac_typescript_definitions_1.ItemPoolType.GREED_ANGEL,
25
+ isaac_typescript_definitions_1.ItemPoolType.GREED_CURSE,
26
+ isaac_typescript_definitions_1.ItemPoolType.GREED_SECRET, // 22
27
+ ];
28
+ const FAKE_ITEM_POOL_TYPES = [isaac_typescript_definitions_1.ItemPoolType.SHELL_GAME];
29
+ const NORMAL_MODE_ITEM_POOL_TYPES = (0, array_1.arrayRemove)(cachedEnumValues_1.ITEM_POOL_TYPE_VALUES, ...GREED_MODE_ONLY_ITEM_POOL_TYPES, ...FAKE_ITEM_POOL_TYPES);
30
+ const GREED_MODE_ITEM_POOL_TYPES = (0, array_1.arrayRemove)(cachedEnumValues_1.ITEM_POOL_TYPE_VALUES, ...NORMAL_MODE_ONLY_ITEM_POOL_TYPES, ...FAKE_ITEM_POOL_TYPES);
31
+ /**
32
+ * Helper function to get the collectibles that are in a particular item pool at the beginning of a
33
+ * vanilla run.
34
+ */
35
+ function getDefaultCollectibleTypesInItemPool(itemPoolType) {
36
+ return itemPoolTypeToCollectibleTypesSet_1.ITEM_POOL_TYPE_TO_COLLECTIBLE_TYPES_SET[itemPoolType];
37
+ }
38
+ exports.getDefaultCollectibleTypesInItemPool = getDefaultCollectibleTypesInItemPool;
39
+ /**
40
+ * Helper function to get the item pools that a particular collectible starts in at the beginning of
41
+ * a vanilla run.
42
+ *
43
+ * This function will automatically account for Greed Mode. In other words, it will not return the
44
+ * "normal" item pools when playing in Greed Mode.
45
+ */
46
+ function getDefaultItemPoolsForCollectibleType(collectibleType) {
47
+ const collectibleItemPoolTypes = [];
48
+ const itemPoolTypes = cachedClasses_1.game.IsGreedMode()
49
+ ? GREED_MODE_ITEM_POOL_TYPES
50
+ : NORMAL_MODE_ITEM_POOL_TYPES;
51
+ for (const itemPoolType of itemPoolTypes) {
52
+ const collectibleTypesSet = itemPoolTypeToCollectibleTypesSet_1.ITEM_POOL_TYPE_TO_COLLECTIBLE_TYPES_SET[itemPoolType];
53
+ if (collectibleTypesSet.has(collectibleType)) {
54
+ collectibleItemPoolTypes.push(itemPoolType);
55
+ }
56
+ }
57
+ return collectibleItemPoolTypes;
58
+ }
59
+ exports.getDefaultItemPoolsForCollectibleType = getDefaultItemPoolsForCollectibleType;
60
+ /**
61
+ * Helper function to get the name for an item pool type as it appears in the "itempools.xml" file.
62
+ */
63
+ function getItemPoolName(itemPoolType) {
64
+ return itemPoolTypeToItemPoolName_1.ITEM_POOL_TYPE_TO_ITEM_POOL_NAME[itemPoolType];
65
+ }
66
+ exports.getItemPoolName = getItemPoolName;
67
+ /**
68
+ * Helper function to get a random item pool. This is not as simple as getting a random value from
69
+ * the `ItemPoolType` enum, since `ItemPoolType.SHELL_GAME` (7) is not a real item pool and the
70
+ * Greed Mode item pools should be excluded if not playing in Greed Mode.
71
+ *
72
+ * If you want to get an unseeded item pool, you must explicitly pass `undefined` to the `seedOrRNG`
73
+ * parameter.
74
+ *
75
+ * @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
76
+ * `RNG.Next` method will be called. If `undefined` is provided, it will default to
77
+ * a random seed.
78
+ */
79
+ function getRandomItemPool(seedOrRNG) {
80
+ const itemPoolTypes = cachedClasses_1.game.IsGreedMode()
81
+ ? GREED_MODE_ITEM_POOL_TYPES
82
+ : NORMAL_MODE_ITEM_POOL_TYPES;
83
+ return (0, array_1.getRandomArrayElement)(itemPoolTypes, seedOrRNG);
84
+ }
85
+ exports.getRandomItemPool = getRandomItemPool;
86
+ /**
87
+ * Helper function to check if a particular collectibles is in a particular item pool at the
88
+ * beginning of a vanilla run.
89
+ */
90
+ function isCollectibleTypeInDefaultItemPool(collectibleType, itemPoolType) {
91
+ const collectibleTypesSet = itemPoolTypeToCollectibleTypesSet_1.ITEM_POOL_TYPE_TO_COLLECTIBLE_TYPES_SET[itemPoolType];
92
+ return collectibleTypesSet.has(collectibleType);
93
+ }
94
+ exports.isCollectibleTypeInDefaultItemPool = isCollectibleTypeInDefaultItemPool;
95
+ /**
96
+ * Helper function to remove one or more collectibles from all item pools.
97
+ *
98
+ * This function is variadic, meaning you can pass as many collectible types as you want to remove.
99
+ */
100
+ function removeCollectibleFromPools(...collectibleTypes) {
101
+ const itemPool = cachedClasses_1.game.GetItemPool();
102
+ for (const collectibleType of collectibleTypes) {
103
+ itemPool.RemoveCollectible(collectibleType);
104
+ }
105
+ }
106
+ exports.removeCollectibleFromPools = removeCollectibleFromPools;
107
+ /**
108
+ * Helper function to remove one or more trinkets from all item pools.
109
+ *
110
+ * This function is variadic, meaning you can pass as many trinket types as you want to remove.
111
+ */
112
+ function removeTrinketFromPools(...trinketTypes) {
113
+ const itemPool = cachedClasses_1.game.GetItemPool();
114
+ for (const trinketType of trinketTypes) {
115
+ itemPool.RemoveTrinket(trinketType);
116
+ }
117
+ }
118
+ exports.removeTrinketFromPools = removeTrinketFromPools;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.jsonEncode = exports.jsonDecode = void 0;
27
+ const jsonLua = __importStar(require("../lib/jsonLua"));
28
+ const log_1 = require("./log");
29
+ function tryDecode(jsonString) {
30
+ return jsonLua.decode(jsonString);
31
+ }
32
+ function tryEncode(luaTable) {
33
+ return jsonLua.encode(luaTable);
34
+ }
35
+ /**
36
+ * Converts a JSON string to a Lua table.
37
+ *
38
+ * In most cases, this function will be used for reading data from a "save#.dat" file. If decoding
39
+ * fails, it will return a blank Lua table instead of throwing an error. (This allows execution to
40
+ * continue in cases where users have no current save data or have manually removed their existing
41
+ * save data.)
42
+ *
43
+ * Under the hood, this uses a custom JSON parser that was measured to be 11.8 times faster than the
44
+ * vanilla JSON parser.
45
+ */
46
+ function jsonDecode(jsonString) {
47
+ const [ok, luaTableOrErrMsg] = pcall(tryDecode, jsonString);
48
+ if (!ok) {
49
+ // Instead of throwing an error, continue execution of the callback.
50
+ (0, log_1.logError)(`Failed to convert the JSON string to a Lua table: ${jsonString}`);
51
+ return new LuaMap();
52
+ }
53
+ return luaTableOrErrMsg;
54
+ }
55
+ exports.jsonDecode = jsonDecode;
56
+ /**
57
+ * Converts a Lua table to a JSON string.
58
+ *
59
+ * In most cases, this function will be used for writing data to a "save#.dat" file. If encoding
60
+ * fails, it will throw an error to prevent writing a blank string or corrupted data to a user's
61
+ * "save#.dat" file.
62
+ *
63
+ * Under the hood, this uses a custom JSON parser that was measured to be 11.8 times faster than the
64
+ * vanilla JSON parser.
65
+ */
66
+ function jsonEncode(luaTable) {
67
+ const [ok, jsonStringOrErrMsg] = pcall(tryEncode, luaTable);
68
+ if (!ok) {
69
+ error(`Failed to convert the Lua table to JSON: ${jsonStringOrErrMsg}`);
70
+ }
71
+ return jsonStringOrErrMsg;
72
+ }
73
+ exports.jsonEncode = jsonEncode;