isaacscript-common 3.17.0 → 4.0.2

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 (425) hide show
  1. package/cachedClasses.ts +39 -0
  2. package/callbacks/customRevive.lua +2 -1
  3. package/callbacks/customRevive.ts +215 -0
  4. package/callbacks/itemPickup.ts +101 -0
  5. package/callbacks/postAmbush.ts +73 -0
  6. package/callbacks/postBombExploded.ts +26 -0
  7. package/callbacks/postBombInitLate.ts +36 -0
  8. package/callbacks/postBoneSwing.ts +64 -0
  9. package/callbacks/postCollectibleInitFirst.ts +40 -0
  10. package/callbacks/postCursedTeleport.lua +2 -1
  11. package/callbacks/postCursedTeleport.ts +185 -0
  12. package/callbacks/postCustomDoorEnter.lua +0 -7
  13. package/callbacks/postCustomDoorEnter.ts +292 -0
  14. package/callbacks/postDiceRoomActivated.ts +60 -0
  15. package/callbacks/postDoorRender.ts +26 -0
  16. package/callbacks/postDoorUpdate.ts +26 -0
  17. package/callbacks/postEffectInitLate.ts +36 -0
  18. package/callbacks/postEffectStateChanged.ts +43 -0
  19. package/callbacks/postEsauJr.lua +2 -1
  20. package/callbacks/postEsauJr.ts +109 -0
  21. package/callbacks/postFamiliarInitLate.ts +36 -0
  22. package/callbacks/postFamiliarStateChanged.ts +43 -0
  23. package/callbacks/postFlip.lua +4 -3
  24. package/callbacks/postFlip.ts +90 -0
  25. package/callbacks/postGreedModeWave.ts +41 -0
  26. package/callbacks/postGridEntity.ts +164 -0
  27. package/callbacks/postGridEntityCollision.ts +69 -0
  28. package/callbacks/postGridEntityRender.ts +26 -0
  29. package/callbacks/postHolyMantleRemoved.ts +55 -0
  30. package/callbacks/postItemDischarged.lua +4 -3
  31. package/callbacks/postItemDischarged.ts +154 -0
  32. package/callbacks/postKnifeInitLate.ts +36 -0
  33. package/callbacks/postLaserInitLate.ts +36 -0
  34. package/callbacks/postNPCInitLate.ts +36 -0
  35. package/callbacks/postNPCStateChanged.ts +42 -0
  36. package/callbacks/postNewRoomEarly.lua +2 -1
  37. package/callbacks/postNewRoomEarly.ts +96 -0
  38. package/callbacks/postPickupCollect.ts +48 -0
  39. package/callbacks/postPickupInitFirst.ts +70 -0
  40. package/callbacks/postPickupInitLate.ts +36 -0
  41. package/callbacks/postPickupStateChanged.ts +43 -0
  42. package/callbacks/postPitRender.ts +26 -0
  43. package/callbacks/postPitUpdate.ts +26 -0
  44. package/callbacks/postPlayerChangeHealth.ts +62 -0
  45. package/callbacks/postPlayerChangeType.ts +56 -0
  46. package/callbacks/postPlayerCollectible.ts +113 -0
  47. package/callbacks/postPlayerFatalDamage.ts +141 -0
  48. package/callbacks/postPlayerInitLate.ts +37 -0
  49. package/callbacks/postPlayerReordered.ts +142 -0
  50. package/callbacks/postPoopRender.ts +26 -0
  51. package/callbacks/postPoopUpdate.ts +26 -0
  52. package/callbacks/postPressurePlateRender.ts +26 -0
  53. package/callbacks/postPressurePlateUpdate.ts +26 -0
  54. package/callbacks/postProjectileInitLate.ts +36 -0
  55. package/callbacks/postPurchase.ts +64 -0
  56. package/callbacks/postRockRender.ts +26 -0
  57. package/callbacks/postRockUpdate.ts +26 -0
  58. package/callbacks/postRoomClearChanged.ts +57 -0
  59. package/callbacks/postSacrifice.lua +3 -2
  60. package/callbacks/postSacrifice.ts +64 -0
  61. package/callbacks/postSlotDestroyed.ts +92 -0
  62. package/callbacks/postSlotInitUpdate.ts +68 -0
  63. package/callbacks/postSlotRender.ts +69 -0
  64. package/callbacks/postSpikesRender.ts +26 -0
  65. package/callbacks/postSpikesUpdate.ts +26 -0
  66. package/callbacks/postTNTRender.ts +26 -0
  67. package/callbacks/postTNTUpdate.ts +26 -0
  68. package/callbacks/postTearInitLate.ts +36 -0
  69. package/callbacks/postTearInitVeryLate.ts +41 -0
  70. package/callbacks/postTransformation.ts +59 -0
  71. package/callbacks/postTrinketBreak.lua +3 -2
  72. package/callbacks/postTrinketBreak.ts +112 -0
  73. package/callbacks/preBerserkDeath.ts +49 -0
  74. package/callbacks/preNewLevel.ts +55 -0
  75. package/callbacks/reorderedCallbacks.lua +1 -0
  76. package/callbacks/reorderedCallbacks.ts +168 -0
  77. package/callbacks/subscriptions/postAmbushFinished.ts +32 -0
  78. package/callbacks/subscriptions/postAmbushStarted.ts +32 -0
  79. package/callbacks/subscriptions/postBombInitLate.ts +32 -0
  80. package/callbacks/subscriptions/postBoneExploded.ts +32 -0
  81. package/callbacks/subscriptions/postBoneSwing.ts +24 -0
  82. package/callbacks/subscriptions/postCollectibleInitFirst.ts +37 -0
  83. package/callbacks/subscriptions/postCursedTeleport.ts +24 -0
  84. package/callbacks/subscriptions/postCustomDoorEnter.ts +45 -0
  85. package/callbacks/subscriptions/postCustomRevive.ts +36 -0
  86. package/callbacks/subscriptions/postDiceRoomActivated.ts +38 -0
  87. package/callbacks/subscriptions/postDoorRender.ts +35 -0
  88. package/callbacks/subscriptions/postDoorUpdate.ts +35 -0
  89. package/callbacks/subscriptions/postEffectInitLate.ts +32 -0
  90. package/callbacks/subscriptions/postEffectStateChanged.ts +40 -0
  91. package/callbacks/subscriptions/postEsauJr.ts +24 -0
  92. package/callbacks/subscriptions/postFamiliarInitLate.ts +32 -0
  93. package/callbacks/subscriptions/postFamiliarStateChanged.ts +40 -0
  94. package/callbacks/subscriptions/postFirstEsauJr.ts +24 -0
  95. package/callbacks/subscriptions/postFirstFlip.ts +24 -0
  96. package/callbacks/subscriptions/postFlip.ts +22 -0
  97. package/callbacks/subscriptions/postGameStartedReordered.ts +24 -0
  98. package/callbacks/subscriptions/postGreedModeWave.ts +24 -0
  99. package/callbacks/subscriptions/postGridEntityBroken.ts +51 -0
  100. package/callbacks/subscriptions/postGridEntityCollision.ts +54 -0
  101. package/callbacks/subscriptions/postGridEntityInit.ts +51 -0
  102. package/callbacks/subscriptions/postGridEntityRemove.ts +52 -0
  103. package/callbacks/subscriptions/postGridEntityRender.ts +51 -0
  104. package/callbacks/subscriptions/postGridEntityStateChanged.ts +55 -0
  105. package/callbacks/subscriptions/postGridEntityUpdate.ts +51 -0
  106. package/callbacks/subscriptions/postHolyMantleRemoved.ts +48 -0
  107. package/callbacks/subscriptions/postItemDischarged.ts +43 -0
  108. package/callbacks/subscriptions/postItemPickup.ts +64 -0
  109. package/callbacks/subscriptions/postKnifeInitLate.ts +32 -0
  110. package/callbacks/subscriptions/postLaserInitLate.ts +32 -0
  111. package/callbacks/subscriptions/postNPCInitLate.ts +32 -0
  112. package/callbacks/subscriptions/postNPCStateChanged.ts +42 -0
  113. package/callbacks/subscriptions/postNewLevelReordered.ts +22 -0
  114. package/callbacks/subscriptions/postNewRoomEarly.ts +22 -0
  115. package/callbacks/subscriptions/postNewRoomReordered.ts +22 -0
  116. package/callbacks/subscriptions/postPEffectUpdateReordered.ts +40 -0
  117. package/callbacks/subscriptions/postPickupCollect.ts +35 -0
  118. package/callbacks/subscriptions/postPickupInitFirst.ts +32 -0
  119. package/callbacks/subscriptions/postPickupInitLate.ts +32 -0
  120. package/callbacks/subscriptions/postPickupStateChanged.ts +40 -0
  121. package/callbacks/subscriptions/postPitRender.ts +35 -0
  122. package/callbacks/subscriptions/postPitUpdate.ts +35 -0
  123. package/callbacks/subscriptions/postPlayerChangeHealth.ts +49 -0
  124. package/callbacks/subscriptions/postPlayerChangeType.ts +40 -0
  125. package/callbacks/subscriptions/postPlayerCollectibleAdded.d.ts +2 -3
  126. package/callbacks/subscriptions/postPlayerCollectibleAdded.lua +2 -7
  127. package/callbacks/subscriptions/postPlayerCollectibleAdded.ts +38 -0
  128. package/callbacks/subscriptions/postPlayerCollectibleRemoved.d.ts +2 -3
  129. package/callbacks/subscriptions/postPlayerCollectibleRemoved.lua +2 -7
  130. package/callbacks/subscriptions/postPlayerCollectibleRemoved.ts +38 -0
  131. package/callbacks/subscriptions/postPlayerFatalDamage.d.ts +1 -1
  132. package/callbacks/subscriptions/postPlayerFatalDamage.ts +68 -0
  133. package/callbacks/subscriptions/postPlayerInitLate.ts +40 -0
  134. package/callbacks/subscriptions/postPlayerInitReordered.ts +40 -0
  135. package/callbacks/subscriptions/postPlayerRenderReordered.ts +40 -0
  136. package/callbacks/subscriptions/postPlayerUpdateReordered.ts +40 -0
  137. package/callbacks/subscriptions/postPoopRender.ts +35 -0
  138. package/callbacks/subscriptions/postPoopUpdate.ts +35 -0
  139. package/callbacks/subscriptions/postPressurePlateRender.ts +37 -0
  140. package/callbacks/subscriptions/postPressurePlateUpdate.ts +37 -0
  141. package/callbacks/subscriptions/postProjectileInitLate.ts +35 -0
  142. package/callbacks/subscriptions/postPurchase.ts +31 -0
  143. package/callbacks/subscriptions/postRockRender.ts +35 -0
  144. package/callbacks/subscriptions/postRockUpdate.ts +35 -0
  145. package/callbacks/subscriptions/postRoomClearChanged.ts +30 -0
  146. package/callbacks/subscriptions/postSacrifice.ts +43 -0
  147. package/callbacks/subscriptions/postSlotAnimationChanged.ts +40 -0
  148. package/callbacks/subscriptions/postSlotDestroyed.ts +55 -0
  149. package/callbacks/subscriptions/postSlotInit.ts +32 -0
  150. package/callbacks/subscriptions/postSlotRender.ts +32 -0
  151. package/callbacks/subscriptions/postSlotUpdate.ts +32 -0
  152. package/callbacks/subscriptions/postSpikesRender.ts +35 -0
  153. package/callbacks/subscriptions/postSpikesUpdate.ts +35 -0
  154. package/callbacks/subscriptions/postTNTRender.ts +35 -0
  155. package/callbacks/subscriptions/postTNTUpdate.ts +35 -0
  156. package/callbacks/subscriptions/postTearInitLate.ts +32 -0
  157. package/callbacks/subscriptions/postTearInitVeryLate.ts +32 -0
  158. package/callbacks/subscriptions/postTransformation.ts +40 -0
  159. package/callbacks/subscriptions/postTrinketBreak.ts +38 -0
  160. package/callbacks/subscriptions/preBerserkDeath.d.ts +1 -1
  161. package/callbacks/subscriptions/preBerserkDeath.ts +42 -0
  162. package/callbacks/subscriptions/preCustomRevive.d.ts +1 -1
  163. package/callbacks/subscriptions/preCustomRevive.ts +46 -0
  164. package/callbacks/subscriptions/preItemPickup.ts +64 -0
  165. package/callbacks/subscriptions/preNewLevel.ts +24 -0
  166. package/classes/DefaultMap.ts +174 -0
  167. package/classes/ModUpgraded.d.ts +8 -4
  168. package/classes/ModUpgraded.lua +5 -8
  169. package/classes/ModUpgraded.ts +84 -0
  170. package/constants.ts +162 -0
  171. package/constantsFirstLast.ts +217 -0
  172. package/enums/AmbushType.ts +4 -0
  173. package/enums/HealthType.ts +16 -0
  174. package/enums/ModCallbackCustom.d.ts +20 -18
  175. package/enums/ModCallbackCustom.ts +1278 -0
  176. package/enums/PocketItemType.ts +8 -0
  177. package/enums/SerializationType.ts +5 -0
  178. package/enums/SlotDestructionType.ts +4 -0
  179. package/enums/private/CopyableIsaacAPIClassType.ts +7 -0
  180. package/enums/private/SaveDataKey.ts +14 -0
  181. package/enums/private/SerializationBrand.ts +42 -0
  182. package/features/characterHealthConversion.lua +2 -9
  183. package/features/characterHealthConversion.ts +111 -0
  184. package/features/characterStats.ts +61 -0
  185. package/features/debugDisplay/debugDisplay.ts +221 -0
  186. package/features/debugDisplay/exports.ts +368 -0
  187. package/features/debugDisplay/v.ts +65 -0
  188. package/features/deployJSONRoom.ts +743 -0
  189. package/features/disableInputs.ts +193 -0
  190. package/features/disableSound.ts +77 -0
  191. package/features/extraConsoleCommands/commandsDisplay.ts +290 -0
  192. package/features/extraConsoleCommands/commandsSubroutines.lua +1 -1
  193. package/features/extraConsoleCommands/commandsSubroutines.ts +139 -0
  194. package/features/extraConsoleCommands/init.ts +334 -0
  195. package/features/extraConsoleCommands/listCommands.ts +1299 -0
  196. package/features/extraConsoleCommands/v.ts +14 -0
  197. package/features/fadeInRemover.ts +60 -0
  198. package/features/fastReset.ts +75 -0
  199. package/features/forgottenSwitch.ts +50 -0
  200. package/features/getCollectibleItemPoolType.ts +66 -0
  201. package/features/persistentEntities.ts +183 -0
  202. package/features/playerInventory.lua +1 -0
  203. package/features/playerInventory.ts +135 -0
  204. package/features/ponyDetection.ts +74 -0
  205. package/features/preventCollectibleRotation.ts +115 -0
  206. package/features/runInNFrames.ts +148 -0
  207. package/features/saveDataManager/constants.ts +4 -0
  208. package/features/saveDataManager/exports.ts +229 -0
  209. package/features/saveDataManager/load.ts +99 -0
  210. package/features/saveDataManager/main.ts +195 -0
  211. package/features/saveDataManager/maps.ts +13 -0
  212. package/features/saveDataManager/merge.ts +194 -0
  213. package/features/saveDataManager/save.ts +74 -0
  214. package/features/saveDataManager/serializationBrand.ts +16 -0
  215. package/features/sirenHelpers.ts +129 -0
  216. package/features/taintedLazarusPlayers.ts +113 -0
  217. package/featuresInitialized.ts +20 -0
  218. package/functions/ambush.ts +47 -0
  219. package/functions/array.ts +410 -0
  220. package/functions/benchmark.ts +36 -0
  221. package/functions/bitwise.ts +24 -0
  222. package/functions/bombs.ts +12 -0
  223. package/functions/boss.ts +227 -0
  224. package/functions/cacheFlag.ts +12 -0
  225. package/functions/cards.lua +1 -1
  226. package/functions/cards.ts +271 -0
  227. package/functions/challenges.ts +13 -0
  228. package/functions/character.ts +126 -0
  229. package/functions/charge.ts +237 -0
  230. package/functions/chargeBar.ts +67 -0
  231. package/functions/collectibleCacheFlag.ts +90 -0
  232. package/functions/collectibleSet.ts +56 -0
  233. package/functions/collectibleTag.ts +89 -0
  234. package/functions/collectibles.ts +659 -0
  235. package/functions/color.d.ts +1 -1
  236. package/functions/color.lua +0 -7
  237. package/functions/color.ts +128 -0
  238. package/functions/debug.lua +2 -2
  239. package/functions/debug.ts +68 -0
  240. package/functions/deepCopy.lua +46 -51
  241. package/functions/deepCopy.ts +535 -0
  242. package/functions/deepCopyTests.ts +386 -0
  243. package/functions/direction.ts +49 -0
  244. package/functions/doors.lua +1 -2
  245. package/functions/doors.ts +347 -0
  246. package/functions/easing.ts +182 -0
  247. package/functions/eden.ts +47 -0
  248. package/functions/effects.ts +20 -0
  249. package/functions/entity.ts +439 -0
  250. package/functions/entitySpecific.ts +889 -0
  251. package/functions/entityTypes.ts +6 -0
  252. package/functions/enums.ts +146 -0
  253. package/functions/familiars.ts +106 -0
  254. package/functions/flag.ts +165 -0
  255. package/functions/flying.ts +117 -0
  256. package/functions/globals.d.ts +3 -3
  257. package/functions/globals.lua +8 -2
  258. package/functions/globals.ts +242 -0
  259. package/functions/gridEntity.ts +511 -0
  260. package/functions/gridEntitySpecific.ts +112 -0
  261. package/functions/input.ts +139 -0
  262. package/functions/isaacAPIClass.ts +67 -0
  263. package/functions/jsonHelpers.ts +45 -0
  264. package/functions/jsonRoom.ts +100 -0
  265. package/functions/kColor.d.ts +1 -1
  266. package/functions/kColor.lua +0 -7
  267. package/functions/kColor.ts +129 -0
  268. package/functions/language.ts +13 -0
  269. package/functions/level.ts +31 -0
  270. package/functions/log.ts +720 -0
  271. package/functions/map.ts +56 -0
  272. package/functions/math.ts +149 -0
  273. package/functions/mergeTests.ts +288 -0
  274. package/functions/npc.ts +148 -0
  275. package/functions/pickupVariants.ts +60 -0
  276. package/functions/pickups.ts +499 -0
  277. package/functions/pills.lua +1 -1
  278. package/functions/pills.ts +205 -0
  279. package/functions/player.lua +9 -20
  280. package/functions/player.ts +1056 -0
  281. package/functions/playerDataStructures.ts +150 -0
  282. package/functions/playerHealth.lua +28 -39
  283. package/functions/playerHealth.ts +382 -0
  284. package/functions/playerIndex.ts +195 -0
  285. package/functions/pocketItems.ts +149 -0
  286. package/functions/positionVelocity.ts +188 -0
  287. package/functions/random.ts +77 -0
  288. package/functions/revive.ts +201 -0
  289. package/functions/rng.d.ts +1 -1
  290. package/functions/rng.lua +0 -7
  291. package/functions/rng.ts +172 -0
  292. package/functions/roomData.ts +199 -0
  293. package/functions/roomGrid.ts +109 -0
  294. package/functions/roomShape.ts +80 -0
  295. package/functions/rooms.lua +1 -3
  296. package/functions/rooms.ts +648 -0
  297. package/functions/run.ts +36 -0
  298. package/functions/saveFile.ts +128 -0
  299. package/functions/seeds.ts +19 -0
  300. package/functions/serialization.lua +0 -3
  301. package/functions/serialization.ts +91 -0
  302. package/functions/set.ts +95 -0
  303. package/functions/sound.ts +9 -0
  304. package/functions/spawnCollectible.ts +104 -0
  305. package/functions/sprite.ts +107 -0
  306. package/functions/stage.ts +125 -0
  307. package/functions/string.ts +47 -0
  308. package/functions/table.ts +189 -0
  309. package/functions/tears.ts +32 -0
  310. package/functions/transformations.lua +1 -3
  311. package/functions/transformations.ts +131 -0
  312. package/functions/trinketCacheFlag.ts +60 -0
  313. package/functions/trinketGive.ts +157 -0
  314. package/functions/trinkets.ts +215 -0
  315. package/functions/tstlClass.ts +157 -0
  316. package/functions/types.ts +36 -0
  317. package/functions/ui.ts +138 -0
  318. package/functions/utils.d.ts +0 -37
  319. package/functions/utils.lua +0 -35
  320. package/functions/utils.ts +189 -0
  321. package/functions/vector.d.ts +1 -1
  322. package/functions/vector.lua +0 -7
  323. package/functions/vector.ts +126 -0
  324. package/index.ts +172 -0
  325. package/initCustomCallbacks.ts +132 -0
  326. package/initFeatures.ts +39 -0
  327. package/interfaces/AddCallbackParameterCustom.ts +188 -0
  328. package/interfaces/ChargeBarSprites.ts +12 -0
  329. package/interfaces/JSONDoor.d.ts +4 -4
  330. package/interfaces/JSONDoor.ts +13 -0
  331. package/interfaces/JSONEntity.d.ts +5 -5
  332. package/interfaces/JSONEntity.ts +16 -0
  333. package/interfaces/JSONRoom.d.ts +9 -9
  334. package/interfaces/JSONRoom.ts +36 -0
  335. package/interfaces/JSONRooms.ts +12 -0
  336. package/interfaces/JSONSpawn.d.ts +3 -3
  337. package/interfaces/JSONSpawn.ts +14 -0
  338. package/interfaces/PlayerHealth.ts +16 -0
  339. package/interfaces/PocketItemDescription.ts +9 -0
  340. package/interfaces/SaveData.ts +29 -0
  341. package/interfaces/TrinketSituation.ts +9 -0
  342. package/interfaces/private/TSTLClassMetatable.ts +8 -0
  343. package/maps/PHDPillConversions.ts +21 -0
  344. package/maps/cardMap.ts +209 -0
  345. package/maps/characterMap.ts +87 -0
  346. package/maps/collectibleDescriptionMap.ts +732 -0
  347. package/maps/collectibleNameMap.ts +731 -0
  348. package/maps/defaultPlayerStatMap.ts +17 -0
  349. package/maps/falsePHDPillConversions.ts +35 -0
  350. package/maps/gridEntityTypeToBrokenStateMap.ts +50 -0
  351. package/maps/gridEntityXMLMap.ts +176 -0
  352. package/maps/pillEffectMap.ts +88 -0
  353. package/maps/roomShapeToTopLeftWallGridIndexMap.ts +18 -0
  354. package/maps/roomTypeMap.ts +40 -0
  355. package/maps/trinketDescriptionMap.ts +200 -0
  356. package/maps/trinketNameMap.ts +198 -0
  357. package/objects/LRoomShapeToRectangles.ts +44 -0
  358. package/objects/callbackRegisterFunctions.ts +187 -0
  359. package/objects/cardDescriptions.ts +105 -0
  360. package/objects/cardNames.ts +105 -0
  361. package/objects/cardTypes.ts +104 -0
  362. package/objects/challengeNames.ts +52 -0
  363. package/objects/characterNames.ts +48 -0
  364. package/objects/coinSubTypeToValue.ts +14 -0
  365. package/objects/colors.ts +16 -0
  366. package/objects/directionNames.ts +11 -0
  367. package/objects/directionToDegrees.ts +11 -0
  368. package/objects/directionToVector.ts +12 -0
  369. package/objects/doorSlotFlagToDoorSlot.ts +16 -0
  370. package/objects/doorSlotToDirection.ts +14 -0
  371. package/objects/isaacAPIClassTypeToBrand.ts +11 -0
  372. package/objects/isaacAPIClassTypeToCopyFunction.ts +18 -0
  373. package/objects/languageNames.ts +13 -0
  374. package/objects/oppositeDoorSlots.ts +15 -0
  375. package/objects/pillEffectClasses.ts +63 -0
  376. package/objects/pillEffectNames.ts +57 -0
  377. package/objects/pillEffectTypes.ts +62 -0
  378. package/objects/roomShapeBounds.ts +71 -0
  379. package/objects/roomShapeLayoutSizes.ts +45 -0
  380. package/objects/roomShapeToBottomRightPosition.ts +25 -0
  381. package/objects/roomShapeToDoorSlots.ts +83 -0
  382. package/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +127 -0
  383. package/objects/roomShapeToGridWidth.ts +21 -0
  384. package/objects/roomShapeToTopLeftPosition.ts +26 -0
  385. package/objects/roomShapeVolumes.ts +38 -0
  386. package/objects/roomTypeNames.ts +36 -0
  387. package/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +14 -0
  388. package/objects/stageTypeToLetter.ts +15 -0
  389. package/objects/transformationNames.d.ts +0 -1
  390. package/objects/transformationNames.lua +0 -1
  391. package/objects/transformationNames.ts +18 -0
  392. package/package.json +2 -2
  393. package/patchErrorFunctions.ts +92 -0
  394. package/sets/LRoomShapesSet.ts +8 -0
  395. package/sets/bossSets.ts +470 -0
  396. package/sets/charactersThatStartWithAnActiveItemSet.ts +16 -0
  397. package/sets/charactersWithBlackHeartFromEternalHeartSet.ts +7 -0
  398. package/sets/charactersWithFreeDevilDealsSet.ts +4 -0
  399. package/sets/charactersWithNoRedHeartsSet.ts +17 -0
  400. package/sets/charactersWithNoSoulHeartsSet.ts +14 -0
  401. package/sets/chestPickupVariantsSet.ts +16 -0
  402. package/sets/familiarsThatShootPlayerTearsSet.ts +13 -0
  403. package/sets/lostStyleCharactersSet.ts +13 -0
  404. package/sets/mineShaftRoomSubTypesSet.ts +10 -0
  405. package/sets/redHeartSubTypesSet.ts +7 -0
  406. package/sets/sinEntityTypesSet.ts +11 -0
  407. package/sets/singleUseActiveCollectibleTypesSet.ts +13 -0
  408. package/sets/storyBossesSet.ts +17 -0
  409. package/types/AnyEntity.ts +12 -0
  410. package/types/AwaitingTextInput.d.ts +2 -0
  411. package/types/CollectibleIndex.d.ts +1 -1
  412. package/types/CollectibleIndex.ts +16 -0
  413. package/types/PickingUpItem.d.ts +3 -3
  414. package/types/PickingUpItem.ts +89 -0
  415. package/types/PlayerIndex.d.ts +1 -1
  416. package/types/PlayerIndex.ts +13 -0
  417. package/types/private/IsaacAPIClass.d.ts +1 -1
  418. package/types/private/IsaacAPIClass.ts +3 -0
  419. package/types/private/SerializedIsaacAPIClass.d.ts +1 -1
  420. package/types/private/SerializedIsaacAPIClass.ts +3 -0
  421. package/types/private/TSTLClass.d.ts +1 -1
  422. package/types/private/TSTLClass.ts +3 -0
  423. package/upgradeMod.d.ts +2 -2
  424. package/upgradeMod.lua +2 -2
  425. package/upgradeMod.ts +55 -0
