isaacscript-common 18.3.0 → 18.3.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 (352) hide show
  1. package/dist/index.d.ts +29 -20
  2. package/dist/isaacscript-common.lua +329 -319
  3. package/dist/src/classes/ModFeature.d.ts +2 -2
  4. package/dist/src/classes/ModFeature.d.ts.map +1 -1
  5. package/dist/src/classes/ModFeature.lua +18 -17
  6. package/dist/src/classes/ModUpgradedBase.d.ts.map +1 -1
  7. package/dist/src/classes/ModUpgradedBase.lua +10 -10
  8. package/dist/src/classes/callbacks/EntityTakeDmgFilter.lua +1 -1
  9. package/dist/src/classes/callbacks/EntityTakeDmgPlayer.d.ts.map +1 -1
  10. package/dist/src/classes/callbacks/EntityTakeDmgPlayer.lua +1 -1
  11. package/dist/src/classes/callbacks/InputActionFilter.lua +1 -1
  12. package/dist/src/classes/callbacks/InputActionPlayer.lua +1 -1
  13. package/dist/src/classes/callbacks/PostAmbushFinished.lua +1 -1
  14. package/dist/src/classes/callbacks/PostAmbushStarted.lua +1 -1
  15. package/dist/src/classes/callbacks/PostBombExploded.lua +1 -1
  16. package/dist/src/classes/callbacks/PostBombInitLate.lua +1 -1
  17. package/dist/src/classes/callbacks/PostBoneSwing.lua +1 -1
  18. package/dist/src/classes/callbacks/PostCollectibleEmpty.d.ts.map +1 -1
  19. package/dist/src/classes/callbacks/PostCollectibleEmpty.lua +1 -1
  20. package/dist/src/classes/callbacks/PostCollectibleInitFirst.d.ts.map +1 -1
  21. package/dist/src/classes/callbacks/PostCollectibleInitFirst.lua +1 -1
  22. package/dist/src/classes/callbacks/PostCursedTeleport.d.ts +2 -2
  23. package/dist/src/classes/callbacks/PostCursedTeleport.d.ts.map +1 -1
  24. package/dist/src/classes/callbacks/PostCursedTeleport.lua +19 -21
  25. package/dist/src/classes/callbacks/PostDiceRoomActivated.d.ts.map +1 -1
  26. package/dist/src/classes/callbacks/PostDiceRoomActivated.lua +1 -1
  27. package/dist/src/classes/callbacks/PostDoorRender.lua +1 -1
  28. package/dist/src/classes/callbacks/PostDoorUpdate.lua +1 -1
  29. package/dist/src/classes/callbacks/PostEffectInitLate.lua +1 -1
  30. package/dist/src/classes/callbacks/PostEffectStateChanged.lua +1 -1
  31. package/dist/src/classes/callbacks/PostFamiliarInitLate.lua +1 -1
  32. package/dist/src/classes/callbacks/PostFamiliarStateChanged.lua +1 -1
  33. package/dist/src/classes/callbacks/PostGreedModeWave.lua +1 -1
  34. package/dist/src/classes/callbacks/PostHolyMantleRemoved.lua +1 -1
  35. package/dist/src/classes/callbacks/PostItemDischarge.d.ts.map +1 -1
  36. package/dist/src/classes/callbacks/PostItemDischarge.lua +2 -2
  37. package/dist/src/classes/callbacks/PostKnifeInitLate.lua +1 -1
  38. package/dist/src/classes/callbacks/PostLaserInitLate.lua +1 -1
  39. package/dist/src/classes/callbacks/PostNPCDeathFilter.lua +1 -1
  40. package/dist/src/classes/callbacks/PostNPCInitFilter.lua +1 -1
  41. package/dist/src/classes/callbacks/PostNPCInitLate.lua +1 -1
  42. package/dist/src/classes/callbacks/PostNPCRenderFilter.lua +1 -1
  43. package/dist/src/classes/callbacks/PostNPCStateChanged.lua +1 -1
  44. package/dist/src/classes/callbacks/PostNPCUpdateFilter.lua +1 -1
  45. package/dist/src/classes/callbacks/PostNewRoomEarly.lua +1 -1
  46. package/dist/src/classes/callbacks/PostPickupCollect.lua +1 -1
  47. package/dist/src/classes/callbacks/PostPickupInitFirst.lua +1 -1
  48. package/dist/src/classes/callbacks/PostPickupInitLate.lua +1 -1
  49. package/dist/src/classes/callbacks/PostPickupStateChanged.lua +1 -1
  50. package/dist/src/classes/callbacks/PostPitRender.lua +1 -1
  51. package/dist/src/classes/callbacks/PostPitUpdate.lua +1 -1
  52. package/dist/src/classes/callbacks/PostPlayerChangeHealth.lua +1 -1
  53. package/dist/src/classes/callbacks/PostPlayerChangeStat.lua +1 -1
  54. package/dist/src/classes/callbacks/PostPlayerChangeType.lua +1 -1
  55. package/dist/src/classes/callbacks/PostPlayerFatalDamage.d.ts +1 -1
  56. package/dist/src/classes/callbacks/PostPlayerFatalDamage.d.ts.map +1 -1
  57. package/dist/src/classes/callbacks/PostPlayerFatalDamage.lua +19 -21
  58. package/dist/src/classes/callbacks/PostPlayerInitFirst.lua +1 -1
  59. package/dist/src/classes/callbacks/PostPlayerInitLate.lua +1 -1
  60. package/dist/src/classes/callbacks/PostPoopRender.lua +1 -1
  61. package/dist/src/classes/callbacks/PostPoopUpdate.lua +1 -1
  62. package/dist/src/classes/callbacks/PostPressurePlateRender.lua +1 -1
  63. package/dist/src/classes/callbacks/PostPressurePlateUpdate.lua +1 -1
  64. package/dist/src/classes/callbacks/PostProjectileInitLate.lua +1 -1
  65. package/dist/src/classes/callbacks/PostPurchase.lua +1 -1
  66. package/dist/src/classes/callbacks/PostRockRender.lua +1 -1
  67. package/dist/src/classes/callbacks/PostRockUpdate.lua +1 -1
  68. package/dist/src/classes/callbacks/PostRoomClearChanged.lua +2 -2
  69. package/dist/src/classes/callbacks/PostSacrifice.d.ts.map +1 -1
  70. package/dist/src/classes/callbacks/PostSacrifice.lua +4 -8
  71. package/dist/src/classes/callbacks/PostSlotCollision.lua +1 -1
  72. package/dist/src/classes/callbacks/PostSlotDestroyed.d.ts.map +1 -1
  73. package/dist/src/classes/callbacks/PostSlotDestroyed.lua +2 -2
  74. package/dist/src/classes/callbacks/PostSpikesRender.lua +1 -1
  75. package/dist/src/classes/callbacks/PostSpikesUpdate.lua +1 -1
  76. package/dist/src/classes/callbacks/PostTNTRender.lua +1 -1
  77. package/dist/src/classes/callbacks/PostTNTUpdate.lua +1 -1
  78. package/dist/src/classes/callbacks/PostTearInitLate.lua +1 -1
  79. package/dist/src/classes/callbacks/PostTearInitVeryLate.lua +1 -1
  80. package/dist/src/classes/callbacks/PostTransformation.lua +1 -1
  81. package/dist/src/classes/callbacks/PostTrinketBreak.d.ts.map +1 -1
  82. package/dist/src/classes/callbacks/PostTrinketBreak.lua +5 -11
  83. package/dist/src/classes/callbacks/PreBerserkDeath.lua +1 -1
  84. package/dist/src/classes/callbacks/PreGetPedestal.d.ts.map +1 -1
  85. package/dist/src/classes/callbacks/PreGetPedestal.lua +1 -1
  86. package/dist/src/classes/callbacks/PreNPCCollisionFilter.lua +1 -1
  87. package/dist/src/classes/callbacks/PreNPCUpdateFilter.lua +1 -1
  88. package/dist/src/classes/callbacks/PreNewLevel.lua +1 -1
  89. package/dist/src/classes/features/callbackLogic/CustomGridEntities.d.ts.map +1 -1
  90. package/dist/src/classes/features/callbackLogic/CustomGridEntities.lua +2 -2
  91. package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts +2 -2
  92. package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts.map +1 -1
  93. package/dist/src/classes/features/callbackLogic/CustomRevive.lua +5 -5
  94. package/dist/src/classes/features/callbackLogic/EsauJrDetection.d.ts.map +1 -1
  95. package/dist/src/classes/features/callbackLogic/EsauJrDetection.lua +1 -1
  96. package/dist/src/classes/features/callbackLogic/FlipDetection.d.ts.map +1 -1
  97. package/dist/src/classes/features/callbackLogic/FlipDetection.lua +1 -1
  98. package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.d.ts.map +1 -1
  99. package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.lua +1 -1
  100. package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.d.ts.map +1 -1
  101. package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.lua +1 -1
  102. package/dist/src/classes/features/callbackLogic/GridEntityRenderDetection.d.ts.map +1 -1
  103. package/dist/src/classes/features/callbackLogic/GridEntityRenderDetection.lua +1 -1
  104. package/dist/src/classes/features/callbackLogic/GridEntityUpdateDetection.d.ts.map +1 -1
  105. package/dist/src/classes/features/callbackLogic/GridEntityUpdateDetection.lua +2 -2
  106. package/dist/src/classes/features/callbackLogic/ItemPickupDetection.d.ts +1 -1
  107. package/dist/src/classes/features/callbackLogic/ItemPickupDetection.d.ts.map +1 -1
  108. package/dist/src/classes/features/callbackLogic/ItemPickupDetection.lua +4 -3
  109. package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.d.ts +8 -3
  110. package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.d.ts.map +1 -1
  111. package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.lua +16 -21
  112. package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.d.ts.map +1 -1
  113. package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.lua +2 -2
  114. package/dist/src/classes/features/callbackLogic/SlotRenderDetection.d.ts.map +1 -1
  115. package/dist/src/classes/features/callbackLogic/SlotRenderDetection.lua +1 -1
  116. package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.d.ts.map +1 -1
  117. package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.lua +2 -2
  118. package/dist/src/classes/features/other/CharacterHealthConversion.d.ts.map +1 -1
  119. package/dist/src/classes/features/other/CharacterHealthConversion.lua +2 -2
  120. package/dist/src/classes/features/other/CharacterStats.lua +1 -1
  121. package/dist/src/classes/features/other/CollectibleItemPoolType.d.ts.map +1 -1
  122. package/dist/src/classes/features/other/CollectibleItemPoolType.lua +1 -1
  123. package/dist/src/classes/features/other/CustomHotkeys.lua +1 -1
  124. package/dist/src/classes/features/other/CustomItemPools.lua +1 -1
  125. package/dist/src/classes/features/other/CustomPickups.d.ts.map +1 -1
  126. package/dist/src/classes/features/other/CustomPickups.lua +1 -1
  127. package/dist/src/classes/features/other/CustomStages.d.ts.map +1 -1
  128. package/dist/src/classes/features/other/CustomStages.lua +2 -2
  129. package/dist/src/classes/features/other/CustomTrapdoors.d.ts.map +1 -1
  130. package/dist/src/classes/features/other/CustomTrapdoors.lua +2 -2
  131. package/dist/src/classes/features/other/DisableAllSound.lua +1 -1
  132. package/dist/src/classes/features/other/DisableInputs.d.ts.map +1 -1
  133. package/dist/src/classes/features/other/DisableInputs.lua +1 -1
  134. package/dist/src/classes/features/other/ExtraConsoleCommands.d.ts +1 -1
  135. package/dist/src/classes/features/other/ExtraConsoleCommands.d.ts.map +1 -1
  136. package/dist/src/classes/features/other/ExtraConsoleCommands.lua +17 -16
  137. package/dist/src/classes/features/other/FadeInRemover.lua +1 -1
  138. package/dist/src/classes/features/other/FastReset.lua +1 -1
  139. package/dist/src/classes/features/other/ModdedElementDetection.lua +1 -1
  140. package/dist/src/classes/features/other/NoSirenSteal.d.ts.map +1 -1
  141. package/dist/src/classes/features/other/NoSirenSteal.lua +1 -1
  142. package/dist/src/classes/features/other/Pause.d.ts.map +1 -1
  143. package/dist/src/classes/features/other/Pause.lua +1 -1
  144. package/dist/src/classes/features/other/PersistentEntities.lua +2 -2
  145. package/dist/src/classes/features/other/PickupIndexCreation.d.ts.map +1 -1
  146. package/dist/src/classes/features/other/PickupIndexCreation.lua +1 -1
  147. package/dist/src/classes/features/other/PlayerInventory.lua +1 -1
  148. package/dist/src/classes/features/other/PonyDetection.lua +1 -1
  149. package/dist/src/classes/features/other/PressInput.d.ts.map +1 -1
  150. package/dist/src/classes/features/other/PressInput.lua +1 -1
  151. package/dist/src/classes/features/other/PreventChildEntities.lua +1 -1
  152. package/dist/src/classes/features/other/PreventCollectibleRotation.d.ts.map +1 -1
  153. package/dist/src/classes/features/other/PreventCollectibleRotation.lua +1 -1
  154. package/dist/src/classes/features/other/PreventGridEntityRespawn.d.ts.map +1 -1
  155. package/dist/src/classes/features/other/PreventGridEntityRespawn.lua +2 -2
  156. package/dist/src/classes/features/other/RoomClearFrame.lua +1 -1
  157. package/dist/src/classes/features/other/RoomHistory.lua +1 -1
  158. package/dist/src/classes/features/other/RunInNFrames.lua +1 -1
  159. package/dist/src/classes/features/other/RunNextRoom.lua +1 -1
  160. package/dist/src/classes/features/other/SaveDataManager.d.ts.map +1 -1
  161. package/dist/src/classes/features/other/SaveDataManager.lua +2 -2
  162. package/dist/src/classes/features/other/StageHistory.d.ts.map +1 -1
  163. package/dist/src/classes/features/other/StageHistory.lua +1 -1
  164. package/dist/src/classes/features/other/TaintedLazarusPlayers.lua +1 -1
  165. package/dist/src/classes/features/other/debugDisplay/DebugDisplayBomb.lua +1 -1
  166. package/dist/src/classes/features/other/debugDisplay/DebugDisplayDoor.lua +1 -1
  167. package/dist/src/classes/features/other/debugDisplay/DebugDisplayEffect.lua +1 -1
  168. package/dist/src/classes/features/other/debugDisplay/DebugDisplayFamiliar.lua +1 -1
  169. package/dist/src/classes/features/other/debugDisplay/DebugDisplayKnife.lua +1 -1
  170. package/dist/src/classes/features/other/debugDisplay/DebugDisplayLaser.lua +1 -1
  171. package/dist/src/classes/features/other/debugDisplay/DebugDisplayNPC.lua +1 -1
  172. package/dist/src/classes/features/other/debugDisplay/DebugDisplayPickup.lua +1 -1
  173. package/dist/src/classes/features/other/debugDisplay/DebugDisplayPit.lua +1 -1
  174. package/dist/src/classes/features/other/debugDisplay/DebugDisplayPlayer.lua +1 -1
  175. package/dist/src/classes/features/other/debugDisplay/DebugDisplayPoop.lua +1 -1
  176. package/dist/src/classes/features/other/debugDisplay/DebugDisplayPressurePlate.lua +1 -1
  177. package/dist/src/classes/features/other/debugDisplay/DebugDisplayProjectile.lua +1 -1
  178. package/dist/src/classes/features/other/debugDisplay/DebugDisplayRock.lua +1 -1
  179. package/dist/src/classes/features/other/debugDisplay/DebugDisplaySlot.lua +1 -1
  180. package/dist/src/classes/features/other/debugDisplay/DebugDisplaySpikes.lua +1 -1
  181. package/dist/src/classes/features/other/debugDisplay/DebugDisplayTNT.lua +1 -1
  182. package/dist/src/classes/features/other/debugDisplay/DebugDisplayTear.lua +1 -1
  183. package/dist/src/classes/private/CustomCallback.d.ts +2 -2
  184. package/dist/src/classes/private/CustomCallback.d.ts.map +1 -1
  185. package/dist/src/classes/private/CustomCallback.lua +7 -10
  186. package/dist/src/functions/array.d.ts +5 -1
  187. package/dist/src/functions/array.d.ts.map +1 -1
  188. package/dist/src/functions/array.lua +17 -8
  189. package/dist/src/functions/decorators.d.ts.map +1 -1
  190. package/dist/src/functions/decorators.lua +12 -22
  191. package/dist/src/functions/direction.d.ts +3 -1
  192. package/dist/src/functions/direction.d.ts.map +1 -1
  193. package/dist/src/functions/direction.lua +10 -0
  194. package/dist/src/functions/logMisc.d.ts +1 -0
  195. package/dist/src/functions/logMisc.d.ts.map +1 -1
  196. package/dist/src/functions/logMisc.lua +2 -1
  197. package/dist/src/objects/directionToMoveAction.d.ts +9 -0
  198. package/dist/src/objects/directionToMoveAction.d.ts.map +1 -0
  199. package/dist/src/objects/directionToMoveAction.lua +12 -0
  200. package/dist/src/objects/directionToShootAction.d.ts +9 -0
  201. package/dist/src/objects/directionToShootAction.d.ts.map +1 -0
  202. package/dist/src/objects/directionToShootAction.lua +12 -0
  203. package/dist/src/types/ModUpgraded.d.ts +1 -1
  204. package/dist/src/types/ModUpgraded.d.ts.map +1 -1
  205. package/dist/src/types/private/CallbackTuple.d.ts +17 -8
  206. package/dist/src/types/private/CallbackTuple.d.ts.map +1 -1
  207. package/package.json +1 -1
  208. package/src/classes/ModFeature.ts +43 -21
  209. package/src/classes/ModUpgradedBase.ts +18 -10
  210. package/src/classes/callbacks/EntityTakeDmgFilter.ts +1 -1
  211. package/src/classes/callbacks/EntityTakeDmgPlayer.ts +2 -1
  212. package/src/classes/callbacks/InputActionFilter.ts +1 -1
  213. package/src/classes/callbacks/InputActionPlayer.ts +1 -1
  214. package/src/classes/callbacks/PostAmbushFinished.ts +1 -1
  215. package/src/classes/callbacks/PostAmbushStarted.ts +1 -1
  216. package/src/classes/callbacks/PostBombExploded.ts +1 -1
  217. package/src/classes/callbacks/PostBombInitLate.ts +1 -1
  218. package/src/classes/callbacks/PostBoneSwing.ts +1 -1
  219. package/src/classes/callbacks/PostCollectibleEmpty.ts +2 -1
  220. package/src/classes/callbacks/PostCollectibleInitFirst.ts +2 -1
  221. package/src/classes/callbacks/PostCursedTeleport.ts +52 -60
  222. package/src/classes/callbacks/PostDiceRoomActivated.ts +2 -1
  223. package/src/classes/callbacks/PostDoorRender.ts +1 -1
  224. package/src/classes/callbacks/PostDoorUpdate.ts +1 -1
  225. package/src/classes/callbacks/PostEffectInitLate.ts +1 -1
  226. package/src/classes/callbacks/PostEffectStateChanged.ts +1 -1
  227. package/src/classes/callbacks/PostFamiliarInitLate.ts +1 -1
  228. package/src/classes/callbacks/PostFamiliarStateChanged.ts +1 -1
  229. package/src/classes/callbacks/PostGreedModeWave.ts +1 -1
  230. package/src/classes/callbacks/PostHolyMantleRemoved.ts +1 -1
  231. package/src/classes/callbacks/PostItemDischarge.ts +3 -2
  232. package/src/classes/callbacks/PostKnifeInitLate.ts +1 -1
  233. package/src/classes/callbacks/PostLaserInitLate.ts +1 -1
  234. package/src/classes/callbacks/PostNPCDeathFilter.ts +1 -1
  235. package/src/classes/callbacks/PostNPCInitFilter.ts +1 -1
  236. package/src/classes/callbacks/PostNPCInitLate.ts +1 -1
  237. package/src/classes/callbacks/PostNPCRenderFilter.ts +1 -1
  238. package/src/classes/callbacks/PostNPCStateChanged.ts +1 -1
  239. package/src/classes/callbacks/PostNPCUpdateFilter.ts +1 -1
  240. package/src/classes/callbacks/PostNewRoomEarly.ts +2 -2
  241. package/src/classes/callbacks/PostPickupCollect.ts +1 -1
  242. package/src/classes/callbacks/PostPickupInitFirst.ts +1 -1
  243. package/src/classes/callbacks/PostPickupInitLate.ts +1 -1
  244. package/src/classes/callbacks/PostPickupStateChanged.ts +1 -1
  245. package/src/classes/callbacks/PostPitRender.ts +1 -1
  246. package/src/classes/callbacks/PostPitUpdate.ts +1 -1
  247. package/src/classes/callbacks/PostPlayerChangeHealth.ts +1 -1
  248. package/src/classes/callbacks/PostPlayerChangeStat.ts +1 -1
  249. package/src/classes/callbacks/PostPlayerChangeType.ts +1 -1
  250. package/src/classes/callbacks/PostPlayerFatalDamage.ts +39 -48
  251. package/src/classes/callbacks/PostPlayerInitFirst.ts +2 -2
  252. package/src/classes/callbacks/PostPlayerInitLate.ts +1 -1
  253. package/src/classes/callbacks/PostPoopRender.ts +1 -1
  254. package/src/classes/callbacks/PostPoopUpdate.ts +1 -1
  255. package/src/classes/callbacks/PostPressurePlateRender.ts +1 -1
  256. package/src/classes/callbacks/PostPressurePlateUpdate.ts +1 -1
  257. package/src/classes/callbacks/PostProjectileInitLate.ts +1 -1
  258. package/src/classes/callbacks/PostPurchase.ts +1 -1
  259. package/src/classes/callbacks/PostRockRender.ts +1 -1
  260. package/src/classes/callbacks/PostRockUpdate.ts +1 -1
  261. package/src/classes/callbacks/PostRoomClearChanged.ts +2 -2
  262. package/src/classes/callbacks/PostSacrifice.ts +5 -20
  263. package/src/classes/callbacks/PostSlotCollision.ts +1 -1
  264. package/src/classes/callbacks/PostSlotDestroyed.ts +3 -2
  265. package/src/classes/callbacks/PostSpikesRender.ts +1 -1
  266. package/src/classes/callbacks/PostSpikesUpdate.ts +1 -1
  267. package/src/classes/callbacks/PostTNTRender.ts +1 -1
  268. package/src/classes/callbacks/PostTNTUpdate.ts +1 -1
  269. package/src/classes/callbacks/PostTearInitLate.ts +1 -1
  270. package/src/classes/callbacks/PostTearInitVeryLate.ts +1 -1
  271. package/src/classes/callbacks/PostTransformation.ts +1 -1
  272. package/src/classes/callbacks/PostTrinketBreak.ts +4 -18
  273. package/src/classes/callbacks/PreBerserkDeath.ts +1 -1
  274. package/src/classes/callbacks/PreGetPedestal.ts +2 -1
  275. package/src/classes/callbacks/PreNPCCollisionFilter.ts +1 -1
  276. package/src/classes/callbacks/PreNPCUpdateFilter.ts +1 -1
  277. package/src/classes/callbacks/PreNewLevel.ts +1 -1
  278. package/src/classes/features/callbackLogic/CustomGridEntities.ts +5 -3
  279. package/src/classes/features/callbackLogic/CustomRevive.ts +19 -18
  280. package/src/classes/features/callbackLogic/EsauJrDetection.ts +6 -2
  281. package/src/classes/features/callbackLogic/FlipDetection.ts +2 -1
  282. package/src/classes/features/callbackLogic/GameReorderedCallbacks.ts +13 -5
  283. package/src/classes/features/callbackLogic/GridEntityCollisionDetection.ts +2 -1
  284. package/src/classes/features/callbackLogic/GridEntityRenderDetection.ts +2 -1
  285. package/src/classes/features/callbackLogic/GridEntityUpdateDetection.ts +3 -2
  286. package/src/classes/features/callbackLogic/ItemPickupDetection.ts +8 -5
  287. package/src/classes/features/callbackLogic/PlayerCollectibleDetection.ts +67 -71
  288. package/src/classes/features/callbackLogic/PlayerReorderedCallbacks.ts +10 -5
  289. package/src/classes/features/callbackLogic/SlotRenderDetection.ts +2 -1
  290. package/src/classes/features/callbackLogic/SlotUpdateDetection.ts +3 -2
  291. package/src/classes/features/other/CharacterHealthConversion.ts +3 -2
  292. package/src/classes/features/other/CharacterStats.ts +1 -1
  293. package/src/classes/features/other/CollectibleItemPoolType.ts +2 -1
  294. package/src/classes/features/other/CustomHotkeys.ts +1 -1
  295. package/src/classes/features/other/CustomItemPools.ts +1 -1
  296. package/src/classes/features/other/CustomPickups.ts +3 -2
  297. package/src/classes/features/other/CustomStages.ts +7 -6
  298. package/src/classes/features/other/CustomTrapdoors.ts +4 -6
  299. package/src/classes/features/other/DisableAllSound.ts +1 -1
  300. package/src/classes/features/other/DisableInputs.ts +6 -3
  301. package/src/classes/features/other/ExtraConsoleCommands.ts +32 -31
  302. package/src/classes/features/other/FadeInRemover.ts +1 -1
  303. package/src/classes/features/other/FastReset.ts +1 -1
  304. package/src/classes/features/other/ModdedElementDetection.ts +1 -1
  305. package/src/classes/features/other/NoSirenSteal.ts +2 -1
  306. package/src/classes/features/other/Pause.ts +3 -2
  307. package/src/classes/features/other/PersistentEntities.ts +2 -2
  308. package/src/classes/features/other/PickupIndexCreation.ts +3 -2
  309. package/src/classes/features/other/PlayerInventory.ts +2 -2
  310. package/src/classes/features/other/PonyDetection.ts +1 -1
  311. package/src/classes/features/other/PressInput.ts +2 -1
  312. package/src/classes/features/other/PreventChildEntities.ts +1 -1
  313. package/src/classes/features/other/PreventCollectibleRotation.ts +4 -2
  314. package/src/classes/features/other/PreventGridEntityRespawn.ts +3 -2
  315. package/src/classes/features/other/RoomClearFrame.ts +1 -1
  316. package/src/classes/features/other/RoomHistory.ts +1 -1
  317. package/src/classes/features/other/RunInNFrames.ts +2 -2
  318. package/src/classes/features/other/RunNextRoom.ts +1 -1
  319. package/src/classes/features/other/SaveDataManager.ts +6 -5
  320. package/src/classes/features/other/StageHistory.ts +1 -4
  321. package/src/classes/features/other/TaintedLazarusPlayers.ts +1 -1
  322. package/src/classes/features/other/debugDisplay/DebugDisplayBomb.ts +1 -1
  323. package/src/classes/features/other/debugDisplay/DebugDisplayDoor.ts +1 -1
  324. package/src/classes/features/other/debugDisplay/DebugDisplayEffect.ts +1 -1
  325. package/src/classes/features/other/debugDisplay/DebugDisplayFamiliar.ts +1 -1
  326. package/src/classes/features/other/debugDisplay/DebugDisplayKnife.ts +1 -1
  327. package/src/classes/features/other/debugDisplay/DebugDisplayLaser.ts +1 -1
  328. package/src/classes/features/other/debugDisplay/DebugDisplayNPC.ts +1 -1
  329. package/src/classes/features/other/debugDisplay/DebugDisplayPickup.ts +1 -1
  330. package/src/classes/features/other/debugDisplay/DebugDisplayPit.ts +1 -1
  331. package/src/classes/features/other/debugDisplay/DebugDisplayPlayer.ts +1 -1
  332. package/src/classes/features/other/debugDisplay/DebugDisplayPoop.ts +1 -1
  333. package/src/classes/features/other/debugDisplay/DebugDisplayPressurePlate.ts +1 -1
  334. package/src/classes/features/other/debugDisplay/DebugDisplayProjectile.ts +1 -1
  335. package/src/classes/features/other/debugDisplay/DebugDisplayRock.ts +1 -1
  336. package/src/classes/features/other/debugDisplay/DebugDisplaySlot.ts +1 -1
  337. package/src/classes/features/other/debugDisplay/DebugDisplaySpikes.ts +1 -1
  338. package/src/classes/features/other/debugDisplay/DebugDisplayTNT.ts +1 -1
  339. package/src/classes/features/other/debugDisplay/DebugDisplayTear.ts +1 -1
  340. package/src/classes/private/CustomCallback.ts +19 -15
  341. package/src/functions/array.ts +14 -5
  342. package/src/functions/decorators.ts +14 -20
  343. package/src/functions/direction.ts +15 -1
  344. package/src/functions/logMisc.ts +4 -1
  345. package/src/objects/directionToMoveAction.ts +10 -0
  346. package/src/objects/directionToShootAction.ts +10 -0
  347. package/src/types/ModUpgraded.ts +1 -1
  348. package/src/types/private/CallbackTuple.ts +17 -8
  349. package/dist/src/types/private/AllButFirst.d.ts +0 -5
  350. package/dist/src/types/private/AllButFirst.d.ts.map +0 -1
  351. package/dist/src/types/private/AllButFirst.lua +0 -2
  352. package/src/types/private/AllButFirst.ts +0 -6
