isaacscript-common 14.0.0 → 14.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (559) hide show
  1. package/dist/index.d.ts +1111 -83
  2. package/dist/isaacscript-common.lua +9946 -7327
  3. package/dist/src/callbacks/customRevive.lua +10 -1
  4. package/dist/src/callbacks/postDoorRender.lua +2 -2
  5. package/dist/src/callbacks/postEffectStateChanged.lua +3 -3
  6. package/dist/src/callbacks/postFamiliarStateChanged.lua +3 -3
  7. package/dist/src/callbacks/postFlip.lua +1 -1
  8. package/dist/src/callbacks/postGridEntity.lua +2 -2
  9. package/dist/src/callbacks/postNPCStateChanged.lua +3 -3
  10. package/dist/src/callbacks/postPickupStateChanged.lua +3 -3
  11. package/dist/src/callbacks/postPlayerCollectible.d.ts.map +1 -1
  12. package/dist/src/callbacks/postPlayerCollectible.lua +5 -9
  13. package/dist/src/callbacks/reorderedCallbacks.lua +7 -7
  14. package/dist/src/callbacks/subscriptions/postGridEntityBroken.d.ts +1 -1
  15. package/dist/src/callbacks/subscriptions/postGridEntityBroken.d.ts.map +1 -1
  16. package/dist/src/callbacks/subscriptions/postGridEntityBroken.lua +3 -3
  17. package/dist/src/callbacks/subscriptions/postGridEntityInit.d.ts +1 -1
  18. package/dist/src/callbacks/subscriptions/postGridEntityInit.d.ts.map +1 -1
  19. package/dist/src/callbacks/subscriptions/postGridEntityInit.lua +3 -3
  20. package/dist/src/callbacks/subscriptions/postGridEntityRemove.d.ts +3 -3
  21. package/dist/src/callbacks/subscriptions/postGridEntityRemove.d.ts.map +1 -1
  22. package/dist/src/callbacks/subscriptions/postGridEntityRemove.lua +4 -4
  23. package/dist/src/callbacks/subscriptions/postGridEntityRender.d.ts +1 -1
  24. package/dist/src/callbacks/subscriptions/postGridEntityRender.d.ts.map +1 -1
  25. package/dist/src/callbacks/subscriptions/postGridEntityRender.lua +3 -3
  26. package/dist/src/callbacks/subscriptions/postGridEntityStateChanged.d.ts +1 -1
  27. package/dist/src/callbacks/subscriptions/postGridEntityStateChanged.d.ts.map +1 -1
  28. package/dist/src/callbacks/subscriptions/postGridEntityStateChanged.lua +3 -3
  29. package/dist/src/callbacks/subscriptions/postGridEntityUpdate.d.ts +1 -1
  30. package/dist/src/callbacks/subscriptions/postGridEntityUpdate.d.ts.map +1 -1
  31. package/dist/src/callbacks/subscriptions/postGridEntityUpdate.lua +3 -3
  32. package/dist/src/callbacks/subscriptions/postRockRender.d.ts +1 -1
  33. package/dist/src/callbacks/subscriptions/postRockRender.d.ts.map +1 -1
  34. package/dist/src/callbacks/subscriptions/postRockRender.lua +3 -3
  35. package/dist/src/callbacks/subscriptions/postRockUpdate.d.ts +1 -1
  36. package/dist/src/callbacks/subscriptions/postRockUpdate.d.ts.map +1 -1
  37. package/dist/src/callbacks/subscriptions/postRockUpdate.lua +3 -3
  38. package/dist/src/callbacks/subscriptions/postSpikesRender.d.ts +1 -1
  39. package/dist/src/callbacks/subscriptions/postSpikesRender.d.ts.map +1 -1
  40. package/dist/src/callbacks/subscriptions/postSpikesRender.lua +3 -3
  41. package/dist/src/callbacks/subscriptions/postSpikesUpdate.d.ts +1 -1
  42. package/dist/src/callbacks/subscriptions/postSpikesUpdate.d.ts.map +1 -1
  43. package/dist/src/callbacks/subscriptions/postSpikesUpdate.lua +3 -3
  44. package/dist/src/callbacks/subscriptions/postTNTRender.d.ts +1 -1
  45. package/dist/src/callbacks/subscriptions/postTNTRender.d.ts.map +1 -1
  46. package/dist/src/callbacks/subscriptions/postTNTRender.lua +3 -3
  47. package/dist/src/callbacks/subscriptions/postTNTUpdate.d.ts +1 -1
  48. package/dist/src/callbacks/subscriptions/postTNTUpdate.d.ts.map +1 -1
  49. package/dist/src/callbacks/subscriptions/postTNTUpdate.lua +3 -3
  50. package/dist/src/callbacks.d.ts +106 -0
  51. package/dist/src/callbacks.d.ts.map +1 -0
  52. package/dist/src/callbacks.lua +176 -0
  53. package/dist/src/classes/DefaultMap.d.ts.map +1 -1
  54. package/dist/src/classes/ModFeature.d.ts +11 -0
  55. package/dist/src/classes/ModFeature.d.ts.map +1 -0
  56. package/dist/src/classes/ModFeature.lua +13 -0
  57. package/dist/src/classes/ModUpgraded.d.ts +41 -7
  58. package/dist/src/classes/ModUpgraded.d.ts.map +1 -1
  59. package/dist/src/classes/ModUpgraded.lua +75 -60
  60. package/dist/src/classes/callbacks/PostAmbushFinished.d.ts +1 -1
  61. package/dist/src/classes/callbacks/PostAmbushFinished.d.ts.map +1 -1
  62. package/dist/src/classes/callbacks/PostAmbushFinished.lua +1 -1
  63. package/dist/src/classes/callbacks/PostAmbushStarted.d.ts +1 -1
  64. package/dist/src/classes/callbacks/PostAmbushStarted.d.ts.map +1 -1
  65. package/dist/src/classes/callbacks/PostAmbushStarted.lua +1 -1
  66. package/dist/src/classes/callbacks/PostBombExploded.d.ts +1 -1
  67. package/dist/src/classes/callbacks/PostBombExploded.d.ts.map +1 -1
  68. package/dist/src/classes/callbacks/PostBombExploded.lua +1 -1
  69. package/dist/src/classes/callbacks/PostBombInitLate.d.ts +1 -1
  70. package/dist/src/classes/callbacks/PostBombInitLate.d.ts.map +1 -1
  71. package/dist/src/classes/callbacks/PostBombInitLate.lua +1 -1
  72. package/dist/src/classes/callbacks/PostBoneSwing.d.ts +3 -4
  73. package/dist/src/classes/callbacks/PostBoneSwing.d.ts.map +1 -1
  74. package/dist/src/classes/callbacks/PostBoneSwing.lua +1 -1
  75. package/dist/src/classes/callbacks/PostCollectibleEmpty.d.ts +3 -3
  76. package/dist/src/classes/callbacks/PostCollectibleEmpty.d.ts.map +1 -1
  77. package/dist/src/classes/callbacks/PostCollectibleEmpty.lua +1 -1
  78. package/dist/src/classes/callbacks/PostCollectibleInitFirst.d.ts +1 -1
  79. package/dist/src/classes/callbacks/PostCollectibleInitFirst.d.ts.map +1 -1
  80. package/dist/src/classes/callbacks/PostCollectibleInitFirst.lua +1 -1
  81. package/dist/src/classes/callbacks/PostCursedTeleport.d.ts +5 -6
  82. package/dist/src/classes/callbacks/PostCursedTeleport.d.ts.map +1 -1
  83. package/dist/src/classes/callbacks/PostCursedTeleport.lua +1 -1
  84. package/dist/src/classes/callbacks/PostCustomRevive.d.ts +6 -0
  85. package/dist/src/classes/callbacks/PostCustomRevive.d.ts.map +1 -0
  86. package/dist/src/classes/callbacks/PostCustomRevive.lua +17 -0
  87. package/dist/src/classes/callbacks/PostDiceRoomActivated.d.ts +15 -0
  88. package/dist/src/classes/callbacks/PostDiceRoomActivated.d.ts.map +1 -0
  89. package/dist/src/classes/callbacks/PostDiceRoomActivated.lua +44 -0
  90. package/dist/src/classes/callbacks/PostDoorRender.d.ts +7 -0
  91. package/dist/src/classes/callbacks/PostDoorRender.d.ts.map +1 -0
  92. package/dist/src/classes/callbacks/PostDoorRender.lua +24 -0
  93. package/dist/src/classes/callbacks/PostDoorUpdate.d.ts +7 -0
  94. package/dist/src/classes/callbacks/PostDoorUpdate.d.ts.map +1 -0
  95. package/dist/src/classes/callbacks/PostDoorUpdate.lua +24 -0
  96. package/dist/src/classes/callbacks/PostEffectInitLate.d.ts +12 -0
  97. package/dist/src/classes/callbacks/PostEffectInitLate.d.ts.map +1 -0
  98. package/dist/src/classes/callbacks/PostEffectInitLate.lua +27 -0
  99. package/dist/src/classes/callbacks/PostEffectStateChanged.d.ts +13 -0
  100. package/dist/src/classes/callbacks/PostEffectStateChanged.d.ts.map +1 -0
  101. package/dist/src/classes/callbacks/PostEffectStateChanged.lua +33 -0
  102. package/dist/src/classes/callbacks/PostEsauJr.d.ts +6 -0
  103. package/dist/src/classes/callbacks/PostEsauJr.d.ts.map +1 -0
  104. package/dist/src/classes/callbacks/PostEsauJr.lua +17 -0
  105. package/dist/src/classes/callbacks/PostFamiliarInitLate.d.ts +12 -0
  106. package/dist/src/classes/callbacks/PostFamiliarInitLate.d.ts.map +1 -0
  107. package/dist/src/classes/callbacks/PostFamiliarInitLate.lua +27 -0
  108. package/dist/src/classes/callbacks/PostFamiliarStateChanged.d.ts +13 -0
  109. package/dist/src/classes/callbacks/PostFamiliarStateChanged.d.ts.map +1 -0
  110. package/dist/src/classes/callbacks/PostFamiliarStateChanged.lua +33 -0
  111. package/dist/src/classes/callbacks/PostFirstEsauJr.d.ts +6 -0
  112. package/dist/src/classes/callbacks/PostFirstEsauJr.d.ts.map +1 -0
  113. package/dist/src/classes/callbacks/PostFirstEsauJr.lua +17 -0
  114. package/dist/src/classes/callbacks/PostFirstFlip.d.ts +6 -0
  115. package/dist/src/classes/callbacks/PostFirstFlip.d.ts.map +1 -0
  116. package/dist/src/classes/callbacks/PostFirstFlip.lua +17 -0
  117. package/dist/src/classes/callbacks/PostFlip.d.ts +6 -0
  118. package/dist/src/classes/callbacks/PostFlip.d.ts.map +1 -0
  119. package/dist/src/classes/callbacks/PostFlip.lua +17 -0
  120. package/dist/src/classes/callbacks/PostGameStartedReordered.d.ts +6 -0
  121. package/dist/src/classes/callbacks/PostGameStartedReordered.d.ts.map +1 -0
  122. package/dist/src/classes/callbacks/PostGameStartedReordered.lua +17 -0
  123. package/dist/src/classes/callbacks/PostGameStartedReorderedLast.d.ts +6 -0
  124. package/dist/src/classes/callbacks/PostGameStartedReorderedLast.d.ts.map +1 -0
  125. package/dist/src/classes/callbacks/PostGameStartedReorderedLast.lua +17 -0
  126. package/dist/src/classes/callbacks/PostGreedModeWave.d.ts +12 -0
  127. package/dist/src/classes/callbacks/PostGreedModeWave.d.ts.map +1 -0
  128. package/dist/src/classes/callbacks/PostGreedModeWave.lua +34 -0
  129. package/dist/src/classes/callbacks/PostGridEntityBroken.d.ts +6 -0
  130. package/dist/src/classes/callbacks/PostGridEntityBroken.d.ts.map +1 -0
  131. package/dist/src/classes/callbacks/PostGridEntityBroken.lua +17 -0
  132. package/dist/src/classes/callbacks/PostGridEntityCollision.d.ts +9 -0
  133. package/dist/src/classes/callbacks/PostGridEntityCollision.d.ts.map +1 -0
  134. package/dist/src/classes/callbacks/PostGridEntityCollision.lua +36 -0
  135. package/dist/src/classes/callbacks/PostGridEntityCustomBroken.d.ts +6 -0
  136. package/dist/src/classes/callbacks/PostGridEntityCustomBroken.d.ts.map +1 -0
  137. package/dist/src/classes/callbacks/PostGridEntityCustomBroken.lua +17 -0
  138. package/dist/src/classes/callbacks/PostGridEntityCustomCollision.d.ts +9 -0
  139. package/dist/src/classes/callbacks/PostGridEntityCustomCollision.d.ts.map +1 -0
  140. package/dist/src/classes/callbacks/PostGridEntityCustomCollision.lua +31 -0
  141. package/dist/src/classes/callbacks/PostGridEntityCustomInit.d.ts +6 -0
  142. package/dist/src/classes/callbacks/PostGridEntityCustomInit.d.ts.map +1 -0
  143. package/dist/src/classes/callbacks/PostGridEntityCustomInit.lua +17 -0
  144. package/dist/src/classes/callbacks/PostGridEntityCustomRemove.d.ts +9 -0
  145. package/dist/src/classes/callbacks/PostGridEntityCustomRemove.d.ts.map +1 -0
  146. package/dist/src/classes/callbacks/PostGridEntityCustomRemove.lua +25 -0
  147. package/dist/src/classes/callbacks/PostGridEntityCustomStateChanged.d.ts +6 -0
  148. package/dist/src/classes/callbacks/PostGridEntityCustomStateChanged.d.ts.map +1 -0
  149. package/dist/src/classes/callbacks/PostGridEntityCustomStateChanged.lua +17 -0
  150. package/dist/src/classes/callbacks/PostGridEntityCustomUpdate.d.ts +6 -0
  151. package/dist/src/classes/callbacks/PostGridEntityCustomUpdate.d.ts.map +1 -0
  152. package/dist/src/classes/callbacks/PostGridEntityCustomUpdate.lua +17 -0
  153. package/dist/src/classes/callbacks/PostGridEntityInit.d.ts +6 -0
  154. package/dist/src/classes/callbacks/PostGridEntityInit.d.ts.map +1 -0
  155. package/dist/src/classes/callbacks/PostGridEntityInit.lua +17 -0
  156. package/dist/src/classes/callbacks/PostGridEntityRemove.d.ts +9 -0
  157. package/dist/src/classes/callbacks/PostGridEntityRemove.d.ts.map +1 -0
  158. package/dist/src/classes/callbacks/PostGridEntityRemove.lua +28 -0
  159. package/dist/src/classes/callbacks/PostGridEntityStateChanged.d.ts +6 -0
  160. package/dist/src/classes/callbacks/PostGridEntityStateChanged.d.ts.map +1 -0
  161. package/dist/src/classes/callbacks/PostGridEntityStateChanged.lua +17 -0
  162. package/dist/src/classes/callbacks/PostGridEntityUpdate.d.ts +6 -0
  163. package/dist/src/classes/callbacks/PostGridEntityUpdate.d.ts.map +1 -0
  164. package/dist/src/classes/callbacks/PostGridEntityUpdate.lua +17 -0
  165. package/dist/src/classes/callbacks/PostHolyMantleRemoved.d.ts +14 -0
  166. package/dist/src/classes/callbacks/PostHolyMantleRemoved.d.ts.map +1 -0
  167. package/dist/src/classes/callbacks/PostHolyMantleRemoved.lua +35 -0
  168. package/dist/src/classes/callbacks/PostKnifeInitLate.d.ts +1 -1
  169. package/dist/src/classes/callbacks/PostKnifeInitLate.d.ts.map +1 -1
  170. package/dist/src/classes/callbacks/PostKnifeInitLate.lua +1 -1
  171. package/dist/src/classes/callbacks/PostNewLevelReordered.d.ts +6 -0
  172. package/dist/src/classes/callbacks/PostNewLevelReordered.d.ts.map +1 -0
  173. package/dist/src/classes/callbacks/PostNewLevelReordered.lua +17 -0
  174. package/dist/src/classes/callbacks/PostNewRoomEarly.d.ts +6 -7
  175. package/dist/src/classes/callbacks/PostNewRoomEarly.d.ts.map +1 -1
  176. package/dist/src/classes/callbacks/PostNewRoomEarly.lua +1 -1
  177. package/dist/src/classes/callbacks/PostNewRoomReordered.d.ts +6 -0
  178. package/dist/src/classes/callbacks/PostNewRoomReordered.d.ts.map +1 -0
  179. package/dist/src/classes/callbacks/PostNewRoomReordered.lua +17 -0
  180. package/dist/src/classes/callbacks/PostPEffectUpdateReordered.d.ts +6 -0
  181. package/dist/src/classes/callbacks/PostPEffectUpdateReordered.d.ts.map +1 -0
  182. package/dist/src/classes/callbacks/PostPEffectUpdateReordered.lua +17 -0
  183. package/dist/src/classes/callbacks/PostPitRender.d.ts +1 -1
  184. package/dist/src/classes/callbacks/PostPitRender.d.ts.map +1 -1
  185. package/dist/src/classes/callbacks/PostPitRender.lua +1 -1
  186. package/dist/src/classes/callbacks/PostPlayerFatalDamage.d.ts +15 -0
  187. package/dist/src/classes/callbacks/PostPlayerFatalDamage.d.ts.map +1 -0
  188. package/dist/src/classes/callbacks/PostPlayerFatalDamage.lua +87 -0
  189. package/dist/src/classes/callbacks/PostPlayerRenderReordered.d.ts +6 -0
  190. package/dist/src/classes/callbacks/PostPlayerRenderReordered.d.ts.map +1 -0
  191. package/dist/src/classes/callbacks/PostPlayerRenderReordered.lua +17 -0
  192. package/dist/src/classes/callbacks/PostPlayerUpdateReordered.d.ts +6 -0
  193. package/dist/src/classes/callbacks/PostPlayerUpdateReordered.d.ts.map +1 -0
  194. package/dist/src/classes/callbacks/PostPlayerUpdateReordered.lua +17 -0
  195. package/dist/src/classes/callbacks/PostRoomClearChanged.d.ts +2 -2
  196. package/dist/src/classes/callbacks/PostRoomClearChanged.d.ts.map +1 -1
  197. package/dist/src/classes/callbacks/PostRoomClearChanged.lua +1 -1
  198. package/dist/src/classes/callbacks/PostSpikesRender.d.ts +1 -1
  199. package/dist/src/classes/callbacks/PostSpikesRender.d.ts.map +1 -1
  200. package/dist/src/classes/callbacks/PostSpikesRender.lua +1 -1
  201. package/dist/src/classes/callbacks/PreBerserkDeath.d.ts +7 -0
  202. package/dist/src/classes/callbacks/PreBerserkDeath.d.ts.map +1 -0
  203. package/dist/src/classes/callbacks/PreBerserkDeath.lua +36 -0
  204. package/dist/src/classes/callbacks/PreCustomRevive.d.ts +6 -0
  205. package/dist/src/classes/callbacks/PreCustomRevive.d.ts.map +1 -0
  206. package/dist/src/classes/callbacks/PreCustomRevive.lua +17 -0
  207. package/dist/src/classes/callbacks/validation/CustomCallbackAmbush.d.ts +3 -3
  208. package/dist/src/classes/callbacks/validation/CustomCallbackAmbush.d.ts.map +1 -1
  209. package/dist/src/classes/callbacks/validation/CustomCallbackBomb.d.ts +2 -2
  210. package/dist/src/classes/callbacks/validation/CustomCallbackBomb.d.ts.map +1 -1
  211. package/dist/src/classes/callbacks/validation/CustomCallbackCollectible.d.ts +2 -2
  212. package/dist/src/classes/callbacks/validation/CustomCallbackCollectible.d.ts.map +1 -1
  213. package/dist/src/classes/callbacks/validation/CustomCallbackDoor.d.ts +10 -0
  214. package/dist/src/classes/callbacks/validation/CustomCallbackDoor.d.ts.map +1 -0
  215. package/dist/src/classes/callbacks/validation/CustomCallbackDoor.lua +20 -0
  216. package/dist/src/classes/callbacks/validation/CustomCallbackEffect.d.ts +11 -0
  217. package/dist/src/classes/callbacks/validation/CustomCallbackEffect.d.ts.map +1 -0
  218. package/dist/src/classes/callbacks/validation/CustomCallbackEffect.lua +19 -0
  219. package/dist/src/classes/callbacks/validation/CustomCallbackFamiliar.d.ts +11 -0
  220. package/dist/src/classes/callbacks/validation/CustomCallbackFamiliar.d.ts.map +1 -0
  221. package/dist/src/classes/callbacks/validation/CustomCallbackFamiliar.lua +19 -0
  222. package/dist/src/classes/callbacks/validation/CustomCallbackGridEntity.d.ts +11 -0
  223. package/dist/src/classes/callbacks/validation/CustomCallbackGridEntity.d.ts.map +1 -0
  224. package/dist/src/classes/callbacks/validation/CustomCallbackGridEntity.lua +24 -0
  225. package/dist/src/classes/callbacks/validation/CustomCallbackGridEntityCustom.d.ts +10 -0
  226. package/dist/src/classes/callbacks/validation/CustomCallbackGridEntityCustom.d.ts.map +1 -0
  227. package/dist/src/classes/callbacks/validation/CustomCallbackGridEntityCustom.lua +19 -0
  228. package/dist/src/classes/callbacks/validation/CustomCallbackKnife.d.ts +2 -2
  229. package/dist/src/classes/callbacks/validation/CustomCallbackKnife.d.ts.map +1 -1
  230. package/dist/src/classes/callbacks/validation/CustomCallbackPit.d.ts +2 -2
  231. package/dist/src/classes/callbacks/validation/CustomCallbackPit.d.ts.map +1 -1
  232. package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.d.ts +4 -4
  233. package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.d.ts.map +1 -1
  234. package/dist/src/classes/callbacks/validation/CustomCallbackRevive.d.ts +11 -0
  235. package/dist/src/classes/callbacks/validation/CustomCallbackRevive.d.ts.map +1 -0
  236. package/dist/src/classes/callbacks/validation/CustomCallbackRevive.lua +19 -0
  237. package/dist/src/classes/callbacks/validation/CustomCallbackSpikes.d.ts +2 -2
  238. package/dist/src/classes/callbacks/validation/CustomCallbackSpikes.d.ts.map +1 -1
  239. package/dist/src/classes/features/callbackLogic/CustomGridEntities.d.ts +134 -0
  240. package/dist/src/classes/features/callbackLogic/CustomGridEntities.d.ts.map +1 -0
  241. package/dist/src/classes/features/callbackLogic/CustomGridEntities.lua +220 -0
  242. package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts +39 -0
  243. package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts.map +1 -0
  244. package/dist/src/classes/features/callbackLogic/CustomRevive.lua +140 -0
  245. package/dist/src/classes/features/callbackLogic/EsauJrDetection.d.ts +19 -0
  246. package/dist/src/classes/features/callbackLogic/EsauJrDetection.d.ts.map +1 -0
  247. package/dist/src/classes/features/callbackLogic/EsauJrDetection.lua +52 -0
  248. package/dist/src/classes/features/callbackLogic/FlipDetection.d.ts +16 -0
  249. package/dist/src/classes/features/callbackLogic/FlipDetection.d.ts.map +1 -0
  250. package/dist/src/classes/features/callbackLogic/FlipDetection.lua +58 -0
  251. package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.d.ts +27 -0
  252. package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.d.ts.map +1 -0
  253. package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.lua +108 -0
  254. package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.d.ts +19 -0
  255. package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.d.ts.map +1 -0
  256. package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.lua +69 -0
  257. package/dist/src/classes/features/callbackLogic/GridEntityDetection.d.ts +46 -0
  258. package/dist/src/classes/features/callbackLogic/GridEntityDetection.d.ts.map +1 -0
  259. package/dist/src/classes/features/callbackLogic/GridEntityDetection.lua +126 -0
  260. package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.d.ts +24 -0
  261. package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.d.ts.map +1 -0
  262. package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.lua +72 -0
  263. package/dist/src/classes/features/other/RunInNFrames.d.ts +123 -0
  264. package/dist/src/classes/features/other/RunInNFrames.d.ts.map +1 -0
  265. package/dist/src/classes/features/other/RunInNFrames.lua +109 -0
  266. package/dist/src/classes/private/CustomCallback.d.ts +5 -11
  267. package/dist/src/classes/private/CustomCallback.d.ts.map +1 -1
  268. package/dist/src/classes/private/CustomCallback.lua +27 -17
  269. package/dist/src/classes/private/Feature.d.ts +19 -0
  270. package/dist/src/classes/private/Feature.d.ts.map +1 -0
  271. package/dist/src/classes/private/Feature.lua +16 -0
  272. package/dist/src/core/upgradeMod.d.ts +18 -1
  273. package/dist/src/core/upgradeMod.d.ts.map +1 -1
  274. package/dist/src/core/upgradeMod.lua +41 -22
  275. package/dist/src/decorators.d.ts +9 -0
  276. package/dist/src/decorators.d.ts.map +1 -0
  277. package/dist/src/decorators.lua +10 -0
  278. package/dist/src/enums/ISCFeature.d.ts +12 -0
  279. package/dist/src/enums/ISCFeature.d.ts.map +1 -0
  280. package/dist/src/enums/ISCFeature.lua +12 -0
  281. package/dist/src/enums/ModCallbackCustom2.d.ts +41 -5
  282. package/dist/src/enums/ModCallbackCustom2.d.ts.map +1 -1
  283. package/dist/src/enums/ModCallbackCustom2.lua +77 -5
  284. package/dist/src/features/customGridEntity.d.ts.map +1 -1
  285. package/dist/src/features/customGridEntity.lua +6 -8
  286. package/dist/src/features/customTrapdoor/touched.lua +1 -1
  287. package/dist/src/features/deployJSONRoom.d.ts.map +1 -1
  288. package/dist/src/features/deployJSONRoom.lua +6 -8
  289. package/dist/src/features/saveDataManager/constants.d.ts +1 -1
  290. package/dist/src/features/saveDataManager/constants.d.ts.map +1 -1
  291. package/dist/src/features/saveDataManager/exports.d.ts +5 -0
  292. package/dist/src/features/saveDataManager/exports.d.ts.map +1 -1
  293. package/dist/src/features/saveDataManager/exports.lua +16 -0
  294. package/dist/src/features/saveDataManager/main.d.ts +5 -2
  295. package/dist/src/features/saveDataManager/main.d.ts.map +1 -1
  296. package/dist/src/features/saveDataManager/save.lua +2 -3
  297. package/dist/src/features.d.ts +34 -0
  298. package/dist/src/features.d.ts.map +1 -0
  299. package/dist/src/features.lua +68 -0
  300. package/dist/src/functions/characters.lua +3 -3
  301. package/dist/src/functions/charge.d.ts +30 -8
  302. package/dist/src/functions/charge.d.ts.map +1 -1
  303. package/dist/src/functions/charge.lua +38 -2
  304. package/dist/src/functions/chargeBar.d.ts +6 -0
  305. package/dist/src/functions/chargeBar.d.ts.map +1 -1
  306. package/dist/src/functions/chargeBar.lua +6 -0
  307. package/dist/src/functions/decorators.d.ts +19 -0
  308. package/dist/src/functions/decorators.d.ts.map +1 -0
  309. package/dist/src/functions/decorators.lua +32 -0
  310. package/dist/src/functions/flying.lua +4 -4
  311. package/dist/src/functions/gridEntities.lua +5 -5
  312. package/dist/src/functions/gridEntitiesSpecific.lua +12 -12
  313. package/dist/src/functions/itemPool.lua +2 -2
  314. package/dist/src/functions/playerHealth.lua +6 -6
  315. package/dist/src/functions/playerIndex.lua +2 -2
  316. package/dist/src/functions/players.d.ts +14 -3
  317. package/dist/src/functions/players.d.ts.map +1 -1
  318. package/dist/src/functions/players.lua +35 -16
  319. package/dist/src/functions/pocketItems.lua +1 -1
  320. package/dist/src/functions/rooms.d.ts +1 -1
  321. package/dist/src/functions/rooms.d.ts.map +1 -1
  322. package/dist/src/functions/rooms.lua +1 -1
  323. package/dist/src/functions/run.d.ts +5 -0
  324. package/dist/src/functions/run.d.ts.map +1 -1
  325. package/dist/src/functions/run.lua +6 -0
  326. package/dist/src/functions/table.d.ts +2 -0
  327. package/dist/src/functions/table.d.ts.map +1 -1
  328. package/dist/src/functions/table.lua +7 -0
  329. package/dist/src/functions/trinkets.lua +1 -1
  330. package/dist/src/functions/tstlClass.d.ts +21 -9
  331. package/dist/src/functions/tstlClass.d.ts.map +1 -1
  332. package/dist/src/functions/tstlClass.lua +49 -24
  333. package/dist/src/functions/utils.d.ts +37 -0
  334. package/dist/src/functions/utils.d.ts.map +1 -1
  335. package/dist/src/functions/utils.lua +36 -0
  336. package/dist/src/index.d.ts +12 -1
  337. package/dist/src/index.d.ts.map +1 -1
  338. package/dist/src/index.lua +17 -1
  339. package/dist/src/indexLua.d.ts +199 -0
  340. package/dist/src/indexLua.d.ts.map +1 -0
  341. package/dist/src/indexLua.lua +1354 -0
  342. package/dist/src/interfaces/SaveData.d.ts.map +1 -1
  343. package/dist/src/interfaces/{private/TSTLClassMetatable.d.ts → TSTLClassMetatable.d.ts} +0 -0
  344. package/dist/src/interfaces/TSTLClassMetatable.d.ts.map +1 -0
  345. package/dist/src/interfaces/{private/TSTLClassMetatable.lua → TSTLClassMetatable.lua} +0 -0
  346. package/dist/src/interfaces/private/AddCallbackParametersCustom.d.ts.map +1 -1
  347. package/dist/src/interfaces/private/AddCallbackParametersCustom.lua +3 -0
  348. package/dist/src/interfaces/private/AddCallbackParametersCustom2.d.ts +148 -2
  349. package/dist/src/interfaces/private/AddCallbackParametersCustom2.d.ts.map +1 -1
  350. package/dist/src/interfaces/private/AddCallbackParametersCustom2.lua +3 -0
  351. package/dist/src/maps/characterNameToTypeMap.lua +12 -12
  352. package/dist/src/objects/characterDamageMultipliers.lua +6 -6
  353. package/dist/src/objects/characterNames.lua +6 -6
  354. package/dist/src/objects/playerNamePNGFileNames.lua +6 -6
  355. package/dist/src/objects/playerPortraitPNGFileNames.lua +6 -6
  356. package/dist/src/sets/charactersThatStartWithAnActiveItemSet.lua +1 -1
  357. package/dist/src/sets/charactersWithFreeDevilDealsSet.d.ts.map +1 -1
  358. package/dist/src/sets/charactersWithFreeDevilDealsSet.lua +1 -1
  359. package/dist/src/sets/charactersWithNoRedHeartsSet.lua +3 -3
  360. package/dist/src/sets/charactersWithNoSoulHeartsSet.lua +2 -2
  361. package/dist/src/sets/lostStyleCharactersSet.lua +4 -4
  362. package/dist/src/types/AllButFirst.d.ts +5 -0
  363. package/dist/src/types/AllButFirst.d.ts.map +1 -0
  364. package/dist/src/types/AllButFirst.lua +2 -0
  365. package/dist/src/types/AllButLast.d.ts +2 -0
  366. package/dist/src/types/AllButLast.d.ts.map +1 -0
  367. package/dist/src/types/AllButLast.lua +2 -0
  368. package/dist/src/types/Constructor.d.ts +2 -0
  369. package/dist/src/types/Constructor.d.ts.map +1 -0
  370. package/dist/src/types/Constructor.lua +2 -0
  371. package/dist/src/types/FunctionTuple.d.ts +5 -0
  372. package/dist/src/types/FunctionTuple.d.ts.map +1 -0
  373. package/dist/src/types/FunctionTuple.lua +2 -0
  374. package/dist/src/types/HasAllEnumKeys.d.ts +26 -0
  375. package/dist/src/types/HasAllEnumKeys.d.ts.map +1 -0
  376. package/dist/src/types/HasAllEnumKeys.lua +2 -0
  377. package/dist/src/types/LowercaseKeys.d.ts +3 -0
  378. package/dist/src/types/LowercaseKeys.d.ts.map +1 -0
  379. package/dist/src/types/LowercaseKeys.lua +2 -0
  380. package/dist/src/types/StartsWithLowercase.d.ts +2 -0
  381. package/dist/src/types/StartsWithLowercase.d.ts.map +1 -0
  382. package/dist/src/types/StartsWithLowercase.lua +2 -0
  383. package/dist/src/types/StartsWithUppercase.d.ts +2 -0
  384. package/dist/src/types/StartsWithUppercase.d.ts.map +1 -0
  385. package/dist/src/types/StartsWithUppercase.lua +2 -0
  386. package/dist/src/types/UnionToIntersection.d.ts +3 -0
  387. package/dist/src/types/UnionToIntersection.d.ts.map +1 -0
  388. package/dist/src/types/UnionToIntersection.lua +2 -0
  389. package/dist/src/types/UppercaseKeys.d.ts +3 -0
  390. package/dist/src/types/UppercaseKeys.d.ts.map +1 -0
  391. package/dist/src/types/UppercaseKeys.lua +2 -0
  392. package/dist/src/types/private/CallbackTuple.d.ts +4 -4
  393. package/dist/src/types/private/CallbackTuple.d.ts.map +1 -1
  394. package/dist/src/types/private/MatchingCallbackCustom.d.ts +3 -1
  395. package/dist/src/types/private/MatchingCallbackCustom.d.ts.map +1 -1
  396. package/package.json +2 -2
  397. package/src/callbacks/customRevive.ts +13 -1
  398. package/src/callbacks/postDoorRender.ts +2 -2
  399. package/src/callbacks/postEffectStateChanged.ts +3 -6
  400. package/src/callbacks/postFamiliarStateChanged.ts +3 -3
  401. package/src/callbacks/postFlip.ts +2 -2
  402. package/src/callbacks/postGridEntity.ts +3 -7
  403. package/src/callbacks/postNPCStateChanged.ts +3 -3
  404. package/src/callbacks/postPickupStateChanged.ts +3 -6
  405. package/src/callbacks/postPlayerCollectible.ts +8 -12
  406. package/src/callbacks/reorderedCallbacks.ts +6 -6
  407. package/src/callbacks/subscriptions/postGridEntityBroken.ts +4 -7
  408. package/src/callbacks/subscriptions/postGridEntityCollision.ts +4 -4
  409. package/src/callbacks/subscriptions/postGridEntityInit.ts +4 -7
  410. package/src/callbacks/subscriptions/postGridEntityRemove.ts +10 -9
  411. package/src/callbacks/subscriptions/postGridEntityRender.ts +4 -7
  412. package/src/callbacks/subscriptions/postGridEntityStateChanged.ts +4 -7
  413. package/src/callbacks/subscriptions/postGridEntityUpdate.ts +4 -7
  414. package/src/callbacks/subscriptions/postRockRender.ts +6 -7
  415. package/src/callbacks/subscriptions/postRockUpdate.ts +6 -7
  416. package/src/callbacks/subscriptions/postSpikesRender.ts +4 -7
  417. package/src/callbacks/subscriptions/postSpikesUpdate.ts +4 -7
  418. package/src/callbacks/subscriptions/postTNTRender.ts +4 -7
  419. package/src/callbacks/subscriptions/postTNTUpdate.ts +4 -7
  420. package/src/callbacks.ts +134 -0
  421. package/src/classes/DefaultMap.ts +3 -3
  422. package/src/classes/ModFeature.ts +14 -0
  423. package/src/classes/ModUpgraded.ts +150 -81
  424. package/src/classes/callbacks/PostAmbushFinished.ts +3 -3
  425. package/src/classes/callbacks/PostAmbushStarted.ts +3 -3
  426. package/src/classes/callbacks/PostBombExploded.ts +2 -2
  427. package/src/classes/callbacks/PostBombInitLate.ts +3 -3
  428. package/src/classes/callbacks/PostBoneSwing.ts +8 -5
  429. package/src/classes/callbacks/PostCollectibleEmpty.ts +5 -5
  430. package/src/classes/callbacks/PostCollectibleInitFirst.ts +3 -3
  431. package/src/classes/callbacks/PostCursedTeleport.ts +10 -7
  432. package/src/classes/callbacks/PostCustomRevive.ts +11 -0
  433. package/src/classes/callbacks/PostDiceRoomActivated.ts +68 -0
  434. package/src/classes/callbacks/PostDoorRender.ts +19 -0
  435. package/src/classes/callbacks/PostDoorUpdate.ts +19 -0
  436. package/src/classes/callbacks/PostEffectInitLate.ts +28 -0
  437. package/src/classes/callbacks/PostEffectStateChanged.ts +35 -0
  438. package/src/classes/callbacks/PostEsauJr.ts +11 -0
  439. package/src/classes/callbacks/PostFamiliarInitLate.ts +28 -0
  440. package/src/classes/callbacks/PostFamiliarStateChanged.ts +35 -0
  441. package/src/classes/callbacks/PostFirstEsauJr.ts +11 -0
  442. package/src/classes/callbacks/PostFirstFlip.ts +11 -0
  443. package/src/classes/callbacks/PostFlip.ts +11 -0
  444. package/src/classes/callbacks/PostGameStartedReordered.ts +11 -0
  445. package/src/classes/callbacks/PostGameStartedReorderedLast.ts +11 -0
  446. package/src/classes/callbacks/PostGreedModeWave.ts +37 -0
  447. package/src/classes/callbacks/PostGridEntityBroken.ts +11 -0
  448. package/src/classes/callbacks/PostGridEntityCollision.ts +65 -0
  449. package/src/classes/callbacks/PostGridEntityCustomBroken.ts +11 -0
  450. package/src/classes/callbacks/PostGridEntityCustomCollision.ts +53 -0
  451. package/src/classes/callbacks/PostGridEntityCustomInit.ts +11 -0
  452. package/src/classes/callbacks/PostGridEntityCustomRemove.ts +32 -0
  453. package/src/classes/callbacks/PostGridEntityCustomStateChanged.ts +11 -0
  454. package/src/classes/callbacks/PostGridEntityCustomUpdate.ts +11 -0
  455. package/src/classes/callbacks/PostGridEntityInit.ts +11 -0
  456. package/src/classes/callbacks/PostGridEntityRemove.ts +39 -0
  457. package/src/classes/callbacks/PostGridEntityStateChanged.ts +11 -0
  458. package/src/classes/callbacks/PostGridEntityUpdate.ts +11 -0
  459. package/src/classes/callbacks/PostHolyMantleRemoved.ts +45 -0
  460. package/src/classes/callbacks/PostKnifeInitLate.ts +3 -3
  461. package/src/classes/callbacks/PostNewLevelReordered.ts +11 -0
  462. package/src/classes/callbacks/PostNewRoomEarly.ts +7 -7
  463. package/src/classes/callbacks/PostNewRoomReordered.ts +11 -0
  464. package/src/classes/callbacks/PostPEffectUpdateReordered.ts +11 -0
  465. package/src/classes/callbacks/PostPitRender.ts +2 -2
  466. package/src/classes/callbacks/PostPlayerFatalDamage.ts +127 -0
  467. package/src/classes/callbacks/PostPlayerRenderReordered.ts +11 -0
  468. package/src/classes/callbacks/PostPlayerUpdateReordered.ts +11 -0
  469. package/src/classes/callbacks/PostRoomClearChanged.ts +4 -4
  470. package/src/classes/callbacks/PostSpikesRender.ts +2 -2
  471. package/src/classes/callbacks/PreBerserkDeath.ts +42 -0
  472. package/src/classes/callbacks/PreCustomRevive.ts +11 -0
  473. package/src/classes/callbacks/validation/CustomCallbackAmbush.ts +3 -3
  474. package/src/classes/callbacks/validation/CustomCallbackBomb.ts +2 -2
  475. package/src/classes/callbacks/validation/CustomCallbackCollectible.ts +2 -2
  476. package/src/classes/callbacks/validation/CustomCallbackDoor.ts +28 -0
  477. package/src/classes/callbacks/validation/CustomCallbackEffect.ts +29 -0
  478. package/src/classes/callbacks/validation/CustomCallbackFamiliar.ts +30 -0
  479. package/src/classes/callbacks/validation/CustomCallbackGridEntity.ts +42 -0
  480. package/src/classes/callbacks/validation/CustomCallbackGridEntityCustom.ts +36 -0
  481. package/src/classes/callbacks/validation/CustomCallbackKnife.ts +2 -2
  482. package/src/classes/callbacks/validation/CustomCallbackPit.ts +2 -2
  483. package/src/classes/callbacks/validation/CustomCallbackPlayer.ts +13 -3
  484. package/src/classes/callbacks/validation/CustomCallbackRevive.ts +27 -0
  485. package/src/classes/callbacks/validation/CustomCallbackSpikes.ts +2 -2
  486. package/src/classes/features/callbackLogic/CustomGridEntities.ts +398 -0
  487. package/src/classes/features/callbackLogic/CustomRevive.ts +214 -0
  488. package/src/classes/features/callbackLogic/EsauJrDetection.ts +98 -0
  489. package/src/classes/features/callbackLogic/FlipDetection.ts +82 -0
  490. package/src/classes/features/callbackLogic/GameReorderedCallbacks.ts +160 -0
  491. package/src/classes/features/callbackLogic/GridEntityCollisionDetection.ts +90 -0
  492. package/src/classes/features/callbackLogic/GridEntityDetection.ts +231 -0
  493. package/src/classes/features/callbackLogic/PlayerReorderedCallbacks.ts +126 -0
  494. package/src/classes/features/other/RunInNFrames.ts +256 -0
  495. package/src/classes/private/CustomCallback.ts +29 -26
  496. package/src/classes/private/Feature.ts +24 -0
  497. package/src/core/upgradeMod.ts +71 -25
  498. package/src/decorators.ts +13 -0
  499. package/src/enums/ISCFeature.ts +47 -0
  500. package/src/enums/ModCallbackCustom2.ts +40 -0
  501. package/src/features/customGridEntity.ts +3 -7
  502. package/src/features/customTrapdoor/touched.ts +1 -1
  503. package/src/features/deployJSONRoom.ts +3 -7
  504. package/src/features/extraConsoleCommands/listCommands.ts +1 -1
  505. package/src/features/saveDataManager/constants.ts +1 -1
  506. package/src/features/saveDataManager/exports.ts +27 -0
  507. package/src/features/saveDataManager/main.ts +4 -6
  508. package/src/features/saveDataManager/save.ts +2 -2
  509. package/src/features.ts +90 -0
  510. package/src/functions/characters.ts +3 -3
  511. package/src/functions/charge.ts +30 -8
  512. package/src/functions/chargeBar.ts +6 -0
  513. package/src/functions/decorators.ts +45 -0
  514. package/src/functions/flying.ts +4 -4
  515. package/src/functions/gridEntities.ts +5 -5
  516. package/src/functions/gridEntitiesSpecific.ts +12 -12
  517. package/src/functions/itemPool.ts +2 -2
  518. package/src/functions/playerHealth.ts +6 -6
  519. package/src/functions/playerIndex.ts +2 -2
  520. package/src/functions/players.ts +26 -7
  521. package/src/functions/pocketItems.ts +1 -1
  522. package/src/functions/rooms.ts +1 -1
  523. package/src/functions/run.ts +12 -0
  524. package/src/functions/table.ts +11 -0
  525. package/src/functions/trinkets.ts +1 -1
  526. package/src/functions/tstlClass.ts +48 -24
  527. package/src/functions/utils.ts +49 -0
  528. package/src/index.ts +12 -1
  529. package/src/interfaces/SaveData.ts +4 -2
  530. package/src/interfaces/{private/TSTLClassMetatable.ts → TSTLClassMetatable.ts} +0 -0
  531. package/src/interfaces/private/AddCallbackParametersCustom.ts +3 -0
  532. package/src/interfaces/private/AddCallbackParametersCustom2.ts +265 -1
  533. package/src/maps/characterNameToTypeMap.ts +12 -12
  534. package/src/objects/characterDamageMultipliers.ts +6 -6
  535. package/src/objects/characterNames.ts +6 -6
  536. package/src/objects/playerNamePNGFileNames.ts +6 -6
  537. package/src/objects/playerPortraitPNGFileNames.ts +6 -6
  538. package/src/sets/charactersThatStartWithAnActiveItemSet.ts +1 -1
  539. package/src/sets/charactersWithFreeDevilDealsSet.ts +1 -1
  540. package/src/sets/charactersWithNoRedHeartsSet.ts +3 -3
  541. package/src/sets/charactersWithNoSoulHeartsSet.ts +2 -2
  542. package/src/sets/lostStyleCharactersSet.ts +4 -4
  543. package/src/types/AllButFirst.ts +6 -0
  544. package/src/types/AllButLast.ts +3 -0
  545. package/src/types/Constructor.ts +2 -0
  546. package/src/types/FunctionTuple.ts +4 -0
  547. package/src/types/HasAllEnumKeys.ts +25 -0
  548. package/src/types/LowercaseKeys.ts +3 -0
  549. package/src/types/StartsWithLowercase.ts +3 -0
  550. package/src/types/StartsWithUppercase.ts +3 -0
  551. package/src/types/UnionToIntersection.ts +6 -0
  552. package/src/types/UppercaseKeys.ts +3 -0
  553. package/src/types/private/CallbackTuple.ts +4 -4
  554. package/src/types/private/MatchingCallbackCustom.ts +7 -1
  555. package/dist/src/enums/IsaacScriptCommonFeature.d.ts +0 -35
  556. package/dist/src/enums/IsaacScriptCommonFeature.d.ts.map +0 -1
  557. package/dist/src/enums/IsaacScriptCommonFeature.lua +0 -35
  558. package/dist/src/interfaces/private/TSTLClassMetatable.d.ts.map +0 -1
  559. package/src/enums/IsaacScriptCommonFeature.ts +0 -34
