isaacscript-common 18.2.1 → 18.3.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 (359) hide show
  1. package/dist/index.d.ts +179 -119
  2. package/dist/isaacscript-common.lua +464 -416
  3. package/dist/src/callbackClasses.d.ts +2 -0
  4. package/dist/src/callbackClasses.d.ts.map +1 -1
  5. package/dist/src/callbackClasses.lua +10 -0
  6. package/dist/src/callbacks.d.ts +101 -99
  7. package/dist/src/callbacks.d.ts.map +1 -1
  8. package/dist/src/callbacks.lua +2 -0
  9. package/dist/src/classes/ModFeature.d.ts +2 -2
  10. package/dist/src/classes/ModFeature.d.ts.map +1 -1
  11. package/dist/src/classes/ModFeature.lua +18 -17
  12. package/dist/src/classes/ModUpgradedBase.d.ts.map +1 -1
  13. package/dist/src/classes/ModUpgradedBase.lua +10 -10
  14. package/dist/src/classes/callbacks/EntityTakeDmgFilter.lua +1 -1
  15. package/dist/src/classes/callbacks/EntityTakeDmgPlayer.d.ts.map +1 -1
  16. package/dist/src/classes/callbacks/EntityTakeDmgPlayer.lua +1 -1
  17. package/dist/src/classes/callbacks/InputActionFilter.d.ts +11 -0
  18. package/dist/src/classes/callbacks/InputActionFilter.d.ts.map +1 -0
  19. package/dist/src/classes/callbacks/InputActionFilter.lua +23 -0
  20. package/dist/src/classes/callbacks/InputActionPlayer.d.ts +11 -0
  21. package/dist/src/classes/callbacks/InputActionPlayer.d.ts.map +1 -0
  22. package/dist/src/classes/callbacks/InputActionPlayer.lua +33 -0
  23. package/dist/src/classes/callbacks/PostAmbushFinished.lua +1 -1
  24. package/dist/src/classes/callbacks/PostAmbushStarted.lua +1 -1
  25. package/dist/src/classes/callbacks/PostBombExploded.lua +1 -1
  26. package/dist/src/classes/callbacks/PostBombInitLate.lua +1 -1
  27. package/dist/src/classes/callbacks/PostBoneSwing.lua +1 -1
  28. package/dist/src/classes/callbacks/PostCollectibleEmpty.d.ts.map +1 -1
  29. package/dist/src/classes/callbacks/PostCollectibleEmpty.lua +1 -1
  30. package/dist/src/classes/callbacks/PostCollectibleInitFirst.d.ts.map +1 -1
  31. package/dist/src/classes/callbacks/PostCollectibleInitFirst.lua +1 -1
  32. package/dist/src/classes/callbacks/PostCursedTeleport.d.ts +2 -2
  33. package/dist/src/classes/callbacks/PostCursedTeleport.d.ts.map +1 -1
  34. package/dist/src/classes/callbacks/PostCursedTeleport.lua +19 -21
  35. package/dist/src/classes/callbacks/PostDiceRoomActivated.d.ts.map +1 -1
  36. package/dist/src/classes/callbacks/PostDiceRoomActivated.lua +1 -1
  37. package/dist/src/classes/callbacks/PostDoorRender.lua +1 -1
  38. package/dist/src/classes/callbacks/PostDoorUpdate.lua +1 -1
  39. package/dist/src/classes/callbacks/PostEffectInitLate.lua +1 -1
  40. package/dist/src/classes/callbacks/PostEffectStateChanged.lua +1 -1
  41. package/dist/src/classes/callbacks/PostFamiliarInitLate.lua +1 -1
  42. package/dist/src/classes/callbacks/PostFamiliarStateChanged.lua +1 -1
  43. package/dist/src/classes/callbacks/PostGreedModeWave.lua +1 -1
  44. package/dist/src/classes/callbacks/PostHolyMantleRemoved.lua +1 -1
  45. package/dist/src/classes/callbacks/PostItemDischarge.d.ts.map +1 -1
  46. package/dist/src/classes/callbacks/PostItemDischarge.lua +2 -2
  47. package/dist/src/classes/callbacks/PostKnifeInitLate.lua +1 -1
  48. package/dist/src/classes/callbacks/PostLaserInitLate.lua +1 -1
  49. package/dist/src/classes/callbacks/PostNPCDeathFilter.lua +1 -1
  50. package/dist/src/classes/callbacks/PostNPCInitFilter.lua +1 -1
  51. package/dist/src/classes/callbacks/PostNPCInitLate.lua +1 -1
  52. package/dist/src/classes/callbacks/PostNPCRenderFilter.lua +1 -1
  53. package/dist/src/classes/callbacks/PostNPCStateChanged.lua +1 -1
  54. package/dist/src/classes/callbacks/PostNPCUpdateFilter.lua +1 -1
  55. package/dist/src/classes/callbacks/PostNewRoomEarly.lua +1 -1
  56. package/dist/src/classes/callbacks/PostPickupCollect.lua +1 -1
  57. package/dist/src/classes/callbacks/PostPickupInitFirst.lua +1 -1
  58. package/dist/src/classes/callbacks/PostPickupInitLate.lua +1 -1
  59. package/dist/src/classes/callbacks/PostPickupStateChanged.lua +1 -1
  60. package/dist/src/classes/callbacks/PostPitRender.lua +1 -1
  61. package/dist/src/classes/callbacks/PostPitUpdate.lua +1 -1
  62. package/dist/src/classes/callbacks/PostPlayerChangeHealth.lua +1 -1
  63. package/dist/src/classes/callbacks/PostPlayerChangeStat.lua +1 -1
  64. package/dist/src/classes/callbacks/PostPlayerChangeType.lua +1 -1
  65. package/dist/src/classes/callbacks/PostPlayerFatalDamage.d.ts +1 -1
  66. package/dist/src/classes/callbacks/PostPlayerFatalDamage.d.ts.map +1 -1
  67. package/dist/src/classes/callbacks/PostPlayerFatalDamage.lua +19 -21
  68. package/dist/src/classes/callbacks/PostPlayerInitFirst.lua +1 -1
  69. package/dist/src/classes/callbacks/PostPlayerInitLate.lua +1 -1
  70. package/dist/src/classes/callbacks/PostPoopRender.lua +1 -1
  71. package/dist/src/classes/callbacks/PostPoopUpdate.lua +1 -1
  72. package/dist/src/classes/callbacks/PostPressurePlateRender.lua +1 -1
  73. package/dist/src/classes/callbacks/PostPressurePlateUpdate.lua +1 -1
  74. package/dist/src/classes/callbacks/PostProjectileInitLate.lua +1 -1
  75. package/dist/src/classes/callbacks/PostPurchase.lua +1 -1
  76. package/dist/src/classes/callbacks/PostRockRender.lua +1 -1
  77. package/dist/src/classes/callbacks/PostRockUpdate.lua +1 -1
  78. package/dist/src/classes/callbacks/PostRoomClearChanged.lua +2 -2
  79. package/dist/src/classes/callbacks/PostSacrifice.d.ts.map +1 -1
  80. package/dist/src/classes/callbacks/PostSacrifice.lua +4 -8
  81. package/dist/src/classes/callbacks/PostSlotCollision.lua +1 -1
  82. package/dist/src/classes/callbacks/PostSlotDestroyed.d.ts.map +1 -1
  83. package/dist/src/classes/callbacks/PostSlotDestroyed.lua +2 -2
  84. package/dist/src/classes/callbacks/PostSpikesRender.lua +1 -1
  85. package/dist/src/classes/callbacks/PostSpikesUpdate.lua +1 -1
  86. package/dist/src/classes/callbacks/PostTNTRender.lua +1 -1
  87. package/dist/src/classes/callbacks/PostTNTUpdate.lua +1 -1
  88. package/dist/src/classes/callbacks/PostTearInitLate.lua +1 -1
  89. package/dist/src/classes/callbacks/PostTearInitVeryLate.lua +1 -1
  90. package/dist/src/classes/callbacks/PostTransformation.lua +1 -1
  91. package/dist/src/classes/callbacks/PostTrinketBreak.d.ts.map +1 -1
  92. package/dist/src/classes/callbacks/PostTrinketBreak.lua +5 -11
  93. package/dist/src/classes/callbacks/PreBerserkDeath.lua +1 -1
  94. package/dist/src/classes/callbacks/PreGetPedestal.d.ts.map +1 -1
  95. package/dist/src/classes/callbacks/PreGetPedestal.lua +1 -1
  96. package/dist/src/classes/callbacks/PreNPCCollisionFilter.lua +1 -1
  97. package/dist/src/classes/callbacks/PreNPCUpdateFilter.lua +1 -1
  98. package/dist/src/classes/callbacks/PreNewLevel.lua +1 -1
  99. package/dist/src/classes/features/callbackLogic/CustomGridEntities.d.ts.map +1 -1
  100. package/dist/src/classes/features/callbackLogic/CustomGridEntities.lua +2 -2
  101. package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts +2 -2
  102. package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts.map +1 -1
  103. package/dist/src/classes/features/callbackLogic/CustomRevive.lua +5 -5
  104. package/dist/src/classes/features/callbackLogic/EsauJrDetection.d.ts.map +1 -1
  105. package/dist/src/classes/features/callbackLogic/EsauJrDetection.lua +1 -1
  106. package/dist/src/classes/features/callbackLogic/FlipDetection.d.ts.map +1 -1
  107. package/dist/src/classes/features/callbackLogic/FlipDetection.lua +1 -1
  108. package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.d.ts.map +1 -1
  109. package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.lua +1 -1
  110. package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.d.ts.map +1 -1
  111. package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.lua +1 -1
  112. package/dist/src/classes/features/callbackLogic/GridEntityRenderDetection.d.ts.map +1 -1
  113. package/dist/src/classes/features/callbackLogic/GridEntityRenderDetection.lua +1 -1
  114. package/dist/src/classes/features/callbackLogic/GridEntityUpdateDetection.d.ts.map +1 -1
  115. package/dist/src/classes/features/callbackLogic/GridEntityUpdateDetection.lua +2 -2
  116. package/dist/src/classes/features/callbackLogic/ItemPickupDetection.d.ts +1 -1
  117. package/dist/src/classes/features/callbackLogic/ItemPickupDetection.d.ts.map +1 -1
  118. package/dist/src/classes/features/callbackLogic/ItemPickupDetection.lua +4 -3
  119. package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.d.ts +8 -3
  120. package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.d.ts.map +1 -1
  121. package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.lua +16 -21
  122. package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.d.ts.map +1 -1
  123. package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.lua +2 -2
  124. package/dist/src/classes/features/callbackLogic/SlotRenderDetection.d.ts.map +1 -1
  125. package/dist/src/classes/features/callbackLogic/SlotRenderDetection.lua +1 -1
  126. package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.d.ts.map +1 -1
  127. package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.lua +2 -2
  128. package/dist/src/classes/features/other/CharacterHealthConversion.d.ts.map +1 -1
  129. package/dist/src/classes/features/other/CharacterHealthConversion.lua +2 -2
  130. package/dist/src/classes/features/other/CharacterStats.lua +1 -1
  131. package/dist/src/classes/features/other/CollectibleItemPoolType.d.ts.map +1 -1
  132. package/dist/src/classes/features/other/CollectibleItemPoolType.lua +1 -1
  133. package/dist/src/classes/features/other/CustomHotkeys.lua +1 -1
  134. package/dist/src/classes/features/other/CustomItemPools.lua +1 -1
  135. package/dist/src/classes/features/other/CustomPickups.d.ts.map +1 -1
  136. package/dist/src/classes/features/other/CustomPickups.lua +1 -1
  137. package/dist/src/classes/features/other/CustomStages.d.ts.map +1 -1
  138. package/dist/src/classes/features/other/CustomStages.lua +2 -2
  139. package/dist/src/classes/features/other/CustomTrapdoors.d.ts.map +1 -1
  140. package/dist/src/classes/features/other/CustomTrapdoors.lua +2 -2
  141. package/dist/src/classes/features/other/DisableAllSound.lua +1 -1
  142. package/dist/src/classes/features/other/DisableInputs.d.ts.map +1 -1
  143. package/dist/src/classes/features/other/DisableInputs.lua +1 -1
  144. package/dist/src/classes/features/other/ExtraConsoleCommands.d.ts +1 -1
  145. package/dist/src/classes/features/other/ExtraConsoleCommands.d.ts.map +1 -1
  146. package/dist/src/classes/features/other/ExtraConsoleCommands.lua +17 -16
  147. package/dist/src/classes/features/other/FadeInRemover.lua +1 -1
  148. package/dist/src/classes/features/other/FastReset.lua +1 -1
  149. package/dist/src/classes/features/other/ModdedElementDetection.lua +1 -1
  150. package/dist/src/classes/features/other/NoSirenSteal.d.ts.map +1 -1
  151. package/dist/src/classes/features/other/NoSirenSteal.lua +1 -1
  152. package/dist/src/classes/features/other/Pause.d.ts.map +1 -1
  153. package/dist/src/classes/features/other/Pause.lua +1 -1
  154. package/dist/src/classes/features/other/PersistentEntities.lua +2 -2
  155. package/dist/src/classes/features/other/PickupIndexCreation.d.ts.map +1 -1
  156. package/dist/src/classes/features/other/PickupIndexCreation.lua +1 -1
  157. package/dist/src/classes/features/other/PlayerInventory.lua +1 -1
  158. package/dist/src/classes/features/other/PonyDetection.lua +1 -1
  159. package/dist/src/classes/features/other/PressInput.d.ts.map +1 -1
  160. package/dist/src/classes/features/other/PressInput.lua +1 -1
  161. package/dist/src/classes/features/other/PreventChildEntities.lua +1 -1
  162. package/dist/src/classes/features/other/PreventCollectibleRotation.d.ts.map +1 -1
  163. package/dist/src/classes/features/other/PreventCollectibleRotation.lua +1 -1
  164. package/dist/src/classes/features/other/PreventGridEntityRespawn.d.ts.map +1 -1
  165. package/dist/src/classes/features/other/PreventGridEntityRespawn.lua +2 -2
  166. package/dist/src/classes/features/other/RoomClearFrame.lua +1 -1
  167. package/dist/src/classes/features/other/RoomHistory.lua +1 -1
  168. package/dist/src/classes/features/other/RunInNFrames.lua +1 -1
  169. package/dist/src/classes/features/other/RunNextRoom.lua +1 -1
  170. package/dist/src/classes/features/other/SaveDataManager.d.ts.map +1 -1
  171. package/dist/src/classes/features/other/SaveDataManager.lua +2 -2
  172. package/dist/src/classes/features/other/StageHistory.d.ts.map +1 -1
  173. package/dist/src/classes/features/other/StageHistory.lua +1 -1
  174. package/dist/src/classes/features/other/TaintedLazarusPlayers.lua +1 -1
  175. package/dist/src/classes/features/other/debugDisplay/DebugDisplayBomb.lua +1 -1
  176. package/dist/src/classes/features/other/debugDisplay/DebugDisplayDoor.lua +1 -1
  177. package/dist/src/classes/features/other/debugDisplay/DebugDisplayEffect.lua +1 -1
  178. package/dist/src/classes/features/other/debugDisplay/DebugDisplayFamiliar.lua +1 -1
  179. package/dist/src/classes/features/other/debugDisplay/DebugDisplayKnife.lua +1 -1
  180. package/dist/src/classes/features/other/debugDisplay/DebugDisplayLaser.lua +1 -1
  181. package/dist/src/classes/features/other/debugDisplay/DebugDisplayNPC.lua +1 -1
  182. package/dist/src/classes/features/other/debugDisplay/DebugDisplayPickup.lua +1 -1
  183. package/dist/src/classes/features/other/debugDisplay/DebugDisplayPit.lua +1 -1
  184. package/dist/src/classes/features/other/debugDisplay/DebugDisplayPlayer.lua +1 -1
  185. package/dist/src/classes/features/other/debugDisplay/DebugDisplayPoop.lua +1 -1
  186. package/dist/src/classes/features/other/debugDisplay/DebugDisplayPressurePlate.lua +1 -1
  187. package/dist/src/classes/features/other/debugDisplay/DebugDisplayProjectile.lua +1 -1
  188. package/dist/src/classes/features/other/debugDisplay/DebugDisplayRock.lua +1 -1
  189. package/dist/src/classes/features/other/debugDisplay/DebugDisplaySlot.lua +1 -1
  190. package/dist/src/classes/features/other/debugDisplay/DebugDisplaySpikes.lua +1 -1
  191. package/dist/src/classes/features/other/debugDisplay/DebugDisplayTNT.lua +1 -1
  192. package/dist/src/classes/features/other/debugDisplay/DebugDisplayTear.lua +1 -1
  193. package/dist/src/classes/private/CustomCallback.d.ts +2 -2
  194. package/dist/src/classes/private/CustomCallback.d.ts.map +1 -1
  195. package/dist/src/classes/private/CustomCallback.lua +7 -10
  196. package/dist/src/enums/ModCallbackCustom.d.ts +141 -99
  197. package/dist/src/enums/ModCallbackCustom.d.ts.map +1 -1
  198. package/dist/src/enums/ModCallbackCustom.lua +103 -99
  199. package/dist/src/functions/array.d.ts +5 -1
  200. package/dist/src/functions/array.d.ts.map +1 -1
  201. package/dist/src/functions/array.lua +17 -8
  202. package/dist/src/functions/decorators.d.ts.map +1 -1
  203. package/dist/src/functions/decorators.lua +12 -22
  204. package/dist/src/functions/logMisc.d.ts +1 -0
  205. package/dist/src/functions/logMisc.d.ts.map +1 -1
  206. package/dist/src/functions/logMisc.lua +2 -1
  207. package/dist/src/interfaces/private/AddCallbackParametersCustom.d.ts +13 -1
  208. package/dist/src/interfaces/private/AddCallbackParametersCustom.d.ts.map +1 -1
  209. package/dist/src/types/ModUpgraded.d.ts +1 -1
  210. package/dist/src/types/ModUpgraded.d.ts.map +1 -1
  211. package/dist/src/types/private/CallbackTuple.d.ts +17 -8
  212. package/dist/src/types/private/CallbackTuple.d.ts.map +1 -1
  213. package/package.json +1 -1
  214. package/src/callbackClasses.ts +2 -0
  215. package/src/callbacks.ts +2 -0
  216. package/src/classes/ModFeature.ts +43 -21
  217. package/src/classes/ModUpgradedBase.ts +18 -10
  218. package/src/classes/callbacks/EntityTakeDmgFilter.ts +1 -1
  219. package/src/classes/callbacks/EntityTakeDmgPlayer.ts +2 -1
  220. package/src/classes/callbacks/InputActionFilter.ts +46 -0
  221. package/src/classes/callbacks/InputActionPlayer.ts +67 -0
  222. package/src/classes/callbacks/PostAmbushFinished.ts +1 -1
  223. package/src/classes/callbacks/PostAmbushStarted.ts +1 -1
  224. package/src/classes/callbacks/PostBombExploded.ts +1 -1
  225. package/src/classes/callbacks/PostBombInitLate.ts +1 -1
  226. package/src/classes/callbacks/PostBoneSwing.ts +1 -1
  227. package/src/classes/callbacks/PostCollectibleEmpty.ts +2 -1
  228. package/src/classes/callbacks/PostCollectibleInitFirst.ts +2 -1
  229. package/src/classes/callbacks/PostCursedTeleport.ts +52 -60
  230. package/src/classes/callbacks/PostDiceRoomActivated.ts +2 -1
  231. package/src/classes/callbacks/PostDoorRender.ts +1 -1
  232. package/src/classes/callbacks/PostDoorUpdate.ts +1 -1
  233. package/src/classes/callbacks/PostEffectInitLate.ts +1 -1
  234. package/src/classes/callbacks/PostEffectStateChanged.ts +1 -1
  235. package/src/classes/callbacks/PostFamiliarInitLate.ts +1 -1
  236. package/src/classes/callbacks/PostFamiliarStateChanged.ts +1 -1
  237. package/src/classes/callbacks/PostGreedModeWave.ts +1 -1
  238. package/src/classes/callbacks/PostHolyMantleRemoved.ts +1 -1
  239. package/src/classes/callbacks/PostItemDischarge.ts +3 -2
  240. package/src/classes/callbacks/PostKnifeInitLate.ts +1 -1
  241. package/src/classes/callbacks/PostLaserInitLate.ts +1 -1
  242. package/src/classes/callbacks/PostNPCDeathFilter.ts +1 -1
  243. package/src/classes/callbacks/PostNPCInitFilter.ts +1 -1
  244. package/src/classes/callbacks/PostNPCInitLate.ts +1 -1
  245. package/src/classes/callbacks/PostNPCRenderFilter.ts +1 -1
  246. package/src/classes/callbacks/PostNPCStateChanged.ts +1 -1
  247. package/src/classes/callbacks/PostNPCUpdateFilter.ts +1 -1
  248. package/src/classes/callbacks/PostNewRoomEarly.ts +2 -2
  249. package/src/classes/callbacks/PostPickupCollect.ts +1 -1
  250. package/src/classes/callbacks/PostPickupInitFirst.ts +1 -1
  251. package/src/classes/callbacks/PostPickupInitLate.ts +1 -1
  252. package/src/classes/callbacks/PostPickupStateChanged.ts +1 -1
  253. package/src/classes/callbacks/PostPitRender.ts +1 -1
  254. package/src/classes/callbacks/PostPitUpdate.ts +1 -1
  255. package/src/classes/callbacks/PostPlayerChangeHealth.ts +1 -1
  256. package/src/classes/callbacks/PostPlayerChangeStat.ts +1 -1
  257. package/src/classes/callbacks/PostPlayerChangeType.ts +1 -1
  258. package/src/classes/callbacks/PostPlayerFatalDamage.ts +39 -48
  259. package/src/classes/callbacks/PostPlayerInitFirst.ts +2 -2
  260. package/src/classes/callbacks/PostPlayerInitLate.ts +1 -1
  261. package/src/classes/callbacks/PostPoopRender.ts +1 -1
  262. package/src/classes/callbacks/PostPoopUpdate.ts +1 -1
  263. package/src/classes/callbacks/PostPressurePlateRender.ts +1 -1
  264. package/src/classes/callbacks/PostPressurePlateUpdate.ts +1 -1
  265. package/src/classes/callbacks/PostProjectileInitLate.ts +1 -1
  266. package/src/classes/callbacks/PostPurchase.ts +1 -1
  267. package/src/classes/callbacks/PostRockRender.ts +1 -1
  268. package/src/classes/callbacks/PostRockUpdate.ts +1 -1
  269. package/src/classes/callbacks/PostRoomClearChanged.ts +2 -2
  270. package/src/classes/callbacks/PostSacrifice.ts +5 -20
  271. package/src/classes/callbacks/PostSlotCollision.ts +1 -1
  272. package/src/classes/callbacks/PostSlotDestroyed.ts +3 -2
  273. package/src/classes/callbacks/PostSpikesRender.ts +1 -1
  274. package/src/classes/callbacks/PostSpikesUpdate.ts +1 -1
  275. package/src/classes/callbacks/PostTNTRender.ts +1 -1
  276. package/src/classes/callbacks/PostTNTUpdate.ts +1 -1
  277. package/src/classes/callbacks/PostTearInitLate.ts +1 -1
  278. package/src/classes/callbacks/PostTearInitVeryLate.ts +1 -1
  279. package/src/classes/callbacks/PostTransformation.ts +1 -1
  280. package/src/classes/callbacks/PostTrinketBreak.ts +4 -18
  281. package/src/classes/callbacks/PreBerserkDeath.ts +1 -1
  282. package/src/classes/callbacks/PreGetPedestal.ts +2 -1
  283. package/src/classes/callbacks/PreNPCCollisionFilter.ts +1 -1
  284. package/src/classes/callbacks/PreNPCUpdateFilter.ts +1 -1
  285. package/src/classes/callbacks/PreNewLevel.ts +1 -1
  286. package/src/classes/features/callbackLogic/CustomGridEntities.ts +5 -3
  287. package/src/classes/features/callbackLogic/CustomRevive.ts +19 -18
  288. package/src/classes/features/callbackLogic/EsauJrDetection.ts +6 -2
  289. package/src/classes/features/callbackLogic/FlipDetection.ts +2 -1
  290. package/src/classes/features/callbackLogic/GameReorderedCallbacks.ts +13 -5
  291. package/src/classes/features/callbackLogic/GridEntityCollisionDetection.ts +2 -1
  292. package/src/classes/features/callbackLogic/GridEntityRenderDetection.ts +2 -1
  293. package/src/classes/features/callbackLogic/GridEntityUpdateDetection.ts +3 -2
  294. package/src/classes/features/callbackLogic/ItemPickupDetection.ts +8 -5
  295. package/src/classes/features/callbackLogic/PlayerCollectibleDetection.ts +67 -71
  296. package/src/classes/features/callbackLogic/PlayerReorderedCallbacks.ts +10 -5
  297. package/src/classes/features/callbackLogic/SlotRenderDetection.ts +2 -1
  298. package/src/classes/features/callbackLogic/SlotUpdateDetection.ts +3 -2
  299. package/src/classes/features/other/CharacterHealthConversion.ts +3 -2
  300. package/src/classes/features/other/CharacterStats.ts +1 -1
  301. package/src/classes/features/other/CollectibleItemPoolType.ts +2 -1
  302. package/src/classes/features/other/CustomHotkeys.ts +1 -1
  303. package/src/classes/features/other/CustomItemPools.ts +1 -1
  304. package/src/classes/features/other/CustomPickups.ts +3 -2
  305. package/src/classes/features/other/CustomStages.ts +7 -6
  306. package/src/classes/features/other/CustomTrapdoors.ts +4 -6
  307. package/src/classes/features/other/DisableAllSound.ts +1 -1
  308. package/src/classes/features/other/DisableInputs.ts +6 -3
  309. package/src/classes/features/other/ExtraConsoleCommands.ts +32 -31
  310. package/src/classes/features/other/FadeInRemover.ts +1 -1
  311. package/src/classes/features/other/FastReset.ts +1 -1
  312. package/src/classes/features/other/ModdedElementDetection.ts +1 -1
  313. package/src/classes/features/other/NoSirenSteal.ts +2 -1
  314. package/src/classes/features/other/Pause.ts +3 -2
  315. package/src/classes/features/other/PersistentEntities.ts +2 -2
  316. package/src/classes/features/other/PickupIndexCreation.ts +3 -2
  317. package/src/classes/features/other/PlayerInventory.ts +2 -2
  318. package/src/classes/features/other/PonyDetection.ts +1 -1
  319. package/src/classes/features/other/PressInput.ts +2 -1
  320. package/src/classes/features/other/PreventChildEntities.ts +1 -1
  321. package/src/classes/features/other/PreventCollectibleRotation.ts +4 -2
  322. package/src/classes/features/other/PreventGridEntityRespawn.ts +3 -2
  323. package/src/classes/features/other/RoomClearFrame.ts +1 -1
  324. package/src/classes/features/other/RoomHistory.ts +1 -1
  325. package/src/classes/features/other/RunInNFrames.ts +2 -2
  326. package/src/classes/features/other/RunNextRoom.ts +1 -1
  327. package/src/classes/features/other/SaveDataManager.ts +6 -5
  328. package/src/classes/features/other/StageHistory.ts +1 -4
  329. package/src/classes/features/other/TaintedLazarusPlayers.ts +1 -1
  330. package/src/classes/features/other/debugDisplay/DebugDisplayBomb.ts +1 -1
  331. package/src/classes/features/other/debugDisplay/DebugDisplayDoor.ts +1 -1
  332. package/src/classes/features/other/debugDisplay/DebugDisplayEffect.ts +1 -1
  333. package/src/classes/features/other/debugDisplay/DebugDisplayFamiliar.ts +1 -1
  334. package/src/classes/features/other/debugDisplay/DebugDisplayKnife.ts +1 -1
  335. package/src/classes/features/other/debugDisplay/DebugDisplayLaser.ts +1 -1
  336. package/src/classes/features/other/debugDisplay/DebugDisplayNPC.ts +1 -1
  337. package/src/classes/features/other/debugDisplay/DebugDisplayPickup.ts +1 -1
  338. package/src/classes/features/other/debugDisplay/DebugDisplayPit.ts +1 -1
  339. package/src/classes/features/other/debugDisplay/DebugDisplayPlayer.ts +1 -1
  340. package/src/classes/features/other/debugDisplay/DebugDisplayPoop.ts +1 -1
  341. package/src/classes/features/other/debugDisplay/DebugDisplayPressurePlate.ts +1 -1
  342. package/src/classes/features/other/debugDisplay/DebugDisplayProjectile.ts +1 -1
  343. package/src/classes/features/other/debugDisplay/DebugDisplayRock.ts +1 -1
  344. package/src/classes/features/other/debugDisplay/DebugDisplaySlot.ts +1 -1
  345. package/src/classes/features/other/debugDisplay/DebugDisplaySpikes.ts +1 -1
  346. package/src/classes/features/other/debugDisplay/DebugDisplayTNT.ts +1 -1
  347. package/src/classes/features/other/debugDisplay/DebugDisplayTear.ts +1 -1
  348. package/src/classes/private/CustomCallback.ts +19 -15
  349. package/src/enums/ModCallbackCustom.ts +44 -0
  350. package/src/functions/array.ts +14 -5
  351. package/src/functions/decorators.ts +14 -20
  352. package/src/functions/logMisc.ts +4 -1
  353. package/src/interfaces/private/AddCallbackParametersCustom.ts +24 -0
  354. package/src/types/ModUpgraded.ts +1 -1
  355. package/src/types/private/CallbackTuple.ts +17 -8
  356. package/dist/src/types/private/AllButFirst.d.ts +0 -5
  357. package/dist/src/types/private/AllButFirst.d.ts.map +0 -1
  358. package/dist/src/types/private/AllButFirst.lua +0 -2
  359. package/src/types/private/AllButFirst.ts +0 -6