@@ -2,12 +2,12 @@ import {
2
2
  CacheFlag,
3
3
  CollectibleType,
4
4
  DamageFlag,
5
- EntityType,
6
5
  LevelCurse,
7
6
  ModCallback,
8
7
  TearVariant,
9
8
  } from "isaac-typescript-definitions";
10
9
  import { Exported } from "../../../decorators";
10
+ import { ModCallbackCustom } from "../../../enums/ModCallbackCustom";
11
11
  import { addFlag, bitFlags } from "../../../functions/flag";
12
12
  import { getMapPartialMatch } from "../../../functions/map";
13
13
  import {
@@ -30,46 +30,48 @@ export class ExtraConsoleCommands extends Feature {
30
30
 
31
31
  this.callbacksUsed = [
32
32
  // 1
33
- [ModCallback.POST_UPDATE, [this.postUpdate]],
33
+ [ModCallback.POST_UPDATE, this.postUpdate],
34
34
 
35
35
  // 8
36
36
  [
37
37
  ModCallback.EVALUATE_CACHE,
38
- [this.evaluateCacheDamage, CacheFlag.DAMAGE], // 1 << 0
38
+ this.evaluateCacheDamage,
39
+ [CacheFlag.DAMAGE], // 1 << 0
39
40
  ],
40
41
 
41
42
  // 8
42
43
  [
43
44
  ModCallback.EVALUATE_CACHE,
44
- [this.evaluateCacheFireDelay, CacheFlag.FIRE_DELAY], // 1 << 1
45
+ this.evaluateCacheFireDelay,
46
+ [CacheFlag.FIRE_DELAY], // 1 << 1
45
47
  ],
46
48
 
47
49
  // 8
48
50
  [
49
51
  ModCallback.EVALUATE_CACHE,
50
- [this.evaluateCacheSpeed, CacheFlag.SPEED], // 1 << 4
52
+ this.evaluateCacheSpeed,
53
+ [CacheFlag.SPEED], // 1 << 4
51
54
  ],
52
55
 
53
56
  // 8
54
57
  [
55
58
  ModCallback.EVALUATE_CACHE,
56
- [this.evaluateCacheFlying, CacheFlag.FLYING], // 1 << 7
57
- ],
58
-
59
- // 11
60
- [
61
- ModCallback.ENTITY_TAKE_DMG,
62
- [this.entityTakeDmgPlayer, EntityType.PLAYER],
59
+ this.evaluateCacheFlying,
60
+ [CacheFlag.FLYING], // 1 << 7
63
61
  ],
64
62
 
65
63
  // 12
66
- [ModCallback.POST_CURSE_EVAL, [this.postCurseEval]],
64
+ [ModCallback.POST_CURSE_EVAL, this.postCurseEval],
67
65
 
68
66
  // 22
69
- [ModCallback.EXECUTE_CMD, [this.executeCmd]],
67
+ [ModCallback.EXECUTE_CMD, this.executeCmd],
70
68
 
71
69
  // 61
72
- [ModCallback.POST_FIRE_TEAR, [this.postFireTear]],
70
+ [ModCallback.POST_FIRE_TEAR, this.postFireTear],
71
+ ];
72
+
73
+ this.customCallbacksUsed = [
74
+ [ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER, this.entityTakeDmgPlayer],
73
75
  ];
74
76
 
75
77
  for (const [funcName, func] of Object.entries(commands)) {
@@ -117,22 +119,6 @@ export class ExtraConsoleCommands extends Feature {
117
119
  }
118
120
  };
119
121
 
120
- // ModCallback.ENTITY_TAKE_DMG (11)
121
- // EntityType.PLAYER (1)
122
- private entityTakeDmgPlayer = (
123
- _entity: Entity,
124
- _damageAmount: float,
125
- _damageFlags: BitFlags<DamageFlag>,
126
- _damageSource: EntityRef,
127
- _damageCountdownFrames: int,
128
- ) => {
129
- if (this.v.persistent.spamBloodRights) {
130
- return false;
131
- }
132
-
133
- return undefined;
134
- };
135
-
136
122
  // ModCallback.POST_CURSE_EVAL (12)
137
123
  private postCurseEval = (
138
124
  curses: BitFlags<LevelCurse>,
@@ -206,6 +192,21 @@ export class ExtraConsoleCommands extends Feature {
206
192
  }
207
193
  };
208
194
 
195
+ // ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER
196
+ private entityTakeDmgPlayer = (
197
+ _player: EntityPlayer,
198
+ _damageAmount: float,
199
+ _damageFlags: BitFlags<DamageFlag>,
200
+ _damageSource: EntityRef,
201
+ _damageCountdownFrames: int,
202
+ ) => {
203
+ if (this.v.persistent.spamBloodRights) {
204
+ return false;
205
+ }
206
+
207
+ return undefined;
208
+ };
209
+
209
210
  /**
210
211
  * Helper function to add a custom console command.
211
212
  *
@@ -14,7 +14,7 @@ export class FadeInRemover extends Feature {
14
14
 
15
15
  this.callbacksUsed = [
16
16
  // 15
17
- [ModCallback.POST_GAME_STARTED, [this.postGameStarted]],
17
+ [ModCallback.POST_GAME_STARTED, this.postGameStarted],
18
18
  ];
19
19
  }
20
20
 
@@ -20,7 +20,7 @@ export class FastReset extends Feature {
20
20
 
21
21
  this.callbacksUsed = [
22
22
  // 2
23
- [ModCallback.POST_RENDER, [this.postRender]],
23
+ [ModCallback.POST_RENDER, this.postRender],
24
24
  ];
25
25
  }
26
26
 
@@ -49,7 +49,7 @@ export class ModdedElementDetection extends Feature {
49
49
 
50
50
  this.callbacksUsed = [
51
51
  // 9
52
- [ModCallback.POST_PLAYER_INIT, [this.postPlayerInit]],
52
+ [ModCallback.POST_PLAYER_INIT, this.postPlayerInit],
53
53
  ];
54
54
  }
55
55
 
@@ -24,7 +24,8 @@ export class NoSirenSteal extends Feature {
24
24
  // 27
25
25
  [
26
26
  ModCallback.POST_NPC_INIT,
27
- [this.postNPCInitSirenHelper, EntityType.SIREN_HELPER],
27
+ this.postNPCInitSirenHelper,
28
+ [EntityType.SIREN_HELPER],
28
29
  ],
29
30
  ];
30
31
  }
@@ -47,12 +47,13 @@ export class Pause extends Feature {
47
47
 
48
48
  this.callbacksUsed = [
49
49
  // 1
50
- [ModCallback.POST_UPDATE, [this.postUpdate]],
50
+ [ModCallback.POST_UPDATE, this.postUpdate],
51
51
 
52
52
  // 13
53
53
  [
54
54
  ModCallback.INPUT_ACTION,
55
- [this.inputActionGetActionValue, InputHook.GET_ACTION_VALUE],
55
+ this.inputActionGetActionValue,
56
+ [InputHook.GET_ACTION_VALUE],
56
57
  ],
57
58
  ];
58
59
 
@@ -56,11 +56,11 @@ export class PersistentEntities extends Feature {
56
56
 
57
57
  this.callbacksUsed = [
58
58
  // 67
59
- [ModCallback.POST_ENTITY_REMOVE, [this.postEntityRemove]],
59
+ [ModCallback.POST_ENTITY_REMOVE, this.postEntityRemove],
60
60
  ];
61
61
 
62
62
  this.customCallbacksUsed = [
63
- [ModCallbackCustom.POST_NEW_ROOM_REORDERED, [this.postNewRoomReordered]],
63
+ [ModCallbackCustom.POST_NEW_ROOM_REORDERED, this.postNewRoomReordered],
64
64
  ];
65
65
 
66
66
  this.roomHistory = roomHistory;
@@ -55,12 +55,13 @@ export class PickupIndexCreation extends Feature {
55
55
 
56
56
  this.callbacksUsed = [
57
57
  // 34
58
- [ModCallback.POST_PICKUP_INIT, [this.postPickupInit]],
58
+ [ModCallback.POST_PICKUP_INIT, this.postPickupInit],
59
59
 
60
60
  // 67
61
61
  [
62
62
  ModCallback.POST_ENTITY_REMOVE,
63
- [this.postEntityRemovePickup, EntityType.PICKUP],
63
+ this.postEntityRemovePickup,
64
+ [EntityType.PICKUP],
64
65
  ],
65
66
  ];
66
67
 
@@ -31,11 +31,11 @@ export class PlayerInventory extends Feature {
31
31
  this.customCallbacksUsed = [
32
32
  [
33
33
  ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED,
34
- [this.postCollectibleAdded],
34
+ this.postCollectibleAdded,
35
35
  ],
36
36
  [
37
37
  ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED,
38
- [this.postCollectibleRemoved],
38
+ this.postCollectibleRemoved,
39
39
  ],
40
40
  ];
41
41
  }
@@ -32,7 +32,7 @@ export class PonyDetection extends Feature {
32
32
  this.customCallbacksUsed = [
33
33
  [
34
34
  ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
35
- [this.postPEffectUpdateReordered],
35
+ this.postPEffectUpdateReordered,
36
36
  ],
37
37
  ];
38
38
  }
@@ -24,7 +24,8 @@ export class PressInput extends Feature {
24
24
  // 13
25
25
  [
26
26
  ModCallback.INPUT_ACTION,
27
- [this.isActionTriggered, InputHook.IS_ACTION_TRIGGERED],
27
+ this.isActionTriggered,
28
+ [InputHook.IS_ACTION_TRIGGERED],
28
29
  ],
29
30
  ];
30
31
  }
@@ -16,7 +16,7 @@ export class PreventChildEntities extends Feature {
16
16
 
17
17
  this.callbacksUsed = [
18
18
  // 27
19
- [ModCallback.POST_NPC_INIT, [this.postNPCInit]],
19
+ [ModCallback.POST_NPC_INIT, this.postNPCInit],
20
20
  ];
21
21
  }
22
22
 
@@ -37,13 +37,15 @@ export class PreventCollectibleRotation extends Feature {
37
37
  // 5
38
38
  [
39
39
  ModCallback.POST_USE_CARD,
40
- [this.useCardSoulOfIsaac, CardType.SOUL_ISAAC],
40
+ this.useCardSoulOfIsaac,
41
+ [CardType.SOUL_ISAAC],
41
42
  ],
42
43
 
43
44
  // 35
44
45
  [
45
46
  ModCallback.POST_PICKUP_UPDATE,
46
- [this.postPickupUpdateCollectible, PickupVariant.COLLECTIBLE],
47
+ this.postPickupUpdateCollectible,
48
+ [PickupVariant.COLLECTIBLE],
47
49
  ],
48
50
  ];
49
51
  }
@@ -49,12 +49,13 @@ export class PreventGridEntityRespawn extends Feature {
49
49
  // 23
50
50
  [
51
51
  ModCallback.PRE_USE_ITEM,
52
- [this.preUseItemWeNeedToGoDeeper, CollectibleType.WE_NEED_TO_GO_DEEPER],
52
+ this.preUseItemWeNeedToGoDeeper,
53
+ [CollectibleType.WE_NEED_TO_GO_DEEPER],
53
54
  ],
54
55
  ];
55
56
 
56
57
  this.customCallbacksUsed = [
57
- [ModCallbackCustom.POST_NEW_ROOM_REORDERED, [this.postNewRoomReordered]],
58
+ [ModCallbackCustom.POST_NEW_ROOM_REORDERED, this.postNewRoomReordered],
58
59
  ];
59
60
 
60
61
  this.runInNFrames = runInNFrames;
@@ -19,7 +19,7 @@ export class RoomClearFrame extends Feature {
19
19
  this.customCallbacksUsed = [
20
20
  [
21
21
  ModCallbackCustom.POST_ROOM_CLEAR_CHANGED,
22
- [this.postRoomClearChangedTrue],
22
+ this.postRoomClearChangedTrue,
23
23
  ],
24
24
  ];
25
25
  }
@@ -28,7 +28,7 @@ export class RoomHistory extends Feature {
28
28
  super();
29
29
 
30
30
  this.customCallbacksUsed = [
31
- [ModCallbackCustom.POST_NEW_ROOM_EARLY, [this.postNewRoomEarly]],
31
+ [ModCallbackCustom.POST_NEW_ROOM_EARLY, this.postNewRoomEarly],
32
32
  ];
33
33
  }
34
34
 
@@ -40,10 +40,10 @@ export class RunInNFrames extends Feature {
40
40
 
41
41
  this.callbacksUsed = [
42
42
  // 1
43
- [ModCallback.POST_UPDATE, [this.postUpdate]],
43
+ [ModCallback.POST_UPDATE, this.postUpdate],
44
44
 
45
45
  // 2
46
- [ModCallback.POST_RENDER, [this.postRender]],
46
+ [ModCallback.POST_RENDER, this.postRender],
47
47
  ];
48
48
  }
49
49
 
@@ -21,7 +21,7 @@ export class RunNextRoom extends Feature {
21
21
  super();
22
22
 
23
23
  this.customCallbacksUsed = [
24
- [ModCallbackCustom.POST_NEW_ROOM_REORDERED, [this.postNewRoomReordered]],
24
+ [ModCallbackCustom.POST_NEW_ROOM_REORDERED, this.postNewRoomReordered],
25
25
  ];
26
26
  }
27
27
 
@@ -90,21 +90,22 @@ export class SaveDataManager extends Feature {
90
90
  // 3
91
91
  [
92
92
  ModCallback.POST_USE_ITEM,
93
- [this.postUseItemGlowingHourGlass, CollectibleType.GLOWING_HOUR_GLASS],
93
+ this.postUseItemGlowingHourGlass,
94
+ [CollectibleType.GLOWING_HOUR_GLASS],
94
95
  ],
95
96
 
96
97
  // 9
97
- [ModCallback.POST_PLAYER_INIT, [this.postPlayerInit]],
98
+ [ModCallback.POST_PLAYER_INIT, this.postPlayerInit],
98
99
 
99
100
  // 17
100
- [ModCallback.PRE_GAME_EXIT, [this.preGameExit]],
101
+ [ModCallback.PRE_GAME_EXIT, this.preGameExit],
101
102
 
102
103
  // 18
103
- [ModCallback.POST_NEW_LEVEL, [this.postNewLevel]],
104
+ [ModCallback.POST_NEW_LEVEL, this.postNewLevel],
104
105
  ];
105
106
 
106
107
  this.customCallbacksUsed = [
107
- [ModCallbackCustom.POST_NEW_ROOM_EARLY, [this.postNewRoomEarly]],
108
+ [ModCallbackCustom.POST_NEW_ROOM_EARLY, this.postNewRoomEarly],
108
109
  ];
109
110
 
110
111
  this.mod = mod;
@@ -27,10 +27,7 @@ export class StageHistory extends Feature {
27
27
  super();
28
28
 
29
29
  this.customCallbacksUsed = [
30
- [
31
- ModCallbackCustom.POST_NEW_LEVEL_REORDERED,
32
- [this.postNewLevelReordered],
33
- ],
30
+ [ModCallbackCustom.POST_NEW_LEVEL_REORDERED, this.postNewLevelReordered],
34
31
  ];
35
32
  }
36
33
 
@@ -40,7 +40,7 @@ export class TaintedLazarusPlayers extends Feature {
40
40
 
41
41
  this.callbacksUsed = [
42
42
  // 9
43
- [ModCallback.POST_PLAYER_INIT, [this.postPlayerInit]],
43
+ [ModCallback.POST_PLAYER_INIT, this.postPlayerInit],
44
44
  ];
45
45
  }
46
46
 
@@ -11,7 +11,7 @@ export class DebugDisplayBomb extends Feature {
11
11
 
12
12
  this.callbacksUsed = [
13
13
  // 59
14
- [ModCallback.POST_BOMB_RENDER, [this.postBombRender]],
14
+ [ModCallback.POST_BOMB_RENDER, this.postBombRender],
15
15
  ];
16
16
  }
17
17
 
@@ -10,7 +10,7 @@ export class DebugDisplayDoor extends Feature {
10
10
  super();
11
11
 
12
12
  this.customCallbacksUsed = [
13
- [ModCallbackCustom.POST_DOOR_RENDER, [this.postDoorRender]],
13
+ [ModCallbackCustom.POST_DOOR_RENDER, this.postDoorRender],
14
14
  ];
15
15
  }
16
16
 
@@ -11,7 +11,7 @@ export class DebugDisplayEffect extends Feature {
11
11
 
12
12
  this.callbacksUsed = [
13
13
  // 56
14
- [ModCallback.POST_EFFECT_RENDER, [this.postEffectRender]],
14
+ [ModCallback.POST_EFFECT_RENDER, this.postEffectRender],
15
15
  ];
16
16
  }
17
17
 
@@ -11,7 +11,7 @@ export class DebugDisplayFamiliar extends Feature {
11
11
 
12
12
  this.callbacksUsed = [
13
13
  // 25
14
- [ModCallback.POST_FAMILIAR_RENDER, [this.postFamiliarRender]],
14
+ [ModCallback.POST_FAMILIAR_RENDER, this.postFamiliarRender],
15
15
  ];
16
16
  }
17
17
 
@@ -11,7 +11,7 @@ export class DebugDisplayKnife extends Feature {
11
11
 
12
12
  this.callbacksUsed = [
13
13
  // 52
14
- [ModCallback.POST_KNIFE_RENDER, [this.postKnifeRender]],
14
+ [ModCallback.POST_KNIFE_RENDER, this.postKnifeRender],
15
15
  ];
16
16
  }
17
17
 
@@ -11,7 +11,7 @@ export class DebugDisplayLaser extends Feature {
11
11
 
12
12
  this.callbacksUsed = [
13
13
  // 49
14
- [ModCallback.POST_LASER_RENDER, [this.postLaserRender]],
14
+ [ModCallback.POST_LASER_RENDER, this.postLaserRender],
15
15
  ];
16
16
  }
17
17
 
@@ -11,7 +11,7 @@ export class DebugDisplayNPC extends Feature {
11
11
 
12
12
  this.callbacksUsed = [
13
13
  // 28
14
- [ModCallback.POST_NPC_RENDER, [this.postNPCRender]],
14
+ [ModCallback.POST_NPC_RENDER, this.postNPCRender],
15
15
  ];
16
16
  }
17
17
 
@@ -11,7 +11,7 @@ export class DebugDisplayPickup extends Feature {
11
11
 
12
12
  this.callbacksUsed = [
13
13
  // 36
14
- [ModCallback.POST_PICKUP_RENDER, [this.postPickupRender]],
14
+ [ModCallback.POST_PICKUP_RENDER, this.postPickupRender],
15
15
  ];
16
16
  }
17
17
 
@@ -10,7 +10,7 @@ export class DebugDisplayPit extends Feature {
10
10
  super();
11
11
 
12
12
  this.customCallbacksUsed = [
13
- [ModCallbackCustom.POST_PIT_RENDER, [this.postPitRender]],
13
+ [ModCallbackCustom.POST_PIT_RENDER, this.postPitRender],
14
14
  ];
15
15
  }
16
16
 
@@ -11,7 +11,7 @@ export class DebugDisplayPlayer extends Feature {
11
11
 
12
12
  this.callbacksUsed = [
13
13
  // 32
14
- [ModCallback.POST_PLAYER_RENDER, [this.postPlayerRender]],
14
+ [ModCallback.POST_PLAYER_RENDER, this.postPlayerRender],
15
15
  ];
16
16
  }
17
17
 
@@ -10,7 +10,7 @@ export class DebugDisplayPoop extends Feature {
10
10
  super();
11
11
 
12
12
  this.customCallbacksUsed = [
13
- [ModCallbackCustom.POST_POOP_RENDER, [this.postPoopRender]],
13
+ [ModCallbackCustom.POST_POOP_RENDER, this.postPoopRender],
14
14
  ];
15
15
  }
16
16
 
@@ -12,7 +12,7 @@ export class DebugDisplayPressurePlate extends Feature {
12
12
  this.customCallbacksUsed = [
13
13
  [
14
14
  ModCallbackCustom.POST_PRESSURE_PLATE_RENDER,
15
- [this.postPressurePlateRender],
15
+ this.postPressurePlateRender,
16
16
  ],
17
17
  ];
18
18
  }
@@ -11,7 +11,7 @@ export class DebugDisplayProjectile extends Feature {
11
11
 
12
12
  this.callbacksUsed = [
13
13
  // 45
14
- [ModCallback.POST_PROJECTILE_RENDER, [this.postProjectileRender]],
14
+ [ModCallback.POST_PROJECTILE_RENDER, this.postProjectileRender],
15
15
  ];
16
16
  }
17
17
 
@@ -10,7 +10,7 @@ export class DebugDisplayRock extends Feature {
10
10
  super();
11
11
 
12
12
  this.customCallbacksUsed = [
13
- [ModCallbackCustom.POST_ROCK_RENDER, [this.postRockRender]],
13
+ [ModCallbackCustom.POST_ROCK_RENDER, this.postRockRender],
14
14
  ];
15
15
  }
16
16
 
@@ -10,7 +10,7 @@ export class DebugDisplaySlot extends Feature {
10
10
  super();
11
11
 
12
12
  this.customCallbacksUsed = [
13
- [ModCallbackCustom.POST_SLOT_RENDER, [this.postSlotRender]],
13
+ [ModCallbackCustom.POST_SLOT_RENDER, this.postSlotRender],
14
14
  ];
15
15
  }
16
16
 
@@ -10,7 +10,7 @@ export class DebugDisplaySpikes extends Feature {
10
10
  super();
11
11
 
12
12
  this.customCallbacksUsed = [
13
- [ModCallbackCustom.POST_SPIKES_RENDER, [this.postSpikesRender]],
13
+ [ModCallbackCustom.POST_SPIKES_RENDER, this.postSpikesRender],
14
14
  ];
15
15
  }
16
16
 
@@ -10,7 +10,7 @@ export class DebugDisplayTNT extends Feature {
10
10
  super();
11
11
 
12
12
  this.customCallbacksUsed = [
13
- [ModCallbackCustom.POST_TNT_RENDER, [this.postTNTRender]],
13
+ [ModCallbackCustom.POST_TNT_RENDER, this.postTNTRender],
14
14
  ];
15
15
  }
16
16
 
@@ -11,7 +11,7 @@ export class DebugDisplayTear extends Feature {
11
11
 
12
12
  this.callbacksUsed = [
13
13
  // 41
14
- [ModCallback.POST_TEAR_RENDER, [this.postTearRender]],
14
+ [ModCallback.POST_TEAR_RENDER, this.postTearRender],
15
15
  ];
16
16
  }
17
17
 
@@ -1,6 +1,7 @@
1
1
  import { ModCallbackCustom } from "../../enums/ModCallbackCustom";
2
2
  import { AddCallbackParametersCustom } from "../../interfaces/private/AddCallbackParametersCustom";
3
- import { AllButFirst } from "../../types/private/AllButFirst";
3
+ import { AllButFirst } from "../../types/AllButFirst";
4
+ import { AnyFunction } from "../../types/AnyFunction";
4
5
  import { Feature } from "./Feature";
5
6
 
6
7
  export type FireArgs<T extends ModCallbackCustom> = Parameters<
@@ -10,6 +11,11 @@ export type OptionalArgs<T extends ModCallbackCustom> = AllButFirst<
10
11
  AddCallbackParametersCustom[T]
11
12
  >;
12
13
 
14
+ type Subscription<T extends ModCallbackCustom> = [
15
+ callbackFunc: AddCallbackParametersCustom[T][0],
16
+ optionalArgs: AllButFirst<AddCallbackParametersCustom[T]>,
17
+ ];
18
+
13
19
  /**
14
20
  * The base class for a custom callback. Individual custom callbacks (and validation callbacks) will
15
21
  * extend from this class.
@@ -17,10 +23,14 @@ export type OptionalArgs<T extends ModCallbackCustom> = AllButFirst<
17
23
  export abstract class CustomCallback<
18
24
  T extends ModCallbackCustom,
19
25
  > extends Feature {
20
- private subscriptions: Array<AddCallbackParametersCustom[T]> = [];
26
+ private subscriptions: Array<Subscription<T>> = [];
21
27
 
22
- public addSubscriber(...args: AddCallbackParametersCustom[T]): void {
23
- this.subscriptions.push(args);
28
+ public addSubscriber(
29
+ callbackFunc: AddCallbackParametersCustom[T][0],
30
+ ...optionalArgs: AllButFirst<AddCallbackParametersCustom[T]>
31
+ ): void {
32
+ const subscription: Subscription<T> = [callbackFunc, optionalArgs];
33
+ this.subscriptions.push(subscription);
24
34
  }
25
35
 
26
36
  /**
@@ -42,20 +52,14 @@ export abstract class CustomCallback<
42
52
  public fire = (
43
53
  ...fireArgs: FireArgs<T>
44
54
  ): ReturnType<AddCallbackParametersCustom[T][0]> => {
45
- for (const [callback, ...optionalArgsArray] of this.subscriptions) {
46
- // The TypeScript compiler is bugged with the spread operator here, as it converts the
47
- // optional arguments to an array instead of a tuple.
48
- const optionalArgs = optionalArgsArray as OptionalArgs<T>;
55
+ for (const subscription of this.subscriptions) {
56
+ const [callbackFunc, optionalArgs] = subscription;
49
57
 
50
58
  if (this.shouldFire(fireArgs, optionalArgs)) {
51
- // The TypeScript compiler is not smart enough to know that the fire args match the callback
52
- // signature.
53
- const callbackCasted = callback as (
54
- ...args: FireArgs<T>
55
- ) => ReturnType<AddCallbackParametersCustom[T][0]>;
56
- const value = callbackCasted(...fireArgs);
59
+ // TypeScript is not smart enough to know that the arguments match the function.
60
+ const value = (callbackFunc as AnyFunction)(...fireArgs);
57
61
  if (value !== undefined) {
58
- return value;
62
+ return value as ReturnType<AddCallbackParametersCustom[T][0]>;
59
63
  }
60
64
  }
61
65
  }