isaacscript-common 84.0.0 → 84.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. package/dist/arrays/cachedEnumValues.js +33 -0
  2. package/dist/callbackClasses.js +289 -0
  3. package/dist/callbacks.js +181 -0
  4. package/dist/classes/DefaultMap.js +171 -0
  5. package/dist/classes/ModFeature.js +244 -0
  6. package/dist/classes/ModUpgraded.js +324 -0
  7. package/dist/classes/callbacks/EntityTakeDmgFilter.js +19 -0
  8. package/dist/classes/callbacks/EntityTakeDmgPlayer.js +29 -0
  9. package/dist/classes/callbacks/InputActionFilter.js +24 -0
  10. package/dist/classes/callbacks/InputActionPlayer.js +37 -0
  11. package/dist/classes/callbacks/PostAmbushFinished.js +40 -0
  12. package/dist/classes/callbacks/PostAmbushStarted.js +40 -0
  13. package/dist/classes/callbacks/PostBombExploded.js +24 -0
  14. package/dist/classes/callbacks/PostBombInitFilter.js +21 -0
  15. package/dist/classes/callbacks/PostBombInitLate.js +31 -0
  16. package/dist/classes/callbacks/PostBombRenderFilter.js +21 -0
  17. package/dist/classes/callbacks/PostBombUpdateFilter.js +21 -0
  18. package/dist/classes/callbacks/PostBoneSwing.js +53 -0
  19. package/dist/classes/callbacks/PostCollectibleEmpty.js +50 -0
  20. package/dist/classes/callbacks/PostCursedTeleport.js +119 -0
  21. package/dist/classes/callbacks/PostCustomRevive.js +17 -0
  22. package/dist/classes/callbacks/PostDiceRoomActivated.js +50 -0
  23. package/dist/classes/callbacks/PostDoorRender.js +24 -0
  24. package/dist/classes/callbacks/PostDoorUpdate.js +24 -0
  25. package/dist/classes/callbacks/PostEffectInitFilter.js +21 -0
  26. package/dist/classes/callbacks/PostEffectInitLate.js +31 -0
  27. package/dist/classes/callbacks/PostEffectRenderFilter.js +21 -0
  28. package/dist/classes/callbacks/PostEffectStateChanged.js +34 -0
  29. package/dist/classes/callbacks/PostEffectUpdateFilter.js +21 -0
  30. package/dist/classes/callbacks/PostEntityKillFilter.js +21 -0
  31. package/dist/classes/callbacks/PostEsauJr.js +12 -0
  32. package/dist/classes/callbacks/PostFamiliarInitFilter.js +21 -0
  33. package/dist/classes/callbacks/PostFamiliarInitLate.js +31 -0
  34. package/dist/classes/callbacks/PostFamiliarRenderFilter.js +21 -0
  35. package/dist/classes/callbacks/PostFamiliarStateChanged.js +34 -0
  36. package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +21 -0
  37. package/dist/classes/callbacks/PostFirstEsauJr.js +12 -0
  38. package/dist/classes/callbacks/PostFirstFlip.js +12 -0
  39. package/dist/classes/callbacks/PostFlip.js +12 -0
  40. package/dist/classes/callbacks/PostGameEndFilter.js +21 -0
  41. package/dist/classes/callbacks/PostGameStartedReordered.js +14 -0
  42. package/dist/classes/callbacks/PostGameStartedReorderedLast.js +14 -0
  43. package/dist/classes/callbacks/PostGreedModeWave.js +35 -0
  44. package/dist/classes/callbacks/PostGridEntityBroken.js +14 -0
  45. package/dist/classes/callbacks/PostGridEntityCollision.js +28 -0
  46. package/dist/classes/callbacks/PostGridEntityCustomBroken.js +14 -0
  47. package/dist/classes/callbacks/PostGridEntityCustomCollision.js +24 -0
  48. package/dist/classes/callbacks/PostGridEntityCustomInit.js +14 -0
  49. package/dist/classes/callbacks/PostGridEntityCustomRemove.js +18 -0
  50. package/dist/classes/callbacks/PostGridEntityCustomRender.js +14 -0
  51. package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +14 -0
  52. package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +14 -0
  53. package/dist/classes/callbacks/PostGridEntityInit.js +14 -0
  54. package/dist/classes/callbacks/PostGridEntityRemove.js +19 -0
  55. package/dist/classes/callbacks/PostGridEntityRender.js +14 -0
  56. package/dist/classes/callbacks/PostGridEntityStateChanged.js +14 -0
  57. package/dist/classes/callbacks/PostGridEntityUpdate.js +14 -0
  58. package/dist/classes/callbacks/PostHolyMantleRemoved.js +43 -0
  59. package/dist/classes/callbacks/PostItemDischarge.js +122 -0
  60. package/dist/classes/callbacks/PostItemPickup.js +14 -0
  61. package/dist/classes/callbacks/PostKeyboardChanged.js +46 -0
  62. package/dist/classes/callbacks/PostKnifeInitFilter.js +21 -0
  63. package/dist/classes/callbacks/PostKnifeInitLate.js +31 -0
  64. package/dist/classes/callbacks/PostKnifeRenderFilter.js +21 -0
  65. package/dist/classes/callbacks/PostKnifeUpdateFilter.js +21 -0
  66. package/dist/classes/callbacks/PostLaserInitFilter.js +21 -0
  67. package/dist/classes/callbacks/PostLaserInitLate.js +31 -0
  68. package/dist/classes/callbacks/PostLaserRenderFilter.js +21 -0
  69. package/dist/classes/callbacks/PostLaserUpdateFilter.js +21 -0
  70. package/dist/classes/callbacks/PostNPCDeathFilter.js +21 -0
  71. package/dist/classes/callbacks/PostNPCInitFilter.js +21 -0
  72. package/dist/classes/callbacks/PostNPCInitLate.js +31 -0
  73. package/dist/classes/callbacks/PostNPCRenderFilter.js +21 -0
  74. package/dist/classes/callbacks/PostNPCStateChanged.js +34 -0
  75. package/dist/classes/callbacks/PostNPCUpdateFilter.js +21 -0
  76. package/dist/classes/callbacks/PostNewLevelReordered.js +14 -0
  77. package/dist/classes/callbacks/PostNewRoomEarly.js +74 -0
  78. package/dist/classes/callbacks/PostNewRoomReordered.js +14 -0
  79. package/dist/classes/callbacks/PostPEffectUpdateReordered.js +14 -0
  80. package/dist/classes/callbacks/PostPickupChanged.js +14 -0
  81. package/dist/classes/callbacks/PostPickupCollect.js +38 -0
  82. package/dist/classes/callbacks/PostPickupInitFilter.js +21 -0
  83. package/dist/classes/callbacks/PostPickupInitFirst.js +33 -0
  84. package/dist/classes/callbacks/PostPickupInitLate.js +31 -0
  85. package/dist/classes/callbacks/PostPickupRenderFilter.js +21 -0
  86. package/dist/classes/callbacks/PostPickupSelectionFilter.js +29 -0
  87. package/dist/classes/callbacks/PostPickupStateChanged.js +34 -0
  88. package/dist/classes/callbacks/PostPickupUpdateFilter.js +21 -0
  89. package/dist/classes/callbacks/PostPitRender.js +24 -0
  90. package/dist/classes/callbacks/PostPitUpdate.js +24 -0
  91. package/dist/classes/callbacks/PostPlayerChangeHealth.js +47 -0
  92. package/dist/classes/callbacks/PostPlayerChangeStat.js +79 -0
  93. package/dist/classes/callbacks/PostPlayerChangeType.js +36 -0
  94. package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +14 -0
  95. package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +14 -0
  96. package/dist/classes/callbacks/PostPlayerFatalDamage.js +83 -0
  97. package/dist/classes/callbacks/PostPlayerInitFirst.js +41 -0
  98. package/dist/classes/callbacks/PostPlayerInitLate.js +33 -0
  99. package/dist/classes/callbacks/PostPlayerRenderReordered.js +14 -0
  100. package/dist/classes/callbacks/PostPlayerUpdateReordered.js +14 -0
  101. package/dist/classes/callbacks/PostPoopRender.js +24 -0
  102. package/dist/classes/callbacks/PostPoopUpdate.js +24 -0
  103. package/dist/classes/callbacks/PostPressurePlateRender.js +24 -0
  104. package/dist/classes/callbacks/PostPressurePlateUpdate.js +24 -0
  105. package/dist/classes/callbacks/PostProjectileInitFilter.js +21 -0
  106. package/dist/classes/callbacks/PostProjectileInitLate.js +31 -0
  107. package/dist/classes/callbacks/PostProjectileKill.js +52 -0
  108. package/dist/classes/callbacks/PostProjectileRenderFilter.js +21 -0
  109. package/dist/classes/callbacks/PostProjectileUpdateFilter.js +21 -0
  110. package/dist/classes/callbacks/PostPurchase.js +90 -0
  111. package/dist/classes/callbacks/PostRockRender.js +24 -0
  112. package/dist/classes/callbacks/PostRockUpdate.js +24 -0
  113. package/dist/classes/callbacks/PostRoomClearChanged.js +46 -0
  114. package/dist/classes/callbacks/PostSacrifice.js +36 -0
  115. package/dist/classes/callbacks/PostSlotAnimationChanged.js +14 -0
  116. package/dist/classes/callbacks/PostSlotCollision.js +25 -0
  117. package/dist/classes/callbacks/PostSlotDestroyed.js +14 -0
  118. package/dist/classes/callbacks/PostSlotInit.js +14 -0
  119. package/dist/classes/callbacks/PostSlotRender.js +14 -0
  120. package/dist/classes/callbacks/PostSlotUpdate.js +14 -0
  121. package/dist/classes/callbacks/PostSpikesRender.js +24 -0
  122. package/dist/classes/callbacks/PostSpikesUpdate.js +24 -0
  123. package/dist/classes/callbacks/PostTNTRender.js +24 -0
  124. package/dist/classes/callbacks/PostTNTUpdate.js +24 -0
  125. package/dist/classes/callbacks/PostTearInitFilter.js +21 -0
  126. package/dist/classes/callbacks/PostTearInitLate.js +31 -0
  127. package/dist/classes/callbacks/PostTearInitVeryLate.js +35 -0
  128. package/dist/classes/callbacks/PostTearKill.js +52 -0
  129. package/dist/classes/callbacks/PostTearRenderFilter.js +21 -0
  130. package/dist/classes/callbacks/PostTearUpdateFilter.js +21 -0
  131. package/dist/classes/callbacks/PostTransformation.js +47 -0
  132. package/dist/classes/callbacks/PostTrinketBreak.js +70 -0
  133. package/dist/classes/callbacks/PostUsePillFilter.js +76 -0
  134. package/dist/classes/callbacks/PreBerserkDeath.js +41 -0
  135. package/dist/classes/callbacks/PreBombCollisionFilter.js +19 -0
  136. package/dist/classes/callbacks/PreCustomRevive.js +14 -0
  137. package/dist/classes/callbacks/PreEntitySpawnFilter.js +24 -0
  138. package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +19 -0
  139. package/dist/classes/callbacks/PreGetPedestal.js +46 -0
  140. package/dist/classes/callbacks/PreItemPickup.js +14 -0
  141. package/dist/classes/callbacks/PreKnifeCollisionFilter.js +19 -0
  142. package/dist/classes/callbacks/PreNPCCollisionFilter.js +19 -0
  143. package/dist/classes/callbacks/PreNPCUpdateFilter.js +19 -0
  144. package/dist/classes/callbacks/PreNewLevel.js +51 -0
  145. package/dist/classes/callbacks/PreProjectileCollisionFilter.js +19 -0
  146. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +26 -0
  147. package/dist/classes/callbacks/PreTearCollisionFilter.js +19 -0
  148. package/dist/classes/features/callbackLogic/CustomGridEntities.js +359 -0
  149. package/dist/classes/features/callbackLogic/CustomRevive.js +170 -0
  150. package/dist/classes/features/callbackLogic/EsauJrDetection.js +70 -0
  151. package/dist/classes/features/callbackLogic/FlipDetection.js +61 -0
  152. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +220 -0
  153. package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +62 -0
  154. package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +35 -0
  155. package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +147 -0
  156. package/dist/classes/features/callbackLogic/ItemPickupDetection.js +68 -0
  157. package/dist/classes/features/callbackLogic/PickupChangeDetection.js +43 -0
  158. package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +193 -0
  159. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +109 -0
  160. package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +95 -0
  161. package/dist/classes/features/callbackLogic/SlotRenderDetection.js +48 -0
  162. package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +52 -0
  163. package/dist/classes/features/other/CharacterHealthConversion.js +112 -0
  164. package/dist/classes/features/other/CharacterStats.js +68 -0
  165. package/dist/classes/features/other/CollectibleItemPoolType.js +75 -0
  166. package/dist/classes/features/other/CustomHotkeys.js +144 -0
  167. package/dist/classes/features/other/CustomItemPools.js +128 -0
  168. package/dist/classes/features/other/CustomPickups.js +118 -0
  169. package/dist/classes/features/other/CustomStages.js +471 -0
  170. package/dist/classes/features/other/CustomTrapdoors.js +596 -0
  171. package/dist/classes/features/other/DebugDisplay.js +699 -0
  172. package/dist/classes/features/other/DeployJSONRoom.js +301 -0
  173. package/dist/classes/features/other/DisableAllSound.js +90 -0
  174. package/dist/classes/features/other/DisableInputs.js +249 -0
  175. package/dist/classes/features/other/EdenStartingStatsHealth.js +197 -0
  176. package/dist/classes/features/other/ExtraConsoleCommands.js +292 -0
  177. package/dist/classes/features/other/FadeInRemover.js +67 -0
  178. package/dist/classes/features/other/FastReset.js +88 -0
  179. package/dist/classes/features/other/FlyingDetection.js +64 -0
  180. package/dist/classes/features/other/ForgottenSwitch.js +43 -0
  181. package/dist/classes/features/other/ItemPoolDetection.js +187 -0
  182. package/dist/classes/features/other/ModdedElementDetection.js +399 -0
  183. package/dist/classes/features/other/ModdedElementSets.js +1251 -0
  184. package/dist/classes/features/other/NoSirenSteal.js +88 -0
  185. package/dist/classes/features/other/Pause.js +197 -0
  186. package/dist/classes/features/other/PersistentEntities.js +168 -0
  187. package/dist/classes/features/other/PickupIndexCreation.js +229 -0
  188. package/dist/classes/features/other/PlayerCollectibleTracking.js +102 -0
  189. package/dist/classes/features/other/PonyDetection.js +86 -0
  190. package/dist/classes/features/other/PressInput.js +71 -0
  191. package/dist/classes/features/other/PreventChildEntities.js +60 -0
  192. package/dist/classes/features/other/PreventGridEntityRespawn.js +159 -0
  193. package/dist/classes/features/other/RerunDetection.js +69 -0
  194. package/dist/classes/features/other/RoomClearFrame.js +94 -0
  195. package/dist/classes/features/other/RoomHistory.js +196 -0
  196. package/dist/classes/features/other/RunInNFrames.js +323 -0
  197. package/dist/classes/features/other/RunNextRoom.js +53 -0
  198. package/dist/classes/features/other/RunNextRun.js +60 -0
  199. package/dist/classes/features/other/SaveDataManager.js +383 -0
  200. package/dist/classes/features/other/SpawnRockAltRewards.js +469 -0
  201. package/dist/classes/features/other/StageHistory.js +244 -0
  202. package/dist/classes/features/other/StartAmbush.js +62 -0
  203. package/dist/classes/features/other/TaintedLazarusPlayers.js +115 -0
  204. package/dist/classes/features/other/UnlockAchievementsDetection.js +60 -0
  205. package/dist/classes/features/other/customStages/backdrop.js +195 -0
  206. package/dist/classes/features/other/customStages/constants.js +19 -0
  207. package/dist/classes/features/other/customStages/gridEntities.js +177 -0
  208. package/dist/classes/features/other/customStages/shadows.js +67 -0
  209. package/dist/classes/features/other/customStages/streakText.js +222 -0
  210. package/dist/classes/features/other/customStages/utils.js +65 -0
  211. package/dist/classes/features/other/customStages/v.js +27 -0
  212. package/dist/classes/features/other/customStages/versusScreen.js +227 -0
  213. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +23 -0
  214. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +22 -0
  215. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +23 -0
  216. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +23 -0
  217. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +23 -0
  218. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +23 -0
  219. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +23 -0
  220. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +23 -0
  221. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +22 -0
  222. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +25 -0
  223. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +22 -0
  224. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +25 -0
  225. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +23 -0
  226. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +22 -0
  227. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +22 -0
  228. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +22 -0
  229. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +22 -0
  230. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +23 -0
  231. package/dist/classes/features/other/debugDisplay/utils.js +13 -0
  232. package/dist/classes/features/other/extraConsoleCommands/commands.js +1598 -0
  233. package/dist/classes/features/other/extraConsoleCommands/subroutines.js +135 -0
  234. package/dist/classes/features/other/extraConsoleCommands/v.js +30 -0
  235. package/dist/classes/features/other/saveDataManager/constants.js +4 -0
  236. package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +106 -0
  237. package/dist/classes/features/other/saveDataManager/loadFromDisk.js +69 -0
  238. package/dist/classes/features/other/saveDataManager/restoreDefaults.js +69 -0
  239. package/dist/classes/features/other/saveDataManager/saveToDisk.js +46 -0
  240. package/dist/classes/private/CustomCallback.js +59 -0
  241. package/dist/classes/private/Feature.js +39 -0
  242. package/dist/core/cachedClasses.js +61 -0
  243. package/dist/core/constants.js +289 -0
  244. package/dist/core/constantsFirstLast.js +98 -0
  245. package/dist/core/constantsVanilla.js +131 -0
  246. package/dist/core/upgradeMod.js +71 -0
  247. package/dist/customStageMetadata.json +1 -0
  248. package/dist/data/itempools.json +16625 -0
  249. package/dist/decorators.js +21 -0
  250. package/dist/enums/AmbushType.js +9 -0
  251. package/dist/enums/CornerType.js +11 -0
  252. package/dist/enums/HealthType.js +20 -0
  253. package/dist/enums/ISCFeature.js +65 -0
  254. package/dist/enums/LadderSubTypeCustom.js +20 -0
  255. package/dist/enums/ModCallbackCustom.js +2477 -0
  256. package/dist/enums/MysteriousPaperEffect.js +16 -0
  257. package/dist/enums/PlayerStat.js +37 -0
  258. package/dist/enums/PocketItemType.js +13 -0
  259. package/dist/enums/RockAltType.js +23 -0
  260. package/dist/enums/SaveDataKey.js +14 -0
  261. package/dist/enums/SerializationType.js +10 -0
  262. package/dist/enums/SlotDestructionType.js +22 -0
  263. package/dist/enums/private/GridEntityTypeCustom.js +10 -0
  264. package/dist/enums/private/SerializationBrand.js +42 -0
  265. package/dist/enums/private/StageTravelState.js +13 -0
  266. package/dist/enums/private/TrapdoorAnimation.js +9 -0
  267. package/dist/enums/private/UIStreakAnimation.js +10 -0
  268. package/dist/features.js +150 -0
  269. package/dist/functions/ambush.js +26 -0
  270. package/dist/functions/array.js +586 -0
  271. package/dist/functions/arrayLua.js +81 -0
  272. package/dist/functions/benchmark.js +36 -0
  273. package/dist/functions/bitSet128.js +64 -0
  274. package/dist/functions/bitwise.js +82 -0
  275. package/dist/functions/bombs.js +14 -0
  276. package/dist/functions/bosses.js +238 -0
  277. package/dist/functions/cards.js +164 -0
  278. package/dist/functions/challenges.js +117 -0
  279. package/dist/functions/characters.js +182 -0
  280. package/dist/functions/charge.js +251 -0
  281. package/dist/functions/chargeBar.js +54 -0
  282. package/dist/functions/collectibleTag.js +24 -0
  283. package/dist/functions/collectibles.js +581 -0
  284. package/dist/functions/color.js +88 -0
  285. package/dist/functions/console.js +18 -0
  286. package/dist/functions/curses.js +37 -0
  287. package/dist/functions/debugFunctions.js +108 -0
  288. package/dist/functions/decorators.js +113 -0
  289. package/dist/functions/deepCopy.js +406 -0
  290. package/dist/functions/deepCopyTests.js +361 -0
  291. package/dist/functions/dimensions.js +30 -0
  292. package/dist/functions/direction.js +78 -0
  293. package/dist/functions/doors.js +524 -0
  294. package/dist/functions/easing.js +327 -0
  295. package/dist/functions/effects.js +14 -0
  296. package/dist/functions/emptyRoom.js +79 -0
  297. package/dist/functions/entities.js +529 -0
  298. package/dist/functions/entitiesSpecific.js +582 -0
  299. package/dist/functions/entityTypes.js +9 -0
  300. package/dist/functions/enums.js +244 -0
  301. package/dist/functions/external.js +59 -0
  302. package/dist/functions/familiars.js +136 -0
  303. package/dist/functions/flag.js +146 -0
  304. package/dist/functions/frames.js +166 -0
  305. package/dist/functions/globals.js +291 -0
  306. package/dist/functions/gridEntities.js +990 -0
  307. package/dist/functions/gridEntitiesSpecific.js +456 -0
  308. package/dist/functions/gridIndex.js +35 -0
  309. package/dist/functions/hash.js +75 -0
  310. package/dist/functions/hex.js +57 -0
  311. package/dist/functions/input.js +185 -0
  312. package/dist/functions/isaacAPIClass.js +157 -0
  313. package/dist/functions/itemPool.js +118 -0
  314. package/dist/functions/jsonHelpers.js +73 -0
  315. package/dist/functions/jsonRoom.js +184 -0
  316. package/dist/functions/kColor.js +89 -0
  317. package/dist/functions/language.js +16 -0
  318. package/dist/functions/level.js +66 -0
  319. package/dist/functions/levelGrid.js +497 -0
  320. package/dist/functions/log.js +86 -0
  321. package/dist/functions/logEntities.js +308 -0
  322. package/dist/functions/logMisc.js +510 -0
  323. package/dist/functions/map.js +121 -0
  324. package/dist/functions/math.js +149 -0
  325. package/dist/functions/merge.js +159 -0
  326. package/dist/functions/mergeTests.js +313 -0
  327. package/dist/functions/minimap.js +204 -0
  328. package/dist/functions/modFeatures.js +39 -0
  329. package/dist/functions/newArray.js +30 -0
  330. package/dist/functions/nextStage.js +169 -0
  331. package/dist/functions/npcDataStructures.js +146 -0
  332. package/dist/functions/npcs.js +132 -0
  333. package/dist/functions/pickupVariants.js +63 -0
  334. package/dist/functions/pickups.js +168 -0
  335. package/dist/functions/pickupsSpecific.js +376 -0
  336. package/dist/functions/pills.js +200 -0
  337. package/dist/functions/playerCenter.js +53 -0
  338. package/dist/functions/playerCollectibles.js +300 -0
  339. package/dist/functions/playerDataStructures.js +145 -0
  340. package/dist/functions/playerEffects.js +63 -0
  341. package/dist/functions/playerHealth.js +604 -0
  342. package/dist/functions/playerIndex.js +186 -0
  343. package/dist/functions/playerTrinkets.js +149 -0
  344. package/dist/functions/players.js +471 -0
  345. package/dist/functions/pocketItems.js +165 -0
  346. package/dist/functions/positionVelocity.js +158 -0
  347. package/dist/functions/pressurePlate.js +26 -0
  348. package/dist/functions/projectiles.js +57 -0
  349. package/dist/functions/random.js +90 -0
  350. package/dist/functions/readOnly.js +33 -0
  351. package/dist/functions/render.js +36 -0
  352. package/dist/functions/revive.js +151 -0
  353. package/dist/functions/rng.js +140 -0
  354. package/dist/functions/rockAlt.js +50 -0
  355. package/dist/functions/roomData.js +155 -0
  356. package/dist/functions/roomGrid.js +97 -0
  357. package/dist/functions/roomShape.js +143 -0
  358. package/dist/functions/roomShapeWalls.js +187 -0
  359. package/dist/functions/roomTransition.js +43 -0
  360. package/dist/functions/rooms.js +782 -0
  361. package/dist/functions/run.js +121 -0
  362. package/dist/functions/seeds.js +22 -0
  363. package/dist/functions/serialization.js +98 -0
  364. package/dist/functions/set.js +215 -0
  365. package/dist/functions/slots.js +41 -0
  366. package/dist/functions/sort.js +158 -0
  367. package/dist/functions/sound.js +45 -0
  368. package/dist/functions/spawnCollectible.js +112 -0
  369. package/dist/functions/sprites.js +130 -0
  370. package/dist/functions/stage.js +540 -0
  371. package/dist/functions/stats.js +104 -0
  372. package/dist/functions/storyBosses.js +63 -0
  373. package/dist/functions/string.js +194 -0
  374. package/dist/functions/table.js +162 -0
  375. package/dist/functions/tears.js +128 -0
  376. package/dist/functions/transformations.js +89 -0
  377. package/dist/functions/trinketGive.js +145 -0
  378. package/dist/functions/trinkets.js +213 -0
  379. package/dist/functions/tstlClass.js +97 -0
  380. package/dist/functions/types.js +225 -0
  381. package/dist/functions/ui.js +148 -0
  382. package/dist/functions/utils.d.ts +4 -1
  383. package/dist/functions/utils.d.ts.map +1 -1
  384. package/dist/functions/utils.js +195 -0
  385. package/dist/functions/utils.lua +6 -2
  386. package/dist/functions/vector.js +150 -0
  387. package/dist/functions/versusScreen.js +58 -0
  388. package/dist/functions/weighted.js +57 -0
  389. package/dist/index.js +219 -0
  390. package/dist/index.rollup.d.ts +4 -1
  391. package/dist/indexLua.js +220 -0
  392. package/dist/interfaces/ChargeBarSprites.js +2 -0
  393. package/dist/interfaces/Corner.js +2 -0
  394. package/dist/interfaces/CustomStageTSConfig.js +2 -0
  395. package/dist/interfaces/GridEntityCustomData.js +2 -0
  396. package/dist/interfaces/JSONRoomsFile.js +2 -0
  397. package/dist/interfaces/PlayerHealth.js +2 -0
  398. package/dist/interfaces/PlayerStats.js +4 -0
  399. package/dist/interfaces/PocketItemDescription.js +2 -0
  400. package/dist/interfaces/RoomDescription.js +2 -0
  401. package/dist/interfaces/SaveData.js +98 -0
  402. package/dist/interfaces/StageHistoryEntry.js +2 -0
  403. package/dist/interfaces/TSTLClassMetatable.js +2 -0
  404. package/dist/interfaces/TrinketSituation.js +2 -0
  405. package/dist/interfaces/private/AddCallbackParametersCustom.js +4 -0
  406. package/dist/interfaces/private/CustomStage.js +2 -0
  407. package/dist/interfaces/private/CustomTrapdoorDescription.js +2 -0
  408. package/dist/interfaces/private/ModUpgradedInterface.js +2 -0
  409. package/dist/isaacscript-common.lua +7 -3
  410. package/dist/maps/PHDPillConversionsMap.js +23 -0
  411. package/dist/maps/cardNameToTypeMap.js +211 -0
  412. package/dist/maps/characterNameToTypeMap.js +91 -0
  413. package/dist/maps/collectibleNameToTypeMap.js +19 -0
  414. package/dist/maps/defaultPlayerStatMap.js +17 -0
  415. package/dist/maps/entityTypeVariantToBossIDMap.js +11 -0
  416. package/dist/maps/falsePHDPillConversionsMap.js +37 -0
  417. package/dist/maps/gridEntityTypeToBrokenStateMap.js +32 -0
  418. package/dist/maps/gridEntityXMLMap.js +133 -0
  419. package/dist/maps/itemPoolTypeToItemPoolName.js +38 -0
  420. package/dist/maps/keyboardToStringMap.js +71 -0
  421. package/dist/maps/pillNameToEffectMap.js +91 -0
  422. package/dist/maps/roomNameToTypeMap.js +43 -0
  423. package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +17 -0
  424. package/dist/maps/transformationNameToPlayerFormMap.js +35 -0
  425. package/dist/maps/trinketNameToTypeMap.js +19 -0
  426. package/dist/objects/LRoomShapeToRectangles.js +43 -0
  427. package/dist/objects/backdropTypeToRockAltType.js +68 -0
  428. package/dist/objects/batteryNames.js +13 -0
  429. package/dist/objects/bombNames.js +17 -0
  430. package/dist/objects/bossIDToEntityTypeVariant.js +228 -0
  431. package/dist/objects/bossNamePNGFileNames.js +120 -0
  432. package/dist/objects/bossNames.js +119 -0
  433. package/dist/objects/bossPortraitPNGFileNames.js +123 -0
  434. package/dist/objects/cardDescriptions.js +106 -0
  435. package/dist/objects/cardNames.js +106 -0
  436. package/dist/objects/challengeBosses.js +60 -0
  437. package/dist/objects/challengeCharacters.js +58 -0
  438. package/dist/objects/challengeCollectibleTypes.js +255 -0
  439. package/dist/objects/challengeNames.js +54 -0
  440. package/dist/objects/challengeTrinketType.js +58 -0
  441. package/dist/objects/characterDamageMultipliers.js +49 -0
  442. package/dist/objects/characterNames.js +48 -0
  443. package/dist/objects/characterSpritePNGFileNames.js +50 -0
  444. package/dist/objects/characterStartingCollectibleTypes.js +105 -0
  445. package/dist/objects/characterStartingTrinketTypes.js +90 -0
  446. package/dist/objects/chestNames.js +20 -0
  447. package/dist/objects/coinNames.js +16 -0
  448. package/dist/objects/coinSubTypeToValue.js +15 -0
  449. package/dist/objects/collectibleDescriptions.js +742 -0
  450. package/dist/objects/collectibleNames.js +745 -0
  451. package/dist/objects/colors.js +26 -0
  452. package/dist/objects/directionNames.js +11 -0
  453. package/dist/objects/directionToDegrees.js +11 -0
  454. package/dist/objects/directionToMoveAction.js +11 -0
  455. package/dist/objects/directionToShootAction.js +11 -0
  456. package/dist/objects/directionToVector.js +13 -0
  457. package/dist/objects/doorSlotFlagToDoorSlot.js +15 -0
  458. package/dist/objects/doorSlotToDirection.js +15 -0
  459. package/dist/objects/doorSlotToDoorSlotFlag.js +15 -0
  460. package/dist/objects/gridEntityTypeToANM2Name.js +37 -0
  461. package/dist/objects/heartNames.js +21 -0
  462. package/dist/objects/isaacAPIClassTypeToBrand.js +12 -0
  463. package/dist/objects/isaacAPIClassTypeToFunctions.js +46 -0
  464. package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +57 -0
  465. package/dist/objects/kColors.js +27 -0
  466. package/dist/objects/keyNames.js +13 -0
  467. package/dist/objects/languageNames.js +13 -0
  468. package/dist/objects/oppositeDoorSlots.js +15 -0
  469. package/dist/objects/pillEffectClasses.js +57 -0
  470. package/dist/objects/pillEffectNames.js +57 -0
  471. package/dist/objects/pillEffectTypeToPillEffects.js +23 -0
  472. package/dist/objects/pillEffectTypes.js +57 -0
  473. package/dist/objects/playerNamePNGFileNames.js +57 -0
  474. package/dist/objects/playerPortraitPNGFileNames.js +54 -0
  475. package/dist/objects/roomShapeBounds.js +48 -0
  476. package/dist/objects/roomShapeCorners.js +330 -0
  477. package/dist/objects/roomShapeLayoutSizes.js +41 -0
  478. package/dist/objects/roomShapeToBottomRightPosition.js +25 -0
  479. package/dist/objects/roomShapeToDoorSlotCoordinates.js +111 -0
  480. package/dist/objects/roomShapeToDoorSlots.js +72 -0
  481. package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +118 -0
  482. package/dist/objects/roomShapeToGridWidth.js +20 -0
  483. package/dist/objects/roomShapeToTopLeftPosition.js +26 -0
  484. package/dist/objects/roomShapeVolumes.js +32 -0
  485. package/dist/objects/roomTypeNames.js +35 -0
  486. package/dist/objects/roomTypeSpecialGotoPrefixes.js +35 -0
  487. package/dist/objects/sackNames.js +11 -0
  488. package/dist/objects/slotNames.js +26 -0
  489. package/dist/objects/stageIDNames.js +43 -0
  490. package/dist/objects/stageToMusic.js +91 -0
  491. package/dist/objects/stageToStageID.js +117 -0
  492. package/dist/objects/stageTypeSuffixes.js +14 -0
  493. package/dist/objects/transformationNames.js +20 -0
  494. package/dist/objects/trinketDescriptions.js +199 -0
  495. package/dist/objects/trinketNames.js +202 -0
  496. package/dist/objects/versusScreenBackgroundColors.js +46 -0
  497. package/dist/objects/versusScreenDirtSpotColors.js +46 -0
  498. package/dist/patchErrorFunctions.js +65 -0
  499. package/dist/serialization.js +21 -0
  500. package/dist/sets/LRoomShapesSet.js +11 -0
  501. package/dist/sets/bigRoomShapesSet.js +14 -0
  502. package/dist/sets/bossSets.js +465 -0
  503. package/dist/sets/charactersThatStartWithAnActiveItemSet.js +18 -0
  504. package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +9 -0
  505. package/dist/sets/charactersWithFreeDevilDealsSet.js +6 -0
  506. package/dist/sets/charactersWithNoRedHeartsSet.js +19 -0
  507. package/dist/sets/charactersWithNoSoulHeartsSet.js +16 -0
  508. package/dist/sets/consoleCommandsSet.js +64 -0
  509. package/dist/sets/entitiesWithArmorSet.js +59 -0
  510. package/dist/sets/familiarsThatShootPlayerTearsSet.js +15 -0
  511. package/dist/sets/itemConfigCardTypesForCards.js +14 -0
  512. package/dist/sets/lostStyleCharactersSet.js +16 -0
  513. package/dist/sets/mineShaftRoomSubTypesSet.js +12 -0
  514. package/dist/sets/narrowRoomShapesSet.js +11 -0
  515. package/dist/sets/poopGridEntityXMLTypesSet.js +16 -0
  516. package/dist/sets/redHeartSubTypesSet.js +10 -0
  517. package/dist/sets/repentanceBossIDsSet.js +30 -0
  518. package/dist/sets/sinEntityTypesSet.js +14 -0
  519. package/dist/sets/singleUseActiveCollectibleTypesSet.js +15 -0
  520. package/dist/shaderCrashFix.js +24 -0
  521. package/dist/shouldFire.js +226 -0
  522. package/dist/types/AddSubtract.js +2 -0
  523. package/dist/types/AllButFirst.js +2 -0
  524. package/dist/types/AllButLast.js +2 -0
  525. package/dist/types/AnyClass.js +2 -0
  526. package/dist/types/AnyEntity.js +2 -0
  527. package/dist/types/AnyFunction.js +2 -0
  528. package/dist/types/AnyGridEntity.js +2 -0
  529. package/dist/types/CompositionTypeSatisfiesEnum.js +11 -0
  530. package/dist/types/ConversionHeartSubType.js +2 -0
  531. package/dist/types/Decrement.js +2 -0
  532. package/dist/types/ERange.js +2 -0
  533. package/dist/types/EntityID.js +2 -0
  534. package/dist/types/FunctionTuple.js +2 -0
  535. package/dist/types/GridEntityID.js +2 -0
  536. package/dist/types/HasFunction.js +2 -0
  537. package/dist/types/IRange.js +2 -0
  538. package/dist/types/Immutable.js +2 -0
  539. package/dist/types/Increment.js +2 -0
  540. package/dist/types/LowercaseKeys.js +2 -0
  541. package/dist/types/NaturalNumbersLessThan.js +2 -0
  542. package/dist/types/NaturalNumbersLessThanOrEqualTo.js +2 -0
  543. package/dist/types/PickingUpItem.js +44 -0
  544. package/dist/types/PickupIndex.js +2 -0
  545. package/dist/types/PlayerIndex.js +2 -0
  546. package/dist/types/PossibleStatType.js +2 -0
  547. package/dist/types/PublicInterface.js +2 -0
  548. package/dist/types/ReadonlyMap.js +6 -0
  549. package/dist/types/ReadonlyRecord.js +2 -0
  550. package/dist/types/ReadonlySet.js +6 -0
  551. package/dist/types/StartsWithLowercase.js +2 -0
  552. package/dist/types/StartsWithUppercase.js +2 -0
  553. package/dist/types/TSTLClass.js +2 -0
  554. package/dist/types/Tuple.js +2 -0
  555. package/dist/types/TupleKeys.js +2 -0
  556. package/dist/types/TupleToIntersection.js +2 -0
  557. package/dist/types/TupleToUnion.js +2 -0
  558. package/dist/types/TupleWithLengthBetween.js +22 -0
  559. package/dist/types/TupleWithMaxLength.js +27 -0
  560. package/dist/types/UnionToIntersection.js +2 -0
  561. package/dist/types/UppercaseKeys.js +2 -0
  562. package/dist/types/WeightedArray.js +2 -0
  563. package/dist/types/WidenLiteral.js +2 -0
  564. package/dist/types/Writable.js +2 -0
  565. package/dist/types/private/CallbackTuple.js +2 -0
  566. package/dist/types/private/ModUpgradedWithFeatures.js +2 -0
  567. package/package.json +1 -1
  568. package/src/functions/utils.ts +6 -2
