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
@@ -61,7 +61,7 @@ export function isCollectibleInItemPool(
61
61
 
62
62
  // On Tainted Lost, it is impossible to retrieve non-offensive collectibles from pools, so we
63
63
  // temporarily change the character to Isaac.
64
- const taintedLosts = getPlayersOfType(PlayerType.THE_LOST_B);
64
+ const taintedLosts = getPlayersOfType(PlayerType.LOST_B);
65
65
  const isOffensive = collectibleHasTag(
66
66
  collectibleType,
67
67
  ItemConfigTag.OFFENSIVE,
@@ -108,7 +108,7 @@ export function isCollectibleInItemPool(
108
108
  // Change any players back to Tainted Lost, if necessary.
109
109
  if (changedPlayerTypes) {
110
110
  for (const player of taintedLosts) {
111
- player.ChangePlayerType(PlayerType.THE_LOST_B);
111
+ player.ChangePlayerType(PlayerType.LOST_B);
112
112
  }
113
113
  }
114
114
 
@@ -177,7 +177,7 @@ export function getPlayerHealth(player: EntityPlayer): PlayerHealth {
177
177
  const bloodCharges = player.GetEffectiveBloodCharge();
178
178
 
179
179
  // The Forgotten and The Soul has special health, so we need to account for this.
180
- if (character === PlayerType.THE_FORGOTTEN && subPlayer !== undefined) {
180
+ if (character === PlayerType.FORGOTTEN && subPlayer !== undefined) {
181
181
  // The Forgotten does not have red heart containers.
182
182
  maxHearts = boneHearts * 2;
183
183
  boneHearts = 0;
@@ -185,7 +185,7 @@ export function getPlayerHealth(player: EntityPlayer): PlayerHealth {
185
185
  // The Forgotten will always have 0 soul hearts; we need to get the soul heart amount from the
186
186
  // sub player.
187
187
  soulHearts = subPlayer.GetSoulHearts();
188
- } else if (character === PlayerType.THE_SOUL && subPlayer !== undefined) {
188
+ } else if (character === PlayerType.SOUL && subPlayer !== undefined) {
189
189
  // The Soul will always have 0 bone hearts; we need to get the bone heart amount from the sub
190
190
  // player. We need to store it as "maxHearts" instead of "boneHearts".
191
191
  maxHearts = subPlayer.GetBoneHearts() * 2;
@@ -202,7 +202,7 @@ export function getPlayerHealth(player: EntityPlayer): PlayerHealth {
202
202
  const soulHeartTypes: SoulHeartType[] = [];
203
203
  for (let i = 0; i < extraHearts; i++) {
204
204
  let isBoneHeart = player.IsBoneHeart(i);
205
- if (character === PlayerType.THE_FORGOTTEN && subPlayer !== undefined) {
205
+ if (character === PlayerType.FORGOTTEN && subPlayer !== undefined) {
206
206
  isBoneHeart = subPlayer.IsBoneHeart(i);
207
207
  }
208
208
  if (isBoneHeart) {
@@ -210,7 +210,7 @@ export function getPlayerHealth(player: EntityPlayer): PlayerHealth {
210
210
  } else {
211
211
  // We need to add 1 here because only the second half of a black heart is considered black.
212
212
  let isBlackHeart = player.IsBlackHeart(currentSoulHeart + 1);
213
- if (character === PlayerType.THE_FORGOTTEN && subPlayer !== undefined) {
213
+ if (character === PlayerType.FORGOTTEN && subPlayer !== undefined) {
214
214
  isBlackHeart = subPlayer.IsBlackHeart(currentSoulHeart + 1);
215
215
  }
216
216
  if (isBlackHeart) {
@@ -520,7 +520,7 @@ export function removeAllPlayerHealth(player: EntityPlayer): void {
520
520
 
521
521
  // If we are The Soul, the `EntityPlayer.AddBoneHearts` method will not remove Forgotten's bone
522
522
  // hearts, so we need to explicitly handle this.
523
- if (isCharacter(player, PlayerType.THE_SOUL)) {
523
+ if (isCharacter(player, PlayerType.SOUL)) {
524
524
  const forgotten = player.GetSubPlayer();
525
525
  if (forgotten !== undefined) {
526
526
  const forgottenBoneHearts = forgotten.GetBoneHearts();
@@ -559,7 +559,7 @@ export function setPlayerHealth(
559
559
  }
560
560
 
561
561
  // Add the red heart containers.
562
- if (character === PlayerType.THE_SOUL && subPlayer !== undefined) {
562
+ if (character === PlayerType.SOUL && subPlayer !== undefined) {
563
563
  // Adding health to The Soul is a special case.
564
564
  subPlayer.AddMaxHearts(playerHealth.maxHearts, false);
565
565
  } else {
@@ -6,7 +6,7 @@ const DEFAULT_COLLECTIBLE_TYPE = CollectibleType.SAD_ONION;
6
6
 
7
7
  const EXCLUDED_CHARACTERS: ReadonlySet<PlayerType> = new Set([
8
8
  PlayerType.ESAU, // 20
9
- PlayerType.THE_SOUL_B, // 40
9
+ PlayerType.SOUL_B, // 40
10
10
  ]);
11
11
 
12
12
  /**
@@ -122,7 +122,7 @@ function getPlayerIndexCollectibleType(
122
122
  ) {
123
123
  const character = player.GetPlayerType();
124
124
 
125
- if (character === PlayerType.THE_SOUL) {
125
+ if (character === PlayerType.SOUL) {
126
126
  return differentiateForgottenAndSoul
127
127
  ? CollectibleType.INNER_EYE
128
128
  : DEFAULT_COLLECTIBLE_TYPE;
@@ -299,6 +299,21 @@ export function getPlayerFromEntity(entity: Entity): EntityPlayer | undefined {
299
299
  return entity.ToPlayer();
300
300
  }
301
301
 
302
+ /**
303
+ * Helper function to get an `EntityPlayer` object from an `EntityPtr`. Returns undefined if the
304
+ * entity has gone out of scope or if the associated entity is not a player.
305
+ */
306
+ export function getPlayerFromPtr(
307
+ entityPtr: EntityPtr,
308
+ ): EntityPlayer | undefined {
309
+ const entity = entityPtr.Ref;
310
+ if (entity === undefined) {
311
+ return undefined;
312
+ }
313
+
314
+ return entity.ToPlayer();
315
+ }
316
+
302
317
  /**
303
318
  * Helper function to get the proper name of the player. Use this instead of the
304
319
  * `EntityPlayer.GetName` method because it accounts for Blue Baby, Lazarus II, and Tainted
@@ -442,7 +457,7 @@ export function hasLostCurse(player: EntityPlayer): boolean {
442
457
  * items. (Only Tainted Forgotten can pick up items.)
443
458
  */
444
459
  export function hasOpenActiveItemSlot(player: EntityPlayer): boolean {
445
- if (isCharacter(player, PlayerType.THE_SOUL_B)) {
460
+ if (isCharacter(player, PlayerType.SOUL_B)) {
446
461
  return false;
447
462
  }
448
463
 
@@ -460,9 +475,15 @@ export function hasOpenActiveItemSlot(player: EntityPlayer): boolean {
460
475
  return activeItemPrimary === CollectibleType.NULL;
461
476
  }
462
477
 
478
+ /**
479
+ * Helper function to check if the active slot of a particular player is empty.
480
+ *
481
+ * @param player The player to check.
482
+ * @param activeSlot Optional. The active slot to check. Default is `ActiveSlot.PRIMARY`.
483
+ */
463
484
  export function isActiveSlotEmpty(
464
485
  player: EntityPlayer,
465
- activeSlot: ActiveSlot,
486
+ activeSlot = ActiveSlot.PRIMARY,
466
487
  ): boolean {
467
488
  const activeCollectibleType = player.GetActiveItem(activeSlot);
468
489
  return activeCollectibleType === CollectibleType.NULL;
@@ -546,9 +567,7 @@ export function isKeeper(player: EntityPlayer): boolean {
546
567
  export function isLost(player: EntityPlayer): boolean {
547
568
  const character = player.GetPlayerType();
548
569
 
549
- return (
550
- character === PlayerType.THE_LOST || character === PlayerType.THE_LOST_B
551
- );
570
+ return character === PlayerType.LOST || character === PlayerType.LOST_B;
552
571
  }
553
572
 
554
573
  export function isModdedPlayer(player: EntityPlayer): boolean {
@@ -714,7 +733,7 @@ export function removeTrinketCostume(
714
733
  *
715
734
  * @param player The player to give the item to.
716
735
  * @param collectibleType The collectible type of the item to give.
717
- * @param activeSlot The slot to set.
736
+ * @param activeSlot Optional. The slot to set. Default is `ActiveSlot.PRIMARY`.
718
737
  * @param charge Optional. The argument of charges to set. If not specified, the item will be set
719
738
  * with maximum charges.
720
739
  * @param keepInPools Optional. Whether or not to remove the item from pools. Default is false.
@@ -722,7 +741,7 @@ export function removeTrinketCostume(
722
741
  export function setActiveItem(
723
742
  player: EntityPlayer,
724
743
  collectibleType: CollectibleType,
725
- activeSlot: ActiveSlot,
744
+ activeSlot = ActiveSlot.PRIMARY,
726
745
  charge?: int,
727
746
  keepInPools = false,
728
747
  ): void {
@@ -124,7 +124,7 @@ export function getPocketItems(player: EntityPlayer): PocketItemDescription[] {
124
124
  * items. (Only Tainted Forgotten can pick up items.)
125
125
  */
126
126
  export function hasOpenPocketItemSlot(player: EntityPlayer): boolean {
127
- if (isCharacter(player, PlayerType.THE_SOUL_B)) {
127
+ if (isCharacter(player, PlayerType.SOUL_B)) {
128
128
  return false;
129
129
  }
130
130
 
@@ -546,7 +546,7 @@ export function roomUpdateSafe(): void {
546
546
  setEntityVelocities(entityVelocities, entities);
547
547
  }
548
548
 
549
- /** Helper function to set the backdrop of the current room. */
549
+ /** Helper function to set the backdrop (i.e. background) of the current room. */
550
550
  export function setBackdrop(backdropType: BackdropType): void {
551
551
  game.ShowHallucination(0, backdropType);
552
552
  sfxManager.Stop(SoundEffect.DEATH_CARD);
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  Challenge,
3
+ Difficulty,
3
4
  PlayerType,
4
5
  SlotVariant,
5
6
  } from "isaac-typescript-definitions";
@@ -26,6 +27,17 @@ export function canRunUnlockAchievements(): boolean {
26
27
  return canUnlockAchievements;
27
28
  }
28
29
 
30
+ /**
31
+ * Helper function to check if the difficulty of the current run is equal to `Difficulty.GREED` or
32
+ * `Difficulty.GREEDIER`.
33
+ */
34
+ export function isGreedMode(): boolean {
35
+ return (
36
+ game.Difficulty === Difficulty.GREED ||
37
+ game.Difficulty === Difficulty.GREEDIER
38
+ );
39
+ }
40
+
29
41
  /**
30
42
  * Whether or not the player is playing on a set seed (i.e. that they entered in a specific seed by
31
43
  * pressing tab on the character selection screen). When the player resets the game on a set seed,
@@ -136,6 +136,17 @@ export function getStringsFromTable(
136
136
  return strings;
137
137
  }
138
138
 
139
+ /** Helper function to check if a Lua table has 0 keys. */
140
+ export function isTableEmpty(luaMap: LuaMap<AnyNotNil, unknown>): boolean {
141
+ // Using `next` does not seem to work properly, so we use `pairs` instead.
142
+ // eslint-disable-next-line no-unreachable-loop
143
+ for (const [_key, _value] of pairs(luaMap)) {
144
+ return false;
145
+ }
146
+
147
+ return true;
148
+ }
149
+
139
150
  /**
140
151
  * Helper function to iterate over a table deterministically. This is useful because by default, the
141
152
  * `pairs` function will return the keys of a Lua table in a random order.
@@ -156,7 +156,7 @@ export function getVanillaTrinketTypes(): TrinketType[] {
156
156
  * items. (Only Tainted Forgotten can pick up items.)
157
157
  */
158
158
  export function hasOpenTrinketSlot(player: EntityPlayer): boolean {
159
- if (isCharacter(player, PlayerType.THE_SOUL_B)) {
159
+ if (isCharacter(player, PlayerType.SOUL_B)) {
160
160
  return false;
161
161
  }
162
162
 
@@ -1,5 +1,6 @@
1
1
  import { DefaultMap } from "../classes/DefaultMap";
2
- import { TSTLClassMetatable } from "../interfaces/private/TSTLClassMetatable";
2
+ import { TSTLClassMetatable } from "../interfaces/TSTLClassMetatable";
3
+ import { FunctionTuple } from "../types/FunctionTuple";
3
4
  import { TSTLClass } from "../types/TSTLClass";
4
5
  import { isString, isTable } from "./types";
5
6
 
@@ -12,16 +13,14 @@ const TSTL_CLASS_METATABLE_KEYS: ReadonlySet<string> = new Set([
12
13
  ]);
13
14
 
14
15
  /**
15
- * Helper function to get the name of a TypeScriptToLua class. TSTL classes are Lua tables created
16
- * with the `__TS__Class` Lua function from the TSTL lualib. Their name is contained within
17
- * "constructor.name" metatable key.
16
+ * Helper function to get the constructor from an instantiated TypeScriptToLua class, which is
17
+ * located on the metatable.
18
18
  *
19
- * For example, a `Map` class is has a name of "Map".
20
- *
21
- * Returns undefined if the object is not a table or if the aforementioned metatable key does not
22
- * exist.
19
+ * Returns undefined if passed a non-table or if the provided table does not have a metatable.
23
20
  */
24
- export function getTSTLClassName(object: unknown): string | undefined {
21
+ export function getTSTLClassConstructor(
22
+ object: unknown,
23
+ ): TSTLClassMetatable["constructor"] | undefined {
25
24
  if (!isTable(object)) {
26
25
  return undefined;
27
26
  }
@@ -31,8 +30,35 @@ export function getTSTLClassName(object: unknown): string | undefined {
31
30
  return undefined;
32
31
  }
33
32
 
34
- const { constructor } = metatable;
35
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
33
+ return metatable.constructor;
34
+ }
35
+
36
+ export function getTSTLClassMethods(object: unknown): FunctionTuple[] {
37
+ const constructor = getTSTLClassConstructor(object);
38
+ if (constructor === undefined) {
39
+ return [];
40
+ }
41
+
42
+ const classEntries = Object.entries(constructor.prototype);
43
+ return classEntries.filter(
44
+ ([key, value]) =>
45
+ // Ignore the stock TSTL keys that are baked into every class.
46
+ !TSTL_CLASS_METATABLE_KEYS.has(key) && type(value) === "function",
47
+ );
48
+ }
49
+
50
+ /**
51
+ * Helper function to get the name of a TypeScriptToLua class from the instantiated class object.
52
+ *
53
+ * TSTL classes are Lua tables created with the `__TS__Class` Lua function from the TSTL lualib.
54
+ * Their name is contained within "constructor.name" metatable key.
55
+ *
56
+ * For example, a `Map` class is has a name of "Map".
57
+ *
58
+ * Returns undefined if passed a non-table or if the provided table does not have a metatable.
59
+ */
60
+ export function getTSTLClassName(object: unknown): string | undefined {
61
+ const constructor = getTSTLClassConstructor(object);
36
62
  if (constructor === undefined) {
37
63
  return undefined;
38
64
  }
@@ -64,8 +90,9 @@ export function isIsaacScriptCommonClass(object: unknown): boolean {
64
90
  /**
65
91
  * Helper function to determine if a given object is a TypeScriptToLua `Map`.
66
92
  *
67
- * It is not reliable to use the `instanceof` operator to determine this because each Lua module has
68
- * their own copies of the entire lualib and thus their own instantiated version of a `Map`.
93
+ * It is not reliable to use the `instanceof` operator to determine this because each Lua module
94
+ * might have their own copy of the entire lualib and thus their own instantiated version of a
95
+ * `Map`.
69
96
  */
70
97
  export function isTSTLMap(object: unknown): object is Map<AnyNotNil, unknown> {
71
98
  const className = getTSTLClassName(object);
@@ -75,8 +102,9 @@ export function isTSTLMap(object: unknown): object is Map<AnyNotNil, unknown> {
75
102
  /**
76
103
  * Helper function to determine if a given object is a TypeScriptToLua `Set`.
77
104
  *
78
- * It is not reliable to use the `instanceof` operator to determine this because each Lua module has
79
- * their own copies of the entire lualib and thus their own instantiated version of a `Set`.
105
+ * It is not reliable to use the `instanceof` operator to determine this because each Lua module
106
+ * might have their own copy of the entire lualib and thus their own instantiated version of a
107
+ * `Set`.
80
108
  */
81
109
  export function isTSTLSet(object: unknown): object is Set<AnyNotNil> {
82
110
  const className = getTSTLClassName(object);
@@ -134,22 +162,18 @@ export function isVanillaTSTLClass(object: unknown): boolean {
134
162
  * class.
135
163
  */
136
164
  export function newTSTLClass(oldClass: TSTLClass): TSTLClass {
137
- const metatable = getmetatable(oldClass) as TSTLClassMetatable | undefined;
138
- if (metatable === undefined) {
165
+ const constructor = getTSTLClassConstructor(oldClass);
166
+ if (constructor === undefined) {
139
167
  error(
140
- "Failed to instantiate a new TypeScriptToLua class since the provided old class does not have a metatable.",
168
+ "Failed to instantiate a new TypeScriptToLua class since the provided old class does not have a metatable/constructor.",
141
169
  );
142
170
  }
143
171
 
144
- return newTSTLClassFromMetatable(metatable);
145
- }
146
-
147
- /** This is a re-implementation of the transpiled "__TS__New" function. */
148
- function newTSTLClassFromMetatable(metatable: TSTLClassMetatable): TSTLClass {
172
+ // We re-implement some of the logic from the transpiled "__TS__New" function.
149
173
  const newClass = new LuaMap<AnyNotNil, unknown>();
150
174
  const newClassMetatable = setmetatable(
151
175
  newClass,
152
- metatable.constructor.prototype,
176
+ constructor.prototype,
153
177
  ) as unknown as TSTLClassMetatable;
154
178
  newClassMetatable.____constructor(); // eslint-disable-line no-underscore-dangle
155
179
 
@@ -94,6 +94,22 @@ export function isVanillaConsoleCommand(commandName: string): boolean {
94
94
  return CONSOLE_COMMANDS_SET.has(commandName);
95
95
  }
96
96
 
97
+ /**
98
+ * Helper function for creating objects that represent a mapping of an enum value to some other
99
+ * value in a type-safe way.
100
+ *
101
+ * This function will ensure that the provided object has a key for each value in the enum.
102
+ *
103
+ * After the `satisfies` operator is released in TypeScript 4.9, this function should be deleted.
104
+ */
105
+ export function newObjectWithEnumKeys<
106
+ Enum extends number | string,
107
+ T extends Record<Enum, unknown>,
108
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
109
+ >(theEnum: Record<string, Enum>, obj: T): T {
110
+ return obj;
111
+ }
112
+
97
113
  /**
98
114
  * Helper function to print something to the in-game console. Use this instead of invoking the
99
115
  * `Isaac.ConsoleOutput` method directly because it will automatically insert a newline at the end
@@ -186,3 +202,36 @@ export function twoDimensionalSort<T>(array1: T[], array2: T[]): -1 | 0 | 1 {
186
202
 
187
203
  return firstElement1 < firstElement2 ? -1 : 1;
188
204
  }
205
+
206
+ /**
207
+ * Helper function to validate that an interface contains all of the keys of an enum. You must
208
+ * specify both generic parameters in order for this to work properly (i.e. the interface and then
209
+ * the enum).
210
+ *
211
+ * For example:
212
+ *
213
+ * ```ts
214
+ * enum MyEnum {
215
+ * Value1,
216
+ * Value2,
217
+ * Value3,
218
+ * }
219
+ *
220
+ * interface MyEnumToType {
221
+ * [MyEnum.Value1]: boolean;
222
+ * [MyEnum.Value2]: number;
223
+ * [MyEnum.Value3]: string;
224
+ * }
225
+ *
226
+ * validateInterfaceMatchesEnum<MyEnumToType, MyEnum>();
227
+ * ```
228
+ *
229
+ * This function is only meant to be used with interfaces (i.e. types that will not exist at
230
+ * run-time). If you are generating an object that will contain all of the keys of an enum, use the
231
+ * `newObjectWithEnumKeys` helper function instead.
232
+ */
233
+ export function validateInterfaceMatchesEnum<
234
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
235
+ T extends Record<Enum, unknown>,
236
+ Enum extends string | number,
237
+ >(): void {}
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./classes/DefaultMap";
2
+ export * from "./classes/ModFeature";
2
3
  export * from "./classes/ModUpgraded";
3
4
  export * from "./core/cachedClasses";
4
5
  export * from "./core/constants";
@@ -7,7 +8,7 @@ export * from "./core/upgradeMod";
7
8
  export * from "./enums/AmbushType";
8
9
  export * from "./enums/CornerType";
9
10
  export * from "./enums/HealthType";
10
- export * from "./enums/IsaacScriptCommonFeature";
11
+ export * from "./enums/ISCFeature";
11
12
  export * from "./enums/LadderSubTypeCustom";
12
13
  export * from "./enums/ModCallbackCustom";
13
14
  export * from "./enums/ModCallbackCustom2";
@@ -68,6 +69,7 @@ export * from "./functions/collectibleTag";
68
69
  export * from "./functions/color";
69
70
  export * from "./functions/curses";
70
71
  export * from "./functions/debugFunctions";
72
+ export * from "./functions/decorators";
71
73
  export * from "./functions/deepCopy";
72
74
  export * from "./functions/deepCopyTests";
73
75
  export * from "./functions/dev";
@@ -174,13 +176,22 @@ export * from "./maps/pillNameToEffectMap";
174
176
  export * from "./maps/roomNameToTypeMap";
175
177
  export * from "./objects/colors";
176
178
  export * from "./objects/kColors";
179
+ export * from "./types/AllButFirst";
180
+ export * from "./types/AllButLast";
177
181
  export * from "./types/AnyEntity";
178
182
  export * from "./types/AnyGridEntity";
179
183
  export * from "./types/CollectibleIndex";
184
+ export * from "./types/Constructor";
185
+ export * from "./types/FunctionTuple";
186
+ export * from "./types/HasAllEnumKeys";
180
187
  export * from "./types/Immutable";
188
+ export * from "./types/LowercaseKeys";
181
189
  export * from "./types/PickingUpItem";
182
190
  export * from "./types/PickupIndex";
183
191
  export * from "./types/PlayerIndex";
184
192
  export * from "./types/PossibleStatType";
193
+ export * from "./types/StartsWithLowercase";
194
+ export * from "./types/StartsWithUppercase";
185
195
  export * from "./types/TSTLClass";
196
+ export * from "./types/UppercaseKeys";
186
197
  export * from "./types/WeightedArray";
@@ -1,3 +1,5 @@
1
+ /* eslint-disable @typescript-eslint/explicit-member-accessibility */
2
+ /* eslint-disable class-methods-use-this */
1
3
  /* eslint-disable max-classes-per-file */
2
4
 
3
5
  import { CopyableIsaacAPIClass } from "../objects/isaacAPIClassTypeToFunctions";
@@ -233,7 +235,7 @@ function test<Persistent, Run, Level>(
233
235
  {
234
236
  class Foo {
235
237
  someField = 123;
236
- someMethod() {} // eslint-disable-line class-methods-use-this
238
+ someMethod() {}
237
239
  }
238
240
 
239
241
  const saveDataWithClassWithMethod = {
@@ -264,7 +266,7 @@ function test<Persistent, Run, Level>(
264
266
  {
265
267
  class Foo {
266
268
  someField = 123;
267
- someMethod() {} // eslint-disable-line class-methods-use-this
269
+ someMethod() {}
268
270
  }
269
271
 
270
272
  const saveDataWithNestedClass = {
@@ -92,6 +92,7 @@ import { PreGetPedestalRegisterParameters } from "../../callbacks/subscriptions/
92
92
  import { PreItemPickupRegisterParameters } from "../../callbacks/subscriptions/preItemPickup";
93
93
  import { PreNewLevelRegisterParameters } from "../../callbacks/subscriptions/preNewLevel";
94
94
  import { ModCallbackCustom } from "../../enums/ModCallbackCustom";
95
+ import { validateInterfaceMatchesEnum } from "../../functions/utils";
95
96
 
96
97
  export interface AddCallbackParametersCustom {
97
98
  [ModCallbackCustom.POST_AMBUSH_FINISHED]: PostAmbushFinishedRegisterParameters;
@@ -188,3 +189,5 @@ export interface AddCallbackParametersCustom {
188
189
  [ModCallbackCustom.PRE_ITEM_PICKUP]: PreItemPickupRegisterParameters;
189
190
  [ModCallbackCustom.PRE_NEW_LEVEL]: PreNewLevelRegisterParameters;
190
191
  }
192
+
193
+ validateInterfaceMatchesEnum<AddCallbackParametersCustom, ModCallbackCustom>();