isaacscript-common 87.9.7 → 87.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) hide show
  1. package/dist/cachedEnumValues.js +29 -32
  2. package/dist/callbackClasses.js +142 -289
  3. package/dist/callbacks.js +147 -183
  4. package/dist/classes/DefaultMap.js +4 -8
  5. package/dist/classes/ModFeature.js +21 -25
  6. package/dist/classes/ModUpgraded.js +43 -47
  7. package/dist/classes/callbacks/EntityTakeDmgFilter.js +6 -10
  8. package/dist/classes/callbacks/EntityTakeDmgPlayer.js +7 -11
  9. package/dist/classes/callbacks/InputActionFilter.js +4 -8
  10. package/dist/classes/callbacks/InputActionPlayer.js +4 -8
  11. package/dist/classes/callbacks/PostAmbushFinished.js +10 -14
  12. package/dist/classes/callbacks/PostAmbushStarted.js +10 -14
  13. package/dist/classes/callbacks/PostBombExploded.js +8 -12
  14. package/dist/classes/callbacks/PostBombInitFilter.js +6 -10
  15. package/dist/classes/callbacks/PostBombInitLate.js +6 -10
  16. package/dist/classes/callbacks/PostBombRenderFilter.js +6 -10
  17. package/dist/classes/callbacks/PostBombUpdateFilter.js +6 -10
  18. package/dist/classes/callbacks/PostBoneSwing.js +7 -11
  19. package/dist/classes/callbacks/PostCollectibleEmpty.js +6 -10
  20. package/dist/classes/callbacks/PostCursedTeleport.js +30 -34
  21. package/dist/classes/callbacks/PostCustomRevive.js +4 -8
  22. package/dist/classes/callbacks/PostDiceRoomActivated.js +9 -13
  23. package/dist/classes/callbacks/PostDoorRender.js +8 -12
  24. package/dist/classes/callbacks/PostDoorUpdate.js +8 -12
  25. package/dist/classes/callbacks/PostEffectInitFilter.js +6 -10
  26. package/dist/classes/callbacks/PostEffectInitLate.js +6 -10
  27. package/dist/classes/callbacks/PostEffectRenderFilter.js +6 -10
  28. package/dist/classes/callbacks/PostEffectStateChanged.js +8 -12
  29. package/dist/classes/callbacks/PostEffectUpdateFilter.js +6 -10
  30. package/dist/classes/callbacks/PostEntityKillFilter.js +6 -10
  31. package/dist/classes/callbacks/PostEntityRemoveFilter.js +6 -10
  32. package/dist/classes/callbacks/PostEsauJr.js +4 -8
  33. package/dist/classes/callbacks/PostFamiliarInitFilter.js +6 -10
  34. package/dist/classes/callbacks/PostFamiliarInitLate.js +6 -10
  35. package/dist/classes/callbacks/PostFamiliarRenderFilter.js +6 -10
  36. package/dist/classes/callbacks/PostFamiliarStateChanged.js +8 -12
  37. package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +6 -10
  38. package/dist/classes/callbacks/PostFirstEsauJr.js +4 -8
  39. package/dist/classes/callbacks/PostFirstFlip.js +4 -8
  40. package/dist/classes/callbacks/PostFlip.js +4 -8
  41. package/dist/classes/callbacks/PostGameEndFilter.js +6 -10
  42. package/dist/classes/callbacks/PostGameStartedReordered.js +6 -10
  43. package/dist/classes/callbacks/PostGameStartedReorderedLast.js +6 -10
  44. package/dist/classes/callbacks/PostGreedModeWave.js +7 -11
  45. package/dist/classes/callbacks/PostGridEntityBroken.js +6 -10
  46. package/dist/classes/callbacks/PostGridEntityCollision.js +4 -8
  47. package/dist/classes/callbacks/PostGridEntityCustomBroken.js +6 -10
  48. package/dist/classes/callbacks/PostGridEntityCustomCollision.js +4 -8
  49. package/dist/classes/callbacks/PostGridEntityCustomInit.js +6 -10
  50. package/dist/classes/callbacks/PostGridEntityCustomRemove.js +4 -8
  51. package/dist/classes/callbacks/PostGridEntityCustomRender.js +6 -10
  52. package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +6 -10
  53. package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +6 -10
  54. package/dist/classes/callbacks/PostGridEntityInit.js +6 -10
  55. package/dist/classes/callbacks/PostGridEntityRemove.js +4 -8
  56. package/dist/classes/callbacks/PostGridEntityRender.js +6 -10
  57. package/dist/classes/callbacks/PostGridEntityStateChanged.js +6 -10
  58. package/dist/classes/callbacks/PostGridEntityUpdate.js +6 -10
  59. package/dist/classes/callbacks/PostHolyMantleRemoved.js +15 -19
  60. package/dist/classes/callbacks/PostItemDischarge.js +23 -27
  61. package/dist/classes/callbacks/PostItemPickup.js +6 -10
  62. package/dist/classes/callbacks/PostKeyboardChanged.js +9 -13
  63. package/dist/classes/callbacks/PostKnifeInitFilter.js +6 -10
  64. package/dist/classes/callbacks/PostKnifeInitLate.js +6 -10
  65. package/dist/classes/callbacks/PostKnifeRenderFilter.js +6 -10
  66. package/dist/classes/callbacks/PostKnifeUpdateFilter.js +6 -10
  67. package/dist/classes/callbacks/PostLaserInitFilter.js +6 -10
  68. package/dist/classes/callbacks/PostLaserInitLate.js +6 -10
  69. package/dist/classes/callbacks/PostLaserRenderFilter.js +6 -10
  70. package/dist/classes/callbacks/PostLaserUpdateFilter.js +6 -10
  71. package/dist/classes/callbacks/PostNPCDeathFilter.js +6 -10
  72. package/dist/classes/callbacks/PostNPCInitFilter.js +6 -10
  73. package/dist/classes/callbacks/PostNPCInitLate.js +6 -10
  74. package/dist/classes/callbacks/PostNPCRenderFilter.js +6 -10
  75. package/dist/classes/callbacks/PostNPCStateChanged.js +8 -12
  76. package/dist/classes/callbacks/PostNPCUpdateFilter.js +6 -10
  77. package/dist/classes/callbacks/PostNewLevelReordered.js +6 -10
  78. package/dist/classes/callbacks/PostNewRoomEarly.js +17 -21
  79. package/dist/classes/callbacks/PostNewRoomReordered.js +6 -10
  80. package/dist/classes/callbacks/PostPEffectUpdateReordered.js +6 -10
  81. package/dist/classes/callbacks/PostPickupChanged.js +6 -10
  82. package/dist/classes/callbacks/PostPickupCollect.js +8 -12
  83. package/dist/classes/callbacks/PostPickupInitFilter.js +6 -10
  84. package/dist/classes/callbacks/PostPickupInitFirst.js +10 -14
  85. package/dist/classes/callbacks/PostPickupInitLate.js +6 -10
  86. package/dist/classes/callbacks/PostPickupRenderFilter.js +6 -10
  87. package/dist/classes/callbacks/PostPickupSelectionFilter.js +4 -8
  88. package/dist/classes/callbacks/PostPickupStateChanged.js +8 -12
  89. package/dist/classes/callbacks/PostPickupUpdateFilter.js +6 -10
  90. package/dist/classes/callbacks/PostPitRender.js +8 -12
  91. package/dist/classes/callbacks/PostPitUpdate.js +8 -12
  92. package/dist/classes/callbacks/PostPlayerChangeHealth.js +14 -18
  93. package/dist/classes/callbacks/PostPlayerChangeStat.js +26 -30
  94. package/dist/classes/callbacks/PostPlayerChangeType.js +11 -15
  95. package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +6 -10
  96. package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +6 -10
  97. package/dist/classes/callbacks/PostPlayerFatalDamage.js +24 -28
  98. package/dist/classes/callbacks/PostPlayerInitFirst.js +12 -16
  99. package/dist/classes/callbacks/PostPlayerInitLate.js +9 -13
  100. package/dist/classes/callbacks/PostPlayerRenderReordered.js +6 -10
  101. package/dist/classes/callbacks/PostPlayerUpdateReordered.js +6 -10
  102. package/dist/classes/callbacks/PostPoopRender.js +8 -12
  103. package/dist/classes/callbacks/PostPoopUpdate.js +8 -12
  104. package/dist/classes/callbacks/PostPressurePlateRender.js +8 -12
  105. package/dist/classes/callbacks/PostPressurePlateUpdate.js +8 -12
  106. package/dist/classes/callbacks/PostProjectileInitFilter.js +6 -10
  107. package/dist/classes/callbacks/PostProjectileInitLate.js +6 -10
  108. package/dist/classes/callbacks/PostProjectileKill.js +8 -12
  109. package/dist/classes/callbacks/PostProjectileRenderFilter.js +6 -10
  110. package/dist/classes/callbacks/PostProjectileUpdateFilter.js +6 -10
  111. package/dist/classes/callbacks/PostPurchase.js +21 -25
  112. package/dist/classes/callbacks/PostRockRender.js +8 -12
  113. package/dist/classes/callbacks/PostRockUpdate.js +8 -12
  114. package/dist/classes/callbacks/PostRoomClearChanged.js +9 -13
  115. package/dist/classes/callbacks/PostSacrifice.js +12 -16
  116. package/dist/classes/callbacks/PostSlotAnimationChanged.js +6 -10
  117. package/dist/classes/callbacks/PostSlotCollision.js +8 -12
  118. package/dist/classes/callbacks/PostSlotDestroyed.js +6 -10
  119. package/dist/classes/callbacks/PostSlotInit.js +6 -10
  120. package/dist/classes/callbacks/PostSlotRender.js +6 -10
  121. package/dist/classes/callbacks/PostSlotUpdate.js +6 -10
  122. package/dist/classes/callbacks/PostSpikesRender.js +8 -12
  123. package/dist/classes/callbacks/PostSpikesUpdate.js +8 -12
  124. package/dist/classes/callbacks/PostTNTRender.js +8 -12
  125. package/dist/classes/callbacks/PostTNTUpdate.js +8 -12
  126. package/dist/classes/callbacks/PostTearInitFilter.js +6 -10
  127. package/dist/classes/callbacks/PostTearInitLate.js +6 -10
  128. package/dist/classes/callbacks/PostTearInitVeryLate.js +6 -10
  129. package/dist/classes/callbacks/PostTearKill.js +8 -12
  130. package/dist/classes/callbacks/PostTearRenderFilter.js +6 -10
  131. package/dist/classes/callbacks/PostTearUpdateFilter.js +6 -10
  132. package/dist/classes/callbacks/PostTransformation.js +10 -14
  133. package/dist/classes/callbacks/PostTrinketBreak.js +16 -20
  134. package/dist/classes/callbacks/PostUsePillFilter.js +18 -22
  135. package/dist/classes/callbacks/PreBerserkDeath.js +14 -18
  136. package/dist/classes/callbacks/PreBombCollisionFilter.js +6 -10
  137. package/dist/classes/callbacks/PreCustomRevive.js +6 -10
  138. package/dist/classes/callbacks/PreEntitySpawnFilter.js +4 -8
  139. package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +6 -10
  140. package/dist/classes/callbacks/PreGetPedestal.js +8 -12
  141. package/dist/classes/callbacks/PreItemPickup.js +6 -10
  142. package/dist/classes/callbacks/PreKnifeCollisionFilter.js +6 -10
  143. package/dist/classes/callbacks/PreNPCCollisionFilter.js +6 -10
  144. package/dist/classes/callbacks/PreNPCUpdateFilter.js +6 -10
  145. package/dist/classes/callbacks/PreNewLevel.js +10 -14
  146. package/dist/classes/callbacks/PreProjectileCollisionFilter.js +6 -10
  147. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +4 -8
  148. package/dist/classes/callbacks/PreTearCollisionFilter.js +6 -10
  149. package/dist/classes/features/callbackLogic/CustomGridEntities.js +46 -50
  150. package/dist/classes/features/callbackLogic/CustomRevive.js +28 -32
  151. package/dist/classes/features/callbackLogic/EsauJrDetection.js +11 -15
  152. package/dist/classes/features/callbackLogic/FlipDetection.js +11 -15
  153. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +26 -30
  154. package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +10 -14
  155. package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +6 -10
  156. package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +12 -16
  157. package/dist/classes/features/callbackLogic/ItemPickupDetection.js +17 -21
  158. package/dist/classes/features/callbackLogic/PickupChangeDetection.js +6 -10
  159. package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +39 -43
  160. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +18 -22
  161. package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +17 -21
  162. package/dist/classes/features/callbackLogic/SlotRenderDetection.js +8 -12
  163. package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +9 -13
  164. package/dist/classes/features/other/CharacterHealthConversion.js +13 -17
  165. package/dist/classes/features/other/CharacterStats.js +9 -13
  166. package/dist/classes/features/other/CollectibleItemPoolType.js +17 -21
  167. package/dist/classes/features/other/CustomHotkeys.js +15 -19
  168. package/dist/classes/features/other/CustomItemPools.js +20 -24
  169. package/dist/classes/features/other/CustomPickups.js +15 -19
  170. package/dist/classes/features/other/CustomStages.js +116 -153
  171. package/dist/classes/features/other/CustomTrapdoors.js +119 -123
  172. package/dist/classes/features/other/DebugDisplay.js +77 -81
  173. package/dist/classes/features/other/DeployJSONRoom.js +65 -69
  174. package/dist/classes/features/other/DisableAllSound.js +14 -18
  175. package/dist/classes/features/other/DisableInputs.js +24 -28
  176. package/dist/classes/features/other/EdenStartingStatsHealth.js +36 -40
  177. package/dist/classes/features/other/ExtraConsoleCommands.js +65 -102
  178. package/dist/classes/features/other/FadeInRemover.js +9 -13
  179. package/dist/classes/features/other/FastReset.js +18 -22
  180. package/dist/classes/features/other/FlyingDetection.js +10 -14
  181. package/dist/classes/features/other/ForgottenSwitch.js +8 -12
  182. package/dist/classes/features/other/ItemPoolDetection.js +35 -39
  183. package/dist/classes/features/other/ModdedElementDetection.js +43 -47
  184. package/dist/classes/features/other/ModdedElementSets.js +135 -139
  185. package/dist/classes/features/other/NoSirenSteal.js +7 -11
  186. package/dist/classes/features/other/Pause.js +48 -52
  187. package/dist/classes/features/other/PersistentEntities.js +16 -20
  188. package/dist/classes/features/other/PickupIndexCreation.js +31 -35
  189. package/dist/classes/features/other/PlayerCollectibleTracking.js +18 -22
  190. package/dist/classes/features/other/PonyDetection.js +22 -26
  191. package/dist/classes/features/other/PressInput.js +10 -14
  192. package/dist/classes/features/other/PreventChildEntities.js +6 -10
  193. package/dist/classes/features/other/PreventGridEntityRespawn.js +34 -38
  194. package/dist/classes/features/other/RerunDetection.js +11 -15
  195. package/dist/classes/features/other/RoomClearFrame.js +11 -15
  196. package/dist/classes/features/other/RoomHistory.js +30 -34
  197. package/dist/classes/features/other/RunInNFrames.js +24 -28
  198. package/dist/classes/features/other/RunNextRoom.js +8 -12
  199. package/dist/classes/features/other/RunNextRun.js +8 -12
  200. package/dist/classes/features/other/SaveDataManager.js +61 -65
  201. package/dist/classes/features/other/SpawnRockAltRewards.js +115 -119
  202. package/dist/classes/features/other/StageHistory.js +76 -80
  203. package/dist/classes/features/other/StartAmbush.js +12 -16
  204. package/dist/classes/features/other/TaintedLazarusPlayers.js +10 -14
  205. package/dist/classes/features/other/UnlockAchievementsDetection.js +10 -14
  206. package/dist/classes/features/other/customStages/backdrop.js +68 -71
  207. package/dist/classes/features/other/customStages/constants.js +7 -10
  208. package/dist/classes/features/other/customStages/gridEntities.js +23 -30
  209. package/dist/classes/features/other/customStages/shadows.js +27 -30
  210. package/dist/classes/features/other/customStages/streakText.js +55 -60
  211. package/dist/classes/features/other/customStages/utils.js +13 -17
  212. package/dist/classes/features/other/customStages/v.js +4 -7
  213. package/dist/classes/features/other/customStages/versusScreen.js +46 -50
  214. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +8 -12
  215. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +8 -12
  216. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +8 -12
  217. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +8 -12
  218. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +8 -12
  219. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +8 -12
  220. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +8 -12
  221. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +8 -12
  222. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +8 -12
  223. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +8 -12
  224. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +8 -12
  225. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +8 -12
  226. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +8 -12
  227. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +8 -12
  228. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +8 -12
  229. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +8 -12
  230. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +8 -12
  231. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +8 -12
  232. package/dist/classes/features/other/debugDisplay/utils.js +6 -10
  233. package/dist/classes/features/other/extraConsoleCommands/commands.js +411 -557
  234. package/dist/classes/features/other/extraConsoleCommands/subroutines.js +47 -57
  235. package/dist/classes/features/other/extraConsoleCommands/v.js +1 -4
  236. package/dist/classes/features/other/saveDataManager/constants.js +1 -4
  237. package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +17 -21
  238. package/dist/classes/features/other/saveDataManager/loadFromDisk.js +19 -22
  239. package/dist/classes/features/other/saveDataManager/restoreDefaults.js +20 -25
  240. package/dist/classes/features/other/saveDataManager/saveToDisk.js +13 -16
  241. package/dist/classes/private/CustomCallback.js +4 -8
  242. package/dist/classes/private/Feature.js +1 -5
  243. package/dist/core/cachedClasses.js +12 -15
  244. package/dist/core/constants.js +126 -130
  245. package/dist/core/constantsFirstLast.js +22 -25
  246. package/dist/core/constantsVanilla.js +25 -28
  247. package/dist/core/upgradeMod.js +7 -10
  248. package/dist/decorators.js +6 -10
  249. package/dist/enums/AmbushType.js +2 -5
  250. package/dist/enums/CornerType.js +2 -5
  251. package/dist/enums/HealthType.js +2 -5
  252. package/dist/enums/ISCFeature.js +2 -5
  253. package/dist/enums/LadderSubTypeCustom.js +2 -5
  254. package/dist/enums/ModCallbackCustom.js +2 -5
  255. package/dist/enums/MysteriousPaperEffect.js +2 -5
  256. package/dist/enums/PlayerStat.js +2 -5
  257. package/dist/enums/PocketItemType.js +2 -5
  258. package/dist/enums/RockAltType.js +2 -5
  259. package/dist/enums/SaveDataKey.js +2 -5
  260. package/dist/enums/SerializationType.js +2 -5
  261. package/dist/enums/SlotDestructionType.js +2 -5
  262. package/dist/enums/private/GridEntityTypeCustom.js +1 -4
  263. package/dist/enums/private/SerializationBrand.js +2 -5
  264. package/dist/enums/private/StageTravelState.js +2 -5
  265. package/dist/enums/private/TrapdoorAnimation.js +2 -5
  266. package/dist/enums/private/UIStreakAnimation.js +2 -5
  267. package/dist/features.js +138 -141
  268. package/dist/functions/ambush.js +9 -12
  269. package/dist/functions/array.js +45 -76
  270. package/dist/functions/arrayLua.js +7 -16
  271. package/dist/functions/benchmark.js +4 -7
  272. package/dist/functions/bitSet128.js +19 -26
  273. package/dist/functions/bitwise.js +14 -23
  274. package/dist/functions/bombs.js +1 -4
  275. package/dist/functions/bosses.js +68 -85
  276. package/dist/functions/cards.js +44 -62
  277. package/dist/functions/challenges.js +28 -39
  278. package/dist/functions/characters.js +68 -87
  279. package/dist/functions/charge.js +41 -52
  280. package/dist/functions/chargeBar.js +2 -6
  281. package/dist/functions/collectibleTag.js +9 -13
  282. package/dist/functions/collectibles.js +133 -172
  283. package/dist/functions/color.js +29 -38
  284. package/dist/functions/console.js +4 -8
  285. package/dist/functions/curses.js +6 -10
  286. package/dist/functions/debugFunctions.js +7 -14
  287. package/dist/functions/decorators.js +13 -19
  288. package/dist/functions/deepCopy.js +96 -99
  289. package/dist/functions/deepCopyTests.js +56 -59
  290. package/dist/functions/dimensions.js +10 -14
  291. package/dist/functions/direction.js +22 -30
  292. package/dist/functions/doors.js +104 -154
  293. package/dist/functions/easing.js +30 -62
  294. package/dist/functions/effects.js +6 -10
  295. package/dist/functions/emptyRoom.js +30 -34
  296. package/dist/functions/entities.js +88 -115
  297. package/dist/functions/entitiesSpecific.js +83 -125
  298. package/dist/functions/entityTypes.js +3 -6
  299. package/dist/functions/enums.js +27 -41
  300. package/dist/functions/external.js +4 -8
  301. package/dist/functions/familiars.js +17 -25
  302. package/dist/functions/flag.js +10 -19
  303. package/dist/functions/frames.js +31 -51
  304. package/dist/functions/globals.js +26 -66
  305. package/dist/functions/gridEntities.js +231 -269
  306. package/dist/functions/gridEntitiesSpecific.js +86 -126
  307. package/dist/functions/gridIndex.js +8 -11
  308. package/dist/functions/hash.js +1 -4
  309. package/dist/functions/hex.js +7 -11
  310. package/dist/functions/input.js +65 -88
  311. package/dist/functions/isaacAPIClass.js +28 -53
  312. package/dist/functions/itemPool.js +39 -48
  313. package/dist/functions/jsonHelpers.js +5 -42
  314. package/dist/functions/jsonRoom.js +39 -46
  315. package/dist/functions/kColor.js +30 -39
  316. package/dist/functions/language.js +3 -6
  317. package/dist/functions/level.js +20 -26
  318. package/dist/functions/levelGrid.js +81 -108
  319. package/dist/functions/log.js +6 -12
  320. package/dist/functions/logEntities.js +49 -59
  321. package/dist/functions/logMisc.js +183 -214
  322. package/dist/functions/map.js +10 -20
  323. package/dist/functions/math.js +16 -31
  324. package/dist/functions/merge.js +48 -51
  325. package/dist/functions/mergeTests.js +34 -37
  326. package/dist/functions/minimap.js +34 -46
  327. package/dist/functions/modFeatures.js +1 -4
  328. package/dist/functions/newArray.js +5 -8
  329. package/dist/functions/nextStage.js +63 -67
  330. package/dist/functions/npcDataStructures.js +9 -20
  331. package/dist/functions/npcs.js +37 -45
  332. package/dist/functions/pickupVariants.js +26 -39
  333. package/dist/functions/pickups.js +43 -59
  334. package/dist/functions/pickupsSpecific.js +76 -118
  335. package/dist/functions/pills.js +52 -72
  336. package/dist/functions/playerCenter.js +13 -16
  337. package/dist/functions/playerCollectibles.js +59 -79
  338. package/dist/functions/playerDataStructures.js +18 -29
  339. package/dist/functions/playerEffects.js +12 -19
  340. package/dist/functions/playerHealth.js +91 -113
  341. package/dist/functions/playerIndex.js +22 -33
  342. package/dist/functions/playerTrinkets.js +31 -43
  343. package/dist/functions/players.js +87 -126
  344. package/dist/functions/pocketItems.js +33 -43
  345. package/dist/functions/positionVelocity.js +23 -32
  346. package/dist/functions/pressurePlate.js +7 -10
  347. package/dist/functions/projectiles.js +11 -15
  348. package/dist/functions/random.js +8 -13
  349. package/dist/functions/readOnly.js +3 -8
  350. package/dist/functions/render.js +7 -12
  351. package/dist/functions/revive.js +38 -45
  352. package/dist/functions/rng.js +31 -44
  353. package/dist/functions/rockAlt.js +18 -22
  354. package/dist/functions/roomData.js +24 -40
  355. package/dist/functions/roomGrid.js +17 -25
  356. package/dist/functions/roomShape.js +39 -55
  357. package/dist/functions/roomShapeWalls.js +67 -71
  358. package/dist/functions/roomTransition.js +13 -17
  359. package/dist/functions/rooms.js +181 -244
  360. package/dist/functions/run.js +29 -39
  361. package/dist/functions/seeds.js +6 -10
  362. package/dist/functions/serialization.js +27 -34
  363. package/dist/functions/set.js +24 -40
  364. package/dist/functions/slots.js +18 -22
  365. package/dist/functions/sort.js +9 -15
  366. package/dist/functions/sound.js +12 -16
  367. package/dist/functions/spawnCollectible.js +21 -26
  368. package/dist/functions/sprites.js +16 -24
  369. package/dist/functions/stage.js +122 -164
  370. package/dist/functions/stats.js +37 -43
  371. package/dist/functions/storyBosses.js +36 -40
  372. package/dist/functions/string.js +19 -33
  373. package/dist/functions/table.js +21 -31
  374. package/dist/functions/tears.js +6 -14
  375. package/dist/functions/transformations.js +35 -42
  376. package/dist/functions/trinketGive.js +29 -36
  377. package/dist/functions/trinkets.js +45 -60
  378. package/dist/functions/tstlClass.js +11 -20
  379. package/dist/functions/types.js +22 -46
  380. package/dist/functions/ui.js +25 -40
  381. package/dist/functions/utils.js +22 -36
  382. package/dist/functions/vector.js +33 -46
  383. package/dist/functions/versusScreen.js +12 -18
  384. package/dist/functions/weighted.js +8 -12
  385. package/dist/index.js +150 -166
  386. package/dist/indexLua.js +151 -167
  387. package/dist/interfaces/ChargeBarSprites.js +1 -2
  388. package/dist/interfaces/Corner.js +1 -2
  389. package/dist/interfaces/CustomStageTSConfig.js +1 -2
  390. package/dist/interfaces/GridEntityCustomData.js +1 -2
  391. package/dist/interfaces/JSONRoomsFile.js +1 -2
  392. package/dist/interfaces/PlayerHealth.js +1 -2
  393. package/dist/interfaces/PlayerStats.js +2 -4
  394. package/dist/interfaces/PocketItemDescription.js +1 -2
  395. package/dist/interfaces/RoomDescription.js +1 -2
  396. package/dist/interfaces/SaveData.js +1 -2
  397. package/dist/interfaces/StageHistoryEntry.js +1 -2
  398. package/dist/interfaces/TSTLClassMetatable.js +1 -2
  399. package/dist/interfaces/TrinketSituation.js +1 -2
  400. package/dist/interfaces/private/AddCallbackParametersCustom.js +2 -4
  401. package/dist/interfaces/private/CustomStage.js +1 -2
  402. package/dist/interfaces/private/CustomTrapdoorDescription.js +1 -2
  403. package/dist/interfaces/private/ModUpgradedInterface.js +1 -2
  404. package/dist/isaacscript-common.lua +1 -1
  405. package/dist/maps/PHDPillConversionsMap.js +19 -22
  406. package/dist/maps/cardNameToTypeMap.js +205 -208
  407. package/dist/maps/characterNameToTypeMap.js +85 -88
  408. package/dist/maps/collectibleNameToTypeMap.js +5 -8
  409. package/dist/maps/defaultPlayerStatMap.js +10 -13
  410. package/dist/maps/entityTypeVariantToBossIDMap.js +3 -6
  411. package/dist/maps/falsePHDPillConversionsMap.js +33 -36
  412. package/dist/maps/gridEntityTypeToBrokenStateMap.js +15 -18
  413. package/dist/maps/gridEntityXMLMap.js +52 -55
  414. package/dist/maps/itemPoolTypeToItemPoolName.js +33 -36
  415. package/dist/maps/keyboardToStringMap.js +66 -69
  416. package/dist/maps/pillNameToEffectMap.js +83 -86
  417. package/dist/maps/roomNameToTypeMap.js +38 -41
  418. package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +9 -12
  419. package/dist/maps/transformationNameToPlayerFormMap.js +30 -33
  420. package/dist/maps/trinketNameToTypeMap.js +5 -8
  421. package/dist/objects/LRoomShapeToRectangles.js +22 -25
  422. package/dist/objects/backdropTypeToRockAltType.js +65 -68
  423. package/dist/objects/batteryNames.js +8 -11
  424. package/dist/objects/bombNames.js +11 -14
  425. package/dist/objects/bossIDToEntityTypeVariant.js +116 -119
  426. package/dist/objects/bossNamePNGFileNames.js +104 -107
  427. package/dist/objects/bossNames.js +105 -108
  428. package/dist/objects/bossPortraitPNGFileNames.js +104 -107
  429. package/dist/objects/cardDescriptions.js +101 -104
  430. package/dist/objects/cardNames.js +101 -104
  431. package/dist/objects/challengeBosses.js +49 -52
  432. package/dist/objects/challengeCharacters.js +49 -52
  433. package/dist/objects/challengeCollectibleTypes.js +160 -163
  434. package/dist/objects/challengeNames.js +49 -52
  435. package/dist/objects/challengeTrinketType.js +48 -51
  436. package/dist/objects/characterDamageMultipliers.js +44 -47
  437. package/dist/objects/characterNames.js +44 -47
  438. package/dist/objects/characterSpritePNGFileNames.js +44 -47
  439. package/dist/objects/characterStartingCollectibleTypes.js +49 -52
  440. package/dist/objects/characterStartingTrinketTypes.js +44 -47
  441. package/dist/objects/chestNames.js +15 -18
  442. package/dist/objects/coinNames.js +11 -14
  443. package/dist/objects/coinSubTypeToValue.js +11 -14
  444. package/dist/objects/collectibleDescriptions.js +725 -728
  445. package/dist/objects/collectibleNames.js +725 -728
  446. package/dist/objects/colors.js +1 -4
  447. package/dist/objects/directionNames.js +7 -10
  448. package/dist/objects/directionToDegrees.js +7 -10
  449. package/dist/objects/directionToMoveAction.js +7 -10
  450. package/dist/objects/directionToShootAction.js +7 -10
  451. package/dist/objects/directionToVector.js +9 -12
  452. package/dist/objects/doorSlotFlagToDoorSlot.js +11 -14
  453. package/dist/objects/doorSlotToDirection.js +11 -14
  454. package/dist/objects/doorSlotToDoorSlotFlag.js +11 -14
  455. package/dist/objects/gridEntityTypeToANM2Name.js +30 -33
  456. package/dist/objects/heartNames.js +16 -19
  457. package/dist/objects/isaacAPIClassTypeToBrand.js +8 -11
  458. package/dist/objects/isaacAPIClassTypeToFunctions.js +37 -40
  459. package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +9 -45
  460. package/dist/objects/kColors.js +1 -4
  461. package/dist/objects/keyNames.js +8 -11
  462. package/dist/objects/languageNames.js +9 -12
  463. package/dist/objects/oppositeDoorSlots.js +11 -14
  464. package/dist/objects/pillEffectClasses.js +53 -56
  465. package/dist/objects/pillEffectNames.js +53 -56
  466. package/dist/objects/pillEffectTypeToPillEffects.js +11 -14
  467. package/dist/objects/pillEffectTypes.js +53 -56
  468. package/dist/objects/playerNamePNGFileNames.js +44 -47
  469. package/dist/objects/playerPortraitPNGFileNames.js +44 -47
  470. package/dist/objects/roomShapeBounds.js +23 -26
  471. package/dist/objects/roomShapeCorners.js +128 -131
  472. package/dist/objects/roomShapeLayoutSizes.js +23 -26
  473. package/dist/objects/roomShapeToBottomRightPosition.js +17 -20
  474. package/dist/objects/roomShapeToDoorSlotCoordinates.js +78 -81
  475. package/dist/objects/roomShapeToDoorSlots.js +48 -51
  476. package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +82 -85
  477. package/dist/objects/roomShapeToGridWidth.js +14 -17
  478. package/dist/objects/roomShapeToTopLeftPosition.js +18 -21
  479. package/dist/objects/roomShapeVolumes.js +21 -24
  480. package/dist/objects/roomTypeNames.js +32 -35
  481. package/dist/objects/roomTypeSpecialGotoPrefixes.js +32 -35
  482. package/dist/objects/sackNames.js +6 -9
  483. package/dist/objects/slotNames.js +21 -24
  484. package/dist/objects/stageIDNames.js +33 -36
  485. package/dist/objects/stageToMusic.js +69 -72
  486. package/dist/objects/stageToStageID.js +90 -93
  487. package/dist/objects/stageTypeSuffixes.js +8 -11
  488. package/dist/objects/transformationNames.js +16 -19
  489. package/dist/objects/trinketDescriptions.js +192 -195
  490. package/dist/objects/trinketNames.js +192 -195
  491. package/dist/objects/versusScreenBackgroundColors.js +39 -42
  492. package/dist/objects/versusScreenDirtSpotColors.js +39 -42
  493. package/dist/patchErrorFunctions.js +4 -7
  494. package/dist/serialization.js +6 -9
  495. package/dist/sets/LRoomShapesSet.js +7 -10
  496. package/dist/sets/bigRoomShapesSet.js +10 -13
  497. package/dist/sets/bossSets.js +261 -264
  498. package/dist/sets/charactersThatStartWithAnActiveItemSet.js +14 -17
  499. package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +5 -8
  500. package/dist/sets/charactersWithFreeDevilDealsSet.js +3 -6
  501. package/dist/sets/charactersWithNoRedHeartsSet.js +11 -14
  502. package/dist/sets/charactersWithNoSoulHeartsSet.js +8 -11
  503. package/dist/sets/consoleCommandsSet.js +2 -5
  504. package/dist/sets/entitiesWithArmorSet.js +44 -47
  505. package/dist/sets/familiarsThatShootPlayerTearsSet.js +11 -14
  506. package/dist/sets/itemConfigCardTypesForCards.js +7 -10
  507. package/dist/sets/lostStyleCharactersSet.js +8 -11
  508. package/dist/sets/mineShaftRoomSubTypesSet.js +8 -11
  509. package/dist/sets/narrowRoomShapesSet.js +7 -10
  510. package/dist/sets/poopGridEntityXMLTypesSet.js +12 -15
  511. package/dist/sets/redHeartSubTypesSet.js +6 -9
  512. package/dist/sets/repentanceBossIDsSet.js +26 -29
  513. package/dist/sets/sinEntityTypesSet.js +10 -13
  514. package/dist/sets/singleUseActiveCollectibleTypesSet.js +11 -14
  515. package/dist/shaderCrashFix.js +4 -7
  516. package/dist/shouldFire.js +28 -58
  517. package/dist/types/AddSubtract.js +1 -2
  518. package/dist/types/AllButFirst.js +1 -2
  519. package/dist/types/AllButLast.js +1 -2
  520. package/dist/types/AnyClass.js +1 -2
  521. package/dist/types/AnyEntity.js +1 -2
  522. package/dist/types/AnyFunction.js +1 -2
  523. package/dist/types/AnyGridEntity.js +1 -2
  524. package/dist/types/CompositionTypeSatisfiesEnum.js +1 -2
  525. package/dist/types/ConversionHeartSubType.js +1 -2
  526. package/dist/types/Decrement.js +1 -2
  527. package/dist/types/ERange.js +1 -2
  528. package/dist/types/EntityID.js +1 -2
  529. package/dist/types/FunctionTuple.js +1 -2
  530. package/dist/types/GridEntityID.js +1 -2
  531. package/dist/types/HasFunction.js +1 -2
  532. package/dist/types/IRange.js +1 -2
  533. package/dist/types/Immutable.js +1 -2
  534. package/dist/types/Increment.js +1 -2
  535. package/dist/types/LowercaseKeys.js +1 -2
  536. package/dist/types/NaturalNumbersLessThan.js +1 -2
  537. package/dist/types/NaturalNumbersLessThanOrEqualTo.js +1 -2
  538. package/dist/types/ObjectValues.js +1 -2
  539. package/dist/types/PickingUpItem.js +15 -22
  540. package/dist/types/PickupIndex.js +1 -2
  541. package/dist/types/PlayerIndex.js +1 -2
  542. package/dist/types/PossibleStatType.js +1 -2
  543. package/dist/types/PublicInterface.js +1 -2
  544. package/dist/types/ReadonlyMap.js +1 -4
  545. package/dist/types/ReadonlyRecord.js +1 -2
  546. package/dist/types/ReadonlySet.js +1 -4
  547. package/dist/types/StartsWithLowercase.js +1 -2
  548. package/dist/types/StartsWithUppercase.js +1 -2
  549. package/dist/types/TSTLClass.js +1 -2
  550. package/dist/types/Tuple.js +1 -2
  551. package/dist/types/TupleKeys.js +1 -2
  552. package/dist/types/TupleToIntersection.js +1 -2
  553. package/dist/types/TupleToUnion.js +1 -2
  554. package/dist/types/TupleWithLengthBetween.js +1 -2
  555. package/dist/types/TupleWithMaxLength.js +1 -2
  556. package/dist/types/UnionToIntersection.js +1 -2
  557. package/dist/types/UppercaseKeys.js +1 -2
  558. package/dist/types/WeightedArray.js +1 -2
  559. package/dist/types/WidenLiteral.js +1 -2
  560. package/dist/types/Writable.js +1 -2
  561. package/dist/types/private/CallbackTuple.js +1 -2
  562. package/dist/types/private/ModUpgradedWithFeatures.js +1 -2
  563. package/package.json +3 -3