@@ -1,27 +1,21 @@
1
1
  import { ModCallback } from "isaac-typescript-definitions";
2
+ import { getCallbacks } from "../callbacks";
3
+ import { ISCFeature } from "../enums/ISCFeature";
2
4
  import { ModCallbackCustom } from "../enums/ModCallbackCustom";
3
5
  import { ModCallbackCustom2 } from "../enums/ModCallbackCustom2";
4
- import { saveDataManager } from "../features/saveDataManager/exports";
6
+ import { getFeatures } from "../features";
7
+ import {
8
+ saveDataManager,
9
+ saveDataManagerRemove,
10
+ } from "../features/saveDataManager/exports";
5
11
  import { getTime } from "../functions/debugFunctions";
6
12
  import { getParentFunctionDescription } from "../functions/log";
7
- import { getTSTLClassName } from "../functions/tstlClass";
13
+ import { getTSTLClassMethods, getTSTLClassName } from "../functions/tstlClass";
8
14
  import { AddCallbackParametersCustom } from "../interfaces/private/AddCallbackParametersCustom";
9
15
  import { AddCallbackParametersCustom2 } from "../interfaces/private/AddCallbackParametersCustom2";
10
16
  import { CALLBACK_REGISTER_FUNCTIONS } from "../objects/callbackRegisterFunctions";