@@ -10,7 +10,7 @@ export class PostRockUpdate extends CustomCallback<ModCallbackCustom.POST_ROCK_U
10
10
 
11
11
  this.callbacksUsed = [
12
12
  // 1
13
- [ModCallback.POST_UPDATE, [this.postUpdate]],
13
+ [ModCallback.POST_UPDATE, this.postUpdate],
14
14
  ];
15
15
  }
16
16
 
@@ -21,11 +21,11 @@ export class PostRoomClearChanged extends CustomCallback<T> {
21
21
 
22
22
  this.callbacksUsed = [
23
23
  // 1
24
- [ModCallback.POST_UPDATE, [this.postUpdate]],
24
+ [ModCallback.POST_UPDATE, this.postUpdate],
25
25
  ];
26
26
 
27
27
  this.customCallbacksUsed = [
28
- [ModCallbackCustom.POST_NEW_ROOM_REORDERED, [this.postNewRoomReordered]],
28
+ [ModCallbackCustom.POST_NEW_ROOM_REORDERED, this.postNewRoomReordered],
29
29
  ];
30
30
  }
31
31
 
@@ -1,9 +1,4 @@
1
- import {
2
- DamageFlag,
3
- EntityType,
4
- ModCallback,
5
- RoomType,
6
- } from "isaac-typescript-definitions";
1
+ import { DamageFlag, RoomType } from "isaac-typescript-definitions";
7
2
  import { game } from "../../core/cachedClasses";