@@ -0,0 +1,361 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runDeepCopyTests = void 0;
4
+ const DefaultMap_1 = require("../classes/DefaultMap");
5
+ const SerializationBrand_1 = require("../enums/private/SerializationBrand");
6
+ const SerializationType_1 = require("../enums/SerializationType");
7
+ const array_1 = require("./array");
8
+ const deepCopy_1 = require("./deepCopy");
9
+ const log_1 = require("./log");
10
+ const tstlClass_1 = require("./tstlClass");
11
+ const types_1 = require("./types");
12
+ /**
13
+ * Run the suite of tests that prove that the "deepCopy" helper function works properly.
14
+ *
15
+ * This function is only useful if you are troubleshooting the "deepCopy" function.
16
+ */
17
+ function runDeepCopyTests() {
18
+ copiedObjectIsTable();
19
+ copiedObjectHasKeyAndValueString();
20
+ copiedTableHasKeyAndValueNumber();
21
+ copiedTableDoesNotCoerceTypes();
22
+ copiedObjectHasNoReferencesForPrimitivesForward();
23
+ copiedObjectHasNoReferencesForPrimitivesBackward();
24
+ copiedObjectHasNoReferencesForArray();
25
+ copiedObjectHasChildObject();
26
+ copiedMapIsMap();
27
+ copiedMapHasValue();
28
+ copiedSetIsSet();
29
+ copiedSetHasValue();
30
+ copiedMapHasChildMap();
31
+ copiedDefaultMapHasChildDefaultMap();
32
+ copiedDefaultMapHasBrand();
33
+ copiedSerializedMapHasStringKey();
34
+ copiedSerializedMapHasNumberKey();
35
+ copiedSerializedDefaultMapHasStringKey();
36
+ copiedSerializedDefaultMapHasNumberKey();
37
+ const successText = "All deep copy tests passed!";
38
+ (0, log_1.log)(successText);
39
+ print(successText);
40
+ }
41
+ exports.runDeepCopyTests = runDeepCopyTests;
42
+ function copiedObjectIsTable() {
43
+ const oldObject = {
44
+ abc: "def",
45
+ };
46
+ const newObject = (0, deepCopy_1.deepCopy)(oldObject, SerializationType_1.SerializationType.NONE, "copiedObjectIsTable");
47
+ if (!(0, types_1.isTable)(newObject)) {
48
+ error(`The copied object had a type of: ${typeof newObject}`);
49
+ }
50
+ }
51
+ function copiedObjectHasKeyAndValueString() {
52
+ const keyToLookFor = "abc";
53
+ const valueToLookFor = "def";
54
+ const oldObject = {
55
+ abc: valueToLookFor,
56
+ };
57
+ const newObject = (0, deepCopy_1.deepCopy)(oldObject, SerializationType_1.SerializationType.NONE, "copiedObjectHasKeyAndValueString");
58
+ const value = newObject[keyToLookFor];
59
+ if (value === undefined) {
60
+ error(`The copied object did not have a key of: ${keyToLookFor}`);
61
+ }
62
+ if (!(0, types_1.isString)(value)) {
63
+ error(`The copied object had a value type of: ${typeof value}`);
64
+ }
65
+ if (value !== valueToLookFor) {
66
+ error(`The copied object had a value of: ${value}`);
67
+ }
68
+ }
69
+ function copiedTableHasKeyAndValueNumber() {
70
+ const keyToLookFor = 123;
71
+ const valueToLookFor = 456;
72
+ const oldTable = new LuaMap();
73
+ oldTable.set(keyToLookFor, valueToLookFor);
74
+ const newTable = (0, deepCopy_1.deepCopy)(oldTable, SerializationType_1.SerializationType.NONE, "copiedTableHasKeyAndValueNumber");
75
+ const value = newTable.get(keyToLookFor);
76
+ if (value === undefined) {
77
+ error(`The copied object did not have a key of: ${keyToLookFor}`);
78
+ }
79
+ if (!(0, types_1.isNumber)(value)) {
80
+ error(`The copied object had a value type of: ${typeof value}`);
81
+ }
82
+ if (value !== valueToLookFor) {
83
+ error(`The copied object had a value of: ${value}`);
84
+ }
85
+ }
86
+ function copiedTableDoesNotCoerceTypes() {
87
+ const keyToLookFor = 123;
88
+ const valueToLookFor = 456;
89
+ const oldTable = new LuaMap();
90
+ oldTable.set(keyToLookFor, valueToLookFor);
91
+ const newTable = (0, deepCopy_1.deepCopy)(oldTable, SerializationType_1.SerializationType.NONE, "copiedTableDoesNotCoerceTypes");
92
+ const keyString = tostring(keyToLookFor);
93
+ const valueString = tostring(valueToLookFor);
94
+ const valueFromString = newTable.get(keyString);
95
+ if (valueFromString !== undefined) {
96
+ error(`The copied object had a string key of: ${keyString}`);
97
+ }
98
+ const value = newTable.get(keyToLookFor);
99
+ if (value === valueString) {
100
+ error(`The copied object had a value that incorrectly matched the string of: ${valueString}`);
101
+ }
102
+ }
103
+ /** In this context, a reference is a pointer. */
104
+ function copiedObjectHasNoReferencesForPrimitivesForward() {
105
+ const originalStringValue = "abcdef";
106
+ const originalNumberValue = 123;
107
+ const oldObject = {
108
+ abc: originalStringValue,
109
+ def: originalNumberValue,
110
+ };
111
+ const newObject = (0, deepCopy_1.deepCopy)(oldObject, SerializationType_1.SerializationType.NONE, "copiedObjectHasNoReferencesForPrimitivesForward");
112
+ oldObject.abc = "newValue";
113
+ if (oldObject.abc === newObject.abc) {
114
+ error("The copied object has a string reference going forward.");
115
+ }
116
+ oldObject.def = 456;
117
+ if (oldObject.def === newObject.def) {
118
+ error("The copied object has a number reference going forward.");
119
+ }
120
+ }
121
+ function copiedObjectHasNoReferencesForPrimitivesBackward() {
122
+ const originalStringValue = "abcdef";
123
+ const originalNumberValue = 123;
124
+ const oldObject = {
125
+ abc: originalStringValue,
126
+ def: originalNumberValue,
127
+ };
128
+ const newObject = (0, deepCopy_1.deepCopy)(oldObject, SerializationType_1.SerializationType.NONE, "copiedObjectHasNoReferencesForPrimitivesBackward");
129
+ newObject.abc = "newValue";
130
+ if (newObject.abc === oldObject.abc) {
131
+ error("The copied object has a string reference going backward.");
132
+ }
133
+ newObject.def = 456;
134
+ if (newObject.def === oldObject.def) {
135
+ error("The copied object has a number reference going backward.");
136
+ }
137
+ }
138
+ /** In this context, a reference is a pointer. */
139
+ function copiedObjectHasNoReferencesForArray() {
140
+ const oldObject = {
141
+ abc: [1, 2, 3],
142
+ };
143
+ const newObject = (0, deepCopy_1.deepCopy)(oldObject, SerializationType_1.SerializationType.NONE, "copiedObjectHasNoReferencesForArray");
144
+ if (oldObject.abc === newObject.abc) {
145
+ error("The copied object has the same point to the child array.");
146
+ }
147
+ if (!(0, array_1.arrayEquals)(oldObject.abc, newObject.abc)) {
148
+ error("The copied object does not have an equal array.");
149
+ }
150
+ oldObject.abc[0]++;
151
+ if ((0, array_1.arrayEquals)(oldObject.abc, newObject.abc)) {
152
+ error("The copied object has an equal array after a modification to the old array.");
153
+ }
154
+ oldObject.abc[0]--;
155
+ newObject.abc[0]++;
156
+ if ((0, array_1.arrayEquals)(oldObject.abc, newObject.abc)) {
157
+ error("The copied object has an equal array after a modification to the new array.");
158
+ }
159
+ newObject.abc[0]--;
160
+ }
161
+ function copiedObjectHasChildObject() {
162
+ const childObjectIndex = "abc";
163
+ const keyToLookFor = "def";
164
+ const valueToLookFor = "ghi";
165
+ const oldObject = {
166
+ abc: {
167
+ def: valueToLookFor,
168
+ },
169
+ };
170
+ const newObject = (0, deepCopy_1.deepCopy)(oldObject, SerializationType_1.SerializationType.NONE, "copiedObjectHasChildObject");
171
+ const childObject = newObject[childObjectIndex];
172
+ if (childObject === undefined) {
173
+ error(`Failed to find the child object at index: ${childObjectIndex}`);
174
+ }
175
+ if (!(0, types_1.isTable)(childObject)) {
176
+ error(`The copied child object had a type of: ${typeof childObject}`);
177
+ }
178
+ const value = childObject[keyToLookFor];
179
+ if (value === undefined) {
180
+ error(`The child object did not have a key of: ${keyToLookFor}`);
181
+ }
182
+ if (!(0, types_1.isString)(value)) {
183
+ error(`The child object value had a type of: ${typeof value}`);
184
+ }
185
+ if (value !== valueToLookFor) {
186
+ error(`The child object value was: ${valueToLookFor}`);
187
+ }
188
+ }
189
+ function copiedMapIsMap() {
190
+ const keyToLookFor = "abc";
191
+ const valueToLookFor = "def";
192
+ const oldMap = new Map();
193
+ oldMap.set(keyToLookFor, valueToLookFor);
194
+ const newMap = (0, deepCopy_1.deepCopy)(oldMap, SerializationType_1.SerializationType.NONE, "copiedMapIsMap");
195
+ if (!(0, tstlClass_1.isTSTLMap)(newMap)) {
196
+ error(`The copied Map was not a Map and has a type of: ${typeof newMap}`);
197
+ }
198
+ }
199
+ function copiedMapHasValue() {
200
+ const keyToLookFor = "abc";
201
+ const valueToLookFor = "def";
202
+ const oldMap = new Map();
203
+ oldMap.set(keyToLookFor, valueToLookFor);
204
+ const newMap = (0, deepCopy_1.deepCopy)(oldMap, SerializationType_1.SerializationType.NONE, "copiedMapHasValue");
205
+ if (!(0, tstlClass_1.isTSTLMap)(newMap)) {
206
+ error(`The copied Map was not a Map and has a type of: ${typeof newMap}`);
207
+ }
208
+ const value = newMap.get(keyToLookFor);
209
+ if (value === undefined) {
210
+ error(`The copied Map did not have a key of: ${keyToLookFor}`);
211
+ }
212
+ if (value !== valueToLookFor) {
213
+ error(`The copied Map did not have a value of: ${valueToLookFor}`);
214
+ }
215
+ }
216
+ function copiedSetIsSet() {
217
+ const valueToLookFor = "abc";
218
+ const oldSet = new Set();
219
+ oldSet.add(valueToLookFor);
220
+ const newSet = (0, deepCopy_1.deepCopy)(oldSet, SerializationType_1.SerializationType.NONE, "copiedSetIsSet");
221
+ if (!(0, tstlClass_1.isTSTLSet)(newSet)) {
222
+ error(`The copied Set was not a Set and has a type of: ${typeof newSet}`);
223
+ }
224
+ }
225
+ function copiedSetHasValue() {
226
+ const valueToLookFor = "abc";
227
+ const oldSet = new Set();
228
+ oldSet.add(valueToLookFor);
229
+ const newSet = (0, deepCopy_1.deepCopy)(oldSet, SerializationType_1.SerializationType.NONE, "copiedSetHasValue");
230
+ if (!(0, tstlClass_1.isTSTLSet)(newSet)) {
231
+ error(`The copied Set was not a Set and has a type of: ${typeof newSet}`);
232
+ }
233
+ const hasValue = newSet.has(valueToLookFor);
234
+ if (!hasValue) {
235
+ error(`The copied Set did not have a value of: ${valueToLookFor}`);
236
+ }
237
+ }
238
+ function copiedMapHasChildMap() {
239
+ const childMapKey = 123;
240
+ const childMapValue = 456;
241
+ const oldChildMap = new Map();
242
+ oldChildMap.set(childMapKey, childMapValue);
243
+ const keyToLookFor = "childMap";
244
+ const oldMap = new Map();
245
+ oldMap.set(keyToLookFor, oldChildMap);
246
+ const newMap = (0, deepCopy_1.deepCopy)(oldMap, SerializationType_1.SerializationType.NONE, "copiedMapHasChildMap");
247
+ if (!(0, tstlClass_1.isTSTLMap)(newMap)) {
248
+ error(`The copied Map was not a Map and had a type of: ${typeof newMap}`);
249
+ }
250
+ const newChildMap = newMap.get(keyToLookFor);
251
+ if (newChildMap === undefined) {
252
+ error(`The copied Map did not have a child map at key: ${keyToLookFor}`);
253
+ }
254
+ if (!(0, tstlClass_1.isTSTLMap)(newChildMap)) {
255
+ error(`The copied child Map was not a Map and had a type of: ${typeof newChildMap}`);
256
+ }
257
+ const value = newChildMap.get(childMapKey);
258
+ if (value === undefined) {
259
+ error(`The copied child Map did not have a key of: ${childMapKey}`);
260
+ }
261
+ if (value !== childMapValue) {
262
+ error(`The copied child Map did not have a value of: ${childMapValue}`);
263
+ }
264
+ }
265
+ function copiedDefaultMapHasChildDefaultMap() {
266
+ const parentMapKey = "abc";
267
+ const childMapKey1 = 123;
268
+ const childMapKey2 = 456;
269
+ const childMapDefaultValue = 1;
270
+ const childMapCustomValue = 2;
271
+ const oldParentMap = new DefaultMap_1.DefaultMap(() => new DefaultMap_1.DefaultMap(childMapDefaultValue));
272
+ const oldChildMap = oldParentMap.getAndSetDefault(parentMapKey);
273
+ oldChildMap.getAndSetDefault(childMapKey1);
274
+ oldChildMap.set(childMapKey2, childMapCustomValue);
275
+ const newParentMap = (0, deepCopy_1.deepCopy)(oldParentMap, SerializationType_1.SerializationType.NONE, "copiedDefaultMapHasChildDefaultMap");
276
+ if (!(0, tstlClass_1.isDefaultMap)(newParentMap)) {
277
+ error(`The copied parent DefaultMap was not a DefaultMap and had a type of: ${typeof newParentMap}`);
278
+ }
279
+ const newChildMap = newParentMap.get(parentMapKey);
280
+ if (newChildMap === undefined) {
281
+ error(`The copied DefaultMap did not have a child map at key: ${parentMapKey}`);
282
+ }
283
+ if (!(0, tstlClass_1.isDefaultMap)(newChildMap)) {
284
+ error(`The copied child DefaultMap was not a DefaultMap and had a type of: ${typeof newChildMap}`);
285
+ }
286
+ const newChildMapValue1 = newChildMap.get(childMapKey1);
287
+ if (newChildMapValue1 === undefined) {
288
+ error(`The copied child DefaultMap did not have a key of: ${childMapKey1}`);
289
+ }
290
+ if (newChildMapValue1 !== childMapDefaultValue) {
291
+ error(`The copied child Map did not have a default value of: ${childMapDefaultValue}`);
292
+ }
293
+ const newChildMapValue2 = newChildMap.get(childMapKey2);
294
+ if (newChildMapValue2 === undefined) {
295
+ error(`The copied child DefaultMap did not have a key of: ${childMapKey2}`);
296
+ }
297
+ if (newChildMapValue2 !== childMapCustomValue) {
298
+ error(`The copied child Map did not have a custom value of: ${childMapCustomValue}`);
299
+ }
300
+ }
301
+ function copiedDefaultMapHasBrand() {
302
+ const oldDefaultValue = "foo";
303
+ const oldDefaultMap = new DefaultMap_1.DefaultMap(oldDefaultValue);
304
+ const newTable = (0, deepCopy_1.deepCopy)(oldDefaultMap, SerializationType_1.SerializationType.SERIALIZE, "copiedDefaultMapHasBrand");
305
+ if (!(0, types_1.isTable)(newTable)) {
306
+ error(`The copied DefaultMap was not a table and had a type of: ${typeof newTable}`);
307
+ }
308
+ if (!newTable.has(SerializationBrand_1.SerializationBrand.DEFAULT_MAP)) {
309
+ error(`The copied DefaultMap does not have the brand: ${SerializationBrand_1.SerializationBrand.DEFAULT_MAP}`);
310
+ }
311
+ }
312
+ function copiedSerializedMapHasStringKey() {
313
+ const mapKey = "123";
314
+ const mapValue = 456;
315
+ const oldMap = new Map();
316
+ oldMap.set(mapKey, mapValue);
317
+ const serializedOldMap = (0, deepCopy_1.deepCopy)(oldMap, SerializationType_1.SerializationType.SERIALIZE, "copiedSerializedMapHasStringKey-serialize");
318
+ const newTable = (0, deepCopy_1.deepCopy)(serializedOldMap, SerializationType_1.SerializationType.DESERIALIZE, "copiedSerializedMapHasStringKey-deserialize");
319
+ const newMap = newTable;
320
+ if (!newMap.has(mapKey)) {
321
+ const keyType = type(mapKey);
322
+ error(`The copied Map did not have a key of: ${mapKey} with type ${keyType}`);
323
+ }
324
+ }
325
+ function copiedSerializedMapHasNumberKey() {
326
+ const mapKey = 123;
327
+ const mapValue = 456;
328
+ const oldMap = new Map();
329
+ oldMap.set(mapKey, mapValue);
330
+ const serializedOldMap = (0, deepCopy_1.deepCopy)(oldMap, SerializationType_1.SerializationType.SERIALIZE, "copiedSerializedMapHasNumberKey-serialize");
331
+ const newTable = (0, deepCopy_1.deepCopy)(serializedOldMap, SerializationType_1.SerializationType.DESERIALIZE, "copiedSerializedMapHasNumberKey-deserialize");
332
+ const newMap = newTable;
333
+ if (!newMap.has(mapKey)) {
334
+ const keyType = type(mapKey);
335
+ error(`The copied Map did not have a key of: ${mapKey} with type ${keyType}`);
336
+ }
337
+ }
338
+ function copiedSerializedDefaultMapHasStringKey() {
339
+ const mapKey = "123";
340
+ const oldDefaultMap = new DefaultMap_1.DefaultMap(456);
341
+ oldDefaultMap.getAndSetDefault(mapKey);
342
+ const serializedOldDefaultMap = (0, deepCopy_1.deepCopy)(oldDefaultMap, SerializationType_1.SerializationType.SERIALIZE, "copiedSerializedDefaultMapHasStringKey-serialize");
343
+ const newTable = (0, deepCopy_1.deepCopy)(serializedOldDefaultMap, SerializationType_1.SerializationType.DESERIALIZE, "copiedSerializedDefaultMapHasStringKey-deserialize");
344
+ const newDefaultMap = newTable;
345
+ if (!newDefaultMap.has(mapKey)) {
346
+ const keyType = type(mapKey);
347
+ error(`The copied DefaultMap did not have a key of "${mapKey}" with type: ${keyType}`);
348
+ }
349
+ }
350
+ function copiedSerializedDefaultMapHasNumberKey() {
351
+ const mapKey = 123;
352
+ const oldDefaultMap = new DefaultMap_1.DefaultMap(456);
353
+ oldDefaultMap.getAndSetDefault(mapKey);
354
+ const serializedOldDefaultMap = (0, deepCopy_1.deepCopy)(oldDefaultMap, SerializationType_1.SerializationType.SERIALIZE, "copiedSerializedDefaultMapHasNumberKey-serialize");
355
+ const newTable = (0, deepCopy_1.deepCopy)(serializedOldDefaultMap, SerializationType_1.SerializationType.DESERIALIZE, "copiedSerializedDefaultMapHasNumberKey-deserialize");
356
+ const newDefaultMap = newTable;
357
+ if (!newDefaultMap.has(mapKey)) {
358
+ const keyType = type(mapKey);
359
+ error(`The copied DefaultMap did not have a key of: ${mapKey} with type ${keyType}`);
360
+ }
361
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.inDimension = exports.getDimension = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const cachedClasses_1 = require("../core/cachedClasses");
6
+ const constants_1 = require("../core/constants");
7
+ const roomData_1 = require("./roomData");
8
+ /**
9
+ * Helper function to get the current dimension. Most of the time, this will be `Dimension.MAIN`,
10
+ * but it can change if e.g. the player is in the mirror world of Downpour/Dross.
11
+ */
12
+ function getDimension() {
13
+ const level = cachedClasses_1.game.GetLevel();
14
+ const roomGridIndex = (0, roomData_1.getRoomGridIndex)();
15
+ const roomDescription = level.GetRoomByIdx(roomGridIndex, isaac_typescript_definitions_1.Dimension.CURRENT);
16
+ const currentRoomHash = GetPtrHash(roomDescription);
17
+ for (const dimension of constants_1.DIMENSIONS) {
18
+ const dimensionRoomDescription = level.GetRoomByIdx(roomGridIndex, dimension);
19
+ const dimensionRoomHash = GetPtrHash(dimensionRoomDescription);
20
+ if (dimensionRoomHash === currentRoomHash) {
21
+ return dimension;
22
+ }
23
+ }
24
+ error("Failed to get the current dimension.");
25
+ }
26
+ exports.getDimension = getDimension;
27
+ function inDimension(dimension) {
28
+ return dimension === getDimension();
29
+ }
30
+ exports.inDimension = inDimension;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDirectionName = exports.directionToVector = exports.directionToShootAction = exports.directionToMoveAction = exports.directionToDegrees = exports.angleToDirection = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const directionNames_1 = require("../objects/directionNames");
6
+ const directionToDegrees_1 = require("../objects/directionToDegrees");
7
+ const directionToMoveAction_1 = require("../objects/directionToMoveAction");
8
+ const directionToShootAction_1 = require("../objects/directionToShootAction");
9
+ const directionToVector_1 = require("../objects/directionToVector");
10
+ /**
11
+ * Helper function to convert the degrees of an angle to the `Direction` enum.
12
+ *
13
+ * Note that this function considers 0 degrees to be pointing to the right, which is unusual because
14
+ * 0 normally corresponds to up. (This corresponds to how the `Vector.GetAngleDegrees` method
15
+ * works.)
16
+ */
17
+ function angleToDirection(angleDegrees) {
18
+ let positiveDegrees = angleDegrees;
19
+ while (positiveDegrees < 0) {
20
+ positiveDegrees += 360;
21
+ }
22
+ const normalizedDegrees = positiveDegrees % 360;
23
+ if (normalizedDegrees < 45) {
24
+ return isaac_typescript_definitions_1.Direction.RIGHT;
25
+ }
26
+ if (normalizedDegrees < 135) {
27
+ return isaac_typescript_definitions_1.Direction.DOWN;
28
+ }
29
+ if (normalizedDegrees < 225) {
30
+ return isaac_typescript_definitions_1.Direction.LEFT;
31
+ }
32
+ if (normalizedDegrees < 315) {
33
+ return isaac_typescript_definitions_1.Direction.UP;
34
+ }
35
+ return isaac_typescript_definitions_1.Direction.RIGHT;
36
+ }
37
+ exports.angleToDirection = angleToDirection;
38
+ /**
39
+ * Helper function to convert a direction to degrees. For example, `Direction.LEFT` (0) would return
40
+ * 180 and `Direction.RIGHT` (2) would return 0. (This corresponds to how the
41
+ * `Vector.GetAngleDegrees` method works.)
42
+ */
43
+ function directionToDegrees(direction) {
44
+ return directionToDegrees_1.DIRECTION_TO_DEGREES[direction];
45
+ }
46
+ exports.directionToDegrees = directionToDegrees;
47
+ /**
48
+ * Helper function to convert a direction to a shoot `ButtonAction`. For example, `Direction.LEFT`
49
+ * (0) would return `ButtonAction.LEFT` (0).
50
+ */
51
+ function directionToMoveAction(direction) {
52
+ return directionToMoveAction_1.DIRECTION_TO_MOVE_ACTION[direction];
53
+ }
54
+ exports.directionToMoveAction = directionToMoveAction;
55
+ /**
56
+ * Helper function to convert a direction to a shoot `ButtonAction`. For example, `Direction.LEFT`
57
+ * (0) would return `ButtonAction.SHOOT_LEFT` (4).
58
+ */
59
+ function directionToShootAction(direction) {
60
+ return directionToShootAction_1.DIRECTION_TO_SHOOT_ACTION[direction];
61
+ }
62
+ exports.directionToShootAction = directionToShootAction;
63
+ /**
64
+ * Helper function to convert a direction to a `Vector`. For example, `Direction.LEFT` (0) would
65
+ * convert to `Vector(-1, 0).
66
+ */
67
+ function directionToVector(direction) {
68
+ return directionToVector_1.DIRECTION_TO_VECTOR[direction];
69
+ }
70
+ exports.directionToVector = directionToVector;
71
+ /**
72
+ * Helper function to get the lowercase name of a direction. For example, `Direction.LEFT` (0) would
73
+ * return "left".
74
+ */
75
+ function getDirectionName(direction) {
76
+ return directionNames_1.DIRECTION_NAMES[direction];
77
+ }
78
+ exports.getDirectionName = getDirectionName;