11
- import { PostAmbushFinished } from "./callbacks/PostAmbushFinished";
12
- import { PostAmbushStarted } from "./callbacks/PostAmbushStarted";
13
- import { PostBombExploded } from "./callbacks/PostBombExploded";
14
- import { PostBombInitLate } from "./callbacks/PostBombInitLate";
15
- import { PostBoneSwing } from "./callbacks/PostBoneSwing";
16
- import { PostCollectibleEmpty } from "./callbacks/PostCollectibleEmpty";
17
- import { PostCollectibleInitFirst } from "./callbacks/PostCollectibleInitFirst";
18
- import { PostCursedTeleport } from "./callbacks/PostCursedTeleport";
19
- import { PostKnifeInitLate } from "./callbacks/PostKnifeInitLate";
20
- import { PostNewRoomEarly } from "./callbacks/PostNewRoomEarly";
21
- import { PostPitRender } from "./callbacks/PostPitRender";
22
- import { PostRoomClearChanged } from "./callbacks/PostRoomClearChanged";
23
- import { PostSpikesRender } from "./callbacks/PostSpikesRender";
24
- import { CustomCallback } from "./private/CustomCallback";
17
+ import { FunctionTuple } from "../types/FunctionTuple";
18
+ import { Feature } from "./private/Feature";
25
19
 