8
3
  import { ModCallbackCustom } from "../../enums/ModCallbackCustom";
9
4
  import { hasFlag } from "../../functions/flag";
@@ -20,31 +15,21 @@ export class PostSacrifice extends CustomCallback<ModCallbackCustom.POST_SACRIFI
20
15
  constructor() {
21
16
  super();
22
17
 
23
- this.callbacksUsed = [
24
- // 11
25
- [
26
- ModCallback.ENTITY_TAKE_DMG,
27
- [this.entityTakeDmgPlayer, EntityType.PLAYER],
28
- ],
18
+ this.customCallbacksUsed = [
19
+ [ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, this.entityTakeDmgPlayer],
29
20
  ];
30
21
  }
31
22
 
32
23
  protected override shouldFire = shouldFirePlayer;
33
24
 
34
- // ModCallback.ENTITY_TAKE_DMG (11)
35
- // EntityType.PLAYER (1)
25
+ // ModCallbackCustom.ENTITY_TAKE_DMG
36
26
  private entityTakeDmgPlayer = (
37
- entity: Entity,
27
+ player: EntityPlayer,
38
28
  _amount: float,
39
29
  damageFlags: BitFlags<DamageFlag>,
40
30
  _source: EntityRef,
41
31
  _countdownFrames: int,
42
32
  ): boolean | undefined => {
43
- const player = entity.ToPlayer();
44
- if (player === undefined) {
45
- return undefined;
46
- }
47
-
48
33
  const room = game.GetRoom();
49
34
  const roomType = room.GetType();
50
35
  const isSpikeDamage = hasFlag(damageFlags, DamageFlag.SPIKES);
@@ -10,7 +10,7 @@ export class PostSlotCollision extends CustomCallback<ModCallbackCustom.POST_SLO
10
10
 
11
11
  this.callbacksUsed = [
12
12
  // 33
13
- [ModCallback.PRE_PLAYER_COLLISION, [this.prePlayerCollision]],
13
+ [ModCallback.PRE_PLAYER_COLLISION, this.prePlayerCollision],
14
14
  ];
15
15
  }
16
16
 
@@ -26,14 +26,15 @@ export class PostSlotDestroyed extends CustomCallback<ModCallbackCustom.POST_SLO
26
26
  // 67
27
27
  [
28
28
  ModCallback.POST_ENTITY_REMOVE,
29
- [this.postEntityRemoveSlot, EntityType.SLOT],
29
+ this.postEntityRemoveSlot,
30
+ [EntityType.SLOT],
30
31
  ],
31
32
  ];
