isaacscript-common 84.0.1 → 84.1.1

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 (569) hide show
  1. package/dist/arrays/cachedEnumValues.js +33 -0
  2. package/dist/callbackClasses.js +289 -0
  3. package/dist/callbacks.js +181 -0
  4. package/dist/classes/DefaultMap.js +171 -0
  5. package/dist/classes/ModFeature.js +244 -0
  6. package/dist/classes/ModUpgraded.js +324 -0
  7. package/dist/classes/callbacks/EntityTakeDmgFilter.js +19 -0
  8. package/dist/classes/callbacks/EntityTakeDmgPlayer.js +29 -0
  9. package/dist/classes/callbacks/InputActionFilter.js +24 -0
  10. package/dist/classes/callbacks/InputActionPlayer.js +37 -0
  11. package/dist/classes/callbacks/PostAmbushFinished.js +40 -0
  12. package/dist/classes/callbacks/PostAmbushStarted.js +40 -0
  13. package/dist/classes/callbacks/PostBombExploded.js +24 -0
  14. package/dist/classes/callbacks/PostBombInitFilter.js +21 -0
  15. package/dist/classes/callbacks/PostBombInitLate.js +31 -0
  16. package/dist/classes/callbacks/PostBombRenderFilter.js +21 -0
  17. package/dist/classes/callbacks/PostBombUpdateFilter.js +21 -0
  18. package/dist/classes/callbacks/PostBoneSwing.js +53 -0
  19. package/dist/classes/callbacks/PostCollectibleEmpty.js +50 -0
  20. package/dist/classes/callbacks/PostCursedTeleport.js +119 -0
  21. package/dist/classes/callbacks/PostCustomRevive.js +17 -0
  22. package/dist/classes/callbacks/PostDiceRoomActivated.js +50 -0
  23. package/dist/classes/callbacks/PostDoorRender.js +24 -0
  24. package/dist/classes/callbacks/PostDoorUpdate.js +24 -0
  25. package/dist/classes/callbacks/PostEffectInitFilter.js +21 -0
  26. package/dist/classes/callbacks/PostEffectInitLate.js +31 -0
  27. package/dist/classes/callbacks/PostEffectRenderFilter.js +21 -0
  28. package/dist/classes/callbacks/PostEffectStateChanged.js +34 -0
  29. package/dist/classes/callbacks/PostEffectUpdateFilter.js +21 -0
  30. package/dist/classes/callbacks/PostEntityKillFilter.js +21 -0
  31. package/dist/classes/callbacks/PostEsauJr.js +12 -0
  32. package/dist/classes/callbacks/PostFamiliarInitFilter.js +21 -0
  33. package/dist/classes/callbacks/PostFamiliarInitLate.js +31 -0
  34. package/dist/classes/callbacks/PostFamiliarRenderFilter.js +21 -0
  35. package/dist/classes/callbacks/PostFamiliarStateChanged.js +34 -0
  36. package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +21 -0
  37. package/dist/classes/callbacks/PostFirstEsauJr.js +12 -0
  38. package/dist/classes/callbacks/PostFirstFlip.js +12 -0
  39. package/dist/classes/callbacks/PostFlip.js +12 -0
  40. package/dist/classes/callbacks/PostGameEndFilter.js +21 -0
  41. package/dist/classes/callbacks/PostGameStartedReordered.js +14 -0
  42. package/dist/classes/callbacks/PostGameStartedReorderedLast.js +14 -0
  43. package/dist/classes/callbacks/PostGreedModeWave.js +35 -0
  44. package/dist/classes/callbacks/PostGridEntityBroken.js +14 -0
  45. package/dist/classes/callbacks/PostGridEntityCollision.js +28 -0
  46. package/dist/classes/callbacks/PostGridEntityCustomBroken.js +14 -0
  47. package/dist/classes/callbacks/PostGridEntityCustomCollision.js +24 -0
  48. package/dist/classes/callbacks/PostGridEntityCustomInit.js +14 -0
  49. package/dist/classes/callbacks/PostGridEntityCustomRemove.js +18 -0
  50. package/dist/classes/callbacks/PostGridEntityCustomRender.js +14 -0
  51. package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +14 -0
  52. package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +14 -0
  53. package/dist/classes/callbacks/PostGridEntityInit.js +14 -0
  54. package/dist/classes/callbacks/PostGridEntityRemove.js +19 -0
  55. package/dist/classes/callbacks/PostGridEntityRender.js +14 -0
  56. package/dist/classes/callbacks/PostGridEntityStateChanged.js +14 -0
  57. package/dist/classes/callbacks/PostGridEntityUpdate.js +14 -0
  58. package/dist/classes/callbacks/PostHolyMantleRemoved.js +43 -0
  59. package/dist/classes/callbacks/PostItemDischarge.js +122 -0
  60. package/dist/classes/callbacks/PostItemPickup.js +14 -0
  61. package/dist/classes/callbacks/PostKeyboardChanged.js +46 -0
  62. package/dist/classes/callbacks/PostKnifeInitFilter.js +21 -0
  63. package/dist/classes/callbacks/PostKnifeInitLate.js +31 -0
  64. package/dist/classes/callbacks/PostKnifeRenderFilter.js +21 -0
  65. package/dist/classes/callbacks/PostKnifeUpdateFilter.js +21 -0
  66. package/dist/classes/callbacks/PostLaserInitFilter.js +21 -0
  67. package/dist/classes/callbacks/PostLaserInitLate.js +31 -0
  68. package/dist/classes/callbacks/PostLaserRenderFilter.js +21 -0
  69. package/dist/classes/callbacks/PostLaserUpdateFilter.js +21 -0
  70. package/dist/classes/callbacks/PostNPCDeathFilter.js +21 -0
  71. package/dist/classes/callbacks/PostNPCInitFilter.js +21 -0
  72. package/dist/classes/callbacks/PostNPCInitLate.js +31 -0
  73. package/dist/classes/callbacks/PostNPCRenderFilter.js +21 -0
  74. package/dist/classes/callbacks/PostNPCStateChanged.js +34 -0
  75. package/dist/classes/callbacks/PostNPCUpdateFilter.js +21 -0
  76. package/dist/classes/callbacks/PostNewLevelReordered.js +14 -0
  77. package/dist/classes/callbacks/PostNewRoomEarly.js +74 -0
  78. package/dist/classes/callbacks/PostNewRoomReordered.js +14 -0
  79. package/dist/classes/callbacks/PostPEffectUpdateReordered.js +14 -0
  80. package/dist/classes/callbacks/PostPickupChanged.js +14 -0
  81. package/dist/classes/callbacks/PostPickupCollect.js +38 -0
  82. package/dist/classes/callbacks/PostPickupInitFilter.js +21 -0
  83. package/dist/classes/callbacks/PostPickupInitFirst.js +33 -0
  84. package/dist/classes/callbacks/PostPickupInitLate.js +31 -0
  85. package/dist/classes/callbacks/PostPickupRenderFilter.js +21 -0
  86. package/dist/classes/callbacks/PostPickupSelectionFilter.js +29 -0
  87. package/dist/classes/callbacks/PostPickupStateChanged.js +34 -0
  88. package/dist/classes/callbacks/PostPickupUpdateFilter.js +21 -0
  89. package/dist/classes/callbacks/PostPitRender.js +24 -0
  90. package/dist/classes/callbacks/PostPitUpdate.js +24 -0
  91. package/dist/classes/callbacks/PostPlayerChangeHealth.js +47 -0
  92. package/dist/classes/callbacks/PostPlayerChangeStat.js +79 -0
  93. package/dist/classes/callbacks/PostPlayerChangeType.js +36 -0
  94. package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +14 -0
  95. package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +14 -0
  96. package/dist/classes/callbacks/PostPlayerFatalDamage.js +83 -0
  97. package/dist/classes/callbacks/PostPlayerInitFirst.js +41 -0
  98. package/dist/classes/callbacks/PostPlayerInitLate.js +33 -0
  99. package/dist/classes/callbacks/PostPlayerRenderReordered.js +14 -0
  100. package/dist/classes/callbacks/PostPlayerUpdateReordered.js +14 -0
  101. package/dist/classes/callbacks/PostPoopRender.js +24 -0
  102. package/dist/classes/callbacks/PostPoopUpdate.js +24 -0
  103. package/dist/classes/callbacks/PostPressurePlateRender.js +24 -0
  104. package/dist/classes/callbacks/PostPressurePlateUpdate.js +24 -0
  105. package/dist/classes/callbacks/PostProjectileInitFilter.js +21 -0
  106. package/dist/classes/callbacks/PostProjectileInitLate.js +31 -0
  107. package/dist/classes/callbacks/PostProjectileKill.js +52 -0
  108. package/dist/classes/callbacks/PostProjectileRenderFilter.js +21 -0
  109. package/dist/classes/callbacks/PostProjectileUpdateFilter.js +21 -0
  110. package/dist/classes/callbacks/PostPurchase.js +90 -0
  111. package/dist/classes/callbacks/PostRockRender.js +24 -0
  112. package/dist/classes/callbacks/PostRockUpdate.js +24 -0
  113. package/dist/classes/callbacks/PostRoomClearChanged.js +46 -0
  114. package/dist/classes/callbacks/PostSacrifice.js +36 -0
  115. package/dist/classes/callbacks/PostSlotAnimationChanged.js +14 -0
  116. package/dist/classes/callbacks/PostSlotCollision.js +25 -0
  117. package/dist/classes/callbacks/PostSlotDestroyed.js +14 -0
  118. package/dist/classes/callbacks/PostSlotInit.js +14 -0
  119. package/dist/classes/callbacks/PostSlotRender.js +14 -0
  120. package/dist/classes/callbacks/PostSlotUpdate.js +14 -0
  121. package/dist/classes/callbacks/PostSpikesRender.js +24 -0
  122. package/dist/classes/callbacks/PostSpikesUpdate.js +24 -0
  123. package/dist/classes/callbacks/PostTNTRender.js +24 -0
  124. package/dist/classes/callbacks/PostTNTUpdate.js +24 -0
  125. package/dist/classes/callbacks/PostTearInitFilter.js +21 -0
  126. package/dist/classes/callbacks/PostTearInitLate.js +31 -0
  127. package/dist/classes/callbacks/PostTearInitVeryLate.js +35 -0
  128. package/dist/classes/callbacks/PostTearKill.js +52 -0
  129. package/dist/classes/callbacks/PostTearRenderFilter.js +21 -0
  130. package/dist/classes/callbacks/PostTearUpdateFilter.js +21 -0
  131. package/dist/classes/callbacks/PostTransformation.js +47 -0
  132. package/dist/classes/callbacks/PostTrinketBreak.js +70 -0
  133. package/dist/classes/callbacks/PostUsePillFilter.js +76 -0
  134. package/dist/classes/callbacks/PreBerserkDeath.js +41 -0
  135. package/dist/classes/callbacks/PreBombCollisionFilter.js +19 -0
  136. package/dist/classes/callbacks/PreCustomRevive.js +14 -0
  137. package/dist/classes/callbacks/PreEntitySpawnFilter.js +24 -0
  138. package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +19 -0
  139. package/dist/classes/callbacks/PreGetPedestal.js +46 -0
  140. package/dist/classes/callbacks/PreItemPickup.js +14 -0
  141. package/dist/classes/callbacks/PreKnifeCollisionFilter.js +19 -0
  142. package/dist/classes/callbacks/PreNPCCollisionFilter.js +19 -0
  143. package/dist/classes/callbacks/PreNPCUpdateFilter.js +19 -0
  144. package/dist/classes/callbacks/PreNewLevel.js +51 -0
  145. package/dist/classes/callbacks/PreProjectileCollisionFilter.js +19 -0
  146. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +26 -0
  147. package/dist/classes/callbacks/PreTearCollisionFilter.js +19 -0
  148. package/dist/classes/features/callbackLogic/CustomGridEntities.js +359 -0
  149. package/dist/classes/features/callbackLogic/CustomRevive.js +170 -0
  150. package/dist/classes/features/callbackLogic/EsauJrDetection.js +70 -0
  151. package/dist/classes/features/callbackLogic/FlipDetection.js +61 -0
  152. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +220 -0
  153. package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +62 -0
  154. package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +35 -0
  155. package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +147 -0
  156. package/dist/classes/features/callbackLogic/ItemPickupDetection.js +68 -0
  157. package/dist/classes/features/callbackLogic/PickupChangeDetection.js +43 -0
  158. package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +193 -0
  159. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +109 -0
  160. package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +95 -0
  161. package/dist/classes/features/callbackLogic/SlotRenderDetection.js +48 -0
  162. package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +52 -0
  163. package/dist/classes/features/other/CharacterHealthConversion.js +112 -0
  164. package/dist/classes/features/other/CharacterStats.js +68 -0
  165. package/dist/classes/features/other/CollectibleItemPoolType.js +75 -0
  166. package/dist/classes/features/other/CustomHotkeys.js +144 -0
  167. package/dist/classes/features/other/CustomItemPools.js +128 -0
  168. package/dist/classes/features/other/CustomPickups.js +118 -0
  169. package/dist/classes/features/other/CustomStages.js +471 -0
  170. package/dist/classes/features/other/CustomTrapdoors.js +596 -0
  171. package/dist/classes/features/other/DebugDisplay.js +699 -0
  172. package/dist/classes/features/other/DeployJSONRoom.js +301 -0
  173. package/dist/classes/features/other/DisableAllSound.js +90 -0
  174. package/dist/classes/features/other/DisableInputs.js +249 -0
  175. package/dist/classes/features/other/EdenStartingStatsHealth.js +197 -0
  176. package/dist/classes/features/other/ExtraConsoleCommands.js +292 -0
  177. package/dist/classes/features/other/FadeInRemover.js +67 -0
  178. package/dist/classes/features/other/FastReset.js +88 -0
  179. package/dist/classes/features/other/FlyingDetection.js +64 -0
  180. package/dist/classes/features/other/ForgottenSwitch.js +43 -0
  181. package/dist/classes/features/other/ItemPoolDetection.js +187 -0
  182. package/dist/classes/features/other/ModdedElementDetection.js +399 -0
  183. package/dist/classes/features/other/ModdedElementSets.js +1251 -0
  184. package/dist/classes/features/other/NoSirenSteal.js +88 -0
  185. package/dist/classes/features/other/Pause.js +197 -0
  186. package/dist/classes/features/other/PersistentEntities.js +168 -0
  187. package/dist/classes/features/other/PickupIndexCreation.js +229 -0
  188. package/dist/classes/features/other/PlayerCollectibleTracking.js +102 -0
  189. package/dist/classes/features/other/PonyDetection.js +86 -0
  190. package/dist/classes/features/other/PressInput.js +71 -0
  191. package/dist/classes/features/other/PreventChildEntities.js +60 -0
  192. package/dist/classes/features/other/PreventGridEntityRespawn.js +159 -0
  193. package/dist/classes/features/other/RerunDetection.js +69 -0
  194. package/dist/classes/features/other/RoomClearFrame.js +94 -0
  195. package/dist/classes/features/other/RoomHistory.js +196 -0
  196. package/dist/classes/features/other/RunInNFrames.js +323 -0
  197. package/dist/classes/features/other/RunNextRoom.js +53 -0
  198. package/dist/classes/features/other/RunNextRun.js +60 -0
  199. package/dist/classes/features/other/SaveDataManager.js +383 -0
  200. package/dist/classes/features/other/SpawnRockAltRewards.js +469 -0
  201. package/dist/classes/features/other/StageHistory.js +244 -0
  202. package/dist/classes/features/other/StartAmbush.js +62 -0
  203. package/dist/classes/features/other/TaintedLazarusPlayers.js +115 -0
  204. package/dist/classes/features/other/UnlockAchievementsDetection.js +60 -0
  205. package/dist/classes/features/other/customStages/backdrop.js +195 -0
  206. package/dist/classes/features/other/customStages/constants.js +19 -0
  207. package/dist/classes/features/other/customStages/gridEntities.js +177 -0
  208. package/dist/classes/features/other/customStages/shadows.js +67 -0
  209. package/dist/classes/features/other/customStages/streakText.js +222 -0
  210. package/dist/classes/features/other/customStages/utils.js +65 -0
  211. package/dist/classes/features/other/customStages/v.js +27 -0
  212. package/dist/classes/features/other/customStages/versusScreen.js +227 -0
  213. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +23 -0
  214. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +22 -0
  215. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +23 -0
  216. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +23 -0
  217. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +23 -0
  218. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +23 -0
  219. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +23 -0
  220. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +23 -0
  221. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +22 -0
  222. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +25 -0
  223. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +22 -0
  224. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +25 -0
  225. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +23 -0
  226. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +22 -0
  227. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +22 -0
  228. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +22 -0
  229. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +22 -0
  230. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +23 -0
  231. package/dist/classes/features/other/debugDisplay/utils.js +13 -0
  232. package/dist/classes/features/other/extraConsoleCommands/commands.js +1598 -0
  233. package/dist/classes/features/other/extraConsoleCommands/subroutines.js +135 -0
  234. package/dist/classes/features/other/extraConsoleCommands/v.js +30 -0
  235. package/dist/classes/features/other/saveDataManager/constants.js +4 -0
  236. package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +106 -0
  237. package/dist/classes/features/other/saveDataManager/loadFromDisk.js +69 -0
  238. package/dist/classes/features/other/saveDataManager/restoreDefaults.js +69 -0
  239. package/dist/classes/features/other/saveDataManager/saveToDisk.js +46 -0
  240. package/dist/classes/private/CustomCallback.js +59 -0
  241. package/dist/classes/private/Feature.js +39 -0
  242. package/dist/core/cachedClasses.js +61 -0
  243. package/dist/core/constants.js +289 -0
  244. package/dist/core/constantsFirstLast.js +98 -0
  245. package/dist/core/constantsVanilla.js +131 -0
  246. package/dist/core/upgradeMod.js +71 -0
  247. package/dist/customStageMetadata.json +1 -0
  248. package/dist/data/itempools.json +16625 -0
  249. package/dist/decorators.js +21 -0
  250. package/dist/enums/AmbushType.js +9 -0
  251. package/dist/enums/CornerType.js +11 -0
  252. package/dist/enums/HealthType.js +20 -0
  253. package/dist/enums/ISCFeature.js +65 -0
  254. package/dist/enums/LadderSubTypeCustom.js +20 -0
  255. package/dist/enums/ModCallbackCustom.js +2477 -0
  256. package/dist/enums/MysteriousPaperEffect.js +16 -0
  257. package/dist/enums/PlayerStat.js +37 -0
  258. package/dist/enums/PocketItemType.js +13 -0
  259. package/dist/enums/RockAltType.js +23 -0
  260. package/dist/enums/SaveDataKey.js +14 -0
  261. package/dist/enums/SerializationType.js +10 -0
  262. package/dist/enums/SlotDestructionType.js +22 -0
  263. package/dist/enums/private/GridEntityTypeCustom.js +10 -0
  264. package/dist/enums/private/SerializationBrand.js +42 -0
  265. package/dist/enums/private/StageTravelState.js +13 -0
  266. package/dist/enums/private/TrapdoorAnimation.js +9 -0
  267. package/dist/enums/private/UIStreakAnimation.js +10 -0
  268. package/dist/features.js +150 -0
  269. package/dist/functions/ambush.js +26 -0
  270. package/dist/functions/array.js +586 -0
  271. package/dist/functions/arrayLua.js +81 -0
  272. package/dist/functions/benchmark.js +36 -0
  273. package/dist/functions/bitSet128.js +64 -0
  274. package/dist/functions/bitwise.js +82 -0
  275. package/dist/functions/bombs.js +14 -0
  276. package/dist/functions/bosses.js +238 -0
  277. package/dist/functions/cards.js +164 -0
  278. package/dist/functions/challenges.js +117 -0
  279. package/dist/functions/characters.js +182 -0
  280. package/dist/functions/charge.js +251 -0
  281. package/dist/functions/chargeBar.js +54 -0
  282. package/dist/functions/collectibleTag.js +24 -0
  283. package/dist/functions/collectibles.js +581 -0
  284. package/dist/functions/color.js +88 -0
  285. package/dist/functions/console.js +18 -0
  286. package/dist/functions/curses.js +37 -0
  287. package/dist/functions/debugFunctions.js +108 -0
  288. package/dist/functions/decorators.js +113 -0
  289. package/dist/functions/deepCopy.js +406 -0
  290. package/dist/functions/deepCopyTests.js +361 -0
  291. package/dist/functions/dimensions.js +30 -0
  292. package/dist/functions/direction.js +78 -0
  293. package/dist/functions/doors.js +524 -0
  294. package/dist/functions/easing.js +327 -0
  295. package/dist/functions/effects.js +14 -0
  296. package/dist/functions/emptyRoom.js +79 -0
  297. package/dist/functions/entities.js +529 -0
  298. package/dist/functions/entitiesSpecific.js +582 -0
  299. package/dist/functions/entityTypes.js +9 -0
  300. package/dist/functions/enums.js +244 -0
  301. package/dist/functions/external.js +59 -0
  302. package/dist/functions/familiars.js +136 -0
  303. package/dist/functions/flag.js +146 -0
  304. package/dist/functions/frames.js +166 -0
  305. package/dist/functions/globals.js +291 -0
  306. package/dist/functions/gridEntities.js +990 -0
  307. package/dist/functions/gridEntitiesSpecific.js +456 -0
  308. package/dist/functions/gridIndex.js +35 -0
  309. package/dist/functions/hash.js +75 -0
  310. package/dist/functions/hex.js +57 -0
  311. package/dist/functions/input.js +185 -0
  312. package/dist/functions/isaacAPIClass.js +157 -0
  313. package/dist/functions/itemPool.js +118 -0
  314. package/dist/functions/jsonHelpers.js +73 -0
  315. package/dist/functions/jsonRoom.js +184 -0
  316. package/dist/functions/kColor.js +89 -0
  317. package/dist/functions/language.js +16 -0
  318. package/dist/functions/level.js +66 -0
  319. package/dist/functions/levelGrid.js +497 -0
  320. package/dist/functions/log.js +86 -0
  321. package/dist/functions/logEntities.js +308 -0
  322. package/dist/functions/logMisc.js +510 -0
  323. package/dist/functions/map.js +121 -0
  324. package/dist/functions/math.js +149 -0
  325. package/dist/functions/merge.js +159 -0
  326. package/dist/functions/mergeTests.js +313 -0
  327. package/dist/functions/minimap.js +204 -0
  328. package/dist/functions/modFeatures.js +39 -0
  329. package/dist/functions/newArray.js +30 -0
  330. package/dist/functions/nextStage.js +169 -0
  331. package/dist/functions/npcDataStructures.js +146 -0
  332. package/dist/functions/npcs.js +132 -0
  333. package/dist/functions/pickupVariants.js +63 -0
  334. package/dist/functions/pickups.js +168 -0
  335. package/dist/functions/pickupsSpecific.js +376 -0
  336. package/dist/functions/pills.js +200 -0
  337. package/dist/functions/playerCenter.js +53 -0
  338. package/dist/functions/playerCollectibles.js +300 -0
  339. package/dist/functions/playerDataStructures.js +145 -0
  340. package/dist/functions/playerEffects.js +63 -0
  341. package/dist/functions/playerHealth.js +604 -0
  342. package/dist/functions/playerIndex.js +186 -0
  343. package/dist/functions/playerTrinkets.js +149 -0
  344. package/dist/functions/players.js +471 -0
  345. package/dist/functions/pocketItems.js +165 -0
  346. package/dist/functions/positionVelocity.js +158 -0
  347. package/dist/functions/pressurePlate.js +26 -0
  348. package/dist/functions/projectiles.js +57 -0
  349. package/dist/functions/random.js +90 -0
  350. package/dist/functions/readOnly.js +33 -0
  351. package/dist/functions/render.js +36 -0
  352. package/dist/functions/revive.js +151 -0
  353. package/dist/functions/rng.js +140 -0
  354. package/dist/functions/rockAlt.js +50 -0
  355. package/dist/functions/roomData.js +155 -0
  356. package/dist/functions/roomGrid.js +97 -0
  357. package/dist/functions/roomShape.js +143 -0
  358. package/dist/functions/roomShapeWalls.js +187 -0
  359. package/dist/functions/roomTransition.js +43 -0
  360. package/dist/functions/rooms.js +782 -0
  361. package/dist/functions/run.js +121 -0
  362. package/dist/functions/seeds.js +22 -0
  363. package/dist/functions/serialization.js +98 -0
  364. package/dist/functions/set.js +215 -0
  365. package/dist/functions/slots.js +41 -0
  366. package/dist/functions/sort.js +158 -0
  367. package/dist/functions/sound.js +45 -0
  368. package/dist/functions/spawnCollectible.js +112 -0
  369. package/dist/functions/sprites.js +130 -0
  370. package/dist/functions/stage.js +540 -0
  371. package/dist/functions/stats.js +104 -0
  372. package/dist/functions/storyBosses.js +63 -0
  373. package/dist/functions/string.js +194 -0
  374. package/dist/functions/table.js +162 -0
  375. package/dist/functions/tears.js +128 -0
  376. package/dist/functions/transformations.js +89 -0
  377. package/dist/functions/trinketGive.js +145 -0
  378. package/dist/functions/trinkets.js +213 -0
  379. package/dist/functions/tstlClass.js +97 -0
  380. package/dist/functions/types.js +225 -0
  381. package/dist/functions/ui.js +148 -0
  382. package/dist/functions/utils.d.ts +2 -0
  383. package/dist/functions/utils.d.ts.map +1 -1
  384. package/dist/functions/utils.js +195 -0
  385. package/dist/functions/utils.lua +4 -1
  386. package/dist/functions/vector.js +150 -0
  387. package/dist/functions/versusScreen.js +58 -0
  388. package/dist/functions/weighted.js +57 -0
  389. package/dist/index.js +219 -0
  390. package/dist/index.rollup.d.ts +2 -0
  391. package/dist/indexLua.js +220 -0
  392. package/dist/interfaces/ChargeBarSprites.js +2 -0
  393. package/dist/interfaces/Corner.js +2 -0
  394. package/dist/interfaces/CustomStageTSConfig.js +2 -0
  395. package/dist/interfaces/GridEntityCustomData.js +2 -0
  396. package/dist/interfaces/JSONRoomsFile.js +2 -0
  397. package/dist/interfaces/PlayerHealth.js +2 -0
  398. package/dist/interfaces/PlayerStats.js +4 -0
  399. package/dist/interfaces/PocketItemDescription.js +2 -0
  400. package/dist/interfaces/RoomDescription.js +2 -0
  401. package/dist/interfaces/SaveData.js +98 -0
  402. package/dist/interfaces/StageHistoryEntry.js +2 -0
  403. package/dist/interfaces/TSTLClassMetatable.js +2 -0
  404. package/dist/interfaces/TrinketSituation.js +2 -0
  405. package/dist/interfaces/private/AddCallbackParametersCustom.js +4 -0
  406. package/dist/interfaces/private/CustomStage.js +2 -0
  407. package/dist/interfaces/private/CustomTrapdoorDescription.js +2 -0
  408. package/dist/interfaces/private/ModUpgradedInterface.js +2 -0
  409. package/dist/isaacscript-common.lua +5 -2
  410. package/dist/maps/PHDPillConversionsMap.js +23 -0
  411. package/dist/maps/cardNameToTypeMap.js +211 -0
  412. package/dist/maps/characterNameToTypeMap.js +91 -0
  413. package/dist/maps/collectibleNameToTypeMap.js +19 -0
  414. package/dist/maps/defaultPlayerStatMap.js +17 -0
  415. package/dist/maps/entityTypeVariantToBossIDMap.js +11 -0
  416. package/dist/maps/falsePHDPillConversionsMap.js +37 -0
  417. package/dist/maps/gridEntityTypeToBrokenStateMap.js +32 -0
  418. package/dist/maps/gridEntityXMLMap.js +133 -0
  419. package/dist/maps/itemPoolTypeToItemPoolName.js +38 -0
  420. package/dist/maps/keyboardToStringMap.js +71 -0
  421. package/dist/maps/pillNameToEffectMap.js +91 -0
  422. package/dist/maps/roomNameToTypeMap.js +43 -0
  423. package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +17 -0
  424. package/dist/maps/transformationNameToPlayerFormMap.js +35 -0
  425. package/dist/maps/trinketNameToTypeMap.js +19 -0
  426. package/dist/objects/LRoomShapeToRectangles.js +43 -0
  427. package/dist/objects/backdropTypeToRockAltType.js +68 -0
  428. package/dist/objects/batteryNames.js +13 -0
  429. package/dist/objects/bombNames.js +17 -0
  430. package/dist/objects/bossIDToEntityTypeVariant.js +228 -0
  431. package/dist/objects/bossNamePNGFileNames.js +120 -0
  432. package/dist/objects/bossNames.js +119 -0
  433. package/dist/objects/bossPortraitPNGFileNames.js +123 -0
  434. package/dist/objects/cardDescriptions.js +106 -0
  435. package/dist/objects/cardNames.js +106 -0
  436. package/dist/objects/challengeBosses.js +60 -0
  437. package/dist/objects/challengeCharacters.js +58 -0
  438. package/dist/objects/challengeCollectibleTypes.js +255 -0
  439. package/dist/objects/challengeNames.js +54 -0
  440. package/dist/objects/challengeTrinketType.js +58 -0
  441. package/dist/objects/characterDamageMultipliers.js +49 -0
  442. package/dist/objects/characterNames.js +48 -0
  443. package/dist/objects/characterSpritePNGFileNames.js +50 -0
  444. package/dist/objects/characterStartingCollectibleTypes.js +105 -0
  445. package/dist/objects/characterStartingTrinketTypes.js +90 -0
  446. package/dist/objects/chestNames.js +20 -0
  447. package/dist/objects/coinNames.js +16 -0
  448. package/dist/objects/coinSubTypeToValue.js +15 -0
  449. package/dist/objects/collectibleDescriptions.js +742 -0
  450. package/dist/objects/collectibleNames.js +745 -0
  451. package/dist/objects/colors.js +26 -0
  452. package/dist/objects/directionNames.js +11 -0
  453. package/dist/objects/directionToDegrees.js +11 -0
  454. package/dist/objects/directionToMoveAction.js +11 -0
  455. package/dist/objects/directionToShootAction.js +11 -0
  456. package/dist/objects/directionToVector.js +13 -0
  457. package/dist/objects/doorSlotFlagToDoorSlot.js +15 -0
  458. package/dist/objects/doorSlotToDirection.js +15 -0
  459. package/dist/objects/doorSlotToDoorSlotFlag.js +15 -0
  460. package/dist/objects/gridEntityTypeToANM2Name.js +37 -0
  461. package/dist/objects/heartNames.js +21 -0
  462. package/dist/objects/isaacAPIClassTypeToBrand.js +12 -0
  463. package/dist/objects/isaacAPIClassTypeToFunctions.js +46 -0
  464. package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +57 -0
  465. package/dist/objects/kColors.js +27 -0
  466. package/dist/objects/keyNames.js +13 -0
  467. package/dist/objects/languageNames.js +13 -0
  468. package/dist/objects/oppositeDoorSlots.js +15 -0
  469. package/dist/objects/pillEffectClasses.js +57 -0
  470. package/dist/objects/pillEffectNames.js +57 -0
  471. package/dist/objects/pillEffectTypeToPillEffects.js +23 -0
  472. package/dist/objects/pillEffectTypes.js +57 -0
  473. package/dist/objects/playerNamePNGFileNames.js +57 -0
  474. package/dist/objects/playerPortraitPNGFileNames.js +54 -0
  475. package/dist/objects/roomShapeBounds.js +48 -0
  476. package/dist/objects/roomShapeCorners.js +330 -0
  477. package/dist/objects/roomShapeLayoutSizes.js +41 -0
  478. package/dist/objects/roomShapeToBottomRightPosition.js +25 -0
  479. package/dist/objects/roomShapeToDoorSlotCoordinates.js +111 -0
  480. package/dist/objects/roomShapeToDoorSlots.js +72 -0
  481. package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +118 -0
  482. package/dist/objects/roomShapeToGridWidth.js +20 -0
  483. package/dist/objects/roomShapeToTopLeftPosition.js +26 -0
  484. package/dist/objects/roomShapeVolumes.js +32 -0
  485. package/dist/objects/roomTypeNames.js +35 -0
  486. package/dist/objects/roomTypeSpecialGotoPrefixes.js +35 -0
  487. package/dist/objects/sackNames.js +11 -0
  488. package/dist/objects/slotNames.js +26 -0
  489. package/dist/objects/stageIDNames.js +43 -0
  490. package/dist/objects/stageToMusic.js +91 -0
  491. package/dist/objects/stageToStageID.js +117 -0
  492. package/dist/objects/stageTypeSuffixes.js +14 -0
  493. package/dist/objects/transformationNames.js +20 -0
  494. package/dist/objects/trinketDescriptions.js +199 -0
  495. package/dist/objects/trinketNames.js +202 -0
  496. package/dist/objects/versusScreenBackgroundColors.js +46 -0
  497. package/dist/objects/versusScreenDirtSpotColors.js +46 -0
  498. package/dist/patchErrorFunctions.js +65 -0
  499. package/dist/serialization.js +21 -0
  500. package/dist/sets/LRoomShapesSet.js +11 -0
  501. package/dist/sets/bigRoomShapesSet.js +14 -0
  502. package/dist/sets/bossSets.js +465 -0
  503. package/dist/sets/charactersThatStartWithAnActiveItemSet.js +18 -0
  504. package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +9 -0
  505. package/dist/sets/charactersWithFreeDevilDealsSet.js +6 -0
  506. package/dist/sets/charactersWithNoRedHeartsSet.js +19 -0
  507. package/dist/sets/charactersWithNoSoulHeartsSet.js +16 -0
  508. package/dist/sets/consoleCommandsSet.js +64 -0
  509. package/dist/sets/entitiesWithArmorSet.js +59 -0
  510. package/dist/sets/familiarsThatShootPlayerTearsSet.js +15 -0
  511. package/dist/sets/itemConfigCardTypesForCards.js +14 -0
  512. package/dist/sets/lostStyleCharactersSet.js +16 -0
  513. package/dist/sets/mineShaftRoomSubTypesSet.js +12 -0
  514. package/dist/sets/narrowRoomShapesSet.js +11 -0
  515. package/dist/sets/poopGridEntityXMLTypesSet.js +16 -0
  516. package/dist/sets/redHeartSubTypesSet.js +10 -0
  517. package/dist/sets/repentanceBossIDsSet.js +30 -0
  518. package/dist/sets/sinEntityTypesSet.js +14 -0
  519. package/dist/sets/singleUseActiveCollectibleTypesSet.js +15 -0
  520. package/dist/shaderCrashFix.js +24 -0
  521. package/dist/shouldFire.js +226 -0
  522. package/dist/types/AddSubtract.js +2 -0
  523. package/dist/types/AllButFirst.js +2 -0
  524. package/dist/types/AllButLast.js +2 -0
  525. package/dist/types/AnyClass.js +2 -0
  526. package/dist/types/AnyEntity.js +2 -0
  527. package/dist/types/AnyFunction.js +2 -0
  528. package/dist/types/AnyGridEntity.js +2 -0
  529. package/dist/types/CompositionTypeSatisfiesEnum.js +11 -0
  530. package/dist/types/ConversionHeartSubType.js +2 -0
  531. package/dist/types/Decrement.js +2 -0
  532. package/dist/types/ERange.js +2 -0
  533. package/dist/types/EntityID.js +2 -0
  534. package/dist/types/FunctionTuple.js +2 -0
  535. package/dist/types/GridEntityID.js +2 -0
  536. package/dist/types/HasFunction.js +2 -0
  537. package/dist/types/IRange.js +2 -0
  538. package/dist/types/Immutable.js +2 -0
  539. package/dist/types/Increment.js +2 -0
  540. package/dist/types/LowercaseKeys.js +2 -0
  541. package/dist/types/NaturalNumbersLessThan.js +2 -0
  542. package/dist/types/NaturalNumbersLessThanOrEqualTo.js +2 -0
  543. package/dist/types/PickingUpItem.js +44 -0
  544. package/dist/types/PickupIndex.js +2 -0
  545. package/dist/types/PlayerIndex.js +2 -0
  546. package/dist/types/PossibleStatType.js +2 -0
  547. package/dist/types/PublicInterface.js +2 -0
  548. package/dist/types/ReadonlyMap.js +6 -0
  549. package/dist/types/ReadonlyRecord.js +2 -0
  550. package/dist/types/ReadonlySet.js +6 -0
  551. package/dist/types/StartsWithLowercase.js +2 -0
  552. package/dist/types/StartsWithUppercase.js +2 -0
  553. package/dist/types/TSTLClass.js +2 -0
  554. package/dist/types/Tuple.js +2 -0
  555. package/dist/types/TupleKeys.js +2 -0
  556. package/dist/types/TupleToIntersection.js +2 -0
  557. package/dist/types/TupleToUnion.js +2 -0
  558. package/dist/types/TupleWithLengthBetween.js +22 -0
  559. package/dist/types/TupleWithMaxLength.js +27 -0
  560. package/dist/types/UnionToIntersection.js +2 -0
  561. package/dist/types/UppercaseKeys.js +2 -0
  562. package/dist/types/WeightedArray.js +2 -0
  563. package/dist/types/WidenLiteral.js +2 -0
  564. package/dist/types/Writable.js +2 -0
  565. package/dist/types/private/CallbackTuple.js +2 -0
  566. package/dist/types/private/ModUpgradedWithFeatures.js +2 -0
  567. package/package.json +1 -1
  568. package/src/functions/utils.ts +4 -1
  569. package/src/lib/jsonLua.js +701 -0
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.temporarilyRemoveTrinkets = exports.temporarilyRemoveTrinket = exports.smeltTrinkets = exports.smeltTrinket = exports.giveTrinketsBack = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const playerCollectibles_1 = require("./playerCollectibles");
6
+ const trinkets_1 = require("./trinkets");
7
+ const utils_1 = require("./utils");
8
+ /**
9
+ * Helper function to restore the player's trinkets back to the way they were before the
10
+ * `temporarilyRemoveTrinket` function was used. It will re-smelt any smelted trinkets that were
11
+ * removed.
12
+ */
13
+ function giveTrinketsBack(player, trinketSituation) {
14
+ // A trinket situation of undefined signifies that we did not have to remove the trinket. If this
15
+ // is the case, we do not have to give anything back.
16
+ if (trinketSituation === undefined) {
17
+ return;
18
+ }
19
+ const trinketType1 = player.GetTrinket(isaac_typescript_definitions_1.TrinketSlot.SLOT_1);
20
+ const trinketType2 = player.GetTrinket(isaac_typescript_definitions_1.TrinketSlot.SLOT_2);
21
+ // Remove any existing trinkets.
22
+ if (trinketType1 !== isaac_typescript_definitions_1.TrinketType.NULL) {
23
+ player.TryRemoveTrinket(trinketType1);
24
+ }
25
+ if (trinketType2 !== isaac_typescript_definitions_1.TrinketType.NULL) {
26
+ player.TryRemoveTrinket(trinketType2);
27
+ }
28
+ // First, add the smelted trinkets back.
29
+ (0, utils_1.repeat)(trinketSituation.numSmeltedTrinkets, () => {
30
+ player.AddTrinket(trinketSituation.trinketTypeRemoved, false);
31
+ (0, playerCollectibles_1.useActiveItemTemp)(player, isaac_typescript_definitions_1.CollectibleType.SMELTER);
32
+ });
33
+ // Second, add back the stored trinkets.
34
+ if (trinketSituation.trinketType1 !== isaac_typescript_definitions_1.TrinketType.NULL) {
35
+ player.AddTrinket(trinketSituation.trinketType1, false);
36
+ }
37
+ if (trinketSituation.trinketType2 !== isaac_typescript_definitions_1.TrinketType.NULL) {
38
+ player.AddTrinket(trinketSituation.trinketType2, false);
39
+ }
40
+ }
41
+ exports.giveTrinketsBack = giveTrinketsBack;
42
+ /**
43
+ * Helper function to smelt a trinket. Before smelting, this function will automatically remove the
44
+ * trinkets that the player is holding, if any, and then give them back after the new trinket is
45
+ * smelted.
46
+ *
47
+ * @param player The player to smelt the trinkets to.
48
+ * @param trinketType The trinket type to smelt.
49
+ * @param numTrinkets Optional. If specified, will smelt the given number of trinkets. Use this to
50
+ * avoid calling this function multiple times. Default is 1.
51
+ */
52
+ function smeltTrinket(player, trinketType, numTrinkets = 1) {
53
+ const trinketSituation = temporarilyRemoveTrinkets(player);
54
+ (0, utils_1.repeat)(numTrinkets, () => {
55
+ player.AddTrinket(trinketType);
56
+ (0, playerCollectibles_1.useActiveItemTemp)(player, isaac_typescript_definitions_1.CollectibleType.SMELTER);
57
+ });
58
+ giveTrinketsBack(player, trinketSituation);
59
+ }
60
+ exports.smeltTrinket = smeltTrinket;
61
+ /**
62
+ * Helper function to smelt two or more different trinkets. If you want to smelt one trinket (or
63
+ * multiple copies of one trinket), then use the `smeltTrinket` helper function instead.
64
+ *
65
+ * This function is variadic, meaning that you can pass as many trinket types as you want to smelt.
66
+ *
67
+ * Before smelting, this function will automatically remove the trinkets that the player is holding,
68
+ * if any, and then give them back after the new trinket is smelted.
69
+ *
70
+ * @param player The player to smelt the trinkets to.
71
+ * @param trinketTypes The trinket types to smelt.
72
+ */
73
+ function smeltTrinkets(player, ...trinketTypes) {
74
+ for (const trinketType of trinketTypes) {
75
+ smeltTrinket(player, trinketType);
76
+ }
77
+ }
78
+ exports.smeltTrinkets = smeltTrinkets;
79
+ /**
80
+ * Helper function to temporarily remove a specific kind of trinket from the player. Use this in
81
+ * combination with the `giveTrinketsBack` function to take away and give back a trinket on the same
82
+ * frame. This function correctly handles multiple trinket slots and ensures that all copies of the
83
+ * trinket are removed, including smelted trinkets.
84
+ *
85
+ * Note that one smelted golden trinket is the same as two smelted normal trinkets.
86
+ *
87
+ * @returns Undefined if the player does not have the trinket, or TrinketSituation if they do.
88
+ */
89
+ function temporarilyRemoveTrinket(player, trinketType) {
90
+ if (!player.HasTrinket(trinketType)) {
91
+ return undefined;
92
+ }
93
+ const trinketType1 = player.GetTrinket(isaac_typescript_definitions_1.TrinketSlot.SLOT_1);
94
+ const trinketType2 = player.GetTrinket(isaac_typescript_definitions_1.TrinketSlot.SLOT_2);
95
+ let numTrinkets = 0;
96
+ while (player.HasTrinket(trinketType)) {
97
+ player.TryRemoveTrinket(trinketType);
98
+ numTrinkets++;
99
+ }
100
+ let numSmeltedTrinkets = numTrinkets;
101
+ const trinketWasInSlot1 = trinketType1 === trinketType ||
102
+ trinketType1 === (0, trinkets_1.getGoldenTrinketType)(trinketType);
103
+ if (trinketWasInSlot1) {
104
+ numSmeltedTrinkets--;
105
+ }
106
+ const trinketWasInSlot2 = trinketType2 === trinketType ||
107
+ trinketType2 === (0, trinkets_1.getGoldenTrinketType)(trinketType);
108
+ if (trinketWasInSlot2) {
109
+ numSmeltedTrinkets--;
110
+ }
111
+ return {
112
+ trinketTypeRemoved: trinketType,
113
+ trinketType1,
114
+ trinketType2,
115
+ numSmeltedTrinkets,
116
+ };
117
+ }
118
+ exports.temporarilyRemoveTrinket = temporarilyRemoveTrinket;
119
+ /**
120
+ * Helper function to temporarily removes a player's held trinkets, if any. This will not remove any
121
+ * smelted trinkets. Use this in combination with the `giveTrinketsBack` function to take away and
122
+ * give back trinkets on the same frame.
123
+ *
124
+ * @returns Undefined if the player does not have any trinkets, or TrinketSituation if they do.
125
+ */
126
+ function temporarilyRemoveTrinkets(player) {
127
+ const trinketType1 = player.GetTrinket(isaac_typescript_definitions_1.TrinketSlot.SLOT_1);
128
+ const trinketType2 = player.GetTrinket(isaac_typescript_definitions_1.TrinketSlot.SLOT_2);
129
+ if (trinketType1 === isaac_typescript_definitions_1.TrinketType.NULL && trinketType2 === isaac_typescript_definitions_1.TrinketType.NULL) {
130
+ return undefined;
131
+ }
132
+ if (trinketType1 !== isaac_typescript_definitions_1.TrinketType.NULL) {
133
+ player.TryRemoveTrinket(trinketType1);
134
+ }
135
+ if (trinketType2 !== isaac_typescript_definitions_1.TrinketType.NULL) {
136
+ player.TryRemoveTrinket(trinketType2);
137
+ }
138
+ return {
139
+ trinketTypeRemoved: isaac_typescript_definitions_1.TrinketType.NULL,
140
+ trinketType1,
141
+ trinketType2,
142
+ numSmeltedTrinkets: 0,
143
+ };
144
+ }
145
+ exports.temporarilyRemoveTrinkets = temporarilyRemoveTrinkets;
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.trinketHasCacheFlag = exports.setTrinketSprite = exports.newTrinketSprite = exports.isVanillaTrinketType = exports.isValidTrinketType = exports.isModdedTrinketType = exports.isGoldenTrinketType = exports.getTrinketName = exports.getTrinketGfxFilename = exports.getTrinketDescription = exports.getNormalTrinketType = exports.getMysteriousPaperEffectForFrame = exports.getGoldenTrinketType = 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 constantsFirstLast_1 = require("../core/constantsFirstLast");
8
+ const MysteriousPaperEffect_1 = require("../enums/MysteriousPaperEffect");
9
+ const trinketDescriptions_1 = require("../objects/trinketDescriptions");
10
+ const trinketNames_1 = require("../objects/trinketNames");
11
+ const entities_1 = require("./entities");
12
+ const enums_1 = require("./enums");
13
+ const flag_1 = require("./flag");
14
+ const pickupVariants_1 = require("./pickupVariants");
15
+ const sprites_1 = require("./sprites");
16
+ const types_1 = require("./types");
17
+ /**
18
+ * Add this to a `TrinketType` to get the corresponding golden trinket type.
19
+ *
20
+ * Corresponds to the vanilla `PillColor.TRINKET_GOLDEN_FLAG` value.
21
+ *
22
+ * 1 << 15
23
+ */
24
+ const GOLDEN_TRINKET_ADJUSTMENT = 32_768;
25
+ const NUM_MYSTERIOUS_PAPER_EFFECTS = (0, enums_1.getEnumLength)(MysteriousPaperEffect_1.MysteriousPaperEffect);
26
+ const TRINKET_ANM2_PATH = "gfx/005.350_trinket.anm2";
27
+ const TRINKET_SPRITE_LAYER = 0;
28
+ /**
29
+ * Helper function to get the corresponding golden trinket type from a normal trinket type.
30
+ *
31
+ * If the provided trinket type is already a golden trinket type, then the trinket type will be
32
+ * returned unmodified.
33
+ *
34
+ * For example, passing `TrinketType.SWALLOWED_PENNY` would result in 32769, which is the value that
35
+ * corresponds to the golden trinket sub-type for Swallowed Penny.
36
+ */
37
+ function getGoldenTrinketType(trinketType) {
38
+ return isGoldenTrinketType(trinketType)
39
+ ? trinketType
40
+ : trinketType + GOLDEN_TRINKET_ADJUSTMENT;
41
+ }
42
+ exports.getGoldenTrinketType = getGoldenTrinketType;
43
+ /**
44
+ * Helper function to get the current effect that the Mysterious Paper trinket is providing to the
45
+ * player. Returns undefined if the player does not have the Mysterious Paper trinket.
46
+ *
47
+ * The Mysterious Paper trinket has four different effects:
48
+ *
49
+ * - The Polaroid (collectible)
50
+ * - The Negative (collectible)
51
+ * - A Missing Page (trinket)
52
+ * - Missing Poster (trinket)
53
+ *
54
+ * It rotates between these four effects on every frame. Note that Mysterious Paper will cause the
55
+ * `EntityPlayer.HasCollectible` and `EntityPlayer.HasTrinket` methods to return true for the
56
+ * respective items on the particular frame, with the exception of the Missing Poster. (The player
57
+ * will never "have" the Missing Poster, even on the correct corresponding frame.)
58
+ *
59
+ * @param player The player to look at.
60
+ * @param frameCount Optional. The frame count that corresponds to time the effect will be active.
61
+ * Default is the current frame.
62
+ */
63
+ function getMysteriousPaperEffectForFrame(player, frameCount) {
64
+ if (frameCount === undefined) {
65
+ frameCount = player.FrameCount;
66
+ }
67
+ if (!player.HasTrinket(isaac_typescript_definitions_1.TrinketType.MYSTERIOUS_PAPER)) {
68
+ return undefined;
69
+ }
70
+ return frameCount % NUM_MYSTERIOUS_PAPER_EFFECTS;
71
+ }
72
+ exports.getMysteriousPaperEffectForFrame = getMysteriousPaperEffectForFrame;
73
+ /**
74
+ * Helper function to get the corresponding normal trinket type from a golden trinket type.
75
+ *
76
+ * If the provided trinket type is already a normal trinket type, then the trinket type will be
77
+ * returned unmodified.
78
+ */
79
+ function getNormalTrinketType(trinketType) {
80
+ return isGoldenTrinketType(trinketType)
81
+ ? trinketType - GOLDEN_TRINKET_ADJUSTMENT
82
+ : trinketType;
83
+ }
84
+ exports.getNormalTrinketType = getNormalTrinketType;
85
+ /**
86
+ * Helper function to get the in-game description for a trinket. Returns "Unknown" if the provided
87
+ * trinket type was not valid.
88
+ *
89
+ * This function works for both vanilla and modded trinkets.
90
+ */
91
+ function getTrinketDescription(trinketType) {
92
+ // "ItemConfigItem.Description" is bugged with vanilla items on patch v1.7.6, so we use a
93
+ // hard-coded object as a workaround.
94
+ const trinketDescription = trinketDescriptions_1.TRINKET_DESCRIPTIONS[trinketType];
95
+ if (trinketDescription !== undefined) {
96
+ return trinketDescription;
97
+ }
98
+ const itemConfigItem = cachedClasses_1.itemConfig.GetTrinket(trinketType);
99
+ if (itemConfigItem !== undefined) {
100
+ return itemConfigItem.Description;
101
+ }
102
+ return trinketDescriptions_1.DEFAULT_TRINKET_DESCRIPTION;
103
+ }
104
+ exports.getTrinketDescription = getTrinketDescription;
105
+ /**
106
+ * Helper function to get the path to a trinket PNG file. Returns the path to the question mark
107
+ * sprite (i.e. from Curse of the Blind) if the provided trinket type was not valid.
108
+ *
109
+ * Note that this does not return the file name, but the full path to the trinket's PNG file. The
110
+ * function is named "GfxFilename" to correspond to the associated `ItemConfigItem.GfxFileName`
111
+ * field.
112
+ */
113
+ function getTrinketGfxFilename(trinketType) {
114
+ const itemConfigItem = cachedClasses_1.itemConfig.GetTrinket(trinketType);
115
+ if (itemConfigItem === undefined) {
116
+ return constants_1.BLIND_ITEM_PNG_PATH;
117
+ }
118
+ return itemConfigItem.GfxFileName;
119
+ }
120
+ exports.getTrinketGfxFilename = getTrinketGfxFilename;
121
+ /**
122
+ * Helper function to get the name of a trinket. Returns "Unknown" if the provided trinket type is
123
+ * not valid.
124
+ *
125
+ * This function works for both vanilla and modded trinkets.
126
+ *
127
+ * For example, `getTrinketName(TrinketType.SWALLOWED_PENNY)` would return "Swallowed Penny".
128
+ */
129
+ function getTrinketName(trinketType) {
130
+ // "ItemConfigItem.Name" is bugged with vanilla items on patch v1.7.6, so we use a hard-coded
131
+ // object as a workaround.
132
+ const trinketName = trinketNames_1.TRINKET_NAMES[trinketType];
133
+ if (trinketName !== undefined) {
134
+ return trinketName;
135
+ }
136
+ const itemConfigItem = cachedClasses_1.itemConfig.GetTrinket(trinketType);
137
+ if (itemConfigItem !== undefined) {
138
+ return itemConfigItem.Name;
139
+ }
140
+ return trinketNames_1.DEFAULT_TRINKET_NAME;
141
+ }
142
+ exports.getTrinketName = getTrinketName;
143
+ function isGoldenTrinketType(trinketType) {
144
+ return (0, types_1.asNumber)(trinketType) > GOLDEN_TRINKET_ADJUSTMENT;
145
+ }
146
+ exports.isGoldenTrinketType = isGoldenTrinketType;
147
+ function isModdedTrinketType(trinketType) {
148
+ return !isVanillaTrinketType(trinketType);
149
+ }
150
+ exports.isModdedTrinketType = isModdedTrinketType;
151
+ function isValidTrinketType(trinketType) {
152
+ const potentialTrinketType = (0, types_1.asTrinketType)(trinketType);
153
+ const itemConfigItem = cachedClasses_1.itemConfig.GetTrinket(potentialTrinketType);
154
+ return itemConfigItem !== undefined;
155
+ }
156
+ exports.isValidTrinketType = isValidTrinketType;
157
+ function isVanillaTrinketType(trinketType) {
158
+ return trinketType <= constantsFirstLast_1.LAST_VANILLA_TRINKET_TYPE;
159
+ }
160
+ exports.isVanillaTrinketType = isVanillaTrinketType;
161
+ /**
162
+ * Helper function to generate a new sprite based on a collectible. If the provided collectible type
163
+ * is invalid, a sprite with a Curse of the Blind question mark will be returned.
164
+ */
165
+ function newTrinketSprite(trinketType) {
166
+ const sprite = Sprite();
167
+ sprite.Load(TRINKET_ANM2_PATH, false);
168
+ const gfxFileName = getTrinketGfxFilename(trinketType);
169
+ sprite.ReplaceSpritesheet(TRINKET_SPRITE_LAYER, gfxFileName);
170
+ sprite.LoadGraphics();
171
+ const defaultAnimation = sprite.GetDefaultAnimation();
172
+ sprite.Play(defaultAnimation, true);
173
+ return sprite;
174
+ }
175
+ exports.newTrinketSprite = newTrinketSprite;
176
+ /**
177
+ * Helper function to change the sprite of a trinket entity.
178
+ *
179
+ * For more information about removing the trinket sprite, see the documentation for the
180
+ * "clearSprite" helper function.
181
+ *
182
+ * @param trinket The trinket whose sprite you want to modify.
183
+ * @param pngPath Equal to either the spritesheet path to load (e.g.
184
+ * "gfx/items/trinkets/trinket_001_swallowedpenny.png") or undefined. If undefined,
185
+ * the sprite will be removed, making the trinket effectively invisible (except for
186
+ * the shadow underneath it).
187
+ */
188
+ function setTrinketSprite(trinket, pngPath) {
189
+ if (!(0, pickupVariants_1.isTrinket)(trinket)) {
190
+ const entityID = (0, entities_1.getEntityID)(trinket);
191
+ error(`The "setTrinketSprite" function was given a non-trinket: ${entityID}`);
192
+ }
193
+ const sprite = trinket.GetSprite();
194
+ if (pngPath === undefined) {
195
+ // We use `clearSpriteLayer` instead of `Sprite.Reset` to maintain parity with the
196
+ // `setCollectibleSprite` function.
197
+ (0, sprites_1.clearSprite)(sprite);
198
+ }
199
+ else {
200
+ sprite.ReplaceSpritesheet(TRINKET_SPRITE_LAYER, pngPath);
201
+ sprite.LoadGraphics();
202
+ }
203
+ }
204
+ exports.setTrinketSprite = setTrinketSprite;
205
+ /** Helper function to check in the item config if a given trinket has a given cache flag. */
206
+ function trinketHasCacheFlag(trinketType, cacheFlag) {
207
+ const itemConfigItem = cachedClasses_1.itemConfig.GetTrinket(trinketType);
208
+ if (itemConfigItem === undefined) {
209
+ return false;
210
+ }
211
+ return (0, flag_1.hasFlag)(itemConfigItem.CacheFlags, cacheFlag);
212
+ }
213
+ exports.trinketHasCacheFlag = trinketHasCacheFlag;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.newTSTLClass = exports.isTSTLSet = exports.isTSTLMap = exports.isTSTLClass = exports.isDefaultMap = exports.getTSTLClassName = exports.getTSTLClassConstructor = void 0;
4
+ const types_1 = require("./types");
5
+ const utils_1 = require("./utils");
6
+ /**
7
+ * Helper function to get the constructor from an instantiated TypeScriptToLua class, which is
8
+ * located on the metatable.
9
+ *
10
+ * Returns undefined if passed a non-table or if the provided table does not have a metatable.
11
+ */
12
+ function getTSTLClassConstructor(object) {
13
+ if (!(0, types_1.isTable)(object)) {
14
+ return undefined;
15
+ }
16
+ const metatable = getmetatable(object);
17
+ if (metatable === undefined) {
18
+ return undefined;
19
+ }
20
+ return metatable.constructor;
21
+ }
22
+ exports.getTSTLClassConstructor = getTSTLClassConstructor;
23
+ /**
24
+ * Helper function to get the name of a TypeScriptToLua class from the instantiated class object.
25
+ *
26
+ * TSTL classes are Lua tables created with the `__TS__Class` Lua function from the TSTL lualib.
27
+ * Their name is contained within "constructor.name" metatable key.
28
+ *
29
+ * For example, a `Map` class is has a name of "Map".
30
+ *
31
+ * Returns undefined if passed a non-table or if the provided table does not have a metatable.
32
+ */
33
+ function getTSTLClassName(object) {
34
+ const constructor = getTSTLClassConstructor(object);
35
+ if (constructor === undefined) {
36
+ return undefined;
37
+ }
38
+ return constructor.name;
39
+ }
40
+ exports.getTSTLClassName = getTSTLClassName;
41
+ /**
42
+ * Helper function to determine if a given object is a TypeScriptToLua `Map`.
43
+ *
44
+ * It is not reliable to use the `instanceof` operator to determine this because each Lua module has
45
+ * their own copies of the entire lualib and thus their own instantiated version of a `Map`.
46
+ */
47
+ function isDefaultMap(object) {
48
+ const className = getTSTLClassName(object);
49
+ return className === "DefaultMap";
50
+ }
51
+ exports.isDefaultMap = isDefaultMap;
52
+ /** Helper function to check if a given table is a class table created by TypeScriptToLua. */
53
+ function isTSTLClass(object) {
54
+ const tstlClassName = getTSTLClassName(object);
55
+ return tstlClassName !== undefined;
56
+ }
57
+ exports.isTSTLClass = isTSTLClass;
58
+ /**
59
+ * Helper function to determine if a given object is a TypeScriptToLua `Map`.
60
+ *
61
+ * It is not reliable to use the `instanceof` operator to determine this because each Lua module
62
+ * might have their own copy of the entire lualib and thus their own instantiated version of a
63
+ * `Map`.
64
+ */
65
+ function isTSTLMap(object) {
66
+ const className = getTSTLClassName(object);
67
+ return className === "Map";
68
+ }
69
+ exports.isTSTLMap = isTSTLMap;
70
+ /**
71
+ * Helper function to determine if a given object is a TypeScriptToLua `Set`.
72
+ *
73
+ * It is not reliable to use the `instanceof` operator to determine this because each Lua module
74
+ * might have their own copy of the entire lualib and thus their own instantiated version of a
75
+ * `Set`.
76
+ */
77
+ function isTSTLSet(object) {
78
+ const className = getTSTLClassName(object);
79
+ return className === "Set";
80
+ }
81
+ exports.isTSTLSet = isTSTLSet;
82
+ /**
83
+ * Initializes a new TypeScriptToLua class in the situation where you do not know what kind of class
84
+ * it is. This function requires that you provide an instantiated class of the same type, as it will
85
+ * use the class constructor that is present on the other object's metatable to initialize the new
86
+ * class.
87
+ */
88
+ function newTSTLClass(oldClass) {
89
+ const constructor = getTSTLClassConstructor(oldClass);
90
+ (0, utils_1.assertDefined)(constructor, "Failed to instantiate a new TypeScriptToLua class since the provided old class does not have a metatable/constructor.");
91
+ // We re-implement some of the logic from the transpiled "__TS__New" function.
92
+ const newClass = new LuaMap();
93
+ const newClassMetatable = setmetatable(newClass, constructor.prototype);
94
+ newClassMetatable.____constructor();
95
+ return newClass;
96
+ }
97
+ exports.newTSTLClass = newTSTLClass;
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ /**
3
+ * Consider the following code that uses a number enum:
4
+ *
5
+ * ```ts
6
+ * enum MyEnum {
7
+ * Value1,
8
+ * }
9
+ *
10
+ * function asMyEnum(num: number): MyEnum {}
11
+ *
12
+ * declare const something: unknown;
13
+ *
14
+ * const foo = something as MyEnum; // no error
15
+ * const bar: MyEnum = something; // error
16
+ * const baz = asMyEnum(something); // error
17
+ * ```
18
+ *
19
+ * Here, using `as` does not give an error because TypeScript allows you to assert a type to a
20
+ * supertype or a subtype. Thus, using `as` to perform a type assertion is not as safe as using a
21
+ * variable declaration or a helper function. However, if we use a variable declaration, then the
22
+ * `isaacscript/strict-enums` rule is triggered, which requires suppressing the lint rule with a `//
23
+ * eslint-disable-next-line`. Thus, the safest and more concise way to do a type assertion is to use
24
+ * a helper function.
25
+ *
26
+ * This file contains helper functions for various number enums that might require type assertions.
27
+ * It also contains helper functions for run-time type checks.
28
+ *
29
+ * @module
30
+ */
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.parseIntSafe = exports.isUserdata = exports.isTable = exports.isString = exports.isPrimitive = exports.isNumber = exports.isInteger = exports.isFunction = exports.isBoolean = exports.asTrinketType = exports.asString = exports.asRoomType = exports.asPlayerType = exports.asPillEffect = exports.asPillColor = exports.asNumber = exports.asNPCState = exports.asLevelStage = exports.asInt = exports.asFloat = exports.asCollectibleType = exports.asCardType = void 0;
33
+ /**
34
+ * Helper function to safely cast an `int` to a `CardType`. (This is better than using the `as`
35
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
36
+ *
37
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
38
+ */
39
+ function asCardType(num) {
40
+ return num;
41
+ }
42
+ exports.asCardType = asCardType;
43
+ /**
44
+ * Helper function to safely cast an `int` to a `CollectibleType`. (This is better than using the
45
+ * `as` TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
46
+ *
47
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
48
+ */
49
+ function asCollectibleType(num) {
50
+ return num;
51
+ }
52
+ exports.asCollectibleType = asCollectibleType;
53
+ /**
54
+ * Helper function to safely cast an enum to an `int`. (This is better than using the `as`
55
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
56
+ *
57
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
58
+ */
59
+ function asFloat(num) {
60
+ return num;
61
+ }
62
+ exports.asFloat = asFloat;
63
+ /**
64
+ * Helper function to safely cast an enum to an `int`. (This is better than using the `as`
65
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
66
+ *
67
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
68
+ */
69
+ function asInt(num) {
70
+ return num;
71
+ }
72
+ exports.asInt = asInt;
73
+ /**
74
+ * Helper function to safely cast an `int` to a `LevelStage`. (This is better than using the `as`
75
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
76
+ *
77
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
78
+ */
79
+ function asLevelStage(num) {
80
+ return num;
81
+ }
82
+ exports.asLevelStage = asLevelStage;
83
+ /**
84
+ * Helper function to safely cast an `int` to a `NPCState`. (This is better than using the `as`
85
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
86
+ *
87
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
88
+ */
89
+ function asNPCState(num) {
90
+ return num;
91
+ }
92
+ exports.asNPCState = asNPCState;
93
+ /**
94
+ * Helper function to safely cast an enum to a `number`. (This is better than using the `as`
95
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
96
+ *
97
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
98
+ */
99
+ function asNumber(num) {
100
+ return num;
101
+ }
102
+ exports.asNumber = asNumber;
103
+ /**
104
+ * Helper function to safely cast an `int` to a `PillColor`. (This is better than using the `as`
105
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
106
+ *
107
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
108
+ */
109
+ function asPillColor(num) {
110
+ return num;
111
+ }
112
+ exports.asPillColor = asPillColor;
113
+ /**
114
+ * Helper function to safely cast an `int` to a `PillEffect`. (This is better than using the `as`
115
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
116
+ *
117
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
118
+ */
119
+ function asPillEffect(num) {
120
+ return num;
121
+ }
122
+ exports.asPillEffect = asPillEffect;
123
+ /**
124
+ * Helper function to safely cast an `int` to a `PlayerType`. (This is better than using the `as`
125
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
126
+ *
127
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
128
+ */
129
+ function asPlayerType(num) {
130
+ return num;
131
+ }
132
+ exports.asPlayerType = asPlayerType;
133
+ /**
134
+ * Helper function to safely cast an `int` to a `RoomType`. (This is better than using the `as`
135
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
136
+ *
137
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
138
+ */
139
+ function asRoomType(num) {
140
+ return num;
141
+ }
142
+ exports.asRoomType = asRoomType;
143
+ /**
144
+ * Helper function to safely cast an enum to a `string`. (This is better than using the `as`
145
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
146
+ *
147
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
148
+ */
149
+ function asString(str) {
150
+ return str;
151
+ }
152
+ exports.asString = asString;
153
+ /**
154
+ * Helper function to safely cast an `int` to a `TrinketType`. (This is better than using the `as`
155
+ * TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
156
+ *
157
+ * This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
158
+ */
159
+ function asTrinketType(num) {
160
+ return num;
161
+ }
162
+ exports.asTrinketType = asTrinketType;
163
+ function isBoolean(variable) {
164
+ return type(variable) === "boolean";
165
+ }
166
+ exports.isBoolean = isBoolean;
167
+ // eslint-disable-next-line @typescript-eslint/ban-types
168
+ function isFunction(variable) {
169
+ return type(variable) === "function";
170
+ }
171
+ exports.isFunction = isFunction;
172
+ function isInteger(variable) {
173
+ if (!isNumber(variable)) {
174
+ return false;
175
+ }
176
+ return variable === Math.floor(variable);
177
+ }
178
+ exports.isInteger = isInteger;
179
+ function isNumber(variable) {
180
+ return type(variable) === "number";
181
+ }
182
+ exports.isNumber = isNumber;
183
+ /** Helper function to detect if a variable is a boolean, number, or string. */
184
+ function isPrimitive(variable) {
185
+ const variableType = type(variable);
186
+ return (variableType === "boolean" ||
187
+ variableType === "number" ||
188
+ variableType === "string");
189
+ }
190
+ exports.isPrimitive = isPrimitive;
191
+ function isString(variable) {
192
+ return type(variable) === "string";
193
+ }
194
+ exports.isString = isString;
195
+ function isTable(variable) {
196
+ return type(variable) === "table";
197
+ }
198
+ exports.isTable = isTable;
199
+ function isUserdata(variable) {
200
+ return type(variable) === "userdata";
201
+ }
202
+ exports.isUserdata = isUserdata;
203
+ /**
204
+ * Helper function to convert a string to an integer. Returns undefined if the string is not an
205
+ * integer.
206
+ *
207
+ * Under the hood, this uses the built-in `tonumber` and `math.floor` functions.
208
+ *
209
+ * This is named `parseIntSafe` in order to match the helper function in `isaacscript-common-ts`.
210
+ */
211
+ function parseIntSafe(string) {
212
+ if (!isString(string)) {
213
+ return undefined;
214
+ }
215
+ // - The `tonumber` function correctly deals with leading and trailing whitespace.
216
+ // - The `tonumber` function correctly deals with a mix of numbers and letters. (e.g. `1a` returns
217
+ // undefined.)
218
+ const number = tonumber(string);
219
+ if (number === undefined) {
220
+ return undefined;
221
+ }
222
+ const flooredNumber = math.floor(number);
223
+ return number === flooredNumber ? flooredNumber : undefined;
224
+ }
225
+ exports.parseIntSafe = parseIntSafe;