26
20
  /**
27
21
  * `isaacscript-common` has many custom callbacks that you can use in your mods. Instead of
@@ -36,10 +30,10 @@ export class ModUpgraded implements Mod {
36
30
  // -----------------
37
31
 
38
32
  /**
39
- * The vanilla mod object stores the name of the mod for some reason. (It is never used or
40
- * referenced. (We match the casing of the vanilla variable.)
33
+ * The `RegisterMod` function stores the name of the mod on the mod object for some reason. (It is
34
+ * never used or referenced.)
41
35
  */
42
- Name: string;
36
+ public Name: string;
43
37
 
44
38
  // ----------------
45
39
  // Custom variables
@@ -51,25 +45,11 @@ export class ModUpgraded implements Mod {
51
45
  private debug: boolean;
52
46
  private timeThreshold: float | undefined;
53
47
 
54
- private callbacks: {
55
- readonly [key in ModCallbackCustom2]: CustomCallback<key>;
56
- } = {
57
- [ModCallbackCustom2.POST_AMBUSH_FINISHED]: new PostAmbushFinished(),
58
- [ModCallbackCustom2.POST_AMBUSH_STARTED]: new PostAmbushStarted(),
59
- [ModCallbackCustom2.POST_BOMB_EXPLODED]: new PostBombExploded(),
60
- [ModCallbackCustom2.POST_BOMB_INIT_LATE]: new PostBombInitLate(),
61
- [ModCallbackCustom2.POST_BONE_SWING]: new PostBoneSwing(),
62
- [ModCallbackCustom2.POST_COLLECTIBLE_EMPTY]: new PostCollectibleEmpty(),
63
- [ModCallbackCustom2.POST_COLLECTIBLE_INIT_FIRST]:
64
- new PostCollectibleInitFirst(),
65
- [ModCallbackCustom2.POST_CURSED_TELEPORT]: new PostCursedTeleport(),
66
-
67
- [ModCallbackCustom2.POST_KNIFE_INIT_LATE]: new PostKnifeInitLate(),
68
- [ModCallbackCustom2.POST_NEW_ROOM_EARLY]: new PostNewRoomEarly(),
69
- [ModCallbackCustom2.POST_PIT_RENDER]: new PostPitRender(),
70
- [ModCallbackCustom2.POST_ROOM_CLEAR_CHANGED]: new PostRoomClearChanged(),
71
- [ModCallbackCustom2.POST_SPIKES_RENDER]: new PostSpikesRender(),
72
- };
48
+ private callbacks;
49
+
50
+ // Features must be marked as internal to prevent TypeDoc from complaining.
51
+ /** @internal */
52
+ private features;
73
53
 
74
54
  // -----------
75
55
  // Constructor
@@ -80,13 +60,20 @@ export class ModUpgraded implements Mod {
80
60
  this.mod = mod;
81
61
  this.debug = debug;
82
62
  this.timeThreshold = timeThreshold;
63
+ this.callbacks = getCallbacks();
64
+ this.features = getFeatures(this.callbacks);
83
65
  }
84
66
 
85
67
  // ---------------
86
68
  // Vanilla methods
87
69
  // ---------------
88
70
 
89
- AddCallback<T extends ModCallback>(
71
+ /**
72
+ * Registers a function to be executed when an in-game event happens. For example, the
73
+ * `ModCallback.POST_UPDATE` event corresponds to being executed once at the end of every game
74
+ * logic frame.
75
+ */
76
+ public AddCallback<T extends ModCallback>(
90
77
  modCallback: T,
91
78
  ...args: AddCallbackParameters[T]
92
79
  ): void {
@@ -139,39 +126,55 @@ export class ModUpgraded implements Mod {
139
126
  }
140
127
  }
141
128
 
142
- HasData(): boolean {
129
+ /** Returns whether or not a corresponding "save#.dat" file exists for the current mod. */
130
+ public HasData(): boolean {
143
131
  return this.mod.HasData();
144
132
  }
145
133
 
146
- LoadData(): string {
134
+ /**
135
+ * Returns a string containing all of the data inside of the corresponding "save#.dat" file for
136
+ * this mod.
137
+ */
138
+ public LoadData(): string {
147
139
  return this.mod.LoadData();
148
140
  }
149
141
 
150
142
  /**
151
- * This method does not care about the tertiary argument. Regardless of the conditions of how you
152
- * registered the callback, it will be removed.
143
+ * Unregisters a function that was previously registered with the `AddCallback` method.
144
+ *
145
+ * This method does not care about the tertiary argument. In other words, regardless of the
146
+ * conditions of how you registered the callback, it will be removed.
153
147
  */
154
- RemoveCallback<T extends ModCallback>(
148
+ public RemoveCallback<T extends ModCallback>(
155
149
  modCallback: T,
156
150
  callback: AddCallbackParameters[T][0],
157
151
  ): void {
158
152
  this.mod.RemoveCallback(modCallback, callback);
159
153
  }
160
154
 
161
- RemoveData(): void {
155
+ /** Deletes the corresponding "save#.dat" file for this mod, if it exists. */
156
+ public RemoveData(): void {
162
157
  this.mod.RemoveData();
163
158
  }
164
159
 
165
- SaveData(data: string): void {
160
+ /**
161
+ * Creates or updates the corresponding "save#.dat" file for this mod with the provided string.
162
+ */
163
+ public SaveData(data: string): void {
166
164
  this.mod.SaveData(data);
167
165
  }
168
166
 
169
- // --------------
170
- // Custom methods
171
- // --------------
167
+ // ---------------------
168
+ // Custom public methods
169
+ // ---------------------
172
170
 
171
+ /**
172
+ * Registers a function to be executed when an in-game event happens. This method is specifically
173
+ * for events that are provided by the IsaacScript standard library. For example, the
174
+ * `ModCallbackCustom.POST_BOMB_EXPLODE` event corresponds to when a bomb explodes.
175
+ */
173
176
  // eslint-disable-next-line class-methods-use-this
174
- AddCallbackCustom<T extends ModCallbackCustom>(
177
+ public AddCallbackCustom<T extends ModCallbackCustom>(
175
178
  modCallbackCustom: T,
176
179
  ...args: AddCallbackParametersCustom[T]
177
180
  ): void {
@@ -180,56 +183,122 @@ export class ModUpgraded implements Mod {
180
183
  callbackRegisterFunction(...args);
181
184
  }
182
185
 
183
- AddCallbackCustom2<T extends ModCallbackCustom2>(
186
+ /** Adds a callback in the new callback system format. This method is only temporary. */
187
+ public AddCallbackCustom2<T extends ModCallbackCustom2>(
184
188
  modCallbackCustom: T,
185
189
  ...args: AddCallbackParametersCustom2[T]
186
190
  ): void {
187
- const callback = this.callbacks[modCallbackCustom];
188
- callback.add(...args);
191
+ const callbackClass = this.callbacks[modCallbackCustom];
192
+ // @ts-expect-error The compiler is not smart enough to figure out that the parameters match.
193
+ callbackClass.add(...args);
194
+ this.initFeature(callbackClass);
195
+ }
196
+
197
+ /**
198
+ * Unregisters a function that was previously registered with the `AddCallbackCustom` method.
199
+ *
200
+ * This method does not care about the tertiary argument. In other words, regardless of the
201
+ * conditions of how you registered the callback, it will be removed.
202
+ */
203
+ public RemoveCallbackCustom<T extends ModCallbackCustom2>(
204
+ modCallbackCustom: T,
205
+ callback: AddCallbackParametersCustom2[T][0],
206
+ ): void {
207
+ const callbackClass = this.callbacks[modCallbackCustom];
208
+ // @ts-expect-error The compiler is not smart enough to figure out that the parameters match.
209
+ callbackClass.remove(callback);
210
+ if (!callbackClass.hasSubscriptions()) {
211
+ this.uninitFeature(callbackClass);
212
+ }
213
+ }
214
+
215
+ /**
216
+ * This method should only be used by the `upgradeMod` function. Returns the class methods from
217
+ * the features that were added.
218
+ */
219
+ public initOptionalFeature(feature: ISCFeature): FunctionTuple[] {
220
+ const featureClass = this.features[feature];
221
+ this.initFeature(featureClass);
222
+
223
+ return getTSTLClassMethods(featureClass);
224
+ }
225
+
226
+ // ----------------------
227
+ // Custom private methods
228
+ // ----------------------
189
229
 
190
- if (callback.initialized) {
230
+ /** This is used to initialize both custom callbacks and "extra features". */
231
+ private initFeature(feature: Feature): void {
232
+ if (feature.initialized) {
191
233
  return;
192
234
  }
193
- callback.initialized = true;
235
+ feature.initialized = true;
194
236
 
195
- if (callback.otherCallbacksUsed !== undefined) {
196
- for (const callbackTuple of callback.otherCallbacksUsed) {
237
+ if (feature.featuresUsed !== undefined) {
238
+ for (const featureUsed of feature.featuresUsed) {
239
+ const featureClass = this.features[featureUsed];
240
+ this.initFeature(featureClass);
241
+ }
242
+ }
243
+
244
+ if (feature.callbacksUsed !== undefined) {
245
+ for (const callbackTuple of feature.callbacksUsed) {
197
246
  const [modCallback, callbackArgs] = callbackTuple;
198
247
  this.AddCallback(modCallback, ...callbackArgs);
199
248
  }
200
249
  }
201
250
 
202
- if (callback.otherCustomCallbacksUsed !== undefined) {
203
- for (const callbackTuple of callback.otherCustomCallbacksUsed) {
251
+ if (feature.customCallbacksUsed !== undefined) {
252
+ for (const callbackTuple of feature.customCallbacksUsed) {
204
253
  const [modCallback, callbackArgs] = callbackTuple;
205
- this.AddCallbackCustom(modCallback, ...callbackArgs);
254
+ this.AddCallbackCustom2(modCallback, ...callbackArgs);
206
255
  }
207
256
  }
208
257
 
209
- if (callback.v !== undefined) {
210
- const callbackName = getTSTLClassName(callback);
211
- if (callbackName === undefined) {
212
- error(
213
- `Failed to get the name of the callback: ModCallbackCustom.${ModCallbackCustom2[modCallbackCustom]} (${modCallbackCustom})`,
214
- );
258
+ if (feature.v !== undefined) {
259
+ const className = getTSTLClassName(feature);
260
+ if (className === undefined) {
261
+ error("Failed to get the name of a feature.");
215
262
  }
216
- saveDataManager(callbackName, callback.v);
263
+ saveDataManager(className, feature.v);
217
264
  }
218
-
219
- /*
220
- if (callback.feature !== undefined) {}
221
- */
222
265
  }
223
266
 
224
- /**
225
- * This method does not care about the tertiary argument. Regardless of the conditions of how you
226
- * registered the callback, it will be removed.
227
- */
228
- RemoveCallbackCustom<T extends ModCallbackCustom>(
229
- modCallback: T,
230
- callback: AddCallbackParametersCustom[T][0],
231
- ): void {
232
- // TODO
233
- print(this, modCallback, callback);
267
+ private uninitFeature(feature: Feature): void {
268
+ if (!feature.initialized) {
269
+ return;
270
+ }
271
+ feature.initialized = false;
272
+
273
+ if (feature.featuresUsed !== undefined) {
274
+ for (const featureUsed of feature.featuresUsed) {
275
+ const featureClass = this.features[featureUsed];
276
+ this.uninitFeature(featureClass);
277
+ }
278
+ }
279
+
280
+ if (feature.callbacksUsed !== undefined) {
281
+ for (const callbackTuple of feature.callbacksUsed) {
282
+ const [modCallback, callbackArgs] = callbackTuple;
283
+ const callback = callbackArgs[0];
284
+ this.RemoveCallback(modCallback, callback);
285
+ }
286
+ }
287
+
288
+ if (feature.customCallbacksUsed !== undefined) {
289
+ for (const callbackTuple of feature.customCallbacksUsed) {
290
+ const [modCallback, callbackArgs] = callbackTuple;
291
+ const callback = callbackArgs[0];
292
+ this.RemoveCallbackCustom(modCallback, callback);
293
+ }
294
+ }
295
+
296
+ if (feature.v !== undefined) {
297
+ const className = getTSTLClassName(feature);
298
+ if (className === undefined) {
299
+ error("Failed to get the name of a feature.");
300
+ }
301
+ saveDataManagerRemove(className);
302
+ }
234
303
  }
235
304
  }
@@ -5,7 +5,7 @@ import { getAmbushType } from "../../functions/ambush";
5
5
  import { CustomCallbackAmbush } from "./validation/CustomCallbackAmbush";
6
6
 
7
7
  export class PostAmbushFinished extends CustomCallbackAmbush<ModCallbackCustom2.POST_AMBUSH_FINISHED> {
8
- override v = {
8
+ public override v = {
9
9
  room: {
10
10
  ambushDone: false,
11
11
  },
@@ -14,12 +14,12 @@ export class PostAmbushFinished extends CustomCallbackAmbush<ModCallbackCustom2.
14
14
  constructor() {
15
15
  super();
16
16
 
17
- this.otherCallbacksUsed = [
17
+ this.callbacksUsed = [
18
18
  [ModCallback.POST_UPDATE, [this.postUpdate]], // 1
19
19
  ];
20
20
  }
21
21
 
22
- postUpdate = (): void => {
22
+ private postUpdate = (): void => {
23
23
  if (this.v.room.ambushDone) {
24
24
  return;
25
25
  }
@@ -5,7 +5,7 @@ import { getAmbushType } from "../../functions/ambush";
5
5
  import { CustomCallbackAmbush } from "./validation/CustomCallbackAmbush";
6
6
 
7
7
  export class PostAmbushStarted extends CustomCallbackAmbush<ModCallbackCustom2.POST_AMBUSH_STARTED> {
8
- override v = {
8
+ public override v = {
9
9
  room: {
10
10
  ambushActive: false,
11
11
  },
@@ -14,12 +14,12 @@ export class PostAmbushStarted extends CustomCallbackAmbush<ModCallbackCustom2.P
14
14
  constructor() {
15
15
  super();
16
16
 
17
- this.otherCallbacksUsed = [
17
+ this.callbacksUsed = [
18
18
  [ModCallback.POST_UPDATE, [this.postUpdate]], // 1
19
19
  ];
20
20
  }
21
21
 
22
- postUpdate = (): void => {
22
+ private postUpdate = (): void => {
23
23
  if (this.v.room.ambushActive) {
24
24
  return;
25
25
  }
@@ -7,13 +7,13 @@ export class PostBombExploded extends CustomCallbackBomb<ModCallbackCustom2.POST
7
7
  constructor() {
8
8
  super();
9
9
 
10
- this.otherCallbacksUsed = [
10
+ this.callbacksUsed = [
11
11
  [ModCallback.POST_BOMB_UPDATE, [this.postBombUpdate]], // 58
12
12
  ];
13
13
  }
14
14
 
15
15
  // ModCallback.POST_BOMB_UPDATE (58)
16
- postBombUpdate = (bomb: EntityBomb): void => {
16
+ private postBombUpdate = (bomb: EntityBomb): void => {
17
17
  if (bomb.FrameCount === BOMB_EXPLODE_FRAME) {
18
18
  this.fire(bomb);
19
19
  }
@@ -3,7 +3,7 @@ import { ModCallbackCustom2 } from "../../enums/ModCallbackCustom2";
3
3
  import { CustomCallbackBomb } from "./validation/CustomCallbackBomb";
4
4
 
5
5
  export class PostBombInitLate extends CustomCallbackBomb<ModCallbackCustom2.POST_BOMB_INIT_LATE> {
6
- override v = {
6
+ public override v = {
7
7
  room: {
8
8
  firedSet: new Set<PtrHash>(),
9
9
  },
@@ -12,13 +12,13 @@ export class PostBombInitLate extends CustomCallbackBomb<ModCallbackCustom2.POST
12
12
  constructor() {
13
13
  super();
14
14
 
15
- this.otherCallbacksUsed = [
15
+ this.callbacksUsed = [
16
16
  [ModCallback.POST_BOMB_UPDATE, [this.postBombUpdate]], // 58
17
17
  ];
18
18
  }
19
19
 
20
20
  // ModCallback.POST_BOMB_UPDATE (58)
21
- postBombUpdate = (bomb: EntityBomb): void => {
21
+ private postBombUpdate = (bomb: EntityBomb): void => {
22
22
  const ptrHash = GetPtrHash(bomb);
23
23
  if (!this.v.room.firedSet.has(ptrHash)) {
24
24
  this.v.room.firedSet.add(ptrHash);
@@ -9,7 +9,7 @@ const BONE_SWING_ANIMATIONS: ReadonlySet<string> = new Set([
9
9
  ]);
10
10
 
11
11
  export class PostBoneSwing extends CustomCallback<ModCallbackCustom2.POST_BONE_SWING> {
12
- override v = {
12
+ public override v = {
13
13
  room: {
14
14
  boneClubAnimations: new Map<PtrHash, string>(),
15
15
  },
@@ -18,13 +18,13 @@ export class PostBoneSwing extends CustomCallback<ModCallbackCustom2.POST_BONE_S
18
18
  constructor() {
19
19
  super();
20
20
 
21
- this.otherCallbacksUsed = [
21
+ this.callbacksUsed = [
22
22
  [ModCallback.POST_KNIFE_RENDER, [this.postKnifeRender]], // 52
23
23
  ];
24
24
  }
25
25
 
26
26
  // ModCallback.POST_KNIFE_RENDER (52)
27
- postKnifeRender = (knife: EntityKnife): void => {
27
+ private postKnifeRender = (knife: EntityKnife): void => {
28
28
  // The tertiary argument of the `POST_KNIFE_RENDER` callback takes sub-types instead of knife
29
29
  // variants.
30
30
  if (knife.Variant === KnifeVariant.BONE_CLUB) {
@@ -34,7 +34,7 @@ export class PostBoneSwing extends CustomCallback<ModCallbackCustom2.POST_BONE_S
34
34
 
35
35
  // ModCallback.POST_KNIFE_RENDER (52)
36
36
  // KnifeVariant.BONE_CLUB (1)
37
- postKnifeRenderBoneClub(knife: EntityKnife): void {
37
+ private postKnifeRenderBoneClub(knife: EntityKnife): void {
38
38
  const sprite = knife.GetSprite();
39
39
  const animation = sprite.GetAnimation();
40
40
  const ptrHash = GetPtrHash(knife);
@@ -50,7 +50,10 @@ export class PostBoneSwing extends CustomCallback<ModCallbackCustom2.POST_BONE_S
50
50
  }
51
51
  }
52
52
 
53
- boneClubAnimationChanged(knife: EntityKnife, animation: string): void {
53
+ private boneClubAnimationChanged(
54
+ knife: EntityKnife,
55
+ animation: string,
56
+ ): void {
54
57
  if (BONE_SWING_ANIMATIONS.has(animation)) {
55
58
  this.fire(knife);
56
59
  }
@@ -13,7 +13,7 @@ import {
13
13
  type T = ModCallbackCustom2.POST_COLLECTIBLE_EMPTY;
14
14
 
15
15
  export class PostCollectibleEmpty extends CustomCallback<T> {
16
- override v = {
16
+ public override v = {
17
17
  room: {
18
18
  collectibleTypeMap: new Map<PtrHash, CollectibleType>(),
19
19
  },
@@ -22,7 +22,7 @@ export class PostCollectibleEmpty extends CustomCallback<T> {
22
22
  constructor() {
23
23
  super();
24
24
 
25
- this.otherCallbacksUsed = [
25
+ this.callbacksUsed = [
26
26
  [
27
27
  ModCallback.POST_PICKUP_UPDATE,
28
28
  [this.postPickupUpdateCollectible, PickupVariant.COLLECTIBLE],
@@ -31,7 +31,7 @@ export class PostCollectibleEmpty extends CustomCallback<T> {
31
31
  }
32
32
 
33
33
  // eslint-disable-next-line class-methods-use-this
34
- override shouldFire(
34
+ protected override shouldFire(
35
35
  fireArgs: FireArgs<T>,
36
36
  optionalArgs: OptionalArgs<T>,
37
37
  ): boolean {
@@ -46,7 +46,7 @@ export class PostCollectibleEmpty extends CustomCallback<T> {
46
46
 
47
47
  // ModCallback.POST_PICKUP_UPDATE (35)
48
48
  // PickupVariant.COLLECTIBLE (100)
49
- postPickupUpdateCollectible = (pickup: EntityPickup): void => {
49
+ private postPickupUpdateCollectible = (pickup: EntityPickup): void => {
50
50
  const collectible = pickup as EntityPickupCollectible;
51
51
 
52
52
  const ptrHash = GetPtrHash(collectible);
@@ -61,7 +61,7 @@ export class PostCollectibleEmpty extends CustomCallback<T> {
61
61
  }
62
62
  };
63
63
 
64
- collectibleTypeChanged(
64
+ private collectibleTypeChanged(
65
65
  collectible: EntityPickupCollectible,
66
66
  oldCollectibleType: CollectibleType,
67
67
  ): void {
@@ -5,7 +5,7 @@ import { CollectibleIndex } from "../../types/CollectibleIndex";
5
5
  import { CustomCallbackCollectible } from "./validation/CustomCallbackCollectible";
6
6
 
7
7
  export class PostCollectibleInitFirst extends CustomCallbackCollectible<ModCallbackCustom2.POST_COLLECTIBLE_INIT_FIRST> {
8
- override v = {
8
+ public override v = {
9
9
  run: {
10
10
  seenCollectibles: new Set<CollectibleIndex>(),
11
11
  },
@@ -14,7 +14,7 @@ export class PostCollectibleInitFirst extends CustomCallbackCollectible<ModCallb
14
14
  constructor() {
15
15
  super();
16
16
 
17
- this.otherCallbacksUsed = [
17
+ this.callbacksUsed = [
18
18
  [
19
19
  ModCallback.POST_PICKUP_INIT,
20
20
  [this.postPickupInitCollectible, PickupVariant.COLLECTIBLE],
@@ -24,7 +24,7 @@ export class PostCollectibleInitFirst extends CustomCallbackCollectible<ModCallb
24
24
 
25
25
  // ModCallback.POST_PICKUP_INIT (34)
26
26
  // PickupVariant.COLLECTIBLE (100)
27
- postPickupInitCollectible = (pickup: EntityPickup): void => {
27
+ private postPickupInitCollectible = (pickup: EntityPickup): void => {
28
28
  const collectible = pickup as EntityPickupCollectible;
29
29
  const collectibleIndex = getCollectibleIndex(collectible);
30
30
  if (this.v.run.seenCollectibles.has(collectibleIndex)) {
@@ -19,7 +19,7 @@ import { PlayerIndex } from "../../types/PlayerIndex";
19
19
  import { CustomCallbackPlayer } from "./validation/CustomCallbackPlayer";
20
20
 
21
21
  export class PostCursedTeleport extends CustomCallbackPlayer<ModCallbackCustom2.POST_CURSED_TELEPORT> {
22
- override v = {
22
+ public override v = {
23
23
  run: {
24
24
  playersDamageFrameMap: new Map<
25
25
  PlayerIndex,
@@ -35,7 +35,7 @@ export class PostCursedTeleport extends CustomCallbackPlayer<ModCallbackCustom2.
35
35
  constructor() {
36
36
  super();
37
37
 
38
- this.otherCallbacksUsed = [
38
+ this.callbacksUsed = [
39
39
  [
40
40
  ModCallback.ENTITY_TAKE_DMG,
41
41
  [this.entityTakeDmgPlayer, EntityType.PLAYER],
@@ -50,7 +50,7 @@ export class PostCursedTeleport extends CustomCallbackPlayer<ModCallbackCustom2.
50
50
 
51
51
  // ModCallback.ENTITY_TAKE_DMG (11)
52
52
  // EntityType.PLAYER (1)
53
- entityTakeDmgPlayer = (
53
+ private entityTakeDmgPlayer = (
54
54
  entity: Entity,
55
55
  _amount: float,
56
56
  damageFlags: BitFlags<DamageFlag>,
@@ -63,7 +63,10 @@ export class PostCursedTeleport extends CustomCallbackPlayer<ModCallbackCustom2.
63
63
  return undefined;
64
64
  };
65
65
 
66
- setDamageFrame(entity: Entity, damageFlags: BitFlags<DamageFlag>): void {
66
+ private setDamageFrame(
67
+ entity: Entity,
68
+ damageFlags: BitFlags<DamageFlag>,
69
+ ): void {
67
70
  const gameFrameCount = game.GetFrameCount();
68
71
 
69
72
  const player = entity.ToPlayer();
@@ -92,7 +95,7 @@ export class PostCursedTeleport extends CustomCallbackPlayer<ModCallbackCustom2.
92
95
  mapSetPlayer(this.v.run.playersDamageFrameMap, player, newTrackingArray);
93
96
  }
94
97
 
95
- isPotentialNaturalTeleportFromSacrificeRoom(
98
+ private isPotentialNaturalTeleportFromSacrificeRoom(
96
99
  damageFlags: BitFlags<DamageFlag>,
97
100
  ): boolean {
98
101
  const room = game.GetRoom();
@@ -108,7 +111,7 @@ export class PostCursedTeleport extends CustomCallbackPlayer<ModCallbackCustom2.
108
111
  );
109
112
  }
110
113
 
111
- incrementNumSacrifices(damageFlags: BitFlags<DamageFlag>): void {
114
+ private incrementNumSacrifices(damageFlags: BitFlags<DamageFlag>): void {
112
115
  const room = game.GetRoom();
113
116
  const roomType = room.GetType();
114
117
  const isSpikeDamage = hasFlag(damageFlags, DamageFlag.SPIKES);
@@ -120,7 +123,7 @@ export class PostCursedTeleport extends CustomCallbackPlayer<ModCallbackCustom2.
120
123
 
121
124
  // ModCallback.POST_PLAYER_RENDER (32)
122
125
  // PlayerVariant.PLAYER (0)
123
- postPlayerRenderPlayer = (
126
+ private postPlayerRenderPlayer = (
124
127
  player: EntityPlayer,
125
128
  _renderOffset: Vector,
126
129
  ): void => {
@@ -0,0 +1,11 @@
1
+ import { ISCFeature } from "../../enums/ISCFeature";
2
+ import { ModCallbackCustom2 } from "../../enums/ModCallbackCustom2";
3
+ import { CustomCallbackRevive } from "./validation/CustomCallbackRevive";
4
+
5
+ export class PostCustomRevive extends CustomCallbackRevive<ModCallbackCustom2.POST_CUSTOM_REVIVE> {
6
+ constructor() {
7
+ super();
8
+
9
+ this.featuresUsed = [ISCFeature.CUSTOM_REVIVE];
10
+ }
11
+ }
@@ -0,0 +1,68 @@
1
+ import {
2
+ DiceFloorSubType,
3
+ EffectVariant,
4
+ ModCallback,
5
+ } from "isaac-typescript-definitions";
6
+ import { ModCallbackCustom2 } from "../../enums/ModCallbackCustom2";
7
+ import { isCloseEnoughToTriggerDiceFloor } from "../../functions/effects";
8
+ import { getClosestPlayer } from "../../functions/players";
9
+ import {
10
+ CustomCallback,
11
+ FireArgs,
12
+ OptionalArgs,
13
+ } from "../private/CustomCallback";
14
+
15
+ type T = ModCallbackCustom2.POST_DICE_ROOM_ACTIVATED;
16
+
17
+ export class PostDiceRoomActivated extends CustomCallback<T> {
18
+ public override v = {
19
+ room: {
20
+ diceRoomActivated: false,
21
+ },
22
+ };
23
+
24
+ constructor() {
25
+ super();
26
+
27
+ this.callbacksUsed = [
28
+ [
29
+ ModCallback.POST_EFFECT_UPDATE,
30
+ [this.postEffectUpdateDiceFloor, EffectVariant.DICE_FLOOR],
31
+ ], // 55
32
+ ];
33
+ }
34
+
35
+ // eslint-disable-next-line class-methods-use-this
36
+ protected override shouldFire(
37
+ fireArgs: FireArgs<T>,
38
+ optionalArgs: OptionalArgs<T>,
39
+ ): boolean {
40
+ const [callbackDiceFloorSubType] = optionalArgs;
41
+ if (callbackDiceFloorSubType === undefined) {
42
+ return true;
43
+ }
44
+
45
+ const [_player, diceFloorSubType] = fireArgs;
46
+ return diceFloorSubType === callbackDiceFloorSubType;
47
+ }
48
+
49
+ // ModCallback.POST_EFFECT_UPDATE (55)
50
+ // EffectVariant.DICE_FLOOR (76)
51
+ private postEffectUpdateDiceFloor = (effect: EntityEffect): void => {
52
+ if (this.v.room.diceRoomActivated) {
53
+ return;
54
+ }
55
+
56
+ // When using the debug console to go to a dice room, the player can appear on top of the dice
57
+ // floor before they snap to the door.
58
+ if (effect.FrameCount === 0) {
59
+ return;
60
+ }
61
+
62
+ const closestPlayer = getClosestPlayer(effect.Position);
63
+ if (isCloseEnoughToTriggerDiceFloor(closestPlayer, effect)) {
64
+ this.v.room.diceRoomActivated = true;
65
+ this.fire(closestPlayer, effect.SubType as DiceFloorSubType);
66
+ }
67
+ };
68
+ }