32
33
 
33
34
  this.customCallbacksUsed = [
34
35
  [
35
36
  ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED,
36
- [this.postSlotAnimationChanged],
37
+ this.postSlotAnimationChanged,
37
38
  ],
38
39
  ];
39
40
  }
@@ -10,7 +10,7 @@ export class PostSpikesRender extends CustomCallback<ModCallbackCustom.POST_SPIK
10
10
 
11
11
  this.callbacksUsed = [
12
12
  // 2
13
- [ModCallback.POST_RENDER, [this.postRender]],
13
+ [ModCallback.POST_RENDER, this.postRender],
14
14
  ];
15
15
  }
16
16
 
@@ -10,7 +10,7 @@ export class PostSpikesUpdate extends CustomCallback<ModCallbackCustom.POST_SPIK
10
10
 
11
11
  this.callbacksUsed = [
12
12
  // 1
13
- [ModCallback.POST_UPDATE, [this.postUpdate]],
13
+ [ModCallback.POST_UPDATE, this.postUpdate],
14
14
  ];
15
15
  }
16
16
 
@@ -10,7 +10,7 @@ export class PostTNTRender extends CustomCallback<ModCallbackCustom.POST_TNT_REN
10
10
 
11
11
  this.callbacksUsed = [
12
12
  // 2
13
- [ModCallback.POST_RENDER, [this.postRender]],
13
+ [ModCallback.POST_RENDER, this.postRender],
14
14
  ];
