isaacscript-common 87.5.0 → 87.6.0

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 (684) hide show
  1. package/README.md +1 -1
  2. package/dist/callbackClasses.d.ts +7 -6
  3. package/dist/callbackClasses.d.ts.map +1 -1
  4. package/dist/callbackClasses.js +17 -15
  5. package/dist/callbackClasses.lua +163 -300
  6. package/dist/callbacks.d.ts +118 -117
  7. package/dist/callbacks.d.ts.map +1 -1
  8. package/dist/callbacks.js +19 -9
  9. package/dist/callbacks.lua +1 -0
  10. package/dist/classes/DefaultMap.d.ts +5 -1
  11. package/dist/classes/DefaultMap.d.ts.map +1 -1
  12. package/dist/classes/ModFeature.js +3 -3
  13. package/dist/classes/ModUpgraded.d.ts.map +1 -1
  14. package/dist/classes/ModUpgraded.js +4 -6
  15. package/dist/classes/callbacks/InputActionFilter.d.ts +2 -2
  16. package/dist/classes/callbacks/InputActionFilter.d.ts.map +1 -1
  17. package/dist/classes/callbacks/InputActionFilter.js +3 -3
  18. package/dist/classes/callbacks/InputActionPlayer.d.ts +2 -2
  19. package/dist/classes/callbacks/InputActionPlayer.d.ts.map +1 -1
  20. package/dist/classes/callbacks/InputActionPlayer.js +6 -6
  21. package/dist/classes/callbacks/PostBoneSwing.js +2 -2
  22. package/dist/classes/callbacks/PostCollectibleEmpty.d.ts +2 -2
  23. package/dist/classes/callbacks/PostCollectibleEmpty.d.ts.map +1 -1
  24. package/dist/classes/callbacks/PostCollectibleEmpty.js +3 -5
  25. package/dist/classes/callbacks/PostCursedTeleport.js +5 -5
  26. package/dist/classes/callbacks/PostCustomRevive.d.ts +2 -4
  27. package/dist/classes/callbacks/PostCustomRevive.d.ts.map +1 -1
  28. package/dist/classes/callbacks/PostDiceRoomActivated.d.ts +2 -3
  29. package/dist/classes/callbacks/PostDiceRoomActivated.d.ts.map +1 -1
  30. package/dist/classes/callbacks/PostDiceRoomActivated.js +2 -2
  31. package/dist/classes/callbacks/PostEntityRemoveFilter.d.ts +9 -0
  32. package/dist/classes/callbacks/PostEntityRemoveFilter.d.ts.map +1 -0
  33. package/dist/classes/callbacks/PostEntityRemoveFilter.js +21 -0
  34. package/dist/classes/callbacks/PostEntityRemoveFilter.lua +23 -0
  35. package/dist/classes/callbacks/PostGridEntityCollision.d.ts +2 -4
  36. package/dist/classes/callbacks/PostGridEntityCollision.d.ts.map +1 -1
  37. package/dist/classes/callbacks/PostGridEntityCollision.js +10 -10
  38. package/dist/classes/callbacks/PostGridEntityCustomCollision.d.ts +2 -4
  39. package/dist/classes/callbacks/PostGridEntityCustomCollision.d.ts.map +1 -1
  40. package/dist/classes/callbacks/PostGridEntityCustomCollision.js +8 -8
  41. package/dist/classes/callbacks/PostGridEntityCustomRemove.d.ts +2 -3
  42. package/dist/classes/callbacks/PostGridEntityCustomRemove.d.ts.map +1 -1
  43. package/dist/classes/callbacks/PostGridEntityCustomRemove.js +2 -2
  44. package/dist/classes/callbacks/PostGridEntityRemove.d.ts +2 -2
  45. package/dist/classes/callbacks/PostGridEntityRemove.d.ts.map +1 -1
  46. package/dist/classes/callbacks/PostGridEntityRemove.js +3 -3
  47. package/dist/classes/callbacks/PostItemDischarge.d.ts +2 -2
  48. package/dist/classes/callbacks/PostItemDischarge.d.ts.map +1 -1
  49. package/dist/classes/callbacks/PostItemDischarge.js +5 -8
  50. package/dist/classes/callbacks/PostKeyboardChanged.d.ts +2 -1
  51. package/dist/classes/callbacks/PostKeyboardChanged.d.ts.map +1 -1
  52. package/dist/classes/callbacks/PostKeyboardChanged.js +2 -2
  53. package/dist/classes/callbacks/PostNewRoomEarly.js +3 -3
  54. package/dist/classes/callbacks/PostPickupSelectionFilter.d.ts +2 -2
  55. package/dist/classes/callbacks/PostPickupSelectionFilter.d.ts.map +1 -1
  56. package/dist/classes/callbacks/PostPickupSelectionFilter.js +4 -3
  57. package/dist/classes/callbacks/PostPlayerChangeHealth.js +2 -2
  58. package/dist/classes/callbacks/PostPlayerChangeType.js +1 -1
  59. package/dist/classes/callbacks/PostPurchase.d.ts +2 -4
  60. package/dist/classes/callbacks/PostPurchase.d.ts.map +1 -1
  61. package/dist/classes/callbacks/PostPurchase.js +9 -9
  62. package/dist/classes/callbacks/PostRoomClearChanged.d.ts.map +1 -1
  63. package/dist/classes/callbacks/PostTransformation.d.ts +2 -2
  64. package/dist/classes/callbacks/PostTransformation.d.ts.map +1 -1
  65. package/dist/classes/callbacks/PostTransformation.js +1 -3
  66. package/dist/classes/callbacks/PostTrinketBreak.d.ts.map +1 -1
  67. package/dist/classes/callbacks/PostTrinketBreak.js +1 -3
  68. package/dist/classes/callbacks/PostUsePillFilter.js +2 -2
  69. package/dist/classes/callbacks/PreBerserkDeath.js +4 -4
  70. package/dist/classes/callbacks/PreEntitySpawnFilter.d.ts +2 -2
  71. package/dist/classes/callbacks/PreEntitySpawnFilter.d.ts.map +1 -1
  72. package/dist/classes/callbacks/PreEntitySpawnFilter.js +3 -3
  73. package/dist/classes/callbacks/PreNewLevel.d.ts.map +1 -1
  74. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.d.ts +2 -2
  75. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.d.ts.map +1 -1
  76. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +5 -5
  77. package/dist/classes/features/callbackLogic/CustomGridEntities.d.ts +1 -1
  78. package/dist/classes/features/callbackLogic/CustomGridEntities.d.ts.map +1 -1
  79. package/dist/classes/features/callbackLogic/CustomRevive.d.ts.map +1 -1
  80. package/dist/classes/features/callbackLogic/EsauJrDetection.d.ts.map +1 -1
  81. package/dist/classes/features/callbackLogic/EsauJrDetection.js +2 -2
  82. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.d.ts.map +1 -1
  83. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +9 -11
  84. package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +4 -4
  85. package/dist/classes/features/callbackLogic/ItemPickupDetection.js +4 -4
  86. package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +2 -2
  87. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.d.ts +0 -1
  88. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.d.ts.map +1 -1
  89. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +4 -4
  90. package/dist/classes/features/other/CustomPickups.d.ts.map +1 -1
  91. package/dist/classes/features/other/CustomPickups.js +1 -0
  92. package/dist/classes/features/other/CustomStages.js +19 -9
  93. package/dist/classes/features/other/CustomTrapdoors.d.ts.map +1 -1
  94. package/dist/classes/features/other/CustomTrapdoors.js +44 -38
  95. package/dist/classes/features/other/CustomTrapdoors.lua +14 -7
  96. package/dist/classes/features/other/DebugDisplay.d.ts +0 -18
  97. package/dist/classes/features/other/DebugDisplay.d.ts.map +1 -1
  98. package/dist/classes/features/other/DeployJSONRoom.d.ts +0 -2
  99. package/dist/classes/features/other/DeployJSONRoom.d.ts.map +1 -1
  100. package/dist/classes/features/other/DeployJSONRoom.js +6 -4
  101. package/dist/classes/features/other/DisableInputs.js +3 -3
  102. package/dist/classes/features/other/EdenStartingStatsHealth.d.ts +1 -1
  103. package/dist/classes/features/other/EdenStartingStatsHealth.d.ts.map +1 -1
  104. package/dist/classes/features/other/ExtraConsoleCommands.d.ts +14 -10
  105. package/dist/classes/features/other/ExtraConsoleCommands.d.ts.map +1 -1
  106. package/dist/classes/features/other/ExtraConsoleCommands.js +31 -17
  107. package/dist/classes/features/other/ExtraConsoleCommands.lua +2 -1
  108. package/dist/classes/features/other/FlyingDetection.d.ts +0 -1
  109. package/dist/classes/features/other/FlyingDetection.d.ts.map +1 -1
  110. package/dist/classes/features/other/ForgottenSwitch.d.ts +0 -1
  111. package/dist/classes/features/other/ForgottenSwitch.d.ts.map +1 -1
  112. package/dist/classes/features/other/ModdedElementDetection.js +4 -4
  113. package/dist/classes/features/other/ModdedElementSets.d.ts +2 -2
  114. package/dist/classes/features/other/ModdedElementSets.d.ts.map +1 -1
  115. package/dist/classes/features/other/ModdedElementSets.js +3 -3
  116. package/dist/classes/features/other/NoSirenSteal.js +4 -4
  117. package/dist/classes/features/other/PickupIndexCreation.d.ts +0 -1
  118. package/dist/classes/features/other/PickupIndexCreation.d.ts.map +1 -1
  119. package/dist/classes/features/other/PickupIndexCreation.js +7 -8
  120. package/dist/classes/features/other/PickupIndexCreation.lua +10 -10
  121. package/dist/classes/features/other/PonyDetection.d.ts +0 -1
  122. package/dist/classes/features/other/PonyDetection.d.ts.map +1 -1
  123. package/dist/classes/features/other/PonyDetection.js +2 -2
  124. package/dist/classes/features/other/PressInput.js +2 -2
  125. package/dist/classes/features/other/PreventChildEntities.d.ts +0 -1
  126. package/dist/classes/features/other/PreventChildEntities.d.ts.map +1 -1
  127. package/dist/classes/features/other/PreventChildEntities.js +4 -4
  128. package/dist/classes/features/other/RoomClearFrame.d.ts +0 -1
  129. package/dist/classes/features/other/RoomClearFrame.d.ts.map +1 -1
  130. package/dist/classes/features/other/RoomHistory.d.ts +0 -1
  131. package/dist/classes/features/other/RoomHistory.d.ts.map +1 -1
  132. package/dist/classes/features/other/RoomHistory.js +5 -5
  133. package/dist/classes/features/other/RunInNFrames.js +2 -2
  134. package/dist/classes/features/other/SaveDataManager.js +3 -3
  135. package/dist/classes/features/other/SpawnRockAltRewards.d.ts +0 -4
  136. package/dist/classes/features/other/SpawnRockAltRewards.d.ts.map +1 -1
  137. package/dist/classes/features/other/StageHistory.js +2 -2
  138. package/dist/classes/features/other/StartAmbush.js +2 -2
  139. package/dist/classes/features/other/TaintedLazarusPlayers.d.ts +0 -1
  140. package/dist/classes/features/other/TaintedLazarusPlayers.d.ts.map +1 -1
  141. package/dist/classes/features/other/TaintedLazarusPlayers.js +2 -2
  142. package/dist/classes/features/other/customStages/backdrop.js +2 -3
  143. package/dist/classes/features/other/customStages/constants.d.ts.map +1 -1
  144. package/dist/classes/features/other/customStages/gridEntities.d.ts +0 -1
  145. package/dist/classes/features/other/customStages/gridEntities.d.ts.map +1 -1
  146. package/dist/classes/features/other/customStages/gridEntities.js +9 -10
  147. package/dist/classes/features/other/customStages/shadows.js +1 -2
  148. package/dist/classes/features/other/customStages/streakText.js +7 -8
  149. package/dist/classes/features/other/customStages/utils.d.ts +0 -2
  150. package/dist/classes/features/other/customStages/utils.d.ts.map +1 -1
  151. package/dist/classes/features/other/customStages/utils.js +2 -3
  152. package/dist/classes/features/other/customStages/v.d.ts.map +1 -1
  153. package/dist/classes/features/other/customStages/versusScreen.js +2 -3
  154. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.d.ts +0 -1
  155. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.d.ts.map +1 -1
  156. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.d.ts +0 -1
  157. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.d.ts.map +1 -1
  158. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.d.ts +0 -1
  159. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.d.ts.map +1 -1
  160. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.d.ts +0 -1
  161. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.d.ts.map +1 -1
  162. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.d.ts +0 -1
  163. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.d.ts.map +1 -1
  164. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.d.ts +0 -1
  165. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.d.ts.map +1 -1
  166. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.d.ts +0 -1
  167. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.d.ts.map +1 -1
  168. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.d.ts +0 -1
  169. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.d.ts.map +1 -1
  170. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.d.ts +0 -1
  171. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.d.ts.map +1 -1
  172. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.d.ts +0 -1
  173. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.d.ts.map +1 -1
  174. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.d.ts +0 -1
  175. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.d.ts.map +1 -1
  176. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.d.ts +0 -1
  177. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.d.ts.map +1 -1
  178. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.d.ts +0 -1
  179. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.d.ts.map +1 -1
  180. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.d.ts +0 -1
  181. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.d.ts.map +1 -1
  182. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.d.ts +0 -1
  183. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.d.ts.map +1 -1
  184. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.d.ts +0 -1
  185. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.d.ts.map +1 -1
  186. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.d.ts +0 -1
  187. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.d.ts.map +1 -1
  188. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.d.ts +0 -1
  189. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.d.ts.map +1 -1
  190. package/dist/classes/features/other/debugDisplay/utils.d.ts +0 -2
  191. package/dist/classes/features/other/debugDisplay/utils.d.ts.map +1 -1
  192. package/dist/classes/features/other/debugDisplay/utils.js +2 -3
  193. package/dist/classes/features/other/extraConsoleCommands/commands.js +155 -158
  194. package/dist/classes/features/other/extraConsoleCommands/subroutines.js +8 -9
  195. package/dist/classes/features/other/saveDataManager/constants.d.ts.map +1 -1
  196. package/dist/classes/features/other/saveDataManager/glowingHourGlass.d.ts +0 -1
  197. package/dist/classes/features/other/saveDataManager/glowingHourGlass.d.ts.map +1 -1
  198. package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +4 -5
  199. package/dist/classes/features/other/saveDataManager/loadFromDisk.d.ts +0 -2
  200. package/dist/classes/features/other/saveDataManager/loadFromDisk.d.ts.map +1 -1
  201. package/dist/classes/features/other/saveDataManager/loadFromDisk.js +5 -2
  202. package/dist/classes/features/other/saveDataManager/loadFromDisk.lua +3 -0
  203. package/dist/classes/features/other/saveDataManager/restoreDefaults.d.ts +0 -1
  204. package/dist/classes/features/other/saveDataManager/restoreDefaults.d.ts.map +1 -1
  205. package/dist/classes/features/other/saveDataManager/restoreDefaults.js +3 -4
  206. package/dist/classes/features/other/saveDataManager/saveToDisk.d.ts +0 -2
  207. package/dist/classes/features/other/saveDataManager/saveToDisk.d.ts.map +1 -1
  208. package/dist/classes/features/other/saveDataManager/saveToDisk.js +1 -2
  209. package/dist/classes/private/CustomCallback.d.ts.map +1 -1
  210. package/dist/core/cachedClasses.d.ts +0 -5
  211. package/dist/core/cachedClasses.d.ts.map +1 -1
  212. package/dist/core/constants.js +1 -1
  213. package/dist/core/constantsVanilla.js +4 -4
  214. package/dist/core/upgradeMod.d.ts +0 -2
  215. package/dist/core/upgradeMod.d.ts.map +1 -1
  216. package/dist/core/upgradeMod.js +1 -2
  217. package/dist/decorators.js +2 -2
  218. package/dist/enums/ModCallbackCustom.d.ts +134 -117
  219. package/dist/enums/ModCallbackCustom.d.ts.map +1 -1
  220. package/dist/enums/ModCallbackCustom.js +134 -117
  221. package/dist/enums/ModCallbackCustom.lua +119 -117
  222. package/dist/enums/private/GridEntityTypeCustom.d.ts.map +1 -1
  223. package/dist/features.js +1 -2
  224. package/dist/functions/ambush.js +1 -2
  225. package/dist/functions/array.d.ts +5 -8
  226. package/dist/functions/array.d.ts.map +1 -1
  227. package/dist/functions/array.js +55 -55
  228. package/dist/functions/array.lua +2 -2
  229. package/dist/functions/arrayLua.d.ts +1 -1
  230. package/dist/functions/arrayLua.d.ts.map +1 -1
  231. package/dist/functions/arrayLua.js +7 -8
  232. package/dist/functions/benchmark.d.ts +0 -1
  233. package/dist/functions/benchmark.d.ts.map +1 -1
  234. package/dist/functions/benchmark.js +1 -2
  235. package/dist/functions/bitSet128.d.ts +0 -1
  236. package/dist/functions/bitSet128.d.ts.map +1 -1
  237. package/dist/functions/bitSet128.js +5 -6
  238. package/dist/functions/bitwise.d.ts +0 -4
  239. package/dist/functions/bitwise.d.ts.map +1 -1
  240. package/dist/functions/bitwise.js +7 -8
  241. package/dist/functions/bitwise.lua +3 -3
  242. package/dist/functions/bombs.d.ts +0 -1
  243. package/dist/functions/bombs.d.ts.map +1 -1
  244. package/dist/functions/bombs.js +1 -2
  245. package/dist/functions/bosses.d.ts.map +1 -1
  246. package/dist/functions/bosses.js +19 -19
  247. package/dist/functions/cards.js +16 -17
  248. package/dist/functions/challenges.js +9 -10
  249. package/dist/functions/characters.js +17 -18
  250. package/dist/functions/charge.d.ts.map +1 -1
  251. package/dist/functions/charge.js +12 -13
  252. package/dist/functions/charge.lua +1 -1
  253. package/dist/functions/chargeBar.d.ts +0 -2
  254. package/dist/functions/chargeBar.d.ts.map +1 -1
  255. package/dist/functions/chargeBar.js +2 -3
  256. package/dist/functions/collectibleTag.js +2 -3
  257. package/dist/functions/collectibles.js +39 -40
  258. package/dist/functions/color.d.ts +0 -1
  259. package/dist/functions/color.d.ts.map +1 -1
  260. package/dist/functions/color.js +7 -8
  261. package/dist/functions/console.js +2 -3
  262. package/dist/functions/curses.js +2 -3
  263. package/dist/functions/debugFunctions.d.ts +0 -1
  264. package/dist/functions/debugFunctions.d.ts.map +1 -1
  265. package/dist/functions/debugFunctions.js +5 -6
  266. package/dist/functions/decorators.d.ts +4 -4
  267. package/dist/functions/decorators.d.ts.map +1 -1
  268. package/dist/functions/decorators.js +4 -5
  269. package/dist/functions/deepCopy.d.ts +0 -1
  270. package/dist/functions/deepCopy.d.ts.map +1 -1
  271. package/dist/functions/deepCopy.js +7 -10
  272. package/dist/functions/deepCopy.lua +0 -2
  273. package/dist/functions/deepCopyTests.js +5 -6
  274. package/dist/functions/dimensions.js +2 -3
  275. package/dist/functions/direction.js +6 -7
  276. package/dist/functions/doors.d.ts.map +1 -1
  277. package/dist/functions/doors.js +56 -52
  278. package/dist/functions/easing.js +32 -33
  279. package/dist/functions/effects.d.ts +0 -2
  280. package/dist/functions/effects.d.ts.map +1 -1
  281. package/dist/functions/effects.js +2 -2
  282. package/dist/functions/emptyRoom.js +7 -8
  283. package/dist/functions/entities.d.ts +0 -1
  284. package/dist/functions/entities.d.ts.map +1 -1
  285. package/dist/functions/entities.js +36 -38
  286. package/dist/functions/entitiesSpecific.js +40 -41
  287. package/dist/functions/entityTypes.d.ts +0 -1
  288. package/dist/functions/entityTypes.d.ts.map +1 -1
  289. package/dist/functions/entityTypes.js +1 -2
  290. package/dist/functions/enums.d.ts +1 -6
  291. package/dist/functions/enums.d.ts.map +1 -1
  292. package/dist/functions/enums.js +12 -13
  293. package/dist/functions/external.js +2 -3
  294. package/dist/functions/familiars.js +8 -9
  295. package/dist/functions/flag.d.ts +1 -1
  296. package/dist/functions/flag.d.ts.map +1 -1
  297. package/dist/functions/flag.js +9 -10
  298. package/dist/functions/frames.d.ts +0 -1
  299. package/dist/functions/frames.d.ts.map +1 -1
  300. package/dist/functions/frames.js +18 -19
  301. package/dist/functions/globals.d.ts +0 -1
  302. package/dist/functions/globals.d.ts.map +1 -1
  303. package/dist/functions/globals.js +23 -15
  304. package/dist/functions/gridEntities.d.ts.map +1 -1
  305. package/dist/functions/gridEntities.js +68 -62
  306. package/dist/functions/gridEntitiesSpecific.js +40 -41
  307. package/dist/functions/gridIndex.js +1 -2
  308. package/dist/functions/hash.js +1 -2
  309. package/dist/functions/hex.d.ts +0 -2
  310. package/dist/functions/hex.d.ts.map +1 -1
  311. package/dist/functions/hex.js +2 -3
  312. package/dist/functions/input.js +21 -21
  313. package/dist/functions/isaacAPIClass.d.ts +0 -20
  314. package/dist/functions/isaacAPIClass.d.ts.map +1 -1
  315. package/dist/functions/isaacAPIClass.js +25 -26
  316. package/dist/functions/itemPool.js +7 -8
  317. package/dist/functions/jsonHelpers.d.ts +4 -5
  318. package/dist/functions/jsonHelpers.d.ts.map +1 -1
  319. package/dist/functions/jsonHelpers.js +23 -14
  320. package/dist/functions/jsonHelpers.lua +4 -4
  321. package/dist/functions/jsonRoom.js +5 -6
  322. package/dist/functions/kColor.d.ts +0 -1
  323. package/dist/functions/kColor.d.ts.map +1 -1
  324. package/dist/functions/kColor.js +7 -8
  325. package/dist/functions/language.js +1 -2
  326. package/dist/functions/level.js +7 -8
  327. package/dist/functions/levelGrid.d.ts.map +1 -1
  328. package/dist/functions/levelGrid.js +33 -38
  329. package/dist/functions/log.js +4 -5
  330. package/dist/functions/logEntities.d.ts.map +1 -1
  331. package/dist/functions/logEntities.js +19 -17
  332. package/dist/functions/logMisc.d.ts +1 -2
  333. package/dist/functions/logMisc.d.ts.map +1 -1
  334. package/dist/functions/logMisc.js +35 -48
  335. package/dist/functions/logMisc.lua +3 -3
  336. package/dist/functions/map.d.ts +0 -2
  337. package/dist/functions/map.d.ts.map +1 -1
  338. package/dist/functions/map.js +12 -13
  339. package/dist/functions/math.js +17 -18
  340. package/dist/functions/merge.d.ts +0 -1
  341. package/dist/functions/merge.d.ts.map +1 -1
  342. package/dist/functions/merge.js +2 -3
  343. package/dist/functions/mergeTests.js +1 -2
  344. package/dist/functions/minimap.d.ts.map +1 -1
  345. package/dist/functions/minimap.js +12 -17
  346. package/dist/functions/modFeatures.js +1 -2
  347. package/dist/functions/newArray.d.ts +0 -1
  348. package/dist/functions/newArray.d.ts.map +1 -1
  349. package/dist/functions/newArray.js +2 -3
  350. package/dist/functions/nextStage.d.ts.map +1 -1
  351. package/dist/functions/nextStage.js +16 -13
  352. package/dist/functions/npcDataStructures.d.ts +0 -2
  353. package/dist/functions/npcDataStructures.d.ts.map +1 -1
  354. package/dist/functions/npcDataStructures.js +14 -15
  355. package/dist/functions/npcs.d.ts.map +1 -1
  356. package/dist/functions/npcs.js +19 -17
  357. package/dist/functions/pickupVariants.d.ts +0 -1
  358. package/dist/functions/pickupVariants.d.ts.map +1 -1
  359. package/dist/functions/pickupVariants.js +17 -18
  360. package/dist/functions/pickups.js +14 -15
  361. package/dist/functions/pickupsSpecific.js +40 -41
  362. package/dist/functions/pills.js +18 -19
  363. package/dist/functions/playerCenter.d.ts +0 -1
  364. package/dist/functions/playerCenter.d.ts.map +1 -1
  365. package/dist/functions/playerCenter.js +1 -2
  366. package/dist/functions/playerCollectibles.d.ts.map +1 -1
  367. package/dist/functions/playerCollectibles.js +21 -24
  368. package/dist/functions/playerCollectibles.lua +9 -9
  369. package/dist/functions/playerDataStructures.d.ts +0 -1
  370. package/dist/functions/playerDataStructures.d.ts.map +1 -1
  371. package/dist/functions/playerDataStructures.js +14 -15
  372. package/dist/functions/playerEffects.js +5 -6
  373. package/dist/functions/playerHealth.d.ts +0 -2
  374. package/dist/functions/playerHealth.d.ts.map +1 -1
  375. package/dist/functions/playerHealth.js +28 -29
  376. package/dist/functions/playerHealth.lua +26 -26
  377. package/dist/functions/playerIndex.d.ts +0 -3
  378. package/dist/functions/playerIndex.d.ts.map +1 -1
  379. package/dist/functions/playerIndex.js +12 -13
  380. package/dist/functions/playerTrinkets.js +10 -11
  381. package/dist/functions/players.js +41 -42
  382. package/dist/functions/pocketItems.js +10 -11
  383. package/dist/functions/positionVelocity.d.ts +0 -4
  384. package/dist/functions/positionVelocity.d.ts.map +1 -1
  385. package/dist/functions/positionVelocity.js +11 -20
  386. package/dist/functions/positionVelocity.lua +4 -4
  387. package/dist/functions/pressurePlate.js +1 -2
  388. package/dist/functions/projectiles.js +2 -3
  389. package/dist/functions/random.d.ts +0 -3
  390. package/dist/functions/random.d.ts.map +1 -1
  391. package/dist/functions/random.js +3 -4
  392. package/dist/functions/readOnly.d.ts +0 -4
  393. package/dist/functions/readOnly.d.ts.map +1 -1
  394. package/dist/functions/readOnly.js +3 -4
  395. package/dist/functions/render.d.ts +0 -3
  396. package/dist/functions/render.d.ts.map +1 -1
  397. package/dist/functions/render.js +3 -4
  398. package/dist/functions/revive.d.ts +0 -3
  399. package/dist/functions/revive.d.ts.map +1 -1
  400. package/dist/functions/revive.js +20 -21
  401. package/dist/functions/rng.d.ts +0 -1
  402. package/dist/functions/rng.d.ts.map +1 -1
  403. package/dist/functions/rng.js +15 -15
  404. package/dist/functions/rockAlt.d.ts +0 -1
  405. package/dist/functions/rockAlt.d.ts.map +1 -1
  406. package/dist/functions/rockAlt.js +2 -3
  407. package/dist/functions/roomData.d.ts.map +1 -1
  408. package/dist/functions/roomData.js +15 -18
  409. package/dist/functions/roomGrid.js +8 -9
  410. package/dist/functions/roomShape.js +14 -15
  411. package/dist/functions/roomShapeWalls.js +2 -3
  412. package/dist/functions/roomTransition.js +2 -3
  413. package/dist/functions/rooms.d.ts +1 -2
  414. package/dist/functions/rooms.d.ts.map +1 -1
  415. package/dist/functions/rooms.js +116 -105
  416. package/dist/functions/rooms.lua +3 -4
  417. package/dist/functions/run.js +8 -9
  418. package/dist/functions/seeds.d.ts +0 -1
  419. package/dist/functions/seeds.d.ts.map +1 -1
  420. package/dist/functions/seeds.js +2 -3
  421. package/dist/functions/serialization.js +5 -6
  422. package/dist/functions/set.d.ts +0 -2
  423. package/dist/functions/set.d.ts.map +1 -1
  424. package/dist/functions/set.js +22 -23
  425. package/dist/functions/slots.js +2 -3
  426. package/dist/functions/sort.d.ts.map +1 -1
  427. package/dist/functions/sort.js +8 -9
  428. package/dist/functions/sound.d.ts.map +1 -1
  429. package/dist/functions/sound.js +4 -9
  430. package/dist/functions/spawnCollectible.d.ts.map +1 -1
  431. package/dist/functions/spawnCollectible.js +7 -10
  432. package/dist/functions/sprites.d.ts +0 -3
  433. package/dist/functions/sprites.d.ts.map +1 -1
  434. package/dist/functions/sprites.js +6 -7
  435. package/dist/functions/stage.d.ts.map +1 -1
  436. package/dist/functions/stage.js +60 -69
  437. package/dist/functions/stage.lua +5 -5
  438. package/dist/functions/stats.js +4 -5
  439. package/dist/functions/storyBosses.js +2 -3
  440. package/dist/functions/string.d.ts +0 -1
  441. package/dist/functions/string.d.ts.map +1 -1
  442. package/dist/functions/string.js +18 -19
  443. package/dist/functions/table.d.ts +0 -1
  444. package/dist/functions/table.d.ts.map +1 -1
  445. package/dist/functions/table.js +8 -9
  446. package/dist/functions/tears.js +8 -9
  447. package/dist/functions/transformations.js +5 -6
  448. package/dist/functions/trinketGive.js +9 -10
  449. package/dist/functions/trinkets.d.ts.map +1 -1
  450. package/dist/functions/trinkets.js +14 -17
  451. package/dist/functions/tstlClass.d.ts +2 -3
  452. package/dist/functions/tstlClass.d.ts.map +1 -1
  453. package/dist/functions/tstlClass.js +9 -10
  454. package/dist/functions/tstlClass.lua +2 -2
  455. package/dist/functions/types.d.ts +15 -17
  456. package/dist/functions/types.d.ts.map +1 -1
  457. package/dist/functions/types.js +41 -42
  458. package/dist/functions/types.lua +14 -14
  459. package/dist/functions/ui.d.ts +0 -3
  460. package/dist/functions/ui.d.ts.map +1 -1
  461. package/dist/functions/ui.js +13 -14
  462. package/dist/functions/utils.d.ts +0 -1
  463. package/dist/functions/utils.d.ts.map +1 -1
  464. package/dist/functions/utils.js +11 -12
  465. package/dist/functions/vector.d.ts +0 -1
  466. package/dist/functions/vector.d.ts.map +1 -1
  467. package/dist/functions/vector.js +11 -12
  468. package/dist/functions/versusScreen.js +4 -5
  469. package/dist/functions/weighted.d.ts +0 -3
  470. package/dist/functions/weighted.d.ts.map +1 -1
  471. package/dist/functions/weighted.js +2 -3
  472. package/dist/index.d.ts +58 -58
  473. package/dist/index.d.ts.map +1 -1
  474. package/dist/index.js +4 -58
  475. package/dist/index.lua +18 -18
  476. package/dist/index.rollup.d.ts +222 -181
  477. package/dist/indexLua.d.ts +58 -58
  478. package/dist/indexLua.d.ts.map +1 -1
  479. package/dist/indexLua.js +4 -58
  480. package/dist/indexLua.lua +18 -18
  481. package/dist/interfaces/ChargeBarSprites.d.ts +0 -2
  482. package/dist/interfaces/ChargeBarSprites.d.ts.map +1 -1
  483. package/dist/interfaces/Corner.d.ts +0 -2
  484. package/dist/interfaces/Corner.d.ts.map +1 -1
  485. package/dist/interfaces/SaveData.d.ts +0 -1
  486. package/dist/interfaces/SaveData.d.ts.map +1 -1
  487. package/dist/interfaces/TSTLClassMetatable.d.ts +0 -4
  488. package/dist/interfaces/TSTLClassMetatable.d.ts.map +1 -1
  489. package/dist/interfaces/private/AddCallbackParametersCustom.d.ts +6 -0
  490. package/dist/interfaces/private/AddCallbackParametersCustom.d.ts.map +1 -1
  491. package/dist/interfaces/private/ModUpgradedInterface.d.ts +0 -1
  492. package/dist/interfaces/private/ModUpgradedInterface.d.ts.map +1 -1
  493. package/dist/isaacscript-common.lua +786 -871
  494. package/dist/lib/jsonLua.js +34 -34
  495. package/dist/lualib_bundle.lua +49 -38
  496. package/dist/objects/LRoomShapeToRectangles.js +1 -1
  497. package/dist/objects/colors.d.ts +0 -1
  498. package/dist/objects/colors.d.ts.map +1 -1
  499. package/dist/objects/directionToVector.d.ts +0 -1
  500. package/dist/objects/directionToVector.d.ts.map +1 -1
  501. package/dist/objects/doorSlotFlagToDoorSlot.d.ts +9 -2
  502. package/dist/objects/doorSlotFlagToDoorSlot.d.ts.map +1 -1
  503. package/dist/objects/doorSlotToDoorSlotFlag.d.ts +0 -1
  504. package/dist/objects/doorSlotToDoorSlotFlag.d.ts.map +1 -1
  505. package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +17 -7
  506. package/dist/objects/kColors.d.ts +0 -1
  507. package/dist/objects/kColors.d.ts.map +1 -1
  508. package/dist/objects/roomShapeToBottomRightPosition.d.ts +0 -1
  509. package/dist/objects/roomShapeToBottomRightPosition.d.ts.map +1 -1
  510. package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +1 -1
  511. package/dist/objects/roomShapeToTopLeftPosition.d.ts +0 -1
  512. package/dist/objects/roomShapeToTopLeftPosition.d.ts.map +1 -1
  513. package/dist/objects/versusScreenBackgroundColors.d.ts +0 -1
  514. package/dist/objects/versusScreenBackgroundColors.d.ts.map +1 -1
  515. package/dist/objects/versusScreenDirtSpotColors.d.ts +0 -1
  516. package/dist/objects/versusScreenDirtSpotColors.d.ts.map +1 -1
  517. package/dist/patchErrorFunctions.js +1 -2
  518. package/dist/serialization.js +1 -2
  519. package/dist/shaderCrashFix.d.ts +0 -1
  520. package/dist/shaderCrashFix.d.ts.map +1 -1
  521. package/dist/shaderCrashFix.js +1 -2
  522. package/dist/shouldFire.d.ts.map +1 -1
  523. package/dist/shouldFire.js +83 -86
  524. package/dist/tsdoc-metadata.json +1 -1
  525. package/dist/types/AddSubtract.d.ts +10 -2
  526. package/dist/types/AddSubtract.d.ts.map +1 -1
  527. package/dist/types/AnyEntity.d.ts +0 -11
  528. package/dist/types/AnyEntity.d.ts.map +1 -1
  529. package/dist/types/AnyGridEntity.d.ts +0 -8
  530. package/dist/types/AnyGridEntity.d.ts.map +1 -1
  531. package/dist/types/Increment.d.ts.map +1 -1
  532. package/dist/types/PickingUpItem.d.ts +10 -3
  533. package/dist/types/PickingUpItem.d.ts.map +1 -1
  534. package/dist/types/PickingUpItem.js +15 -9
  535. package/dist/types/PickingUpItem.lua +8 -3
  536. package/dist/types/PickupIndex.d.ts +0 -1
  537. package/dist/types/PickupIndex.d.ts.map +1 -1
  538. package/dist/types/PlayerIndex.d.ts +0 -1
  539. package/dist/types/PlayerIndex.d.ts.map +1 -1
  540. package/dist/types/ReadonlyMap.d.ts.map +1 -1
  541. package/dist/types/ReadonlySet.d.ts.map +1 -1
  542. package/dist/types/TSTLClass.d.ts +0 -1
  543. package/dist/types/TSTLClass.d.ts.map +1 -1
  544. package/dist/types/TupleWithLengthBetween.js +2 -2
  545. package/dist/types/TupleWithMaxLength.js +2 -2
  546. package/dist/types/WeightedArray.d.ts +0 -1
  547. package/dist/types/WeightedArray.d.ts.map +1 -1
  548. package/package.json +9 -2
  549. package/src/callbackClasses.ts +7 -6
  550. package/src/callbacks.ts +1 -0
  551. package/src/classes/DefaultMap.ts +5 -2
  552. package/src/classes/ModFeature.ts +3 -3
  553. package/src/classes/ModUpgraded.ts +4 -6
  554. package/src/classes/callbacks/InputActionFilter.ts +3 -3
  555. package/src/classes/callbacks/InputActionPlayer.ts +6 -6
  556. package/src/classes/callbacks/PostBoneSwing.ts +2 -2
  557. package/src/classes/callbacks/PostCollectibleEmpty.ts +3 -5
  558. package/src/classes/callbacks/PostCursedTeleport.ts +5 -5
  559. package/src/classes/callbacks/PostDiceRoomActivated.ts +2 -2
  560. package/src/classes/callbacks/PostEntityRemoveFilter.ts +22 -0
  561. package/src/classes/callbacks/PostGridEntityCollision.ts +10 -10
  562. package/src/classes/callbacks/PostGridEntityCustomCollision.ts +8 -8
  563. package/src/classes/callbacks/PostGridEntityCustomRemove.ts +2 -2
  564. package/src/classes/callbacks/PostGridEntityRemove.ts +3 -3
  565. package/src/classes/callbacks/PostItemDischarge.ts +5 -8
  566. package/src/classes/callbacks/PostKeyboardChanged.ts +2 -2
  567. package/src/classes/callbacks/PostNPCStateChanged.ts +1 -1
  568. package/src/classes/callbacks/PostNewRoomEarly.ts +3 -3
  569. package/src/classes/callbacks/PostPickupSelectionFilter.ts +4 -3
  570. package/src/classes/callbacks/PostPlayerChangeHealth.ts +2 -2
  571. package/src/classes/callbacks/PostPlayerChangeType.ts +1 -1
  572. package/src/classes/callbacks/PostPurchase.ts +9 -9
  573. package/src/classes/callbacks/PostTransformation.ts +1 -3
  574. package/src/classes/callbacks/PostTrinketBreak.ts +1 -3
  575. package/src/classes/callbacks/PostUsePillFilter.ts +2 -2
  576. package/src/classes/callbacks/PreBerserkDeath.ts +4 -4
  577. package/src/classes/callbacks/PreEntitySpawnFilter.ts +3 -3
  578. package/src/classes/callbacks/PreRoomEntitySpawnFilter.ts +5 -5
  579. package/src/classes/features/callbackLogic/CustomGridEntities.ts +1 -1
  580. package/src/classes/features/callbackLogic/EsauJrDetection.ts +2 -2
  581. package/src/classes/features/callbackLogic/GameReorderedCallbacks.ts +9 -11
  582. package/src/classes/features/callbackLogic/GridEntityUpdateDetection.ts +4 -4
  583. package/src/classes/features/callbackLogic/ItemPickupDetection.ts +4 -4
  584. package/src/classes/features/callbackLogic/PlayerCollectibleDetection.ts +2 -2
  585. package/src/classes/features/callbackLogic/PlayerReorderedCallbacks.ts +4 -4
  586. package/src/classes/features/other/CustomPickups.ts +1 -0
  587. package/src/classes/features/other/CustomStages.ts +2 -2
  588. package/src/classes/features/other/CustomTrapdoors.ts +46 -39
  589. package/src/classes/features/other/DeployJSONRoom.ts +6 -4
  590. package/src/classes/features/other/DisableInputs.ts +3 -3
  591. package/src/classes/features/other/EdenStartingStatsHealth.ts +3 -1
  592. package/src/classes/features/other/ExtraConsoleCommands.ts +14 -10
  593. package/src/classes/features/other/ModdedElementDetection.ts +4 -4
  594. package/src/classes/features/other/ModdedElementSets.ts +5 -5
  595. package/src/classes/features/other/NoSirenSteal.ts +4 -4
  596. package/src/classes/features/other/PickupIndexCreation.ts +7 -8
  597. package/src/classes/features/other/PonyDetection.ts +2 -2
  598. package/src/classes/features/other/PressInput.ts +2 -2
  599. package/src/classes/features/other/PreventChildEntities.ts +4 -4
  600. package/src/classes/features/other/RoomHistory.ts +5 -5
  601. package/src/classes/features/other/RunInNFrames.ts +2 -2
  602. package/src/classes/features/other/SaveDataManager.ts +3 -3
  603. package/src/classes/features/other/StageHistory.ts +2 -2
  604. package/src/classes/features/other/StartAmbush.ts +2 -2
  605. package/src/classes/features/other/TaintedLazarusPlayers.ts +2 -2
  606. package/src/classes/features/other/customStages/backdrop.ts +1 -1
  607. package/src/classes/features/other/customStages/gridEntities.ts +4 -4
  608. package/src/classes/features/other/customStages/streakText.ts +4 -4
  609. package/src/classes/features/other/extraConsoleCommands/commands.ts +15 -15
  610. package/src/classes/features/other/saveDataManager/glowingHourGlass.ts +4 -2
  611. package/src/classes/features/other/saveDataManager/loadFromDisk.ts +5 -0
  612. package/src/core/constants.ts +1 -1
  613. package/src/core/constantsVanilla.ts +4 -4
  614. package/src/enums/ModCallbackCustom.ts +18 -0
  615. package/src/functions/array.ts +33 -29
  616. package/src/functions/arrayLua.ts +1 -1
  617. package/src/functions/bosses.ts +4 -3
  618. package/src/functions/charge.ts +3 -4
  619. package/src/functions/collectibles.ts +2 -2
  620. package/src/functions/decorators.ts +6 -9
  621. package/src/functions/deepCopy.ts +6 -10
  622. package/src/functions/deepCopyTests.ts +4 -4
  623. package/src/functions/doors.ts +8 -3
  624. package/src/functions/easing.ts +2 -2
  625. package/src/functions/emptyRoom.ts +5 -5
  626. package/src/functions/entities.ts +11 -12
  627. package/src/functions/enums.ts +4 -4
  628. package/src/functions/familiars.ts +2 -2
  629. package/src/functions/flag.ts +3 -3
  630. package/src/functions/globals.ts +2 -3
  631. package/src/functions/gridEntities.ts +30 -24
  632. package/src/functions/gridEntitiesSpecific.ts +2 -2
  633. package/src/functions/isaacAPIClass.ts +2 -2
  634. package/src/functions/jsonHelpers.ts +7 -5
  635. package/src/functions/level.ts +3 -3
  636. package/src/functions/levelGrid.ts +9 -12
  637. package/src/functions/logEntities.ts +11 -8
  638. package/src/functions/logMisc.ts +9 -20
  639. package/src/functions/map.ts +4 -4
  640. package/src/functions/math.ts +4 -4
  641. package/src/functions/merge.ts +1 -1
  642. package/src/functions/minimap.ts +2 -6
  643. package/src/functions/newArray.ts +1 -1
  644. package/src/functions/nextStage.ts +14 -10
  645. package/src/functions/npcDataStructures.ts +5 -5
  646. package/src/functions/npcs.ts +13 -10
  647. package/src/functions/pickupVariants.ts +6 -6
  648. package/src/functions/playerCollectibles.ts +3 -5
  649. package/src/functions/playerDataStructures.ts +5 -5
  650. package/src/functions/playerHealth.ts +8 -8
  651. package/src/functions/playerIndex.ts +3 -3
  652. package/src/functions/players.ts +4 -4
  653. package/src/functions/pocketItems.ts +2 -2
  654. package/src/functions/positionVelocity.ts +4 -12
  655. package/src/functions/revive.ts +15 -15
  656. package/src/functions/rng.ts +4 -3
  657. package/src/functions/roomData.ts +1 -3
  658. package/src/functions/roomGrid.ts +2 -2
  659. package/src/functions/rooms.ts +55 -42
  660. package/src/functions/set.ts +8 -8
  661. package/src/functions/sort.ts +4 -4
  662. package/src/functions/sound.ts +2 -7
  663. package/src/functions/spawnCollectible.ts +4 -6
  664. package/src/functions/stage.ts +20 -30
  665. package/src/functions/string.ts +6 -6
  666. package/src/functions/tears.ts +2 -2
  667. package/src/functions/trinketGive.ts +4 -4
  668. package/src/functions/trinkets.ts +1 -3
  669. package/src/functions/tstlClass.ts +2 -2
  670. package/src/functions/types.ts +19 -19
  671. package/src/index.ts +58 -58
  672. package/src/interfaces/SaveData.ts +2 -1
  673. package/src/interfaces/private/AddCallbackParametersCustom.ts +7 -0
  674. package/src/lib/jsonLua.js +34 -34
  675. package/src/objects/LRoomShapeToRectangles.ts +1 -1
  676. package/src/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +1 -1
  677. package/src/shouldFire.ts +55 -57
  678. package/src/types/AddSubtract.ts +10 -2
  679. package/src/types/HasFunction.ts +1 -1
  680. package/src/types/Immutable.ts +1 -1
  681. package/src/types/Increment.ts +2 -2
  682. package/src/types/PickingUpItem.ts +10 -3
  683. package/src/types/TupleWithLengthBetween.ts +2 -2
  684. package/src/types/TupleWithMaxLength.ts +2 -2