@@ -0,0 +1,52 @@
1
+ import { GridEntityType } from "isaac-typescript-definitions";
2
+
3
+ export type PostGridEntityRemoveRegisterParameters = [
4
+ callback: (gridIndex: int, gridEntityType: GridEntityType) => void,
5
+ gridEntityType?: GridEntityType,
6
+ gridEntityVariant?: int,
7
+ ];
8
+
9
+ const subscriptions: PostGridEntityRemoveRegisterParameters[] = [];
10
+
11
+ /** @internal */
12
+ export function postGridEntityRemoveHasSubscriptions(): boolean {
13
+ return subscriptions.length > 0;
14
+ }
15
+
16
+ /** @internal */
17
+ export function postGridEntityRemoveRegister(
18
+ ...args: PostGridEntityRemoveRegisterParameters
19
+ ): void {
20
+ subscriptions.push(args);
21
+ }
22
+
23
+ /** @internal */
24
+ export function postGridEntityRemoveFire(
25
+ gridIndex: int,
26
+ gridEntityType: GridEntityType,
27
+ gridEntityVariant: int,
28
+ ): void {
29
+ for (const [
30
+ callback,
31
+ callbackGridEntityType,
32
+ callbackGridEntityVariant,
33
+ ] of subscriptions) {
34
+ // Handle the optional 2nd callback argument.
35
+ if (
36
+ callbackGridEntityType !== undefined &&
37
+ callbackGridEntityType !== gridEntityType
38
+ ) {
39
+ continue;
40
+ }
41
+
42
+ // Handle the optional 3rd callback argument.
43
+ if (
44
+ callbackGridEntityVariant !== undefined &&
45
+ callbackGridEntityVariant !== gridEntityVariant
46
+ ) {
47
+ continue;
48
+ }
49
+
50
+ callback(gridIndex, gridEntityType);
51
+ }
52
+ }
@@ -0,0 +1,51 @@
1
+ import { GridEntityType } from "isaac-typescript-definitions";
2
+
3
+ export type PostGridEntityRenderRegisterParameters = [
4
+ callback: (gridEntity: GridEntity) => void,
5
+ gridEntityType?: GridEntityType,
6
+ gridEntityVariant?: int,
7
+ ];
8
+
9
+ const subscriptions: PostGridEntityRenderRegisterParameters[] = [];
10
+
11
+ /** @internal */
12
+ export function postGridEntityRenderHasSubscriptions(): boolean {
13
+ return subscriptions.length > 0;
14
+ }
15
+
16
+ /** @internal */
17
+ export function postGridEntityRenderRegister(
18
+ ...args: PostGridEntityRenderRegisterParameters
19
+ ): void {
20
+ subscriptions.push(args);
21
+ }
22
+
23
+ /** @internal */
24
+ export function postGridEntityRenderFire(gridEntity: GridEntity): void {
25
+ const gridEntityType = gridEntity.GetType();
26
+ const gridEntityVariant = gridEntity.GetVariant();
27
+
28
+ for (const [
29
+ callback,
30
+ callbackGridEntityType,
31
+ callbackGridEntityVariant,
32
+ ] of subscriptions) {
33
+ // Handle the optional 2nd callback argument.
34
+ if (
35
+ callbackGridEntityType !== undefined &&
36
+ callbackGridEntityType !== gridEntityType
37
+ ) {
38
+ continue;
39
+ }
40
+
41
+ // Handle the optional 3rd callback argument.
42
+ if (
43
+ callbackGridEntityVariant !== undefined &&
44
+ callbackGridEntityVariant !== gridEntityVariant
45
+ ) {
46
+ continue;
47
+ }
48
+
49
+ callback(gridEntity);
50
+ }
51
+ }
@@ -0,0 +1,55 @@
1
+ import { GridEntityType } from "isaac-typescript-definitions";
2
+
3
+ export type PostGridEntityStateChangedRegisterParameters = [
4
+ callback: (gridEntity: GridEntity, oldState: int, newState: int) => void,
5
+ gridEntityType?: GridEntityType,
6
+ gridEntityVariant?: int,
7
+ ];
8
+
9
+ const subscriptions: PostGridEntityStateChangedRegisterParameters[] = [];
10
+
11
+ /** @internal */
12
+ export function postGridEntityStateChangedHasSubscriptions(): boolean {
13
+ return subscriptions.length > 0;
14
+ }
15
+
16
+ /** @internal */
17
+ export function postGridEntityStateChangedRegister(
18
+ ...args: PostGridEntityStateChangedRegisterParameters
19
+ ): void {
20
+ subscriptions.push(args);
21
+ }
22
+
23
+ /** @internal */
24
+ export function postGridEntityStateChangedFire(
25
+ gridEntity: GridEntity,
26
+ oldState: int,
27
+ newState: int,
28
+ ): void {
29
+ const gridEntityType = gridEntity.GetType();
30
+ const gridEntityVariant = gridEntity.GetVariant();
31
+
32
+ for (const [
33
+ callback,
34
+ callbackGridEntityType,
35
+ callbackGridEntityVariant,
36
+ ] of subscriptions) {
37
+ // Handle the optional 2nd callback argument.
38
+ if (
39
+ callbackGridEntityType !== undefined &&
40
+ callbackGridEntityType !== gridEntityType
41
+ ) {
42
+ continue;
43
+ }
44
+
45
+ // Handle the optional 3rd callback argument.
46
+ if (
47
+ callbackGridEntityVariant !== undefined &&
48
+ callbackGridEntityVariant !== gridEntityVariant
49
+ ) {
50
+ continue;
51
+ }
52
+
53
+ callback(gridEntity, oldState, newState);
54
+ }
55
+ }
@@ -0,0 +1,51 @@
1
+ import { GridEntityType } from "isaac-typescript-definitions";
2
+
3
+ export type PostGridEntityUpdateRegisterParameters = [
4
+ callback: (gridEntity: GridEntity) => void,
5
+ gridEntityType?: GridEntityType,
6
+ gridEntityVariant?: int,
7
+ ];
8
+
9
+ const subscriptions: PostGridEntityUpdateRegisterParameters[] = [];
10
+
11
+ /** @internal */
12
+ export function postGridEntityUpdateHasSubscriptions(): boolean {
13
+ return subscriptions.length > 0;
14
+ }
15
+
16
+ /** @internal */
17
+ export function postGridEntityUpdateRegister(
18
+ ...args: PostGridEntityUpdateRegisterParameters
19
+ ): void {
20
+ subscriptions.push(args);
21
+ }
22
+
23
+ /** @internal */
24
+ export function postGridEntityUpdateFire(gridEntity: GridEntity): void {
25
+ const gridEntityType = gridEntity.GetType();
26
+ const gridEntityVariant = gridEntity.GetVariant();
27
+
28
+ for (const [
29
+ callback,
30
+ callbackGridEntityType,
31
+ callbackGridEntityVariant,
32
+ ] of subscriptions) {
33
+ // Handle the optional 2nd callback argument.
34
+ if (
35
+ callbackGridEntityType !== undefined &&
36
+ callbackGridEntityType !== gridEntityType
37
+ ) {
38
+ continue;
39
+ }
40
+
41
+ // Handle the optional 3rd callback argument.
42
+ if (
43
+ callbackGridEntityVariant !== undefined &&
44
+ callbackGridEntityVariant !== gridEntityVariant
45
+ ) {
46
+ continue;
47
+ }
48
+
49
+ callback(gridEntity);
50
+ }
51
+ }
@@ -0,0 +1,48 @@
1
+ import { PlayerType, PlayerVariant } from "isaac-typescript-definitions";
2
+
3
+ export type PostHolyMantleRemovedRegisterParameters = [
4
+ callback: (
5
+ player: EntityPlayer,
6
+ oldNumHolyMantles: int,
7
+ newNumHolyMantles: int,
8
+ ) => void,
9
+ playerVariant?: PlayerVariant,
10
+ character?: PlayerType,
11
+ ];
12
+
13
+ const subscriptions: PostHolyMantleRemovedRegisterParameters[] = [];
14
+
15
+ /** @internal */
16
+ export function postHolyMantleRemovedHasSubscriptions(): boolean {
17
+ return subscriptions.length > 0;
18
+ }
19
+
20
+ /** @internal */
21
+ export function postHolyMantleRemovedRegister(
22
+ ...args: PostHolyMantleRemovedRegisterParameters
23
+ ): void {
24
+ subscriptions.push(args);
25
+ }
26
+
27
+ /** @internal */
28
+ export function postHolyMantleRemovedFire(
29
+ player: EntityPlayer,
30
+ oldNumHolyMantles: int,
31
+ newNumHolyMantles: int,
32
+ ): void {
33
+ const character = player.GetPlayerType();
34
+
35
+ for (const [callback, callbackVariant, callbackCharacter] of subscriptions) {
36
+ // Handle the optional 2nd callback argument.
37
+ if (callbackVariant !== undefined && callbackVariant !== player.Variant) {
38
+ continue;
39
+ }
40
+
41
+ // Handle the optional 3rd callback argument.
42
+ if (callbackCharacter !== undefined && callbackCharacter !== character) {
43
+ continue;
44
+ }
45
+
46
+ callback(player, oldNumHolyMantles, newNumHolyMantles);
47
+ }
48
+ }
@@ -0,0 +1,43 @@
1
+ import { ActiveSlot, CollectibleType } from "isaac-typescript-definitions";
2
+
3
+ export type PostItemDischargedRegisterParameters = [
4
+ callback: (
5
+ player: EntityPlayer,
6
+ collectibleType: CollectibleType,
7
+ activeSlot: ActiveSlot,
8
+ ) => void,
9
+ collectibleType?: CollectibleType,
10
+ ];
11
+
12
+ const subscriptions: PostItemDischargedRegisterParameters[] = [];
13
+
14
+ /** @internal */
15
+ export function postItemDischargeHasSubscriptions(): boolean {
16
+ return subscriptions.length > 0;
17
+ }
18
+
19
+ /** @internal */
20
+ export function postItemDischargeRegister(
21
+ ...args: PostItemDischargedRegisterParameters
22
+ ): void {
23
+ subscriptions.push(args);
24
+ }
25
+
26
+ /** @internal */
27
+ export function postItemDischargeFire(
28
+ player: EntityPlayer,
29
+ collectibleType: CollectibleType,
30
+ activeSlot: ActiveSlot,
31
+ ): void {
32
+ for (const [callback, callbackCollectibleType] of subscriptions) {
33
+ // Handle the optional 2nd callback argument.
34
+ if (
35
+ callbackCollectibleType !== undefined &&
36
+ callbackCollectibleType !== collectibleType
37
+ ) {
38
+ continue;
39
+ }
40
+
41
+ callback(player, collectibleType, activeSlot);
42
+ }
43
+ }
@@ -0,0 +1,64 @@
1
+ import {
2
+ CollectibleType,
3
+ ItemType,
4
+ TrinketType,
5
+ } from "isaac-typescript-definitions";
6
+ import {
7
+ PickingUpItem,
8
+ PickingUpItemCollectible,
9
+ PickingUpItemTrinket,
10
+ } from "../../types/PickingUpItem";
11
+
12
+ export type PostItemPickupRegisterParameters =
13
+ | [callback: (player: EntityPlayer, pickingUpItem: PickingUpItem) => void]
14
+ | [
15
+ callback: (
16
+ player: EntityPlayer,
17
+ pickingUpItem: PickingUpItemCollectible,
18
+ ) => void,
19
+ itemType: ItemType.PASSIVE | ItemType.ACTIVE | ItemType.FAMILIAR,
20
+ collectibleType?: CollectibleType,
21
+ ]
22
+ | [
23
+ callback: (
24
+ player: EntityPlayer,
25
+ pickingUpItem: PickingUpItemTrinket,
26
+ ) => void,
27
+ itemType: ItemType.TRINKET,
28
+ trinketType?: TrinketType,
29
+ ];
30
+
31
+ const subscriptions: PostItemPickupRegisterParameters[] = [];
32
+
33
+ /** @internal */
34
+ export function postItemPickupHasSubscriptions(): boolean {
35
+ return subscriptions.length > 0;
36
+ }
37
+
38
+ /** @internal */
39
+ export function postItemPickupRegister(
40
+ ...args: PostItemPickupRegisterParameters
41
+ ): void {
42
+ subscriptions.push(args);
43
+ }
44
+
45
+ /** @internal */
46
+ export function postItemPickupFire(
47
+ player: EntityPlayer,
48
+ pickingUpItem: PickingUpItem,
49
+ ): void {
50
+ for (const [callback, itemType, subType] of subscriptions) {
51
+ // Handle the optional 2nd callback argument.
52
+ if (itemType !== undefined && itemType !== pickingUpItem.itemType) {
53
+ continue;
54
+ }
55
+
56
+ // Handle the optional 3rd callback argument.
57
+ if (subType !== undefined && subType !== pickingUpItem.subType) {
58
+ continue;
59
+ }
60
+
61
+ // @ts-expect-error TypeScript isn't smart enough to treat the above checks as type narrowing.
62
+ callback(player, pickingUpItem);
63
+ }
64
+ }
@@ -0,0 +1,32 @@
1
+ import { KnifeVariant } from "isaac-typescript-definitions";
2
+
3
+ export type PostKnifeInitLateRegisterParameters = [
4
+ callback: (knife: EntityKnife) => void,
5
+ knifeVariant?: KnifeVariant,
6
+ ];
7
+
8
+ const subscriptions: PostKnifeInitLateRegisterParameters[] = [];
9
+
10
+ /** @internal */
11
+ export function postKnifeInitLateHasSubscriptions(): boolean {
12
+ return subscriptions.length > 0;
13
+ }
14
+
15
+ /** @internal */
16
+ export function postKnifeInitLateRegister(
17
+ ...args: PostKnifeInitLateRegisterParameters
18
+ ): void {
19
+ subscriptions.push(args);
20
+ }
21
+
22
+ /** @internal */
23
+ export function postKnifeInitLateFire(knife: EntityKnife): void {
24
+ for (const [callback, knifeVariant] of subscriptions) {
25
+ // Handle the optional 2nd callback argument.
26
+ if (knifeVariant !== undefined && knifeVariant !== knife.Variant) {
27
+ continue;
28
+ }
29
+
30
+ callback(knife);
31
+ }
32
+ }
@@ -0,0 +1,32 @@
1
+ import { LaserVariant } from "isaac-typescript-definitions";
2
+
3
+ export type PostLaserInitLateRegisterParameters = [
4
+ callback: (laser: EntityLaser) => void,
5
+ laserVariant?: LaserVariant,
6
+ ];
7
+
8
+ const subscriptions: PostLaserInitLateRegisterParameters[] = [];
9
+
10
+ /** @internal */
11
+ export function postLaserInitLateHasSubscriptions(): boolean {
12
+ return subscriptions.length > 0;
13
+ }
14
+
15
+ /** @internal */
16
+ export function postLaserInitLateRegister(
17
+ ...args: PostLaserInitLateRegisterParameters
18
+ ): void {
19
+ subscriptions.push(args);
20
+ }
21
+
22
+ /** @internal */
23
+ export function postLaserInitLateFire(laser: EntityLaser): void {
24
+ for (const [callback, laserVariant] of subscriptions) {
25
+ // Handle the optional 2nd callback argument.
26
+ if (laserVariant !== undefined && laserVariant !== laser.Variant) {
27
+ continue;
28
+ }
29
+
30
+ callback(laser);
31
+ }
32
+ }
@@ -0,0 +1,32 @@
1
+ import { EntityType } from "isaac-typescript-definitions";
2
+
3
+ export type PostNPCInitLateRegisterParameters = [
4
+ callback: (npc: EntityNPC) => void,
5
+ entityType?: EntityType,
6
+ ];
7
+
8
+ const subscriptions: PostNPCInitLateRegisterParameters[] = [];
9
+
10
+ /** @internal */
11
+ export function postNPCInitLateHasSubscriptions(): boolean {
12
+ return subscriptions.length > 0;
13
+ }
14
+
15
+ /** @internal */
16
+ export function postNPCInitLateRegister(
17
+ ...args: PostNPCInitLateRegisterParameters
18
+ ): void {
19
+ subscriptions.push(args);
20
+ }
21
+
22
+ /** @internal */
23
+ export function postNPCInitLateFire(npc: EntityNPC): void {
24
+ for (const [callback, entityType] of subscriptions) {
25
+ // Handle the optional 2nd callback argument.
26
+ if (entityType !== undefined && entityType !== npc.Type) {
27
+ continue;
28
+ }
29
+
30
+ callback(npc);
31
+ }
32
+ }
@@ -0,0 +1,42 @@
1
+ import { EntityType } from "isaac-typescript-definitions";
2
+
3
+ export type PostNPCStateChangedRegisterParameters = [
4
+ callback: (npc: EntityNPC, previousState: int, currentState: int) => void,
5
+ entityType?: EntityType,
6
+ variant?: int,
7
+ ];
8
+
9
+ const subscriptions: PostNPCStateChangedRegisterParameters[] = [];
10
+
11
+ /** @internal */
12
+ export function postNPCStateChangedHasSubscriptions(): boolean {
13
+ return subscriptions.length > 0;
14
+ }
15
+
16
+ /** @internal */
17
+ export function postNPCStateChangedRegister(
18
+ ...args: PostNPCStateChangedRegisterParameters
19
+ ): void {
20
+ subscriptions.push(args);
21
+ }
22
+
23
+ /** @internal */
24
+ export function postNPCStateChangedFire(
25
+ npc: EntityNPC,
26
+ previousState: int,
27
+ currentState: int,
28
+ ): void {
29
+ for (const [callback, entityType, variant] of subscriptions) {
30
+ // Handle the optional 2nd callback argument.
31
+ if (entityType !== undefined && entityType !== npc.Type) {
32
+ continue;
33
+ }
34
+
35
+ // Handle the optional 3rd callback argument.
36
+ if (variant !== undefined && variant !== npc.Variant) {
37
+ continue;
38
+ }
39
+
40
+ callback(npc, previousState, currentState);
41
+ }
42
+ }
@@ -0,0 +1,22 @@
1
+ export type PostNewLevelReorderedRegisterParameters = [callback: () => void];
2
+
3
+ const subscriptions: PostNewLevelReorderedRegisterParameters[] = [];
4
+
5
+ /** @internal */
6
+ export function postNewLevelReorderedHasSubscriptions(): boolean {
7
+ return subscriptions.length > 0;
8
+ }
9
+
10
+ /** @internal */
11
+ export function postNewLevelReorderedRegister(
12
+ ...args: PostNewLevelReorderedRegisterParameters
13
+ ): void {
14
+ subscriptions.push(args);
15
+ }
16
+
17
+ /** @internal */
18
+ export function postNewLevelReorderedFire(): void {
19
+ for (const [callback] of subscriptions) {
20
+ callback();
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ export type PostNewRoomEarlyRegisterParameters = [callback: () => void];
2
+
3
+ const subscriptions: PostNewRoomEarlyRegisterParameters[] = [];
4
+
5
+ /** @internal */
6
+ export function postNewRoomEarlyHasSubscriptions(): boolean {
7
+ return subscriptions.length > 0;
8
+ }
9
+
10
+ /** @internal */
11
+ export function postNewRoomEarlyRegister(
12
+ ...args: PostNewRoomEarlyRegisterParameters
13
+ ): void {
14
+ subscriptions.push(args);
15
+ }
16
+
17
+ /** @internal */
18
+ export function postNewRoomEarlyFire(): void {
19
+ for (const [callback] of subscriptions) {
20
+ callback();
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ export type PostNewRoomReorderedRegisterParameters = [callback: () => void];
2
+
3
+ const subscriptions: PostNewRoomReorderedRegisterParameters[] = [];
4
+
5
+ /** @internal */
6
+ export function postNewRoomReorderedHasSubscriptions(): boolean {
7
+ return subscriptions.length > 0;
8
+ }
9
+
10
+ /** @internal */
11
+ export function postNewRoomReorderedRegister(
12
+ ...args: PostNewRoomReorderedRegisterParameters
13
+ ): void {
14
+ subscriptions.push(args);
15
+ }
16
+
17
+ /** @internal */
18
+ export function postNewRoomReorderedFire(): void {
19
+ for (const [callback] of subscriptions) {
20
+ callback();
21
+ }
22
+ }
@@ -0,0 +1,40 @@
1
+ import { PlayerType, PlayerVariant } from "isaac-typescript-definitions";
2
+
3
+ export type PostPEffectUpdateReorderedRegisterParameters = [
4
+ callback: (player: EntityPlayer) => void,
5
+ playerVariant?: PlayerVariant,
6
+ character?: PlayerType,
7
+ ];
8
+
9
+ const subscriptions: PostPEffectUpdateReorderedRegisterParameters[] = [];
10
+
11
+ /** @internal */
12
+ export function postPEffectUpdateReorderedHasSubscriptions(): boolean {
13
+ return subscriptions.length > 0;
14
+ }
15
+
16
+ /** @internal */
17
+ export function postPEffectUpdateReorderedRegister(
18
+ ...args: PostPEffectUpdateReorderedRegisterParameters
19
+ ): void {
20
+ subscriptions.push(args);
21
+ }
22
+
23
+ /** @internal */
24
+ export function postPEffectUpdateReorderedFire(player: EntityPlayer): void {
25
+ const character = player.GetPlayerType();
26
+
27
+ for (const [callback, callbackVariant, callbackCharacter] of subscriptions) {
28
+ // Handle the optional 2nd callback argument.
29
+ if (callbackVariant !== undefined && callbackVariant !== player.Variant) {
30
+ continue;
31
+ }
32
+
33
+ // Handle the optional 3rd callback argument.
34
+ if (callbackCharacter !== undefined && callbackCharacter !== character) {
35
+ continue;
36
+ }
37
+
38
+ callback(player);
39
+ }
40
+ }
@@ -0,0 +1,35 @@
1
+ import { PickupVariant } from "isaac-typescript-definitions";
2
+
3
+ export type PostPickupCollectRegisterParameters = [
4
+ callback: (pickup: EntityPickup, player: EntityPlayer) => void,
5
+ pickupVariant?: PickupVariant,
6
+ ];
7
+
8
+ const subscriptions: PostPickupCollectRegisterParameters[] = [];
9
+
10
+ /** @internal */
11
+ export function postPickupCollectHasSubscriptions(): boolean {
12
+ return subscriptions.length > 0;
13
+ }
14
+
15
+ /** @internal */
16
+ export function postPickupCollectRegister(
17
+ ...args: PostPickupCollectRegisterParameters
18
+ ): void {
19
+ subscriptions.push(args);
20
+ }
21
+
22
+ /** @internal */
23
+ export function postPickupCollectFire(
24
+ pickup: EntityPickup,
25
+ player: EntityPlayer,
26
+ ): void {
27
+ for (const [callback, pickupVariant] of subscriptions) {
28
+ // Handle the optional 2nd callback argument.
29
+ if (pickupVariant !== undefined && pickupVariant !== pickup.Variant) {
30
+ continue;
31
+ }
32
+
33
+ callback(pickup, player);
34
+ }
35
+ }
@@ -0,0 +1,32 @@
1
+ import { PickupVariant } from "isaac-typescript-definitions";
2
+
3
+ export type PostPickupInitFirstRegisterParameters = [
4
+ callback: (pickup: EntityPickup) => void,
5
+ pickupVariant?: PickupVariant,
6
+ ];
7
+
8
+ const subscriptions: PostPickupInitFirstRegisterParameters[] = [];
9
+
10
+ /** @internal */
11
+ export function postPickupInitFirstHasSubscriptions(): boolean {
12
+ return subscriptions.length > 0;
13
+ }
14
+
15
+ /** @internal */
16
+ export function postPickupInitFirstRegister(
17
+ ...args: PostPickupInitFirstRegisterParameters
18
+ ): void {
19
+ subscriptions.push(args);
20
+ }
21
+
22
+ /** @internal */
23
+ export function postPickupInitFirstFire(pickup: EntityPickup): void {
24
+ for (const [callback, pickupVariant] of subscriptions) {
25
+ // Handle the optional 2nd callback argument.
26
+ if (pickupVariant !== undefined && pickupVariant !== pickup.Variant) {
27
+ continue;
28
+ }
29
+
30
+ callback(pickup);
31
+ }
32
+ }