15
15
  }
16
16
 
@@ -10,7 +10,7 @@ export class PostTNTUpdate extends CustomCallback<ModCallbackCustom.POST_TNT_UPD
10
10
 
11
11
  this.callbacksUsed = [
12
12
  // 1
13
- [ModCallback.POST_UPDATE, [this.postUpdate]],
13
+ [ModCallback.POST_UPDATE, this.postUpdate],
14
14
  ];
15
15
  }
16
16
 
@@ -15,7 +15,7 @@ export class PostTearInitLate extends CustomCallback<ModCallbackCustom.POST_TEAR
15
15
 
16
16
  this.callbacksUsed = [
17
17
  // 40
18
- [ModCallback.POST_TEAR_UPDATE, [this.postTearUpdate]],
18
+ [ModCallback.POST_TEAR_UPDATE, this.postTearUpdate],
19
19
  ];
20
20
  }
21
21
 
@@ -15,7 +15,7 @@ export class PostTearInitVeryLate extends CustomCallback<ModCallbackCustom.POST_
15
15
 
16
16
  this.callbacksUsed = [
17
17
  // 40
18
- [ModCallback.POST_TEAR_UPDATE, [this.postTearUpdate]],
18
+ [ModCallback.POST_TEAR_UPDATE, this.postTearUpdate],
19
19
  ];