@@ -104,7 +104,7 @@ export class SaveDataManager extends Feature {
104
104
 
105
105
  // 18
106
106
  // We want to avoid a needless dependency on the `GameReorderedCallbacks` feature.
107
- // eslint-disable-next-line deprecation/deprecation
107
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
108
108
  [ModCallback.POST_NEW_LEVEL, this.postNewLevel],
109
109
  ];
110
110
 
@@ -393,8 +393,8 @@ export class SaveDataManager extends Feature {
393
393
  private storeClassConstructorsFromObject(luaMap: LuaMap<AnyNotNil, unknown>) {
394
394
  const tstlClassName = getTSTLClassName(luaMap);
395
395
  if (
396
- tstlClassName !== undefined &&
397
- !NON_USER_DEFINED_CLASS_NAMES.has(tstlClassName)
396
+ tstlClassName !== undefined
397
+ && !NON_USER_DEFINED_CLASS_NAMES.has(tstlClassName)
398
398
  ) {
399
399
  this.classConstructors.set(tstlClassName, luaMap as unknown as AnyClass);
400
400
  }
@@ -323,8 +323,8 @@ export class StageHistory extends Feature {
323
323
 
324
324
  return v.run.stageHistory.some(
325
325
  (stageHistoryEntry) =>
326
- stageHistoryEntry.stage === stage &&
327
- stageHistoryEntry.stageType === stageType,
326
+ stageHistoryEntry.stage === stage
327
+ && stageHistoryEntry.stageType === stageType,
328
328
  );
329
329
  }
330
330
  }
@@ -60,8 +60,8 @@ export class StartAmbush extends Feature {
60
60
  const coins = getCoins();
61
61
  const coinsFromSack = coins.filter(
62
62
  (pickup) =>
63
- pickup.SpawnerEntity !== undefined &&
64
- GetPtrHash(pickup.SpawnerEntity) === sackPtrHash,
63
+ pickup.SpawnerEntity !== undefined
64
+ && GetPtrHash(pickup.SpawnerEntity) === sackPtrHash,
65
65
  );
66
66
  removeEntities(coinsFromSack);
67
67
  });