@@ -1,23 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.copyMap = copyMap;
4
- exports.defaultMapGetHash = defaultMapGetHash;
5
- exports.defaultMapSetHash = defaultMapSetHash;
6
- exports.getReversedMap = getReversedMap;
7
- exports.mapSetHash = mapSetHash;
8
- exports.objectToMap = objectToMap;
9
- exports.objectToReadonlyMap = objectToReadonlyMap;
10
- exports.sumMap = sumMap;
11
- const array_1 = require("./array");
1
+ import { sumArray } from "./array";
12
2
  /** Helper function to copy a map. (You can also use a Map constructor to accomplish this task.) */
13
- function copyMap(oldMap) {
3
+ export function copyMap(oldMap) {
14
4
  return new Map(oldMap);
15
5
  }
16
6
  /**
17
7
  * Helper function to get the value from a `DefaultMap` that corresponds to an entity, assuming that
18
8
  * the map uses `PtrHash` as an index.
19
9
  */
20
- function defaultMapGetHash(map, entity, ...extraArgs) {
10
+ export function defaultMapGetHash(map, entity, ...extraArgs) {
21
11
  const ptrHash = GetPtrHash(entity);
22
12
  return map.getAndSetDefault(ptrHash, ...extraArgs);
23
13
  }
@@ -28,7 +18,7 @@ function defaultMapGetHash(map, entity, ...extraArgs) {
28
18
  * Since `Map` and `DefaultMap` set values in the same way, this function is simply an alias for the
29
19
  * `mapSetHash` helper function.
30
20
  */
31
- function defaultMapSetHash(
21
+ export function defaultMapSetHash(
32
22
  // eslint-disable-next-line complete/prefer-readonly-parameter-types
33
23
  map, entity, value) {
34
24
  mapSetHash(map, entity, value);
@@ -54,7 +44,7 @@ map, entity, value) {
54
44
  * ]);
55
45
  * ```
56
46
  */
57
- function getReversedMap(map) {
47
+ export function getReversedMap(map) {
58
48
  const reverseMap = new Map();
59
49
  for (const [key, value] of map) {
60
50
  reverseMap.set(value, key);
@@ -65,7 +55,7 @@ function getReversedMap(map) {
65
55
  * Helper function to set a value for a `DefaultMap` that corresponds to an entity, assuming that
66
56
  * the map uses `PtrHash` as an index.
67
57
  */
68
- function mapSetHash(
58
+ export function mapSetHash(
69
59
  // eslint-disable-next-line complete/prefer-readonly-parameter-types
70
60
  map, entity, value) {
71
61
  const hash = GetPtrHash(entity);
@@ -84,7 +74,7 @@ map, entity, value) {
84
74
  *
85
75
  * Also see the `objectToReadonlyMap` function.
86
76
  */
87
- function objectToMap(object) {
77
+ export function objectToMap(object) {
88
78
  const map = new Map();
89
79
  for (const [key, value] of Object.entries(object)) {
90
80
  map.set(key, value);
@@ -104,11 +94,11 @@ function objectToMap(object) {
104
94
  *
105
95
  * Also see the `objectToMap` function.
106
96
  */
107
- function objectToReadonlyMap(object) {
97
+ export function objectToReadonlyMap(object) {
108
98
  return objectToMap(object);
109
99
  }
110
100
  /** Helper function to sum every value in a map together. */
111
- function sumMap(map) {
101
+ export function sumMap(map) {
112
102
  const values = [...map.values()];
113
- return (0, array_1.sumArray)(values);
103
+ return sumArray(values);
114
104
  }
@@ -1,30 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.clamp = clamp;
4
- exports.getAngleDifference = getAngleDifference;
5
- exports.getCircleDiscretizedPoints = getCircleDiscretizedPoints;
6
- exports.inRectangle = inRectangle;
7
- exports.isCircleIntersectingRectangle = isCircleIntersectingRectangle;
8
- exports.isEven = isEven;
9
- exports.isOdd = isOdd;
10
- exports.lerp = lerp;
11
- exports.lerpAngleDegrees = lerpAngleDegrees;
12
- exports.round = round;
13
- exports.sign = sign;
14
- exports.splitNumber = splitNumber;
15
- exports.tanh = tanh;
16
- const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
17
- const direction_1 = require("./direction");
1
+ import { Direction } from "isaac-typescript-definitions";
2
+ import { directionToVector } from "./direction";
18
3
  /**
19
4
  * Helper function to normalize a number, ensuring that it is within a certain range.
20
5
  *
21
6
  * - If `num` is less than `min`, then it will be clamped to `min`.
22
7
  * - If `num` is greater than `max`, then it will be clamped to `max`.
23
8
  */
24
- function clamp(num, min, max) {
9
+ export function clamp(num, min, max) {
25
10
  return Math.max(min, Math.min(num, max));
26
11
  }
27
- function getAngleDifference(angle1, angle2) {
12
+ export function getAngleDifference(angle1, angle2) {
28
13
  const subtractedAngle = angle1 - angle2;
29
14
  return ((subtractedAngle + 180) % 360) - 180;
30
15
  }
@@ -40,8 +25,8 @@ function getAngleDifference(angle1, angle2) {
40
25
  * @param initialDirection By default, the first point on the circle will be on the top center, but
41
26
  * this can be optionally changed by specifying this argument.
42
27
  */
43
- function getCircleDiscretizedPoints(centerPos, radius, numPoints, xMultiplier = 1, yMultiplier = 1, initialDirection = isaac_typescript_definitions_1.Direction.UP) {
44
- const vector = (0, direction_1.directionToVector)(initialDirection);
28
+ export function getCircleDiscretizedPoints(centerPos, radius, numPoints, xMultiplier = 1, yMultiplier = 1, initialDirection = Direction.UP) {
29
+ const vector = directionToVector(initialDirection);
45
30
  const initialPosition = vector.mul(radius);
46
31
  const positions = [];
47
32
  for (let i = 0; i < numPoints; i++) {
@@ -59,7 +44,7 @@ function getCircleDiscretizedPoints(centerPos, radius, numPoints, xMultiplier =
59
44
  * This is an inclusive check, meaning that it will return true if the position is on the border of
60
45
  * the rectangle.
61
46
  */
62
- function inRectangle(position, topLeft, bottomRight) {
47
+ export function inRectangle(position, topLeft, bottomRight) {
63
48
  return (position.X >= topLeft.X
64
49
  && position.X <= bottomRight.X
65
50
  && position.Y >= topLeft.Y
@@ -68,25 +53,25 @@ function inRectangle(position, topLeft, bottomRight) {
68
53
  /**
69
54
  * From: https://www.geeksforgeeks.org/check-if-any-point-overlaps-the-given-circle-and-rectangle/
70
55
  */
71
- function isCircleIntersectingRectangle(circleCenter, circleRadius, rectangleTopLeft, rectangleBottomRight) {
56
+ export function isCircleIntersectingRectangle(circleCenter, circleRadius, rectangleTopLeft, rectangleBottomRight) {
72
57
  const nearestX = Math.max(rectangleTopLeft.X, Math.min(circleCenter.X, rectangleBottomRight.X));
73
58
  const nearestY = Math.max(rectangleTopLeft.Y, Math.min(circleCenter.Y, rectangleBottomRight.Y));
74
59
  const nearestPointToCircleOnRectangle = Vector(nearestX, nearestY);
75
60
  const distanceToCenterOfCircle = nearestPointToCircleOnRectangle.Distance(circleCenter);
76
61
  return distanceToCenterOfCircle <= circleRadius;
77
62
  }
78
- function isEven(num) {
63
+ export function isEven(num) {
79
64
  // This is benchmarked to be faster than using the modulus operator by 3%.
80
65
  return (num & 1) === 0;
81
66
  }
82
- function isOdd(num) {
67
+ export function isOdd(num) {
83
68
  // This is benchmarked to be faster than using the modulus operator by 3%.
84
69
  return (num & 1) === 1;
85
70
  }
86
- function lerp(a, b, pos) {
71
+ export function lerp(a, b, pos) {
87
72
  return a + (b - a) * pos;
88
73
  }
89
- function lerpAngleDegrees(aStart, aEnd, percent) {
74
+ export function lerpAngleDegrees(aStart, aEnd, percent) {
90
75
  return aStart + getAngleDifference(aStart, aEnd) * percent;
91
76
  }
92
77
  /**
@@ -97,13 +82,13 @@ function lerpAngleDegrees(aStart, aEnd, percent) {
97
82
  * @param num The number to round.
98
83
  * @param numDecimalPlaces Optional. Default is 0.
99
84
  */
100
- function round(num, numDecimalPlaces = 0) {
85
+ export function round(num, numDecimalPlaces = 0) {
101
86
  const roundedString = string.format(`%.${numDecimalPlaces}f`, num);
102
87
  const roundedNum = tonumber(roundedString);
103
88
  return roundedNum ?? 0;
104
89
  }
105
90
  /** @returns 1 if n is positive, -1 if n is negative, or 0 if n is 0. */
106
- function sign(n) {
91
+ export function sign(n) {
107
92
  if (n > 0) {
108
93
  return 1;
109
94
  }
@@ -128,7 +113,7 @@ function sign(n) {
128
113
  * @param startAtZero Whether to start at 0. Defaults to false. If true, the chunks will start at 0
129
114
  * instead of 1.
130
115
  */
131
- function splitNumber(num, size, startAtZero = false) {
116
+ export function splitNumber(num, size, startAtZero = false) {
132
117
  if (num <= 0) {
133
118
  error(`The number to split needs to be a positive number and is instead: ${num}`);
134
119
  }
@@ -144,6 +129,6 @@ function splitNumber(num, size, startAtZero = false) {
144
129
  }
145
130
  return chunks;
146
131
  }
147
- function tanh(x) {
132
+ export function tanh(x) {
148
133
  return (Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x));
149
134
  }
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.merge = merge;
4
- const constants_1 = require("../classes/features/other/saveDataManager/constants");
5
- const SerializationBrand_1 = require("../enums/private/SerializationBrand");
6
- const SerializationType_1 = require("../enums/SerializationType");
7
- const serialization_1 = require("../serialization");
8
- const array_1 = require("./array");
9
- const deepCopy_1 = require("./deepCopy");
10
- const log_1 = require("./log");
11
- const serialization_2 = require("./serialization");
12
- const table_1 = require("./table");
13
- const tstlClass_1 = require("./tstlClass");
14
- const types_1 = require("./types");
15
- const utils_1 = require("./utils");
1
+ import { SAVE_DATA_MANAGER_DEBUG } from "../classes/features/other/saveDataManager/constants";
2
+ import { SerializationBrand } from "../enums/private/SerializationBrand";
3
+ import { SerializationType } from "../enums/SerializationType";
4
+ import { isSerializationBrand } from "../serialization";
5
+ import { isArray } from "./array";
6
+ import { deepCopy } from "./deepCopy";
7
+ import { log } from "./log";
8
+ import { deserializeIsaacAPIClass, isSerializedIsaacAPIClass, } from "./serialization";
9
+ import { clearTable, iterateTableInOrder } from "./table";
10
+ import { isDefaultMap, isTSTLMap, isTSTLSet } from "./tstlClass";
11
+ import { isTable } from "./types";
12
+ import { getTraversalDescription } from "./utils";
16
13
  /**
17
14
  * `merge` takes the values from a new table and recursively merges them into an old object (while
18
15
  * performing appropriate deserialization).
@@ -49,24 +46,24 @@ const utils_1 = require("./utils");
49
46
  * object, it will use this map to instantiate a new class. Default is an
50
47
  * empty Lua table.
51
48
  */
52
- function merge(oldObject, newTable, traversalDescription, classConstructors = new LuaMap()) {
53
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
54
- (0, log_1.log)(`merge is traversing: ${traversalDescription}`);
49
+ export function merge(oldObject, newTable, traversalDescription, classConstructors = new LuaMap()) {
50
+ if (SAVE_DATA_MANAGER_DEBUG) {
51
+ log(`merge is traversing: ${traversalDescription}`);
55
52
  }
56
- if (!(0, types_1.isTable)(oldObject)) {
53
+ if (!isTable(oldObject)) {
57
54
  error("The first argument given to the merge function is not a table.");
58
55
  }
59
- if (!(0, types_1.isTable)(newTable)) {
56
+ if (!isTable(newTable)) {
60
57
  error("The second argument given to the merge function is not a table.");
61
58
  }
62
59
  // First, handle the special case of an array with a shallow copy.
63
- if ((0, array_1.isArray)(oldObject) && (0, array_1.isArray)(newTable)) {
60
+ if (isArray(oldObject) && isArray(newTable)) {
64
61
  mergeSerializedArray(oldObject, newTable, traversalDescription, classConstructors);
65
62
  return;
66
63
  }
67
64
  // Depending on whether we are working on a Lua table or a TypeScriptToLua object, we need to
68
65
  // iterate in a specific way.
69
- if ((0, tstlClass_1.isTSTLMap)(oldObject) || (0, tstlClass_1.isTSTLSet)(oldObject) || (0, tstlClass_1.isDefaultMap)(oldObject)) {
66
+ if (isTSTLMap(oldObject) || isTSTLSet(oldObject) || isDefaultMap(oldObject)) {
70
67
  mergeSerializedTSTLObject(oldObject, newTable, traversalDescription, classConstructors);
71
68
  }
72
69
  else {
@@ -74,69 +71,69 @@ function merge(oldObject, newTable, traversalDescription, classConstructors = ne
74
71
  }
75
72
  }
76
73
  function mergeSerializedArray(oldArray, newArray, traversalDescription, classConstructors) {
77
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
78
- (0, log_1.log)(`merge encountered an array: ${traversalDescription}`);
74
+ if (SAVE_DATA_MANAGER_DEBUG) {
75
+ log(`merge encountered an array: ${traversalDescription}`);
79
76
  }
80
77
  // Assume that we should blow away all array values with whatever is present in the incoming
81
78
  // array.
82
- (0, table_1.clearTable)(oldArray);
83
- (0, table_1.iterateTableInOrder)(newArray, (key, value) => {
84
- const deserializedValue = (0, deepCopy_1.deepCopy)(value, SerializationType_1.SerializationType.DESERIALIZE, traversalDescription, classConstructors);
79
+ clearTable(oldArray);
80
+ iterateTableInOrder(newArray, (key, value) => {
81
+ const deserializedValue = deepCopy(value, SerializationType.DESERIALIZE, traversalDescription, classConstructors);
85
82
  oldArray.set(key, deserializedValue);
86
- }, constants_1.SAVE_DATA_MANAGER_DEBUG);
83
+ }, SAVE_DATA_MANAGER_DEBUG);
87
84
  }
88
85
  function mergeSerializedTable(oldTable, newTable, traversalDescription, classConstructors) {
89
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
90
- (0, log_1.log)(`merge encountered a Lua table: ${traversalDescription}`);
86
+ if (SAVE_DATA_MANAGER_DEBUG) {
87
+ log(`merge encountered a Lua table: ${traversalDescription}`);
91
88
  }
92
- (0, table_1.iterateTableInOrder)(newTable, (key, value) => {
93
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
89
+ iterateTableInOrder(newTable, (key, value) => {
90
+ if (SAVE_DATA_MANAGER_DEBUG) {
94
91
  const valueToPrint = value === "" ? "(empty string)" : String(value);
95
- (0, log_1.log)(`merge is merging: ${traversalDescription} --> ${valueToPrint}`);
92
+ log(`merge is merging: ${traversalDescription} --> ${valueToPrint}`);
96
93
  }
97
- if ((0, serialization_1.isSerializationBrand)(key)) {
94
+ if (isSerializationBrand(key)) {
98
95
  return;
99
96
  }
100
97
  // Handle the special case of serialized Isaac API classes.
101
- if ((0, serialization_2.isSerializedIsaacAPIClass)(value)) {
102
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
103
- (0, log_1.log)("merge found a serialized Isaac API class.");
98
+ if (isSerializedIsaacAPIClass(value)) {
99
+ if (SAVE_DATA_MANAGER_DEBUG) {
100
+ log("merge found a serialized Isaac API class.");
104
101
  }
105
- const deserializedObject = (0, serialization_2.deserializeIsaacAPIClass)(value);
102
+ const deserializedObject = deserializeIsaacAPIClass(value);
106
103
  oldTable.set(key, deserializedObject);
107
104
  return;
108
105
  }
109
- if ((0, types_1.isTable)(value)) {
106
+ if (isTable(value)) {
110
107
  let oldValue = oldTable.get(key);
111
- if (!(0, types_1.isTable)(oldValue)) {
108
+ if (!isTable(oldValue)) {
112
109
  // The child table does not exist on the old table. However, we still need to copy over
113
110
  // the new table, because we need to handle data types like `Foo | null`. Thus, set up a
114
111
  // blank sub-table on the old table, and continue to recursively merge.
115
112
  oldValue = new LuaMap();
116
113
  oldTable.set(key, oldValue);
117
114
  }
118
- traversalDescription = (0, utils_1.getTraversalDescription)(key, traversalDescription);
115
+ traversalDescription = getTraversalDescription(key, traversalDescription);
119
116
  merge(oldValue, value, traversalDescription, classConstructors);
120
117
  }
121
118
  else {
122
119
  // Base case: copy the value
123
120
  oldTable.set(key, value);
124
121
  }
125
- }, constants_1.SAVE_DATA_MANAGER_DEBUG);
122
+ }, SAVE_DATA_MANAGER_DEBUG);
126
123
  }
127
124
  function mergeSerializedTSTLObject(
128
125
  // eslint-disable-next-line complete/prefer-readonly-parameter-types
129
126
  oldObject, newTable, traversalDescription, classConstructors) {
130
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
131
- (0, log_1.log)(`merge encountered a TSTL object: ${traversalDescription}`);
127
+ if (SAVE_DATA_MANAGER_DEBUG) {
128
+ log(`merge encountered a TSTL object: ${traversalDescription}`);
132
129
  }
133
130
  // We blow away the old object and recursively copy over all of the incoming values.
134
131
  oldObject.clear();
135
132
  // During serialization, we brand some Lua tables with a special identifier to signify that it has
136
133
  // keys that should be deserialized to numbers.
137
- const convertStringKeysToNumbers = newTable.has(SerializationBrand_1.SerializationBrand.OBJECT_WITH_NUMBER_KEYS);
138
- (0, table_1.iterateTableInOrder)(newTable, (key, value) => {
139
- if ((0, serialization_1.isSerializationBrand)(key)) {
134
+ const convertStringKeysToNumbers = newTable.has(SerializationBrand.OBJECT_WITH_NUMBER_KEYS);
135
+ iterateTableInOrder(newTable, (key, value) => {
136
+ if (isSerializationBrand(key)) {
140
137
  return;
141
138
  }
142
139
  let keyToUse = key;
@@ -147,12 +144,12 @@ oldObject, newTable, traversalDescription, classConstructors) {
147
144
  }
148
145
  keyToUse = numberKey;
149
146
  }
150
- if ((0, tstlClass_1.isTSTLMap)(oldObject) || (0, tstlClass_1.isDefaultMap)(oldObject)) {
151
- const deserializedValue = (0, deepCopy_1.deepCopy)(value, SerializationType_1.SerializationType.DESERIALIZE, traversalDescription, classConstructors);
147
+ if (isTSTLMap(oldObject) || isDefaultMap(oldObject)) {
148
+ const deserializedValue = deepCopy(value, SerializationType.DESERIALIZE, traversalDescription, classConstructors);
152
149
  oldObject.set(keyToUse, deserializedValue);
153
150
  }
154
- else if ((0, tstlClass_1.isTSTLSet)(oldObject)) {
151
+ else if (isTSTLSet(oldObject)) {
155
152
  oldObject.add(keyToUse);
156
153
  }
157
- }, constants_1.SAVE_DATA_MANAGER_DEBUG);
154
+ }, SAVE_DATA_MANAGER_DEBUG);
158
155
  }
@@ -1,20 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runMergeTests = runMergeTests;
4
- const DefaultMap_1 = require("../classes/DefaultMap");
5
- const SerializationType_1 = require("../enums/SerializationType");
6
- const deepCopy_1 = require("./deepCopy");
7
- const log_1 = require("./log");
8
- const merge_1 = require("./merge");
9
- const rng_1 = require("./rng");
10
- const serialization_1 = require("./serialization");
11
- const vector_1 = require("./vector");
1
+ import { DefaultMap } from "../classes/DefaultMap";
2
+ import { SerializationType } from "../enums/SerializationType";
3
+ import { deepCopy } from "./deepCopy";
4
+ import { logAndPrint } from "./log";
5
+ import { merge } from "./merge";
6
+ import { isRNG, newRNG } from "./rng";
7
+ import { isSerializedIsaacAPIClass } from "./serialization";
8
+ import { isVector, serializeVector } from "./vector";
12
9
  /**
13
10
  * Run the suite of tests that prove that the "merge" function works properly.
14
11
  *
15
12
  * This function is only useful if you are troubleshooting the save data manager.
16
13
  */
17
- function runMergeTests() {
14
+ export function runMergeTests() {
18
15
  oldTableHasUpdatedValue();
19
16
  newTableHasSameValue();
20
17
  oldTableHasUpdatedValueFromNull();
@@ -27,7 +24,7 @@ function runMergeTests() {
27
24
  oldTableHasRNG();
28
25
  oldTableHasRNGSerialized();
29
26
  const successText = "All merge tests passed!";
30
- (0, log_1.logAndPrint)(successText);
27
+ logAndPrint(successText);
31
28
  }
32
29
  function newTableHasSameValue() {
33
30
  const key = "foo";
@@ -35,7 +32,7 @@ function newTableHasSameValue() {
35
32
  const newValue = "baz";
36
33
  const oldTable = { foo: oldValue };
37
34
  const newTable = { foo: newValue };
38
- (0, merge_1.merge)(oldTable, newTable, "newTableHasSameValue");
35
+ merge(oldTable, newTable, "newTableHasSameValue");
39
36
  const newTableValue = newTable.get(key);
40
37
  if (newTableValue !== newValue) {
41
38
  error(`The new table does not have a value of: ${newValue}`);
@@ -47,7 +44,7 @@ function oldTableHasFilledChildTable() {
47
44
  const oldTable = { foo: null };
48
45
  const foo = { bar: newValue };
49
46
  const newTable = { foo };
50
- (0, merge_1.merge)(oldTable, newTable, "oldTableHasFilledChildTable");
47
+ merge(oldTable, newTable, "oldTableHasFilledChildTable");
51
48
  const oldTableValue = oldTable.get(key);
52
49
  if (oldTableValue === undefined) {
53
50
  error(`The old table's key of "${key}" was not filled.`);
@@ -59,20 +56,20 @@ function oldTableHasFilledChildTable() {
59
56
  function oldTableHasFilledDefaultMap() {
60
57
  const fakeV = {
61
58
  run: {
62
- myDefaultMap: new DefaultMap_1.DefaultMap("default"),
59
+ myDefaultMap: new DefaultMap("default"),
63
60
  },
64
61
  };
65
62
  const saveData = {
66
63
  run: {
67
- myDefaultMap: new DefaultMap_1.DefaultMap("default", [
64
+ myDefaultMap: new DefaultMap("default", [
68
65
  ["foo1", "bar1"],
69
66
  ["foo2", "bar2"],
70
67
  ["foo3", "bar3"],
71
68
  ]),
72
69
  },
73
70
  };
74
- const serializedSaveData = (0, deepCopy_1.deepCopy)(saveData, SerializationType_1.SerializationType.SERIALIZE);
75
- (0, merge_1.merge)(fakeV, serializedSaveData, "oldTableHasFilledDefaultMap");
71
+ const serializedSaveData = deepCopy(saveData, SerializationType.SERIALIZE);
72
+ merge(fakeV, serializedSaveData, "oldTableHasFilledDefaultMap");
76
73
  const expectedSize = 3;
77
74
  if (fakeV.run.myDefaultMap.size !== expectedSize) {
78
75
  error(`The size of the merged default map was equal to ${fakeV.run.myDefaultMap.size}, but it should be equal to: ${expectedSize}`);
@@ -117,8 +114,8 @@ function oldTableHasFilledMap() {
117
114
  ]),
118
115
  },
119
116
  };
120
- const serializedSaveData = (0, deepCopy_1.deepCopy)(saveData, SerializationType_1.SerializationType.SERIALIZE);
121
- (0, merge_1.merge)(fakeV, serializedSaveData, "oldTableHasFilledMap");
117
+ const serializedSaveData = deepCopy(saveData, SerializationType.SERIALIZE);
118
+ merge(fakeV, serializedSaveData, "oldTableHasFilledMap");
122
119
  const expectedSize = 3;
123
120
  if (fakeV.run.myMap.size !== expectedSize) {
124
121
  error(`The size of the merged map was equal to ${fakeV.run.myMap.size}, but it should be equal to: ${expectedSize}`);
@@ -151,16 +148,16 @@ function oldTableHasFilledMap() {
151
148
  function oldTableHasRNG() {
152
149
  const key = "foo";
153
150
  const seed = 50;
154
- const newValue = (0, rng_1.newRNG)(seed);
151
+ const newValue = newRNG(seed);
155
152
  const oldTable = { foo: null };
156
153
  const foo = { bar: newValue };
157
154
  const newTable = { foo };
158
- (0, merge_1.merge)(oldTable, newTable, "oldTableHasRNG");
155
+ merge(oldTable, newTable, "oldTableHasRNG");
159
156
  const oldTableValue = oldTable.get(key);
160
157
  if (oldTableValue === undefined) {
161
158
  error(`The old table's key of "${key}" was not filled.`);
162
159
  }
163
- if (!(0, rng_1.isRNG)(oldTableValue.bar)) {
160
+ if (!isRNG(oldTableValue.bar)) {
164
161
  error("The old table's value is not an RNG object.");
165
162
  }
166
163
  const newSeed = oldTableValue.bar.GetSeed();
@@ -171,17 +168,17 @@ function oldTableHasRNG() {
171
168
  function oldTableHasRNGSerialized() {
172
169
  const key = "foo";
173
170
  const seed = 50;
174
- const newValue = (0, rng_1.newRNG)(seed);
171
+ const newValue = newRNG(seed);
175
172
  const oldTable = { foo: null };
176
173
  const foo = { bar: newValue };
177
174
  const newTable = { foo };
178
- const newTableSerialized = (0, deepCopy_1.deepCopy)(newTable, SerializationType_1.SerializationType.SERIALIZE, "oldTableHasRNGSerialized");
179
- (0, merge_1.merge)(oldTable, newTableSerialized, "oldTableHasRNGSerialized");
175
+ const newTableSerialized = deepCopy(newTable, SerializationType.SERIALIZE, "oldTableHasRNGSerialized");
176
+ merge(oldTable, newTableSerialized, "oldTableHasRNGSerialized");
180
177
  const oldTableValue = oldTable.get(key);
181
178
  if (oldTableValue === undefined) {
182
179
  error(`The old table's key of "${key}" was not filled.`);
183
180
  }
184
- if (!(0, rng_1.isRNG)(oldTableValue.bar)) {
181
+ if (!isRNG(oldTableValue.bar)) {
185
182
  error("The old table's value is not an RNG object (during the serialized test).");
186
183
  }
187
184
  const newSeed = oldTableValue.bar.GetSeed();
@@ -193,8 +190,8 @@ function oldTableHasSerializedIsaacAPIClass() {
193
190
  const x = 50;
194
191
  const y = 60;
195
192
  const vector = Vector(x, y);
196
- const vectorSerialized = (0, vector_1.serializeVector)(vector);
197
- if (!(0, serialization_1.isSerializedIsaacAPIClass)(vectorSerialized)) {
193
+ const vectorSerialized = serializeVector(vector);
194
+ if (!isSerializedIsaacAPIClass(vectorSerialized)) {
198
195
  error('The "isSerializedIsaacAPIClass" function says that a serialized vector is not serialized.');
199
196
  }
200
197
  }
@@ -204,7 +201,7 @@ function oldTableHasUpdatedValue() {
204
201
  const newValue = "baz";
205
202
  const oldTable = { foo: oldValue };
206
203
  const newTable = { foo: newValue };
207
- (0, merge_1.merge)(oldTable, newTable, "oldTableHasUpdatedValue");
204
+ merge(oldTable, newTable, "oldTableHasUpdatedValue");
208
205
  const oldTableValue = oldTable.get(key);
209
206
  if (oldTableValue !== newValue) {
210
207
  error(`The old table does not have a value of: ${newValue}`);
@@ -215,7 +212,7 @@ function oldTableHasUpdatedValueFromNull() {
215
212
  const newValue = "baz";
216
213
  const oldTable = { foo: null };
217
214
  const newTable = { foo: newValue };
218
- (0, merge_1.merge)(oldTable, newTable, "oldTableHasUpdatedValueFromNull");
215
+ merge(oldTable, newTable, "oldTableHasUpdatedValueFromNull");
219
216
  const oldTableValue = oldTable.get(key);
220
217
  if (oldTableValue !== newValue) {
221
218
  error(`The old table does not have a value of: ${newValue}`);
@@ -229,7 +226,7 @@ function oldTableHasVector() {
229
226
  const oldTable = { foo: null };
230
227
  const foo = { bar: newValue };
231
228
  const newTable = { foo };
232
- (0, merge_1.merge)(oldTable, newTable, "oldTableHasVector");
229
+ merge(oldTable, newTable, "oldTableHasVector");
233
230
  const oldTableValue = oldTable.get(key);
234
231
  if (oldTableValue === undefined) {
235
232
  error(`The old table's key of "${key}" was not filled.`);
@@ -240,7 +237,7 @@ function oldTableHasVector() {
240
237
  if (oldTableValue.bar.Y !== y) {
241
238
  error(`The old table's value for "y" does not match: ${y}`);
242
239
  }
243
- if (!(0, vector_1.isVector)(oldTableValue.bar)) {
240
+ if (!isVector(oldTableValue.bar)) {
244
241
  error("The old table's value is not a Vector object.");
245
242
  }
246
243
  }
@@ -252,8 +249,8 @@ function oldTableHasVectorSerialized() {
252
249
  const oldTable = { foo: null };
253
250
  const foo = { bar: newValue };
254
251
  const newTable = { foo };
255
- const newTableSerialized = (0, deepCopy_1.deepCopy)(newTable, SerializationType_1.SerializationType.SERIALIZE, "oldTableHasVectorSerialized");
256
- (0, merge_1.merge)(oldTable, newTableSerialized, "oldTableHasVectorSerialized");
252
+ const newTableSerialized = deepCopy(newTable, SerializationType.SERIALIZE, "oldTableHasVectorSerialized");
253
+ merge(oldTable, newTableSerialized, "oldTableHasVectorSerialized");
257
254
  const oldTableValue = oldTable.get(key);
258
255
  if (oldTableValue === undefined) {
259
256
  error(`The old table's key of "${key}" was not filled.`);
@@ -264,7 +261,7 @@ function oldTableHasVectorSerialized() {
264
261
  if (oldTableValue.bar.Y !== y) {
265
262
  error(`The old table's value for "y" does not match: ${y}`);
266
263
  }
267
- if (!(0, vector_1.isVector)(oldTableValue.bar)) {
264
+ if (!isVector(oldTableValue.bar)) {
268
265
  error("The old table's value is not a Vector object (during the serialized test).");
269
266
  }
270
267
  }