20
20
  }
21
21
 
@@ -29,7 +29,7 @@ export class PostTransformation extends CustomCallback<T> {
29
29
  this.customCallbacksUsed = [
30
30
  [
31
31
  ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
32
- [this.postPEffectUpdateReordered],
32
+ this.postPEffectUpdateReordered,
33
33
  ],
34
34
  ];
35
35
  }
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  DamageFlag,
3
3
  EntityType,
4
- ModCallback,
5
4
  PickupVariant,
6
5
  TrinketType,
7
6
  } from "isaac-typescript-definitions";
@@ -30,38 +29,25 @@ export class PostTrinketBreak extends CustomCallback<ModCallbackCustom.POST_TRIN
30
29
  constructor() {
31
30
  super();
32
31
 
33
- this.callbacksUsed = [
34
- // 11
35
- [
36
- ModCallback.ENTITY_TAKE_DMG,
37
- [this.entityTakeDmgPlayer, EntityType.PLAYER],
38
- ],
39
- ];
40
-
41
32
  this.customCallbacksUsed = [
33
+ [ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, this.entityTakeDmgPlayer],
42
34
  [
43
35
  ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
44
- [this.postPEffectUpdateReordered],
36
+ this.postPEffectUpdateReordered,
45
37
  ],
46
38
  ];
47
39
  }
48
40
 
49
41
  protected override shouldFire = shouldFireTrinketType;
50
42
 
51
- // ModCallback.ENTITY_TAKE_DMG (11)
52
- // EntityType.PLAYER (1)
43
+ // ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER
53
44
  private entityTakeDmgPlayer = (
54
- entity: Entity,
45
+ player: EntityPlayer,
55
46
  _amount: float,
56
47
  _damageFlags: BitFlags<DamageFlag>,
57
48
  _source: EntityRef,
58
49
  _countdownFrames: int,
59
50
  ): boolean | undefined => {
60
- const player = entity.ToPlayer();
61
- if (player === undefined) {
62
- return undefined;
63
- }
64
-
65
51
  const trinketMap = defaultMapGetPlayer(
66
52
  this.v.run.playersTrinketMap,
67
53
  player,
@@ -13,7 +13,7 @@ export class PreBerserkDeath extends CustomCallback<ModCallbackCustom.PRE_BERSER
13
13
  this.customCallbacksUsed = [
14
14
  [
15
15
  ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
16
- [this.postPEffectUpdateReordered],
16
+ this.postPEffectUpdateReordered,
17
17
  ],
18
18
  ];
19
19
  }
@@ -15,7 +15,8 @@ export class PreGetPedestal extends CustomCallback<ModCallbackCustom.PRE_GET_PED
15
15
  // 38
16
16
  [
17
17
  ModCallback.PRE_PICKUP_COLLISION,
18
- [this.prePickupCollision, PickupVariant.COLLECTIBLE],
18
+ this.prePickupCollision,
19
+ [PickupVariant.COLLECTIBLE],
19
20
  ],
20
21
  ];
21
22
  }
@@ -9,7 +9,7 @@ export class PreNPCCollisionFilter extends CustomCallback<ModCallbackCustom.PRE_
9
9
 
10
10
  this.callbacksUsed = [
11
11
  // 30
12
- [ModCallback.PRE_NPC_COLLISION, [this.preNPCCollision]],
12
+ [ModCallback.PRE_NPC_COLLISION, this.preNPCCollision],
13
13
  ];
14
14
  }
15
15
 
@@ -9,7 +9,7 @@ export class PreNPCUpdateFilter extends CustomCallback<ModCallbackCustom.PRE_NPC
9
9
 
10
10
  this.callbacksUsed = [
11
11
  // 69
12
- [ModCallback.PRE_NPC_UPDATE, [this.preNPCUpdate]],
12
+ [ModCallback.PRE_NPC_UPDATE, this.preNPCUpdate],
13
13
  ];
14
14
  }
15
15
 
@@ -21,7 +21,7 @@ export class PreNewLevel extends CustomCallback<ModCallbackCustom.PRE_NEW_LEVEL>
21
21
 
22
22
  this.callbacksUsed = [
23
23
  // 32
24
- [ModCallback.POST_PLAYER_RENDER, [this.postPlayerRender]],
24
+ [ModCallback.POST_PLAYER_RENDER, this.postPlayerRender],
25
25
  ];
26
26
  }
27
27
 
@@ -48,14 +48,16 @@ export class CustomGridEntities extends Feature {
48
48
  this.featuresUsed = [ISCFeature.RUN_IN_N_FRAMES];
49
49
 
50
50
  this.callbacksUsed = [
51
+ // 23
51
52
  [
52
53
  ModCallback.PRE_USE_ITEM,
53
- [this.preUseItemWeNeedToGoDeeper, CollectibleType.WE_NEED_TO_GO_DEEPER],
54
- ], // 23
54
+ this.preUseItemWeNeedToGoDeeper,
55
+ [CollectibleType.WE_NEED_TO_GO_DEEPER],
56
+ ],
55
57
  ];
56
58
 
57
59
  this.customCallbacksUsed = [
58
- [ModCallbackCustom.POST_NEW_ROOM_REORDERED, [this.postNewRoomReordered]],
60
+ [ModCallbackCustom.POST_NEW_ROOM_REORDERED, this.postNewRoomReordered],
59
61
  ];
60
62
 
61
63
  this.runInNFrames = runInNFrames;