@@ -70,8 +70,8 @@ export class TaintedLazarusPlayers extends Feature {
70
70
  */
71
71
  private checkDequeue() {
72
72
  if (
73
- v.run.queuedTaintedLazarus.length === 0 ||
74
- v.run.queuedDeadTaintedLazarus.length === 0
73
+ v.run.queuedTaintedLazarus.length === 0
74
+ || v.run.queuedDeadTaintedLazarus.length === 0
75
75
  ) {
76
76
  return;
77
77
  }
@@ -57,7 +57,7 @@ const ROOM_SHAPE_WALL_ANM2_LAYERS = {
57
57
  } as const satisfies Record<RoomShape, int>;
58
58
 
59
59
  // We don't use `as const` since we need the object to be indexable by all `RoomShape`.
60
- // eslint-disable-next-line isaacscript/require-capital-const-assertions
60
+ // eslint-disable-next-line complete/require-capital-const-assertions
61
61
  const ROOM_SHAPE_WALL_EXTRA_ANM2_LAYERS: Readonly<
62
62
  Partial<Record<RoomShape, int>>
63
63
  > = {
@@ -14,8 +14,8 @@ export function setCustomDecorationGraphics(
14
14
  // If the end-user did not specify custom decoration graphics, default to Basement graphics. (We
15
15
  // don't have to adjust anything for this case.)
16
16
  if (
17
- customStage.decorationsPNGPath === undefined &&
18
- customStage.decorationsANM2Path === undefined
17
+ customStage.decorationsPNGPath === undefined
18
+ && customStage.decorationsANM2Path === undefined
19
19
  ) {
20
20
  return;
21
21
  }
@@ -56,8 +56,8 @@ export function setCustomRockGraphics(
56
56
  // If the end-user did not specify custom rock graphics, default to Basement graphics. (We don't
57
57
  // have to adjust anything for this case.)
58
58
  if (
59
- customStage.rocksPNGPath === undefined &&
60
- customStage.rocksANM2Path === undefined
59
+ customStage.rocksPNGPath === undefined
60
+ && customStage.rocksANM2Path === undefined
61
61
  ) {
62
62
  return;
63
63
  }
@@ -100,8 +100,8 @@ export function streakTextPostRender(): void {
100
100
 
101
101
  function checkEndTopStreakText() {
102
102
  if (
103
- v.run.topStreakTextStartedRenderFrame === null ||
104
- v.run.topStreakText.animation !== UIStreakAnimation.TEXT_STAY
103
+ v.run.topStreakTextStartedRenderFrame === null
104
+ || v.run.topStreakText.animation !== UIStreakAnimation.TEXT_STAY
105
105
  ) {
106
106
  return;
107
107
  }
@@ -229,8 +229,8 @@ function renderStreakText(
229
229
  }
230
230
 
231
231
  if (
232
- streakText.animation === UIStreakAnimation.TEXT &&
233
- streakText.frame === TEXT_STAY_FRAME
232
+ streakText.animation === UIStreakAnimation.TEXT
233
+ && streakText.frame === TEXT_STAY_FRAME
234
234
  ) {
235
235
  streakText.animation = UIStreakAnimation.TEXT_STAY;
236
236
  streakText.frame = 0;
@@ -2,22 +2,22 @@
2
2
 
3
3
  /*
4
4
  eslint "sort-exports/sort-exports": [
5
- "error",
5
+ "warn",
6
6
  {
7
7
  sortDir: "asc",
8
8
  },
9
9
  ],
10
10
  */
11
11
 
12
- /* eslint "jsdoc/require-jsdoc": "error" */
12
+ /* eslint "jsdoc/require-jsdoc": "warn" */
13
13
 
14
14
  /**
15
15
  * __DOCS_LINE_THAT_WILL_BE_AUTOMATICALLY_REMOVED__
16
16
  *
17
17
  * This is a list of custom console commands that are included with the standard library. By
18
18
  * default, they will not be enabled. You can enable them by upgrading your mod with
19
- * `ISCFeature.EXTRA_CONSOLE_COMMANDS`. (Also see the [Extra Console Commands](ExtraConsoleCommands)
20
- * feature documentation.)
19
+ * `ISCFeature.EXTRA_CONSOLE_COMMANDS`. (Also see the [Extra Console
20
+ * Commands](/isaacscript-common/features/ExtraConsoleCommands) feature documentation.)
21
21
  *
22
22
  * As a quality of life feature, you do not have to match the casing of the command. For example,
23
23
  * you can type the "addCharges" command as "addcharges", and it will still work the same.
@@ -414,7 +414,7 @@ export function cards(): void {
414
414
 
415
415
  const worldPosition = gridCoordinatesToWorldPosition(x, y);
416
416
  spawnCard(cardType, worldPosition);
417
- cardType++; // eslint-disable-line isaacscript/strict-enums
417
+ cardType++; // eslint-disable-line complete/strict-enums
418
418
  }
419
419
  }
420
420
  }
@@ -1115,7 +1115,7 @@ export function pills(): void {
1115
1115
 
1116
1116
  const worldPosition = gridCoordinatesToWorldPosition(x, y);
1117
1117
  spawnPill(pillColor, worldPosition);
1118
- pillColor++; // eslint-disable-line isaacscript/strict-enums
1118
+ pillColor++; // eslint-disable-line complete/strict-enums
1119
1119
  }
1120
1120
 
1121
1121
  y = 2;
@@ -1127,7 +1127,7 @@ export function pills(): void {
1127
1127
 
1128
1128
  const worldPosition = gridCoordinatesToWorldPosition(x, y);
1129
1129
  spawnPill(pillColor, worldPosition);
1130
- pillColor++; // eslint-disable-line isaacscript/strict-enums
1130
+ pillColor++; // eslint-disable-line complete/strict-enums
1131
1131
  }
1132
1132
 
1133
1133
  y = 3;
@@ -1156,8 +1156,8 @@ export function pocket(params: string): void {
1156
1156
 
1157
1157
  const collectibleType = parseIntSafe(params);
1158
1158
  if (
1159
- collectibleType === undefined ||
1160
- !isValidCollectibleType(collectibleType)
1159
+ collectibleType === undefined
1160
+ || !isValidCollectibleType(collectibleType)
1161
1161
  ) {
1162
1162
  print(`Invalid collectible type: ${collectibleType}`);
1163
1163
  return;
@@ -1259,10 +1259,10 @@ export function s(params: string): void {
1259
1259
  let stageString: string;
1260
1260
  let stageTypeLetter: string;
1261
1261
  if (
1262
- finalCharacter === "a" ||
1263
- finalCharacter === "b" ||
1264
- finalCharacter === "c" ||
1265
- finalCharacter === "d"
1262
+ finalCharacter === "a"
1263
+ || finalCharacter === "b"
1264
+ || finalCharacter === "c"
1265
+ || finalCharacter === "d"
1266
1266
  ) {
1267
1267
  // e.g. "s 11a" for going to The Chest
1268
1268
  stageString = params.slice(0, -1);
@@ -1553,8 +1553,8 @@ export function spawnCollectibleAt(params: string): void {
1553
1553
 
1554
1554
  const collectibleType = parseIntSafe(collectibleTypeString);
1555
1555
  if (
1556
- collectibleType === undefined ||
1557
- !isValidCollectibleType(collectibleType)
1556
+ collectibleType === undefined
1557
+ || !isValidCollectibleType(collectibleType)
1558
1558
  ) {
1559
1559
  print(`Invalid collectible type: ${args[0]}`);
1560
1560
  return;
@@ -140,8 +140,10 @@ export function restoreGlowingHourGlassBackup(
140
140
 
141
141
  function getKeysToBackup(saveData: SaveData) {
142
142
  const shouldBackupPersistentObject =
143
- saveData.persistent !== undefined &&
144
- (saveData.persistent as LuaTable).has(REWIND_WITH_GLOWING_HOUR_GLASS_KEY);
143
+ saveData.persistent !== undefined
144
+ && (saveData.persistent as LuaTable).has(
145
+ REWIND_WITH_GLOWING_HOUR_GLASS_KEY,
146
+ );
145
147
 
146
148
  return shouldBackupPersistentObject
147
149
  ? ([...GLOWING_HOUR_GLASS_BACKUP_KEYS, SaveDataKey.PERSISTENT] as const)
@@ -23,6 +23,11 @@ export function loadFromDisk(
23
23
  const jsonString = readSaveDatFile(mod);
24
24
  const newSaveData = jsonDecode(jsonString);
25
25
 
26
+ if (newSaveData === undefined) {
27
+ // Reading the save data failed.
28
+ return;
29
+ }
30
+
26
31
  if (SAVE_DATA_MANAGER_DEBUG) {
27
32
  log('Converted data from the "save#.dat" to a Lua table.');
28
33
  }
@@ -295,7 +295,7 @@ export const ONE_BY_ONE_ROOM_GRID_SIZE = 135;
295
295
  * An array representing every valid collectible type quality. Specifically, this is: `[0, 1, 2, 3,
296
296
  * 4]`
297
297
  */
298
- // eslint-disable-next-line isaacscript/require-capital-const-assertions
298
+ // eslint-disable-next-line complete/require-capital-const-assertions
299
299
  export const QUALITIES: readonly Quality[] = [0, 1, 2, 3, 4];
300
300
  export const MAX_QUALITY: Quality = 4;
301
301
 
@@ -53,7 +53,7 @@ export const VANILLA_COLLECTIBLE_TYPE_RANGE: readonly int[] = iRange(
53
53
  *
54
54
  * If you need to do O(1) lookups, use the `VANILLA_COLLECTIBLE_TYPES_SET` constant instead.
55
55
  */
56
- // eslint-disable-next-line isaacscript/strict-enums
56
+ // eslint-disable-next-line complete/strict-enums
57
57
  export const VANILLA_COLLECTIBLE_TYPES: readonly CollectibleType[] =
58
58
  VANILLA_COLLECTIBLE_TYPE_RANGE.filter((potentialCollectibleType) => {
59
59
  const collectibleType = asCollectibleType(potentialCollectibleType);
@@ -93,7 +93,7 @@ export const VANILLA_TRINKET_TYPE_RANGE: readonly int[] = iRange(
93
93
  *
94
94
  * If you need to do O(1) lookups, use the `VANILLA_TRINKET_TYPES_SET` constant instead.
95
95
  */
96
- // eslint-disable-next-line isaacscript/strict-enums
96
+ // eslint-disable-next-line complete/strict-enums
97
97
  export const VANILLA_TRINKET_TYPES: readonly TrinketType[] =
98
98
  VANILLA_TRINKET_TYPE_RANGE.filter((potentialTrinketType) => {
99
99
  const trinketType = asTrinketType(potentialTrinketType);
@@ -130,7 +130,7 @@ export const VANILLA_CARD_TYPE_RANGE: readonly int[] = iRange(
130
130
  *
131
131
  * If you need to do O(1) lookups, use the `VANILLA_CARD_TYPES_SET` constant instead.
132
132
  */
133
- // eslint-disable-next-line isaacscript/strict-enums
133
+ // eslint-disable-next-line complete/strict-enums
134
134
  export const VANILLA_CARD_TYPES: readonly CardType[] =
135
135
  VANILLA_CARD_TYPE_RANGE.filter((potentialCardType) => {
136
136
  const cardType = asCardType(potentialCardType);
@@ -167,7 +167,7 @@ export const VANILLA_PILL_EFFECT_RANGE: readonly int[] = iRange(
167
167
  *
168
168
  * If you need to do O(1) lookups, use the `VANILLA_PILL_EFFECT_SET` constant instead.
169
169
  */
170
- // eslint-disable-next-line isaacscript/strict-enums
170
+ // eslint-disable-next-line complete/strict-enums
171
171
  export const VANILLA_PILL_EFFECTS: readonly PillEffect[] =
172
172
  VANILLA_PILL_EFFECT_RANGE.filter((potentialPillEffect) => {
173
173
  const pillEffect = asPillEffect(potentialPillEffect);
@@ -415,6 +415,24 @@ export enum ModCallbackCustom {
415
415
  */
416
416
  POST_ENTITY_KILL_FILTER,
417
417
 
418
+ /**
419
+ * The exact same thing as the vanilla `POST_ENTITY_REMOVE` callback, except this callback allows
420
+ * you to specify extra arguments for additional filtration.
421
+ *
422
+ * When registering the callback with the `ModUpgraded.AddCallbackCustom` method:
423
+ * - You can provide an optional third argument that will make the callback only fire if it
424
+ * matches the `EntityType` provided.
425
+ * - You can provide an optional fourth argument that will make the callback only fire if it
426
+ * matches the variant provided.
427
+ * - You can provide an optional fifth argument that will make the callback only fire if it
428
+ * matches the sub-type provided.
429
+ *
430
+ * ```ts
431
+ * function postEntityRemoveFilter(entity: Entity): void {}
432
+ * ```
433
+ */
434
+ POST_ENTITY_REMOVE_FILTER,
435
+
418
436
  /**
419
437
  * Fires one `POST_UPDATE` frame after the player has used the Esau Jr. item. (The player is not
420
438
  * updated to the new character until a game frame has passed.)
@@ -35,7 +35,7 @@ export function arrayEquals<T>(
35
35
  * matching element. If you want to remove all of the elements, use the `arrayRemoveAll` function
36
36
  * instead.
37
37
  */
38
- // eslint-disable-next-line isaacscript/no-mutable-return
38
+ // eslint-disable-next-line complete/no-mutable-return
39
39
  export function arrayRemove<T>(
40
40
  originalArray: readonly T[],
41
41
  ...elementsToRemove: readonly T[]
@@ -63,7 +63,7 @@ export function arrayRemove<T>(
63
63
  * element. If you want to only remove the first matching element, use the `arrayRemove` function
64
64
  * instead.
65
65
  */
66
- // eslint-disable-next-line isaacscript/no-mutable-return
66
+ // eslint-disable-next-line complete/no-mutable-return
67
67
  export function arrayRemoveAll<T>(
68
68
  originalArray: readonly T[],
69
69
  ...elementsToRemove: readonly T[]
@@ -86,11 +86,12 @@ export function arrayRemoveAll<T>(
86
86
  * @returns True if one or more elements were removed, false otherwise.
87
87
  */
88
88
  export function arrayRemoveAllInPlace<T>(
89
- // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
89
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
90
90
  array: T[],
91
91
  ...elementsToRemove: readonly T[]
92
92
  ): boolean {
93
93
  let removedOneOrMoreElements = false;
94
+
94
95
  for (const element of elementsToRemove) {
95
96
  let index: number;
96
97
  do {
@@ -117,9 +118,9 @@ export function arrayRemoveAllInPlace<T>(
117
118
  *
118
119
  * @returns The removed elements. This will be an empty array if no elements were removed.
119
120
  */
120
- // eslint-disable-next-line isaacscript/no-mutable-return
121
+ // eslint-disable-next-line complete/no-mutable-return
121
122
  export function arrayRemoveInPlace<T>(
122
- // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
123
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
123
124
  array: T[],
124
125
  ...elementsToRemove: readonly T[]
125
126
  ): T[] {
@@ -127,7 +128,7 @@ export function arrayRemoveInPlace<T>(
127
128
 
128
129
  for (const element of elementsToRemove) {
129
130
  const index = array.indexOf(element);
130
- if (index > -1) {
131
+ if (index !== -1) {
131
132
  const removedElement = array.splice(index, 1);
132
133
  removedElements.push(...removedElement);
133
134
  }
@@ -143,7 +144,7 @@ export function arrayRemoveInPlace<T>(
143
144
  *
144
145
  * This function is variadic, meaning that you can specify N arguments to remove N elements.
145
146
  */
146
- // eslint-disable-next-line isaacscript/no-mutable-return
147
+ // eslint-disable-next-line complete/no-mutable-return
147
148
  export function arrayRemoveIndex<T>(
148
149
  originalArray: readonly T[],
149
150
  ...indexesToRemove: readonly int[]
@@ -168,9 +169,9 @@ export function arrayRemoveIndex<T>(
168
169
  *
169
170
  * @returns The removed elements. This will be an empty array if no elements were removed.
170
171
  */
171
- // eslint-disable-next-line isaacscript/no-mutable-return
172
+ // eslint-disable-next-line complete/no-mutable-return
172
173
  export function arrayRemoveIndexInPlace<T>(
173
- // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
174
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
174
175
  array: T[],
175
176
  ...indexesToRemove: readonly int[]
176
177
  ): T[] {
@@ -212,7 +213,7 @@ export function arrayToString(array: readonly unknown[]): string {
212
213
  * This function is variadic, meaning that you can specify N arguments to combine N arrays. Note
213
214
  * that this will only perform a shallow copy of the array elements.
214
215
  */
215
- // eslint-disable-next-line isaacscript/no-mutable-return
216
+ // eslint-disable-next-line complete/no-mutable-return
216
217
  export function combineArrays<T>(...arrays: ReadonlyArray<readonly T[]>): T[] {
217
218
  const elements: T[] = [];
218
219
  for (const array of arrays) {
@@ -231,7 +232,7 @@ export function combineArrays<T>(...arrays: ReadonlyArray<readonly T[]>): T[] {
231
232
  * @param numElements Optional. If specified, will only copy the first N elements. By default, the
232
233
  * entire array will be copied.
233
234
  */
234
- // eslint-disable-next-line isaacscript/no-mutable-return
235
+ // eslint-disable-next-line complete/no-mutable-return
235
236
  export function copyArray<T>(oldArray: readonly T[], numElements?: int): T[] {
236
237
  // Using the spread operator was benchmarked to be faster than manually creating an array using
237
238
  // the below algorithm.
@@ -249,9 +250,9 @@ export function copyArray<T>(oldArray: readonly T[], numElements?: int): T[] {
249
250
  }
250
251
 
251
252
  /** Helper function to remove all of the elements in an array in-place. */
252
- // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
253
- export function emptyArray<T>(array: T[]): void {
254
- array.splice(0, array.length);
253
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
254
+ export function emptyArray(array: unknown[]): void {
255
+ array.splice(0);
255
256
  }
256
257
 
257
258
  /**
@@ -265,7 +266,7 @@ export function emptyArray<T>(array: T[]): void {
265
266
  * This is named `filterMap` after the Rust function:
266
267
  * https://doc.rust-lang.org/std/iter/struct.FilterMap.html
267
268
  */
268
- // eslint-disable-next-line isaacscript/no-mutable-return
269
+ // eslint-disable-next-line complete/no-mutable-return
269
270
  export function filterMap<OldT, NewT>(
270
271
  array: readonly OldT[],
271
272
  func: (element: OldT) => NewT | undefined,
@@ -340,6 +341,7 @@ function addCombinations<T>(
340
341
  n: number,
341
342
  src: readonly T[],
342
343
  got: readonly T[],
344
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
343
345
  all: Array<readonly T[]>,
344
346
  ) {
345
347
  if (n === 0) {
@@ -385,7 +387,7 @@ export function getArrayDuplicateElements<T extends number | string>(
385
387
  * due to implementation details of TypeScriptToLua, this results in an array of 1 through N
386
388
  * (instead of an array of 0 through N -1).
387
389
  */
388
- export function getArrayIndexes<T>(array: readonly T[]): readonly int[] {
390
+ export function getArrayIndexes(array: readonly unknown[]): readonly int[] {
389
391
  return eRange(array.length);
390
392
  }
391
393
 
@@ -482,7 +484,7 @@ export function getRandomArrayElement<T>(
482
484
  * @param exceptions Optional. An array of elements to skip over if selected.
483
485
  */
484
486
  export function getRandomArrayElementAndRemove<T>(
485
- // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
487
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
486
488
  array: T[],
487
489
  seedOrRNG: Seed | RNG | undefined,
488
490
  exceptions: readonly T[] = [],
@@ -509,8 +511,8 @@ export function getRandomArrayElementAndRemove<T>(
509
511
  * @param exceptions Optional. An array of indexes that will be skipped over when getting the random
510
512
  * index. Default is an empty array.
511
513
  */
512
- export function getRandomArrayIndex<T>(
513
- array: readonly T[],
514
+ export function getRandomArrayIndex(
515
+ array: readonly unknown[],
514
516
  seedOrRNG: Seed | RNG | undefined,
515
517
  exceptions: readonly int[] = [],
516
518
  ): int {
@@ -596,9 +598,7 @@ export function isArray(
596
598
  export function isArrayContiguous(array: readonly int[]): boolean {
597
599
  let lastValue: int | undefined;
598
600
  for (const element of array) {
599
- if (lastValue === undefined) {
600
- lastValue = element - 1;
601
- }
601
+ lastValue ??= element - 1;
602
602
 
603
603
  if (element !== lastValue - 1) {
604
604
  return false;
@@ -627,7 +627,7 @@ export function isArrayInArray<T>(
627
627
  }
628
628
 
629
629
  /** Helper function to set every element in an array to a specific value. */
630
- // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
630
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
631
631
  export function setAllArrayElements<T>(array: T[], value: T): void {
632
632
  for (let i = 0; i < array.length; i++) {
633
633
  array[i] = value;
@@ -647,7 +647,7 @@ export function setAllArrayElements<T>(array: T[], value: T): void {
647
647
  * `RNG.Next` method will be called. If `undefined` is provided, it will default to
648
648
  * a random seed.
649
649
  */
650
- // eslint-disable-next-line isaacscript/no-mutable-return
650
+ // eslint-disable-next-line complete/no-mutable-return
651
651
  export function shuffleArray<T>(
652
652
  originalArray: readonly T[],
653
653
  seedOrRNG: Seed | RNG | undefined,
@@ -671,9 +671,9 @@ export function shuffleArray<T>(
671
671
  * `RNG.Next` method will be called. If `undefined` is provided, it will default to
672
672
  * a random seed.
673
673
  */
674
- export function shuffleArrayInPlace<T>(
675
- // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
676
- array: T[],
674
+ export function shuffleArrayInPlace(
675
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
676
+ array: unknown[],
677
677
  seedOrRNG: Seed | RNG | undefined,
678
678
  ): void {
679
679
  let currentIndex = array.length;
@@ -696,8 +696,12 @@ export function sumArray(array: readonly number[]): number {
696
696
  /**
697
697
  * Helper function to swap two different array elements. (The elements will be swapped in-place.)
698
698
  */
699
- // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
700
- export function swapArrayElements<T>(array: T[], i: number, j: number): void {
699
+ export function swapArrayElements(
700
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
701
+ array: unknown[],
702
+ i: number,
703
+ j: number,
704
+ ): void {
701
705
  const value1 = array[i]!; // eslint-disable-line @typescript-eslint/no-non-null-assertion
702
706
  const value2 = array[j]!; // eslint-disable-line @typescript-eslint/no-non-null-assertion
703
707
 
@@ -66,7 +66,7 @@ export function forEach<T>(
66
66
  *
67
67
  * Internally, this just calls `Array.join`.
68
68
  */
69
- export function join<T>(array: readonly T[], separator: string): string {
69
+ export function join(array: readonly unknown[], separator: string): string {
70
70
  return array.join(separator);
71
71
  }
72
72
 
@@ -109,7 +109,7 @@ export function getBossID(): BossID | undefined {
109
109
 
110
110
  const room = game.GetRoom();
111
111
 
112
- // eslint-disable-next-line deprecation/deprecation
112
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
113
113
  const bossID = room.GetBossID();
114
114
  if (bossID === 0) {
115
115
  return undefined;
@@ -117,8 +117,8 @@ export function getBossID(): BossID | undefined {
117
117
 
118
118
  // The Ultra Greed room holds both Ultra Greed and Ultra Greedier.
119
119
  if (
120
- bossID === BossID.ULTRA_GREED &&
121
- doesEntityExist(EntityType.ULTRA_GREED, UltraGreedVariant.ULTRA_GREEDIER)
120
+ bossID === BossID.ULTRA_GREED
121
+ && doesEntityExist(EntityType.ULTRA_GREED, UltraGreedVariant.ULTRA_GREEDIER)
122
122
  ) {
123
123
  return BossID.ULTRA_GREEDIER;
124
124
  }
@@ -235,6 +235,7 @@ function getNumBossSegments(
235
235
 
236
236
  // 69
237
237
  case EntityType.LOKI: {
238
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
238
239
  return variant === LokiVariant.LOKII ? 2 : 1;
239
240
  }
240
241
 
@@ -45,8 +45,7 @@ export function addCharge(
45
45
  // add too many charges, it will grant orange "battery" charges, even if the player does not have
46
46
  // The Battery.)
47
47
  const chargesAwayFromMax = getChargesAwayFromMax(player, activeSlot);
48
- const chargesToAdd =
49
- numCharges > chargesAwayFromMax ? chargesAwayFromMax : numCharges;
48
+ const chargesToAdd = Math.min(numCharges, chargesAwayFromMax);
50
49
 
51
50
  // The AAA Battery trinket might grant an additional charge.
52
51
  const modifiedChargesToAdd = getChargesToAddWithAAAModifier(
@@ -319,7 +318,7 @@ function shouldPlayFullRechargeSound(
319
318
  // If we do have The Battery, play the full recharge sound if we are exactly double charged or
320
319
  // exactly single charged.
321
320
  return (
322
- batteryCharge === maxCharges ||
323
- (activeCharge === maxCharges && batteryCharge === 0)
321
+ batteryCharge === maxCharges
322
+ || (activeCharge === maxCharges && batteryCharge === 0)
324
323
  );
325
324
  }
@@ -509,8 +509,8 @@ export function isFamiliarCollectible(
509
509
  */
510
510
  export function isGlitchedCollectible(collectible: EntityPickup): boolean {
511
511
  return (
512
- collectible.Variant === PickupVariant.COLLECTIBLE &&
513
- collectible.SubType > GLITCHED_ITEM_THRESHOLD
512
+ collectible.Variant === PickupVariant.COLLECTIBLE
513
+ && collectible.SubType > GLITCHED_ITEM_THRESHOLD
514
514
  );
515
515
  }
516
516
 
@@ -85,13 +85,13 @@ export function PriorityCallback<T extends ModCallback>(
85
85
  priority: CallbackPriority | int,
86
86
  ...optionalArgs: AllButFirst<AddCallbackParameters[T]>
87
87
  ) {
88
- return <Class extends ModFeature, Fn extends AddCallbackParameters[T][0]>(
89
- target: Class,
88
+ return <Fn extends AddCallbackParameters[T][0]>(
89
+ target: ModFeature,
90
90
  propertyKey: string,
91
91
  _descriptor: TypedPropertyDescriptor<Fn>,
92
92
  ): void => {
93
93
  // First, prepare the arguments for the `Mod.AddPriorityCallback` method.
94
- const methodName = propertyKey as keyof Class;
94
+ const methodName = propertyKey as keyof ModFeature;
95
95
  const method = target[methodName] as AddCallbackParameters[T][0];
96
96
  const callbackTuple = [modCallback, priority, method, optionalArgs];
97
97
 
@@ -133,16 +133,13 @@ export function PriorityCallbackCustom<T extends ModCallbackCustom>(
133
133
  priority: CallbackPriority | int,
134
134
  ...optionalArgs: AllButFirst<AddCallbackParametersCustom[T]>
135
135
  ) {
136
- return <
137
- Class extends ModFeature,
138
- Fn extends AddCallbackParametersCustom[T][0],
139
- >(
140
- target: Class,
136
+ return <Fn extends AddCallbackParametersCustom[T][0]>(
137
+ target: ModFeature,
141
138
  propertyKey: string,
142
139
  _descriptor: TypedPropertyDescriptor<Fn>,
143
140
  ): void => {
144
141
  // First, prepare the arguments for the `Mod.AddCallbackCustom` method.
145
- const methodName = propertyKey as keyof Class;
142
+ const methodName = propertyKey as keyof ModFeature;
146
143
  const method = target[methodName] as AddCallbackParametersCustom[T][0];
147
144
  const callbackTuple = [modCallbackCustom, priority, method, optionalArgs];
148
145
 
@@ -212,8 +212,8 @@ function deepCopyTable(
212
212
 
213
213
  // Handle the special case of serialized Isaac API classes.
214
214
  if (
215
- isSerializedIsaacAPIClass(luaMap) &&
216
- serializationType === SerializationType.DESERIALIZE
215
+ isSerializedIsaacAPIClass(luaMap)
216
+ && serializationType === SerializationType.DESERIALIZE
217
217
  ) {
218
218
  return deserializeIsaacAPIClass(luaMap);
219
219
  }
@@ -258,8 +258,8 @@ function deepCopyDefaultMap(
258
258
  // function. If this is the case, then we cannot serialize it (because there is no way to
259
259
  // serialize a function).
260
260
  if (
261
- serializationType === SerializationType.SERIALIZE &&
262
- !isPrimitive(constructorArg)
261
+ serializationType === SerializationType.SERIALIZE
262
+ && !isPrimitive(constructorArg)
263
263
  ) {
264
264
  if (insideMap) {
265
265
  // The case of a DefaultMap within another map is complicated. Unlike a DefaultMap attached to
@@ -320,8 +320,6 @@ function deepCopyDefaultMap(
320
320
  }
321
321
  }
322
322
 
323
- insideMap = false;
324
-
325
323
  return newDefaultMap;
326
324
  }
327
325
 
@@ -421,8 +419,6 @@ function deepCopyMap(
421
419
  }
422
420
  }
423
421
 
424
- insideMap = false;
425
-
426
422
  return newMap;
427
423
  }
428
424
 
@@ -648,8 +644,8 @@ function getCopiedEntries(
648
644
  // During serialization, we brand some Lua tables with a special identifier to signify that it has
649
645
  // keys that should be deserialized to numbers.
650
646
  const convertStringKeysToNumbers =
651
- serializationType === SerializationType.DESERIALIZE &&
652
- entries.some(
647
+ serializationType === SerializationType.DESERIALIZE
648
+ && entries.some(
653
649
  ([key]) => key === asString(SerializationBrand.OBJECT_WITH_NUMBER_KEYS),
654
650
  );
655
651