@@ -60,17 +60,18 @@ export class CustomRevive extends Feature {
60
60
  this.featuresUsed = [ISCFeature.RUN_IN_N_FRAMES];
61
61
 
62
62
  this.callbacksUsed = [
63
- [ModCallback.POST_RENDER, [this.postRender]], // 2
64
- [ModCallback.POST_PEFFECT_UPDATE, [this.postPEffectUpdate]], // 4
63
+ // 2
64
+ [ModCallback.POST_RENDER, this.postRender],
65
65
  ];
66
66
 
67
67
  this.customCallbacksUsed = [
68
- [ModCallbackCustom.POST_NEW_ROOM_REORDERED, [this.postNewRoomReordered]],
68
+ [ModCallbackCustom.POST_NEW_ROOM_REORDERED, this.postNewRoomReordered],
69
69
  [
70
- ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE,
71
- [this.postPlayerFatalDamage],
70
+ ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
71
+ this.postPEffectUpdateReordered,
72
72
  ],
73
- [ModCallbackCustom.PRE_BERSERK_DEATH, [this.preBerserkDeath]],
73
+ [ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE, this.postPlayerFatalDamage],
74
+ [ModCallbackCustom.PRE_BERSERK_DEATH, this.preBerserkDeath],
74
75
  ];
75
76
 
76
77
  this.preCustomRevive = preCustomRevive;
@@ -89,8 +90,18 @@ export class CustomRevive extends Feature {
89
90
  sfxManager.Stop(SoundEffect.ONE_UP);
90
91
  };
91
92
 
92
- // ModCallback.POST_PEFFECT_UPDATE (4)
93
- private postPEffectUpdate = (player: EntityPlayer): void => {
93
+ // ModCallbackCustom.POST_NEW_ROOM_REORDERED
94
+ private postNewRoomReordered = (): void => {
95
+ if (this.v.run.state !== CustomReviveState.WAITING_FOR_ROOM_TRANSITION) {
96
+ return;
97
+ }
98
+
99
+ this.v.run.state = CustomReviveState.WAITING_FOR_ITEM_ANIMATION;
100
+ this.logStateChanged();
101
+ };
102
+
103
+ // ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
104
+ private postPEffectUpdateReordered = (player: EntityPlayer): void => {
94
105
  this.checkWaitingForItemAnimation(player);
95
106
  };
96
107
 
@@ -138,16 +149,6 @@ export class CustomRevive extends Feature {
138
149
  this.logStateChanged();
139
150
  }
140
151
 
141
- // ModCallbackCustom.POST_NEW_ROOM_REORDERED
142
- private postNewRoomReordered = (): void => {
143
- if (this.v.run.state !== CustomReviveState.WAITING_FOR_ROOM_TRANSITION) {
144
- return;
145
- }
146
-
147
- this.v.run.state = CustomReviveState.WAITING_FOR_ITEM_ANIMATION;
148
- this.logStateChanged();
149
- };
150
-
151
152
  // ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE
152
153
  private postPlayerFatalDamage = (
153
154
  player: EntityPlayer,
@@ -26,10 +26,14 @@ export class EsauJrDetection extends Feature {
26
26
  super();
27
27
 
28
28
  this.callbacksUsed = [
29
- [ModCallback.POST_UPDATE, [this.postUpdate]], // 1
29
+ // 1
30
+ [ModCallback.POST_UPDATE, this.postUpdate],
31
+
32
+ // 3
30
33
  [
31
34
  ModCallback.POST_USE_ITEM,
32
- [this.useItemEsauJr, CollectibleType.ESAU_JR],
35
+ this.useItemEsauJr,
36
+ [CollectibleType.ESAU_JR],
33
37
  ],
34
38
  ];
35
39
 
@@ -24,7 +24,8 @@ export class FlipDetection extends Feature {
24
24
  super();
25
25
 
26
26
  this.callbacksUsed = [
27
- [ModCallback.POST_USE_ITEM, [this.useItemFlip, CollectibleType.FLIP]], // 3
27
+ // 3
28
+ [ModCallback.POST_USE_ITEM, this.useItemFlip, [CollectibleType.FLIP]],
28
29
  ];
29
30
 
30
31
  this.postFlip = postFlip;
@@ -49,13 +49,21 @@ export class GameReorderedCallbacks extends Feature {
49
49
  super();
50
50
 
51
51
  this.callbacksUsed = [
52
+ // 3
52
53
  [
53
54
  ModCallback.POST_USE_ITEM,
54
- [this.useItemGlowingHourGlass, CollectibleType.GLOWING_HOUR_GLASS],
55
- ], // 3
56
- [ModCallback.POST_GAME_STARTED, [this.postGameStarted]], // 15
57
- [ModCallback.POST_NEW_LEVEL, [this.postNewLevel]], // 18
58
- [ModCallback.POST_NEW_ROOM, [this.postNewRoom]], // 19
55
+ this.useItemGlowingHourGlass,
56
+ [CollectibleType.GLOWING_HOUR_GLASS],
57
+ ],
58
+
59
+ // 15
60
+ [ModCallback.POST_GAME_STARTED, this.postGameStarted],
61
+
62
+ // 18
63
+ [ModCallback.POST_NEW_LEVEL, this.postNewLevel],
64
+
65
+ // 19
66
+ [ModCallback.POST_NEW_ROOM, this.postNewRoom],
59
67
  ];
60
68
 
61
69
  this.postGameStartedReordered = postGameStartedReordered;
@@ -31,7 +31,8 @@ export class GridEntityCollisionDetection extends Feature {
31
31
  super();
32
32
 
33
33
  this.callbacksUsed = [
34
- [ModCallback.POST_UPDATE, [this.postUpdate]], // 1
34
+ // 1
35
+ [ModCallback.POST_UPDATE, this.postUpdate],
35
36
  ];
36
37
 
37
38
  this.postGridEntityCollision = postGridEntityCollision;
@@ -18,7 +18,8 @@ export class GridEntityRenderDetection extends Feature {
18
18
  super();
19
19
 
20
20
  this.callbacksUsed = [
21
- [ModCallback.POST_RENDER, [this.postRender]], // 2
21
+ // 2
22
+ [ModCallback.POST_RENDER, this.postRender],
22
23
  ];
23
24
 
24
25
  this.postGridEntityRender = postGridEntityRender;
@@ -62,11 +62,12 @@ export class GridEntityUpdateDetection extends Feature {
62
62
  this.featuresUsed = [ISCFeature.RUN_IN_N_FRAMES];
63
63
 
64
64
  this.callbacksUsed = [
65
- [ModCallback.POST_UPDATE, [this.postUpdate]], // 1
65
+ // 1
66
+ [ModCallback.POST_UPDATE, this.postUpdate],
66
67
  ];
67
68
 
68
69
  this.customCallbacksUsed = [
69
- [ModCallbackCustom.POST_NEW_ROOM_REORDERED, [this.postNewRoomReordered]],
70
+ [ModCallbackCustom.POST_NEW_ROOM_REORDERED, this.postNewRoomReordered],
70
71
  ];
71
72
 
72
73
  this.postGridEntityInit = postGridEntityInit;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  CollectibleType,
3
3
  ItemType,
4
- ModCallback,
5
4
  TrinketType,
6
5
  } from "isaac-typescript-definitions";
6
+ import { ModCallbackCustom } from "../../../enums/ModCallbackCustom";
7
7
  import { defaultMapGetPlayer } from "../../../functions/playerDataStructures";
8
8
  import { asNumber } from "../../../functions/types";
9
9
  import {
@@ -32,16 +32,19 @@ export class ItemPickupDetection extends Feature {
32
32
  constructor(postItemPickup: PostItemPickup, preItemPickup: PreItemPickup) {
33
33
  super();
34
34
 
35
- this.callbacksUsed = [
36
- [ModCallback.POST_PEFFECT_UPDATE, [this.postPEffectUpdate]], // 4
35
+ this.customCallbacksUsed = [
36
+ [
37
+ ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
38
+ this.postPEffectUpdateReordered,
39
+ ],
37
40
  ];
38
41
 
39
42
  this.postItemPickup = postItemPickup;
40
43
  this.preItemPickup = preItemPickup;
41
44
  }
42
45
 
43
- // ModCallback.POST_PEFFECT_UPDATE (4)
44
- private postPEffectUpdate = (player: EntityPlayer) => {
46
+ // ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
47
+ private postPEffectUpdateReordered = (player: EntityPlayer) => {
45
48
  const pickingUpItem = defaultMapGetPlayer(
46
49
  this.v.run.playersPickingUpItemMap,
47
50
  player,
@@ -2,7 +2,6 @@ import {
2
2
  ActiveSlot,
3
3
  CollectibleType,
4
4
  DamageFlag,
5
- EntityType,
6
5
  ItemType,
7
6
  ModCallback,
8
7
  PlayerType,
@@ -61,16 +60,17 @@ export class PlayerCollectibleDetection extends Feature {
61
60
  ];
62
61
 
63
62
  this.callbacksUsed = [
64
- [ModCallback.POST_USE_ITEM, [this.useItemD4, CollectibleType.D4]], // 3
65
- [ModCallback.POST_PEFFECT_UPDATE, [this.postPEffectUpdate]], // 4
66
- [
67
- ModCallback.ENTITY_TAKE_DMG,
68
- [this.entityTakeDmgPlayer, EntityType.PLAYER],
69
- ], // 11
63
+ // 3
64
+ [ModCallback.POST_USE_ITEM, this.useItemD4, [CollectibleType.D4]],
70
65
  ];
71
66
 
72
67
  this.customCallbacksUsed = [
73
- [ModCallbackCustom.POST_ITEM_PICKUP, [this.postItemPickup]],
68
+ [ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, this.entityTakeDmgPlayer],
69
+ [ModCallbackCustom.POST_ITEM_PICKUP, this.postItemPickup],
70
+ [
71
+ ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
72
+ this.postPEffectUpdateReordered,
73
+ ],
74
74
  ];
75
75
 
76
76
  this.postPlayerCollectibleAdded = postPlayerCollectibleAdded;
@@ -156,8 +156,65 @@ export class PlayerCollectibleDetection extends Feature {
156
156
  return undefined;
157
157
  };
158
158
 
159
- // ModCallback.POST_PEFFECT_UPDATE (4)
160
- private postPEffectUpdate = (player: EntityPlayer) => {
159
+ /** We need to handle the case of Tainted Eden taking damage. */
160
+ // ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER
161
+ private entityTakeDmgPlayer = (
162
+ player: EntityPlayer,
163
+ _amount: float,
164
+ damageFlags: BitFlags<DamageFlag>,
165
+ _source: EntityRef,
166
+ _countdownFrames: int,
167
+ ): boolean | undefined => {
168
+ // Tainted Eden's mechanic does not apply if she e.g. uses Dull Razor.
169
+ if (hasFlag(damageFlags, DamageFlag.FAKE)) {
170
+ return undefined;
171
+ }
172
+
173
+ const character = player.GetPlayerType();
174
+ if (character !== PlayerType.EDEN_B) {
175
+ return undefined;
176
+ }
177
+
178
+ // The items will only be rerolled after the damage is successfully applied.
179
+ const entityPtr = EntityPtr(player);
180
+ this.runInNFrames.runNextGameFrame(() => {
181
+ const futurePlayer = getPlayerFromPtr(entityPtr);
182
+ if (futurePlayer !== undefined) {
183
+ this.updateCollectibleMapAndFire(player, undefined);
184
+ }
185
+ });
186
+
187
+ return undefined;
188
+ };
189
+
190
+ /**
191
+ * We need to handle TMTRAINER collectibles, since they do not cause the player's collectible
192
+ * count to change.
193
+ */
194
+ // ModCallbackCustom.POST_ITEM_PICKUP
195
+ private postItemPickup = (
196
+ player: EntityPlayer,
197
+ pickingUpItem: PickingUpItem,
198
+ ) => {
199
+ if (
200
+ pickingUpItem.itemType === ItemType.TRINKET ||
201
+ pickingUpItem.itemType === ItemType.NULL
202
+ ) {
203
+ return;
204
+ }
205
+
206
+ const newCollectibleCount = player.GetCollectibleCount();
207
+ mapSetPlayer(
208
+ this.v.run.playersCollectibleCount,
209
+ player,
210
+ newCollectibleCount,
211
+ );
212
+
213
+ this.updateCollectibleMapAndFire(player, 1);
214
+ };
215
+
216
+ // ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
217
+ private postPEffectUpdateReordered = (player: EntityPlayer) => {
161
218
  const oldCollectibleCount = defaultMapGetPlayer(
162
219
  this.v.run.playersCollectibleCount,
163
220
  player,
@@ -220,65 +277,4 @@ export class PlayerCollectibleDetection extends Feature {
220
277
  this.updateCollectibleMapAndFire(player, undefined);
221
278
  }
222
279
  }
223
-
224
- // ModCallback.ENTITY_TAKE_DMG (11)
225
- // EntityType.PLAYER (1)
226
- // We need to handle the case of Tainted Eden taking damage.
227
- private entityTakeDmgPlayer = (
228
- entity: Entity,
229
- _amount: float,
230
- damageFlags: BitFlags<DamageFlag>,
231
- _source: EntityRef,
232
- _countdownFrames: int,
233
- ): boolean | undefined => {
234
- // Tainted Eden's mechanic does not apply if she e.g. uses Dull Razor.
235
- if (hasFlag(damageFlags, DamageFlag.FAKE)) {
236
- return undefined;
237
- }
238
-
239
- const player = entity.ToPlayer();
240
- if (player === undefined) {
241
- return undefined;
242
- }
243
-
244
- const character = player.GetPlayerType();
245
- if (character !== PlayerType.EDEN_B) {
246
- return undefined;
247
- }
248
-
249
- // The items will only be rerolled after the damage is successfully applied.
250
- const entityPtr = EntityPtr(player);
251
- this.runInNFrames.runNextGameFrame(() => {
252
- const futurePlayer = getPlayerFromPtr(entityPtr);
253
- if (futurePlayer !== undefined) {
254
- this.updateCollectibleMapAndFire(player, undefined);
255
- }
256
- });
257
-
258
- return undefined;
259
- };
260
-
261
- // ModCallbackCustom.POST_ITEM_PICKUP
262
- // We need to handle TMTRAINER collectibles, since they do not cause the player's collectible
263
- // count to change.
264
- private postItemPickup = (
265
- player: EntityPlayer,
266
- pickingUpItem: PickingUpItem,
267
- ) => {
268
- if (
269
- pickingUpItem.itemType === ItemType.TRINKET ||
270
- pickingUpItem.itemType === ItemType.NULL
271
- ) {
272
- return;
273
- }
274
-
275
- const newCollectibleCount = player.GetCollectibleCount();
276
- mapSetPlayer(
277
- this.v.run.playersCollectibleCount,
278
- player,
279
- newCollectibleCount,
280
- );
281
-
282
- this.updateCollectibleMapAndFire(player, 1);
283
- };
284
280
  }