isaacscript-common 87.4.0 → 87.5.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 (596) hide show
  1. package/README.md +1 -1
  2. package/dist/callbackClasses.d.ts +6 -6
  3. package/dist/callbackClasses.d.ts.map +1 -1
  4. package/dist/callbackClasses.js +14 -14
  5. package/dist/callbackClasses.lua +159 -300
  6. package/dist/callbacks.js +18 -9
  7. package/dist/classes/DefaultMap.d.ts +5 -1
  8. package/dist/classes/DefaultMap.d.ts.map +1 -1
  9. package/dist/classes/ModFeature.js +3 -3
  10. package/dist/classes/ModUpgraded.d.ts.map +1 -1
  11. package/dist/classes/ModUpgraded.js +2 -4
  12. package/dist/classes/callbacks/InputActionFilter.d.ts +2 -2
  13. package/dist/classes/callbacks/InputActionFilter.d.ts.map +1 -1
  14. package/dist/classes/callbacks/InputActionPlayer.d.ts +2 -2
  15. package/dist/classes/callbacks/InputActionPlayer.d.ts.map +1 -1
  16. package/dist/classes/callbacks/PostCollectibleEmpty.d.ts +2 -2
  17. package/dist/classes/callbacks/PostCollectibleEmpty.d.ts.map +1 -1
  18. package/dist/classes/callbacks/PostCollectibleEmpty.js +1 -3
  19. package/dist/classes/callbacks/PostCustomRevive.d.ts +2 -4
  20. package/dist/classes/callbacks/PostCustomRevive.d.ts.map +1 -1
  21. package/dist/classes/callbacks/PostDiceRoomActivated.d.ts +2 -3
  22. package/dist/classes/callbacks/PostDiceRoomActivated.d.ts.map +1 -1
  23. package/dist/classes/callbacks/PostGridEntityCollision.d.ts +2 -4
  24. package/dist/classes/callbacks/PostGridEntityCollision.d.ts.map +1 -1
  25. package/dist/classes/callbacks/PostGridEntityCustomCollision.d.ts +2 -4
  26. package/dist/classes/callbacks/PostGridEntityCustomCollision.d.ts.map +1 -1
  27. package/dist/classes/callbacks/PostGridEntityCustomRemove.d.ts +2 -3
  28. package/dist/classes/callbacks/PostGridEntityCustomRemove.d.ts.map +1 -1
  29. package/dist/classes/callbacks/PostGridEntityRemove.d.ts +2 -2
  30. package/dist/classes/callbacks/PostGridEntityRemove.d.ts.map +1 -1
  31. package/dist/classes/callbacks/PostItemDischarge.d.ts +2 -2
  32. package/dist/classes/callbacks/PostItemDischarge.d.ts.map +1 -1
  33. package/dist/classes/callbacks/PostItemDischarge.js +3 -6
  34. package/dist/classes/callbacks/PostKeyboardChanged.d.ts +2 -1
  35. package/dist/classes/callbacks/PostKeyboardChanged.d.ts.map +1 -1
  36. package/dist/classes/callbacks/PostNewRoomEarly.js +1 -1
  37. package/dist/classes/callbacks/PostPickupSelectionFilter.d.ts +2 -2
  38. package/dist/classes/callbacks/PostPickupSelectionFilter.d.ts.map +1 -1
  39. package/dist/classes/callbacks/PostPlayerChangeType.js +1 -1
  40. package/dist/classes/callbacks/PostPurchase.d.ts +2 -4
  41. package/dist/classes/callbacks/PostPurchase.d.ts.map +1 -1
  42. package/dist/classes/callbacks/PostRoomClearChanged.d.ts.map +1 -1
  43. package/dist/classes/callbacks/PostTransformation.d.ts +2 -2
  44. package/dist/classes/callbacks/PostTransformation.d.ts.map +1 -1
  45. package/dist/classes/callbacks/PostTransformation.js +1 -3
  46. package/dist/classes/callbacks/PostTrinketBreak.d.ts.map +1 -1
  47. package/dist/classes/callbacks/PostTrinketBreak.js +1 -3
  48. package/dist/classes/callbacks/PreEntitySpawnFilter.d.ts +2 -2
  49. package/dist/classes/callbacks/PreEntitySpawnFilter.d.ts.map +1 -1
  50. package/dist/classes/callbacks/PreNewLevel.d.ts.map +1 -1
  51. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.d.ts +2 -2
  52. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.d.ts.map +1 -1
  53. package/dist/classes/features/callbackLogic/CustomGridEntities.d.ts +1 -1
  54. package/dist/classes/features/callbackLogic/CustomGridEntities.d.ts.map +1 -1
  55. package/dist/classes/features/callbackLogic/CustomRevive.d.ts.map +1 -1
  56. package/dist/classes/features/callbackLogic/EsauJrDetection.d.ts.map +1 -1
  57. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.d.ts.map +1 -1
  58. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +4 -6
  59. package/dist/classes/features/callbackLogic/ItemPickupDetection.d.ts.map +1 -1
  60. package/dist/classes/features/callbackLogic/ItemPickupDetection.js +6 -2
  61. package/dist/classes/features/callbackLogic/ItemPickupDetection.lua +6 -1
  62. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.d.ts +0 -1
  63. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.d.ts.map +1 -1
  64. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +4 -4
  65. package/dist/classes/features/other/CustomPickups.d.ts.map +1 -1
  66. package/dist/classes/features/other/CustomPickups.js +1 -0
  67. package/dist/classes/features/other/CustomStages.js +19 -9
  68. package/dist/classes/features/other/CustomTrapdoors.d.ts.map +1 -1
  69. package/dist/classes/features/other/CustomTrapdoors.js +23 -17
  70. package/dist/classes/features/other/CustomTrapdoors.lua +14 -7
  71. package/dist/classes/features/other/DebugDisplay.d.ts +0 -18
  72. package/dist/classes/features/other/DebugDisplay.d.ts.map +1 -1
  73. package/dist/classes/features/other/DeployJSONRoom.d.ts +0 -2
  74. package/dist/classes/features/other/DeployJSONRoom.d.ts.map +1 -1
  75. package/dist/classes/features/other/DeployJSONRoom.js +2 -0
  76. package/dist/classes/features/other/EdenStartingStatsHealth.d.ts +1 -1
  77. package/dist/classes/features/other/EdenStartingStatsHealth.d.ts.map +1 -1
  78. package/dist/classes/features/other/ExtraConsoleCommands.d.ts +14 -10
  79. package/dist/classes/features/other/ExtraConsoleCommands.d.ts.map +1 -1
  80. package/dist/classes/features/other/ExtraConsoleCommands.js +31 -17
  81. package/dist/classes/features/other/ExtraConsoleCommands.lua +2 -1
  82. package/dist/classes/features/other/FlyingDetection.d.ts +0 -1
  83. package/dist/classes/features/other/FlyingDetection.d.ts.map +1 -1
  84. package/dist/classes/features/other/ForgottenSwitch.d.ts +0 -1
  85. package/dist/classes/features/other/ForgottenSwitch.d.ts.map +1 -1
  86. package/dist/classes/features/other/ModdedElementDetection.js +4 -4
  87. package/dist/classes/features/other/ModdedElementSets.d.ts +2 -2
  88. package/dist/classes/features/other/ModdedElementSets.d.ts.map +1 -1
  89. package/dist/classes/features/other/ModdedElementSets.js +1 -1
  90. package/dist/classes/features/other/PickupIndexCreation.d.ts +0 -1
  91. package/dist/classes/features/other/PickupIndexCreation.d.ts.map +1 -1
  92. package/dist/classes/features/other/PickupIndexCreation.js +2 -3
  93. package/dist/classes/features/other/PickupIndexCreation.lua +10 -10
  94. package/dist/classes/features/other/PonyDetection.d.ts +0 -1
  95. package/dist/classes/features/other/PonyDetection.d.ts.map +1 -1
  96. package/dist/classes/features/other/PreventChildEntities.d.ts +0 -1
  97. package/dist/classes/features/other/PreventChildEntities.d.ts.map +1 -1
  98. package/dist/classes/features/other/RoomClearFrame.d.ts +0 -1
  99. package/dist/classes/features/other/RoomClearFrame.d.ts.map +1 -1
  100. package/dist/classes/features/other/RoomHistory.d.ts +0 -1
  101. package/dist/classes/features/other/RoomHistory.d.ts.map +1 -1
  102. package/dist/classes/features/other/RunInNFrames.js +2 -2
  103. package/dist/classes/features/other/SaveDataManager.js +1 -1
  104. package/dist/classes/features/other/SpawnRockAltRewards.d.ts +0 -4
  105. package/dist/classes/features/other/SpawnRockAltRewards.d.ts.map +1 -1
  106. package/dist/classes/features/other/TaintedLazarusPlayers.d.ts +0 -1
  107. package/dist/classes/features/other/TaintedLazarusPlayers.d.ts.map +1 -1
  108. package/dist/classes/features/other/customStages/backdrop.js +2 -3
  109. package/dist/classes/features/other/customStages/constants.d.ts.map +1 -1
  110. package/dist/classes/features/other/customStages/gridEntities.d.ts +0 -1
  111. package/dist/classes/features/other/customStages/gridEntities.d.ts.map +1 -1
  112. package/dist/classes/features/other/customStages/gridEntities.js +5 -6
  113. package/dist/classes/features/other/customStages/shadows.js +1 -2
  114. package/dist/classes/features/other/customStages/streakText.js +3 -4
  115. package/dist/classes/features/other/customStages/utils.d.ts +0 -2
  116. package/dist/classes/features/other/customStages/utils.d.ts.map +1 -1
  117. package/dist/classes/features/other/customStages/utils.js +2 -3
  118. package/dist/classes/features/other/customStages/v.d.ts.map +1 -1
  119. package/dist/classes/features/other/customStages/versusScreen.js +2 -3
  120. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.d.ts +0 -1
  121. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.d.ts.map +1 -1
  122. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.d.ts +0 -1
  123. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.d.ts.map +1 -1
  124. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.d.ts +0 -1
  125. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.d.ts.map +1 -1
  126. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.d.ts +0 -1
  127. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.d.ts.map +1 -1
  128. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.d.ts +0 -1
  129. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.d.ts.map +1 -1
  130. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.d.ts +0 -1
  131. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.d.ts.map +1 -1
  132. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.d.ts +0 -1
  133. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.d.ts.map +1 -1
  134. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.d.ts +0 -1
  135. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.d.ts.map +1 -1
  136. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.d.ts +0 -1
  137. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.d.ts.map +1 -1
  138. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.d.ts +0 -1
  139. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.d.ts.map +1 -1
  140. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.d.ts +0 -1
  141. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.d.ts.map +1 -1
  142. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.d.ts +0 -1
  143. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.d.ts.map +1 -1
  144. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.d.ts +0 -1
  145. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.d.ts.map +1 -1
  146. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.d.ts +0 -1
  147. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.d.ts.map +1 -1
  148. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.d.ts +0 -1
  149. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.d.ts.map +1 -1
  150. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.d.ts +0 -1
  151. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.d.ts.map +1 -1
  152. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.d.ts +0 -1
  153. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.d.ts.map +1 -1
  154. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.d.ts +0 -1
  155. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.d.ts.map +1 -1
  156. package/dist/classes/features/other/debugDisplay/utils.d.ts +0 -2
  157. package/dist/classes/features/other/debugDisplay/utils.d.ts.map +1 -1
  158. package/dist/classes/features/other/debugDisplay/utils.js +2 -3
  159. package/dist/classes/features/other/extraConsoleCommands/commands.js +147 -150
  160. package/dist/classes/features/other/extraConsoleCommands/subroutines.js +8 -9
  161. package/dist/classes/features/other/saveDataManager/constants.d.ts.map +1 -1
  162. package/dist/classes/features/other/saveDataManager/glowingHourGlass.d.ts +0 -1
  163. package/dist/classes/features/other/saveDataManager/glowingHourGlass.d.ts.map +1 -1
  164. package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +2 -3
  165. package/dist/classes/features/other/saveDataManager/loadFromDisk.d.ts +0 -2
  166. package/dist/classes/features/other/saveDataManager/loadFromDisk.d.ts.map +1 -1
  167. package/dist/classes/features/other/saveDataManager/loadFromDisk.js +5 -2
  168. package/dist/classes/features/other/saveDataManager/loadFromDisk.lua +3 -0
  169. package/dist/classes/features/other/saveDataManager/restoreDefaults.d.ts +0 -1
  170. package/dist/classes/features/other/saveDataManager/restoreDefaults.d.ts.map +1 -1
  171. package/dist/classes/features/other/saveDataManager/restoreDefaults.js +3 -4
  172. package/dist/classes/features/other/saveDataManager/saveToDisk.d.ts +0 -2
  173. package/dist/classes/features/other/saveDataManager/saveToDisk.d.ts.map +1 -1
  174. package/dist/classes/features/other/saveDataManager/saveToDisk.js +1 -2
  175. package/dist/classes/private/CustomCallback.d.ts.map +1 -1
  176. package/dist/core/cachedClasses.d.ts +0 -5
  177. package/dist/core/cachedClasses.d.ts.map +1 -1
  178. package/dist/core/constants.js +1 -1
  179. package/dist/core/constantsVanilla.js +4 -4
  180. package/dist/core/upgradeMod.d.ts +0 -2
  181. package/dist/core/upgradeMod.d.ts.map +1 -1
  182. package/dist/core/upgradeMod.js +1 -2
  183. package/dist/decorators.js +2 -2
  184. package/dist/enums/ModCallbackCustom.d.ts +5 -4
  185. package/dist/enums/ModCallbackCustom.d.ts.map +1 -1
  186. package/dist/enums/ModCallbackCustom.js +5 -4
  187. package/dist/enums/private/GridEntityTypeCustom.d.ts.map +1 -1
  188. package/dist/features.js +1 -2
  189. package/dist/functions/ambush.js +1 -2
  190. package/dist/functions/array.d.ts +5 -8
  191. package/dist/functions/array.d.ts.map +1 -1
  192. package/dist/functions/array.js +55 -55
  193. package/dist/functions/array.lua +2 -2
  194. package/dist/functions/arrayLua.d.ts +1 -1
  195. package/dist/functions/arrayLua.d.ts.map +1 -1
  196. package/dist/functions/arrayLua.js +7 -8
  197. package/dist/functions/benchmark.d.ts +0 -1
  198. package/dist/functions/benchmark.d.ts.map +1 -1
  199. package/dist/functions/benchmark.js +1 -2
  200. package/dist/functions/bitSet128.d.ts +0 -1
  201. package/dist/functions/bitSet128.d.ts.map +1 -1
  202. package/dist/functions/bitSet128.js +5 -6
  203. package/dist/functions/bitwise.d.ts +0 -4
  204. package/dist/functions/bitwise.d.ts.map +1 -1
  205. package/dist/functions/bitwise.js +7 -8
  206. package/dist/functions/bitwise.lua +3 -3
  207. package/dist/functions/bombs.d.ts +0 -1
  208. package/dist/functions/bombs.d.ts.map +1 -1
  209. package/dist/functions/bombs.js +1 -2
  210. package/dist/functions/bosses.d.ts.map +1 -1
  211. package/dist/functions/bosses.js +17 -17
  212. package/dist/functions/cards.js +16 -17
  213. package/dist/functions/challenges.js +9 -10
  214. package/dist/functions/characters.js +17 -18
  215. package/dist/functions/charge.d.ts.map +1 -1
  216. package/dist/functions/charge.js +10 -11
  217. package/dist/functions/charge.lua +1 -1
  218. package/dist/functions/chargeBar.d.ts +0 -2
  219. package/dist/functions/chargeBar.d.ts.map +1 -1
  220. package/dist/functions/chargeBar.js +2 -3
  221. package/dist/functions/collectibleTag.js +2 -3
  222. package/dist/functions/collectibles.js +37 -38
  223. package/dist/functions/color.d.ts +0 -1
  224. package/dist/functions/color.d.ts.map +1 -1
  225. package/dist/functions/color.js +7 -8
  226. package/dist/functions/console.js +2 -3
  227. package/dist/functions/curses.js +2 -3
  228. package/dist/functions/debugFunctions.d.ts +0 -1
  229. package/dist/functions/debugFunctions.d.ts.map +1 -1
  230. package/dist/functions/debugFunctions.js +5 -6
  231. package/dist/functions/decorators.d.ts +4 -4
  232. package/dist/functions/decorators.d.ts.map +1 -1
  233. package/dist/functions/decorators.js +4 -5
  234. package/dist/functions/deepCopy.d.ts +0 -1
  235. package/dist/functions/deepCopy.d.ts.map +1 -1
  236. package/dist/functions/deepCopy.js +1 -4
  237. package/dist/functions/deepCopy.lua +0 -2
  238. package/dist/functions/deepCopyTests.js +5 -6
  239. package/dist/functions/dimensions.js +2 -3
  240. package/dist/functions/direction.js +6 -7
  241. package/dist/functions/doors.d.ts.map +1 -1
  242. package/dist/functions/doors.js +53 -49
  243. package/dist/functions/easing.js +30 -31
  244. package/dist/functions/effects.d.ts +0 -2
  245. package/dist/functions/effects.d.ts.map +1 -1
  246. package/dist/functions/effects.js +2 -2
  247. package/dist/functions/emptyRoom.js +2 -3
  248. package/dist/functions/entities.d.ts +3 -4
  249. package/dist/functions/entities.d.ts.map +1 -1
  250. package/dist/functions/entities.js +32 -33
  251. package/dist/functions/entities.lua +4 -11
  252. package/dist/functions/entitiesSpecific.js +40 -41
  253. package/dist/functions/entityTypes.d.ts +0 -1
  254. package/dist/functions/entityTypes.d.ts.map +1 -1
  255. package/dist/functions/entityTypes.js +1 -2
  256. package/dist/functions/enums.d.ts +1 -6
  257. package/dist/functions/enums.d.ts.map +1 -1
  258. package/dist/functions/enums.js +12 -13
  259. package/dist/functions/external.js +2 -3
  260. package/dist/functions/familiars.js +6 -7
  261. package/dist/functions/flag.d.ts +1 -1
  262. package/dist/functions/flag.d.ts.map +1 -1
  263. package/dist/functions/flag.js +7 -8
  264. package/dist/functions/frames.d.ts +0 -1
  265. package/dist/functions/frames.d.ts.map +1 -1
  266. package/dist/functions/frames.js +18 -19
  267. package/dist/functions/globals.d.ts +0 -1
  268. package/dist/functions/globals.d.ts.map +1 -1
  269. package/dist/functions/globals.js +23 -15
  270. package/dist/functions/gridEntities.d.ts.map +1 -1
  271. package/dist/functions/gridEntities.js +51 -39
  272. package/dist/functions/gridEntities.lua +9 -5
  273. package/dist/functions/gridEntitiesSpecific.js +38 -39
  274. package/dist/functions/gridIndex.js +1 -2
  275. package/dist/functions/hash.js +1 -2
  276. package/dist/functions/hex.d.ts +0 -2
  277. package/dist/functions/hex.d.ts.map +1 -1
  278. package/dist/functions/hex.js +2 -3
  279. package/dist/functions/input.js +21 -21
  280. package/dist/functions/isaacAPIClass.d.ts +0 -20
  281. package/dist/functions/isaacAPIClass.d.ts.map +1 -1
  282. package/dist/functions/isaacAPIClass.js +23 -24
  283. package/dist/functions/itemPool.js +7 -8
  284. package/dist/functions/jsonHelpers.d.ts +4 -5
  285. package/dist/functions/jsonHelpers.d.ts.map +1 -1
  286. package/dist/functions/jsonHelpers.js +23 -14
  287. package/dist/functions/jsonHelpers.lua +4 -4
  288. package/dist/functions/jsonRoom.js +5 -6
  289. package/dist/functions/kColor.d.ts +0 -1
  290. package/dist/functions/kColor.d.ts.map +1 -1
  291. package/dist/functions/kColor.js +7 -8
  292. package/dist/functions/language.js +1 -2
  293. package/dist/functions/level.js +4 -5
  294. package/dist/functions/levelGrid.d.ts.map +1 -1
  295. package/dist/functions/levelGrid.js +27 -32
  296. package/dist/functions/log.js +4 -5
  297. package/dist/functions/logEntities.d.ts.map +1 -1
  298. package/dist/functions/logEntities.js +11 -9
  299. package/dist/functions/logMisc.d.ts +1 -2
  300. package/dist/functions/logMisc.d.ts.map +1 -1
  301. package/dist/functions/logMisc.js +35 -48
  302. package/dist/functions/logMisc.lua +3 -3
  303. package/dist/functions/map.d.ts +0 -2
  304. package/dist/functions/map.d.ts.map +1 -1
  305. package/dist/functions/map.js +12 -13
  306. package/dist/functions/math.js +13 -14
  307. package/dist/functions/merge.d.ts +0 -1
  308. package/dist/functions/merge.d.ts.map +1 -1
  309. package/dist/functions/merge.js +2 -3
  310. package/dist/functions/mergeTests.js +1 -2
  311. package/dist/functions/minimap.d.ts.map +1 -1
  312. package/dist/functions/minimap.js +12 -17
  313. package/dist/functions/modFeatures.js +1 -2
  314. package/dist/functions/newArray.d.ts +0 -1
  315. package/dist/functions/newArray.d.ts.map +1 -1
  316. package/dist/functions/newArray.js +2 -3
  317. package/dist/functions/nextStage.d.ts.map +1 -1
  318. package/dist/functions/nextStage.js +6 -3
  319. package/dist/functions/npcDataStructures.d.ts +0 -2
  320. package/dist/functions/npcDataStructures.d.ts.map +1 -1
  321. package/dist/functions/npcDataStructures.js +14 -15
  322. package/dist/functions/npcs.d.ts.map +1 -1
  323. package/dist/functions/npcs.js +9 -7
  324. package/dist/functions/pickupVariants.d.ts +0 -1
  325. package/dist/functions/pickupVariants.d.ts.map +1 -1
  326. package/dist/functions/pickupVariants.js +11 -12
  327. package/dist/functions/pickups.js +14 -15
  328. package/dist/functions/pickupsSpecific.js +40 -41
  329. package/dist/functions/pills.js +18 -19
  330. package/dist/functions/playerCenter.d.ts +0 -1
  331. package/dist/functions/playerCenter.d.ts.map +1 -1
  332. package/dist/functions/playerCenter.js +1 -2
  333. package/dist/functions/playerCollectibles.d.ts.map +1 -1
  334. package/dist/functions/playerCollectibles.js +19 -22
  335. package/dist/functions/playerCollectibles.lua +9 -9
  336. package/dist/functions/playerDataStructures.d.ts +0 -1
  337. package/dist/functions/playerDataStructures.d.ts.map +1 -1
  338. package/dist/functions/playerDataStructures.js +14 -15
  339. package/dist/functions/playerEffects.js +5 -6
  340. package/dist/functions/playerHealth.d.ts +0 -2
  341. package/dist/functions/playerHealth.d.ts.map +1 -1
  342. package/dist/functions/playerHealth.js +20 -21
  343. package/dist/functions/playerHealth.lua +26 -26
  344. package/dist/functions/playerIndex.d.ts +0 -3
  345. package/dist/functions/playerIndex.d.ts.map +1 -1
  346. package/dist/functions/playerIndex.js +9 -10
  347. package/dist/functions/playerTrinkets.js +10 -11
  348. package/dist/functions/players.d.ts +2 -0
  349. package/dist/functions/players.d.ts.map +1 -1
  350. package/dist/functions/players.js +39 -38
  351. package/dist/functions/players.lua +2 -0
  352. package/dist/functions/pocketItems.js +8 -9
  353. package/dist/functions/positionVelocity.d.ts +0 -4
  354. package/dist/functions/positionVelocity.d.ts.map +1 -1
  355. package/dist/functions/positionVelocity.js +11 -20
  356. package/dist/functions/positionVelocity.lua +4 -4
  357. package/dist/functions/pressurePlate.js +1 -2
  358. package/dist/functions/projectiles.js +2 -3
  359. package/dist/functions/random.d.ts +0 -3
  360. package/dist/functions/random.d.ts.map +1 -1
  361. package/dist/functions/random.js +3 -4
  362. package/dist/functions/readOnly.d.ts +0 -4
  363. package/dist/functions/readOnly.d.ts.map +1 -1
  364. package/dist/functions/readOnly.js +3 -4
  365. package/dist/functions/render.d.ts +0 -3
  366. package/dist/functions/render.d.ts.map +1 -1
  367. package/dist/functions/render.js +3 -4
  368. package/dist/functions/revive.d.ts +0 -3
  369. package/dist/functions/revive.d.ts.map +1 -1
  370. package/dist/functions/revive.js +5 -6
  371. package/dist/functions/rng.d.ts +0 -1
  372. package/dist/functions/rng.d.ts.map +1 -1
  373. package/dist/functions/rng.js +15 -15
  374. package/dist/functions/rockAlt.d.ts +0 -1
  375. package/dist/functions/rockAlt.d.ts.map +1 -1
  376. package/dist/functions/rockAlt.js +2 -3
  377. package/dist/functions/roomData.d.ts.map +1 -1
  378. package/dist/functions/roomData.js +15 -18
  379. package/dist/functions/roomGrid.js +6 -7
  380. package/dist/functions/roomShape.js +14 -15
  381. package/dist/functions/roomShapeWalls.js +2 -3
  382. package/dist/functions/roomTransition.js +2 -3
  383. package/dist/functions/rooms.d.ts.map +1 -1
  384. package/dist/functions/rooms.js +77 -64
  385. package/dist/functions/rooms.lua +2 -2
  386. package/dist/functions/run.js +8 -9
  387. package/dist/functions/seeds.d.ts +0 -1
  388. package/dist/functions/seeds.d.ts.map +1 -1
  389. package/dist/functions/seeds.js +2 -3
  390. package/dist/functions/serialization.js +5 -6
  391. package/dist/functions/set.d.ts +0 -2
  392. package/dist/functions/set.d.ts.map +1 -1
  393. package/dist/functions/set.js +22 -23
  394. package/dist/functions/slots.js +2 -3
  395. package/dist/functions/sort.d.ts.map +1 -1
  396. package/dist/functions/sort.js +6 -7
  397. package/dist/functions/sound.d.ts.map +1 -1
  398. package/dist/functions/sound.js +4 -9
  399. package/dist/functions/spawnCollectible.d.ts.map +1 -1
  400. package/dist/functions/spawnCollectible.js +4 -7
  401. package/dist/functions/sprites.d.ts +0 -3
  402. package/dist/functions/sprites.d.ts.map +1 -1
  403. package/dist/functions/sprites.js +6 -7
  404. package/dist/functions/stage.d.ts.map +1 -1
  405. package/dist/functions/stage.js +44 -53
  406. package/dist/functions/stage.lua +5 -5
  407. package/dist/functions/stats.js +4 -5
  408. package/dist/functions/storyBosses.js +2 -3
  409. package/dist/functions/string.d.ts +0 -1
  410. package/dist/functions/string.d.ts.map +1 -1
  411. package/dist/functions/string.js +12 -13
  412. package/dist/functions/table.d.ts +0 -1
  413. package/dist/functions/table.d.ts.map +1 -1
  414. package/dist/functions/table.js +8 -9
  415. package/dist/functions/tears.js +6 -7
  416. package/dist/functions/transformations.js +5 -6
  417. package/dist/functions/trinketGive.js +5 -6
  418. package/dist/functions/trinkets.d.ts.map +1 -1
  419. package/dist/functions/trinkets.js +14 -17
  420. package/dist/functions/tstlClass.d.ts +2 -3
  421. package/dist/functions/tstlClass.d.ts.map +1 -1
  422. package/dist/functions/tstlClass.js +9 -10
  423. package/dist/functions/tstlClass.lua +2 -2
  424. package/dist/functions/types.d.ts +15 -17
  425. package/dist/functions/types.d.ts.map +1 -1
  426. package/dist/functions/types.js +38 -39
  427. package/dist/functions/types.lua +14 -14
  428. package/dist/functions/ui.d.ts +0 -3
  429. package/dist/functions/ui.d.ts.map +1 -1
  430. package/dist/functions/ui.js +13 -14
  431. package/dist/functions/utils.d.ts +0 -1
  432. package/dist/functions/utils.d.ts.map +1 -1
  433. package/dist/functions/utils.js +11 -12
  434. package/dist/functions/vector.d.ts +0 -1
  435. package/dist/functions/vector.d.ts.map +1 -1
  436. package/dist/functions/vector.js +11 -12
  437. package/dist/functions/versusScreen.js +4 -5
  438. package/dist/functions/weighted.d.ts +0 -3
  439. package/dist/functions/weighted.d.ts.map +1 -1
  440. package/dist/functions/weighted.js +2 -3
  441. package/dist/index.d.ts +58 -58
  442. package/dist/index.d.ts.map +1 -1
  443. package/dist/index.js +4 -58
  444. package/dist/index.lua +443 -11
  445. package/dist/index.rollup.d.ts +86 -69
  446. package/dist/indexLua.d.ts +58 -58
  447. package/dist/indexLua.d.ts.map +1 -1
  448. package/dist/indexLua.js +4 -58
  449. package/dist/indexLua.lua +443 -11
  450. package/dist/interfaces/ChargeBarSprites.d.ts +0 -2
  451. package/dist/interfaces/ChargeBarSprites.d.ts.map +1 -1
  452. package/dist/interfaces/Corner.d.ts +0 -2
  453. package/dist/interfaces/Corner.d.ts.map +1 -1
  454. package/dist/interfaces/SaveData.d.ts +0 -1
  455. package/dist/interfaces/SaveData.d.ts.map +1 -1
  456. package/dist/interfaces/TSTLClassMetatable.d.ts +0 -4
  457. package/dist/interfaces/TSTLClassMetatable.d.ts.map +1 -1
  458. package/dist/interfaces/private/AddCallbackParametersCustom.d.ts +5 -3
  459. package/dist/interfaces/private/AddCallbackParametersCustom.d.ts.map +1 -1
  460. package/dist/interfaces/private/ModUpgradedInterface.d.ts +0 -1
  461. package/dist/interfaces/private/ModUpgradedInterface.d.ts.map +1 -1
  462. package/dist/isaacscript-common.lua +1561 -1186
  463. package/dist/lib/jsonLua.js +2 -2
  464. package/dist/lualib_bundle.lua +107 -38
  465. package/dist/objects/LRoomShapeToRectangles.js +1 -1
  466. package/dist/objects/colors.d.ts +0 -1
  467. package/dist/objects/colors.d.ts.map +1 -1
  468. package/dist/objects/directionToVector.d.ts +0 -1
  469. package/dist/objects/directionToVector.d.ts.map +1 -1
  470. package/dist/objects/doorSlotFlagToDoorSlot.d.ts +9 -2
  471. package/dist/objects/doorSlotFlagToDoorSlot.d.ts.map +1 -1
  472. package/dist/objects/doorSlotToDoorSlotFlag.d.ts +0 -1
  473. package/dist/objects/doorSlotToDoorSlotFlag.d.ts.map +1 -1
  474. package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +17 -7
  475. package/dist/objects/kColors.d.ts +0 -1
  476. package/dist/objects/kColors.d.ts.map +1 -1
  477. package/dist/objects/roomShapeToBottomRightPosition.d.ts +0 -1
  478. package/dist/objects/roomShapeToBottomRightPosition.d.ts.map +1 -1
  479. package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +1 -1
  480. package/dist/objects/roomShapeToTopLeftPosition.d.ts +0 -1
  481. package/dist/objects/roomShapeToTopLeftPosition.d.ts.map +1 -1
  482. package/dist/objects/versusScreenBackgroundColors.d.ts +0 -1
  483. package/dist/objects/versusScreenBackgroundColors.d.ts.map +1 -1
  484. package/dist/objects/versusScreenDirtSpotColors.d.ts +0 -1
  485. package/dist/objects/versusScreenDirtSpotColors.d.ts.map +1 -1
  486. package/dist/patchErrorFunctions.js +1 -2
  487. package/dist/serialization.js +1 -2
  488. package/dist/shaderCrashFix.d.ts +0 -1
  489. package/dist/shaderCrashFix.d.ts.map +1 -1
  490. package/dist/shaderCrashFix.js +1 -2
  491. package/dist/shouldFire.d.ts.map +1 -1
  492. package/dist/shouldFire.js +30 -30
  493. package/dist/tsdoc-metadata.json +1 -1
  494. package/dist/types/AddSubtract.d.ts +10 -2
  495. package/dist/types/AddSubtract.d.ts.map +1 -1
  496. package/dist/types/AnyEntity.d.ts +0 -11
  497. package/dist/types/AnyEntity.d.ts.map +1 -1
  498. package/dist/types/AnyGridEntity.d.ts +0 -8
  499. package/dist/types/AnyGridEntity.d.ts.map +1 -1
  500. package/dist/types/PickingUpItem.js +5 -6
  501. package/dist/types/PickupIndex.d.ts +0 -1
  502. package/dist/types/PickupIndex.d.ts.map +1 -1
  503. package/dist/types/PlayerIndex.d.ts +0 -1
  504. package/dist/types/PlayerIndex.d.ts.map +1 -1
  505. package/dist/types/ReadonlyMap.d.ts.map +1 -1
  506. package/dist/types/ReadonlySet.d.ts.map +1 -1
  507. package/dist/types/TSTLClass.d.ts +0 -1
  508. package/dist/types/TSTLClass.d.ts.map +1 -1
  509. package/dist/types/TupleWithLengthBetween.js +2 -2
  510. package/dist/types/TupleWithMaxLength.js +2 -2
  511. package/dist/types/WeightedArray.d.ts +0 -1
  512. package/dist/types/WeightedArray.d.ts.map +1 -1
  513. package/package.json +9 -2
  514. package/src/callbackClasses.ts +6 -6
  515. package/src/classes/DefaultMap.ts +5 -2
  516. package/src/classes/ModFeature.ts +3 -3
  517. package/src/classes/ModUpgraded.ts +2 -4
  518. package/src/classes/callbacks/PostCollectibleEmpty.ts +1 -3
  519. package/src/classes/callbacks/PostItemDischarge.ts +3 -6
  520. package/src/classes/callbacks/PostNPCStateChanged.ts +1 -1
  521. package/src/classes/callbacks/PostNewRoomEarly.ts +1 -1
  522. package/src/classes/callbacks/PostPlayerChangeType.ts +1 -1
  523. package/src/classes/callbacks/PostTransformation.ts +1 -3
  524. package/src/classes/callbacks/PostTrinketBreak.ts +1 -3
  525. package/src/classes/features/callbackLogic/CustomGridEntities.ts +1 -1
  526. package/src/classes/features/callbackLogic/GameReorderedCallbacks.ts +4 -6
  527. package/src/classes/features/callbackLogic/ItemPickupDetection.ts +6 -2
  528. package/src/classes/features/callbackLogic/PlayerReorderedCallbacks.ts +4 -4
  529. package/src/classes/features/other/CustomPickups.ts +1 -0
  530. package/src/classes/features/other/CustomStages.ts +2 -2
  531. package/src/classes/features/other/CustomTrapdoors.ts +23 -18
  532. package/src/classes/features/other/DeployJSONRoom.ts +2 -0
  533. package/src/classes/features/other/EdenStartingStatsHealth.ts +3 -1
  534. package/src/classes/features/other/ExtraConsoleCommands.ts +14 -10
  535. package/src/classes/features/other/ModdedElementDetection.ts +4 -4
  536. package/src/classes/features/other/ModdedElementSets.ts +3 -3
  537. package/src/classes/features/other/PickupIndexCreation.ts +2 -3
  538. package/src/classes/features/other/RunInNFrames.ts +2 -2
  539. package/src/classes/features/other/SaveDataManager.ts +1 -1
  540. package/src/classes/features/other/customStages/backdrop.ts +1 -1
  541. package/src/classes/features/other/extraConsoleCommands/commands.ts +7 -7
  542. package/src/classes/features/other/saveDataManager/loadFromDisk.ts +5 -0
  543. package/src/core/constants.ts +1 -1
  544. package/src/core/constantsVanilla.ts +4 -4
  545. package/src/enums/ModCallbackCustom.ts +5 -4
  546. package/src/functions/array.ts +33 -29
  547. package/src/functions/arrayLua.ts +1 -1
  548. package/src/functions/bosses.ts +2 -1
  549. package/src/functions/charge.ts +1 -2
  550. package/src/functions/decorators.ts +6 -9
  551. package/src/functions/deepCopy.ts +0 -4
  552. package/src/functions/deepCopyTests.ts +4 -4
  553. package/src/functions/doors.ts +5 -0
  554. package/src/functions/entities.ts +7 -14
  555. package/src/functions/enums.ts +4 -4
  556. package/src/functions/flag.ts +1 -1
  557. package/src/functions/globals.ts +2 -3
  558. package/src/functions/gridEntities.ts +19 -1
  559. package/src/functions/jsonHelpers.ts +7 -5
  560. package/src/functions/levelGrid.ts +3 -6
  561. package/src/functions/logEntities.ts +3 -0
  562. package/src/functions/logMisc.ts +9 -20
  563. package/src/functions/map.ts +4 -4
  564. package/src/functions/merge.ts +1 -1
  565. package/src/functions/minimap.ts +2 -6
  566. package/src/functions/newArray.ts +1 -1
  567. package/src/functions/nextStage.ts +4 -0
  568. package/src/functions/npcDataStructures.ts +5 -5
  569. package/src/functions/npcs.ts +3 -0
  570. package/src/functions/playerCollectibles.ts +1 -3
  571. package/src/functions/playerDataStructures.ts +5 -5
  572. package/src/functions/players.ts +2 -0
  573. package/src/functions/positionVelocity.ts +4 -12
  574. package/src/functions/rng.ts +4 -3
  575. package/src/functions/roomData.ts +1 -3
  576. package/src/functions/rooms.ts +16 -1
  577. package/src/functions/set.ts +8 -8
  578. package/src/functions/sort.ts +2 -2
  579. package/src/functions/sound.ts +2 -7
  580. package/src/functions/spawnCollectible.ts +1 -3
  581. package/src/functions/stage.ts +4 -14
  582. package/src/functions/trinkets.ts +1 -3
  583. package/src/functions/tstlClass.ts +2 -2
  584. package/src/functions/types.ts +16 -16
  585. package/src/index.ts +58 -58
  586. package/src/interfaces/SaveData.ts +2 -1
  587. package/src/interfaces/private/AddCallbackParametersCustom.ts +8 -3
  588. package/src/lib/jsonLua.js +2 -2
  589. package/src/objects/LRoomShapeToRectangles.ts +1 -1
  590. package/src/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +1 -1
  591. package/src/shouldFire.ts +2 -1
  592. package/src/types/AddSubtract.ts +10 -2
  593. package/src/types/HasFunction.ts +1 -1
  594. package/src/types/Immutable.ts +1 -1
  595. package/src/types/TupleWithLengthBetween.ts +2 -2
  596. package/src/types/TupleWithMaxLength.ts +2 -2
@@ -8,7 +8,7 @@ import { CustomCallback } from "../private/CustomCallback";
8
8
  const v = {
9
9
  run: {
10
10
  stateMap: new DefaultMap<PtrHash, NPCState, [NPCState]>(
11
- (state) => state, // eslint-disable-line isaacscript/strict-enums
11
+ (state) => state, // eslint-disable-line complete/strict-enums
12
12
  ),
13
13
  },
14
14
  };
@@ -21,7 +21,7 @@ export class PostNewRoomEarly extends CustomCallback<ModCallbackCustom.POST_NEW_
21
21
 
22
22
  this.callbacksUsed = [
23
23
  // 19
24
- // eslint-disable-next-line deprecation/deprecation
24
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
25
25
  [ModCallback.POST_NEW_ROOM, this.postNewRoom],
26
26
 
27
27
  // 24
@@ -15,7 +15,7 @@ const v = {
15
15
  PlayerIndex,
16
16
  PlayerType,
17
17
  [character: PlayerType]
18
- >((character: PlayerType) => character), // eslint-disable-line isaacscript/strict-enums
18
+ >((character: PlayerType) => character), // eslint-disable-line complete/strict-enums
19
19
  },
20
20
  };
21
21
 
@@ -55,9 +55,7 @@ export class PostTransformation extends CustomCallback<T> {
55
55
  for (const playerForm of PLAYER_FORM_VALUES) {
56
56
  const hasForm = player.HasPlayerForm(playerForm);
57
57
  let storedForm = playerTransformationsMap.get(playerForm);
58
- if (storedForm === undefined) {
59
- storedForm = false;
60
- }
58
+ storedForm ??= false;
61
59
 
62
60
  if (hasForm !== storedForm) {
63
61
  playerTransformationsMap.set(playerForm, hasForm);
@@ -55,9 +55,7 @@ export class PostTrinketBreak extends CustomCallback<ModCallbackCustom.POST_TRIN
55
55
  for (const trinketType of TRINKETS_THAT_CAN_BREAK) {
56
56
  const numTrinketsHeld = player.GetTrinketMultiplier(trinketType);
57
57
  let oldNumTrinketsHeld = trinketMap.get(trinketType);
58
- if (oldNumTrinketsHeld === undefined) {
59
- oldNumTrinketsHeld = 0;
60
- }
58
+ oldNumTrinketsHeld ??= 0;
61
59
 
62
60
  if (numTrinketsHeld >= oldNumTrinketsHeld) {
63
61
  continue;
@@ -348,7 +348,7 @@ export class CustomGridEntities extends Feature {
348
348
  * @public
349
349
  */
350
350
  @Exported
351
- public getCustomGridEntities(): Array<{
351
+ public getCustomGridEntities(): ReadonlyArray<{
352
352
  gridEntity: GridEntity;
353
353
  data: GridEntityCustomData;
354
354
  }> {
@@ -60,18 +60,18 @@ export class GameReorderedCallbacks extends Feature {
60
60
  [ModCallback.POST_PLAYER_INIT, this.postPlayerInit],
61
61
 
62
62
  // 15
63
- // eslint-disable-next-line deprecation/deprecation
63
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
64
64
  [ModCallback.POST_GAME_STARTED, this.postGameStarted],
65
65
 
66
66
  // 17
67
67
  [ModCallback.PRE_GAME_EXIT, this.preGameExit],
68
68
 
69
69
  // 18
70
- // eslint-disable-next-line deprecation/deprecation
70
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
71
71
  [ModCallback.POST_NEW_LEVEL, this.postNewLevel],
72
72
 
73
73
  // 19
74
- // eslint-disable-next-line deprecation/deprecation
74
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
75
75
  [ModCallback.POST_NEW_ROOM, this.postNewRoom],
76
76
  ];
77
77
 
@@ -93,9 +93,7 @@ export class GameReorderedCallbacks extends Feature {
93
93
 
94
94
  // ModCallback.POST_PLAYER_INIT (9)
95
95
  private readonly postPlayerInit = (_player: EntityPlayer): void => {
96
- if (this.renderFrameRunStarted === null) {
97
- this.renderFrameRunStarted = Isaac.GetFrameCount();
98
- }
96
+ this.renderFrameRunStarted ??= Isaac.GetFrameCount();
99
97
  };
100
98
 
101
99
  // ModCallback.POST_GAME_STARTED (15)
@@ -5,6 +5,7 @@ import type {
5
5
  import { ItemType } from "isaac-typescript-definitions";
6
6
  import { ModCallbackCustom } from "../../../enums/ModCallbackCustom";
7
7
  import { defaultMapGetPlayer } from "../../../functions/playerDataStructures";
8
+ import { dequeueItem } from "../../../functions/players";
8
9
  import { asNumber } from "../../../functions/types";
9
10
  import type { PickingUpItem } from "../../../types/PickingUpItem";
10
11
  import {
@@ -78,7 +79,7 @@ export class ItemPickupDetection extends Feature {
78
79
  private queueNotEmpty(player: EntityPlayer, pickingUpItem: PickingUpItem) {
79
80
  const queuedItem = player.QueuedItem.Item;
80
81
  if (queuedItem === undefined || queuedItem.Type === ItemType.NULL) {
81
- // This should never happen, since the `EntityPlayer.IsItemQueueEmpty` method returned true.
82
+ // This should never happen, since the `EntityPlayer.IsItemQueueEmpty` method returned false.
82
83
  return;
83
84
  }
84
85
 
@@ -90,7 +91,10 @@ export class ItemPickupDetection extends Feature {
90
91
  pickingUpItem.itemType = queuedItem.Type;
91
92
  pickingUpItem.subType = queuedItem.ID as CollectibleType | TrinketType;
92
93
 
93
- this.preItemPickup.fire(player, pickingUpItem);
94
+ const shouldBeGranted = this.preItemPickup.fire(player, pickingUpItem);
95
+ if (shouldBeGranted === false) {
96
+ dequeueItem(player);
97
+ }
94
98
  }
95
99
  }
96
100
  }
@@ -48,15 +48,15 @@ export class PlayerReorderedCallbacks extends Feature {
48
48
 
49
49
  this.callbacksUsed = [
50
50
  // 4
51
- // eslint-disable-next-line deprecation/deprecation
51
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
52
52
  [ModCallback.POST_PEFFECT_UPDATE, this.postPEffectUpdate],
53
53
 
54
54
  // 31
55
- // eslint-disable-next-line deprecation/deprecation
55
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
56
56
  [ModCallback.POST_PLAYER_UPDATE, this.postPlayerUpdate],
57
57
 
58
58
  // 32
59
- // eslint-disable-next-line deprecation/deprecation
59
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
60
60
  [ModCallback.POST_PLAYER_RENDER, this.postPlayerRender],
61
61
  ];
62
62
 
@@ -125,7 +125,7 @@ export class PlayerReorderedCallbacks extends Feature {
125
125
  }
126
126
 
127
127
  function dequeue(
128
- // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
128
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
129
129
  queue: QueueElement[],
130
130
  fireFunc: (player: EntityPlayer, renderOffset: Vector) => void,
131
131
  ) {
@@ -96,6 +96,7 @@ export class CustomPickups extends Feature {
96
96
  // ModCallback.POST_EFFECT_RENDER (56)
97
97
  // PICKUP_EFFECT_VARIANT
98
98
  private readonly postEffectRenderPickupEffect = (effect: EntityEffect) => {
99
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
99
100
  if (effect.SubType !== PICKUP_EFFECT_SUB_TYPE) {
100
101
  return;
101
102
  }
@@ -300,7 +300,7 @@ export class CustomStages extends Feature {
300
300
  const level = game.GetLevel();
301
301
  const stage = customStage.baseStage ?? DEFAULT_BASE_STAGE;
302
302
  const stageType = customStage.baseStageType ?? DEFAULT_BASE_STAGE_TYPE;
303
- level.SetStage(stage, stageType); // eslint-disable-line isaacscript/strict-enums
303
+ level.SetStage(stage, stageType); // eslint-disable-line complete/strict-enums
304
304
 
305
305
  return undefined;
306
306
  };
@@ -523,7 +523,7 @@ export class CustomStages extends Feature {
523
523
  ? DEFAULT_BASE_STAGE
524
524
  : (customStage.baseStage as LevelStage);
525
525
  if (!firstFloor) {
526
- baseStage++; // eslint-disable-line isaacscript/strict-enums
526
+ baseStage++; // eslint-disable-line complete/strict-enums
527
527
  }
528
528
 
529
529
  const baseStageType: StageType =
@@ -59,7 +59,10 @@ import { CUSTOM_FLOOR_STAGE } from "./customStages/constants";
59
59
 
60
60
  const DEBUG = false as boolean;
61
61
 
62
- /** This also applies to crawl spaces. The value was determined through trial and error. */
62
+ /**
63
+ * This also applies to crawl spaces. The value was determined through trial and error to match
64
+ * vanilla behavior.
65
+ */
63
66
  const TRAPDOOR_OPEN_DISTANCE = 60;
64
67
 
65
68
  const TRAPDOOR_OPEN_DISTANCE_AFTER_BOSS = TRAPDOOR_OPEN_DISTANCE * 2.5;
@@ -265,16 +268,14 @@ export class CustomTrapdoors extends Feature {
265
268
  }
266
269
 
267
270
  private goToCustomTrapdoorDestination() {
268
- if (v.run.customTrapdoorActivated === null) {
269
- // This should never happen; provide some sane default values.
270
- v.run.customTrapdoorActivated = {
271
- destinationName: undefined,
272
- destinationStage: LevelStage.BASEMENT_1,
273
- destinationStageType: StageType.ORIGINAL,
274
- open: true,
275
- firstSpawn: true,
276
- };
277
- }
271
+ // This should never be null. Regardless, we provide some sane default values.
272
+ v.run.customTrapdoorActivated ??= {
273
+ destinationName: undefined,
274
+ destinationStage: LevelStage.BASEMENT_1,
275
+ destinationStageType: StageType.ORIGINAL,
276
+ open: true,
277
+ firstSpawn: true,
278
+ };
278
279
 
279
280
  const destinationFunc = this.getDestinationFunc(
280
281
  v.run.customTrapdoorActivated,
@@ -417,6 +418,15 @@ export class CustomTrapdoors extends Feature {
417
418
  ): void {
418
419
  /** By default, trapdoors will never close if they are already open. */
419
420
  if (trapdoorDescription.open) {
421
+ // Sometimes, the `sprite.Play(TrapdoorAnimation.OPEN_ANIMATION, true)` function does not take
422
+ // effect. Check for this case.
423
+ const sprite = gridEntity.GetSprite();
424
+ const animation = sprite.GetAnimation();
425
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
426
+ if (animation === TrapdoorAnimation.CLOSED) {
427
+ // Try it again.
428
+ sprite.Play(TrapdoorAnimation.OPEN_ANIMATION, true);
429
+ }
420
430
  return;
421
431
  }
422
432
 
@@ -752,13 +762,8 @@ export class CustomTrapdoors extends Feature {
752
762
  );
753
763
  }
754
764
 
755
- if (destinationStage === undefined) {
756
- destinationStage = this.stageHistory.getNextStageWithHistory();
757
- }
758
-
759
- if (destinationStageType === undefined) {
760
- destinationStageType = this.stageHistory.getNextStageTypeWithHistory();
761
- }
765
+ destinationStage ??= this.stageHistory.getNextStageWithHistory();
766
+ destinationStageType ??= this.stageHistory.getNextStageTypeWithHistory();
762
767
 
763
768
  const room = game.GetRoom();
764
769
  const roomListIndex = getRoomListIndex();
@@ -162,6 +162,7 @@ export class DeployJSONRoom extends Feature {
162
162
  let entity: Entity;
163
163
  if (
164
164
  entityType === EntityType.PICKUP &&
165
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
165
166
  variant === PickupVariant.COLLECTIBLE
166
167
  ) {
167
168
  const collectibleType = asCollectibleType(subType);
@@ -174,6 +175,7 @@ export class DeployJSONRoom extends Feature {
174
175
  // For some reason, Pitfalls do not spawn with the correct collision classes.
175
176
  if (
176
177
  entityType === EntityType.PITFALL &&
178
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
177
179
  variant === PitfallVariant.PITFALL
178
180
  ) {
179
181
  entity.EntityCollisionClass = EntityCollisionClass.ENEMIES;
@@ -130,7 +130,9 @@ export class EdenStartingStatsHealth extends Feature {
130
130
  * @public
131
131
  */
132
132
  @Exported
133
- public getEdenStartingCollectibles(player: EntityPlayer): CollectibleType[] {
133
+ public getEdenStartingCollectibles(
134
+ player: EntityPlayer,
135
+ ): readonly CollectibleType[] {
134
136
  const collectibleTypes: CollectibleType[] = [];
135
137
 
136
138
  const activeCollectibleType = mapGetPlayer(
@@ -24,7 +24,8 @@ declare let __ISAACSCRIPT_COMMON_EXTRA_CONSOLE_COMMANDS_FEATURE:
24
24
 
25
25
  /**
26
26
  * When you enable this feature, many custom commands will be added to the in-game console. See the
27
- * [dedicated command list](ExtraConsoleCommandsList) for more information about them.
27
+ * [dedicated command list](/isaacscript-common/features/ExtraConsoleCommandsList) for more
28
+ * information about them.
28
29
  *
29
30
  * Note that in order to avoid conflicts, if two or more mods enable this feature, then the first
30
31
  * loaded one will control all of the command logic. When this occurs, a global variable of
@@ -241,10 +242,11 @@ export class ExtraConsoleCommands extends Feature {
241
242
  /**
242
243
  * Helper function to add a custom console command.
243
244
  *
244
- * The standard library comes with [many existing console commands](ExtraConsoleCommandsList) that
245
- * are useful for debugging, but you can also add your own commands that are useful for your
246
- * particular mod. It's easier to add commands to the existing command system than to add your own
247
- * logic manually to the `EXECUTE_CMD` callback.
245
+ * The standard library comes with [many existing console
246
+ * commands](/isaacscript-common/features/ExtraConsoleCommandsList) that are useful for debugging,
247
+ * but you can also add your own commands that are useful for your particular mod. It's easier to
248
+ * add commands to the existing command system than to add your own logic manually to the
249
+ * `EXECUTE_CMD` callback.
248
250
  *
249
251
  * This function is intended to be called when your mod is first loading.
250
252
  *
@@ -290,8 +292,9 @@ export class ExtraConsoleCommands extends Feature {
290
292
  /**
291
293
  * Helper function to remove a custom console command.
292
294
  *
293
- * The standard library comes with [many existing console commands](ExtraConsoleCommandsList) that
294
- * are useful for debugging. If you want to disable one of them, use this function.
295
+ * The standard library comes with [many existing console
296
+ * commands](/isaacscript-common/features/ExtraConsoleCommandsList) that are useful for debugging.
297
+ * If you want to disable one of them, use this function.
295
298
  *
296
299
  * This function is intended to be called when your mod is first loading.
297
300
  *
@@ -325,9 +328,10 @@ export class ExtraConsoleCommands extends Feature {
325
328
  /**
326
329
  * Helper function to remove all custom console commands.
327
330
  *
328
- * The standard library comes with [many existing console commands](ExtraConsoleCommandsList) that
329
- * are useful for debugging. If you want to disable all of them after this feature has already
330
- * been initialized, use this function.
331
+ * The standard library comes with [many existing console
332
+ * commands](/isaacscript-common/features/ExtraConsoleCommandsList) that are useful for debugging.
333
+ * If you want to disable all of them after this feature has already been initialized, use this
334
+ * function.
331
335
  *
332
336
  * In order to use this function, you must upgrade your mod with
333
337
  * `ISCFeature.EXTRA_CONSOLE_COMMANDS`.
@@ -19,17 +19,17 @@ import {
19
19
  import { Exported } from "../../../decorators";
20
20
  import { Feature } from "../../private/Feature";
21
21
 
22
- // eslint-disable-next-line isaacscript/strict-enums
22
+ // eslint-disable-next-line complete/strict-enums
23
23
  const FIRST_MODDED_COLLECTIBLE_TYPE: CollectibleType =
24
24
  LAST_VANILLA_COLLECTIBLE_TYPE + 1;
25
25
 
26
- // eslint-disable-next-line isaacscript/strict-enums
26
+ // eslint-disable-next-line complete/strict-enums
27
27
  const FIRST_MODDED_TRINKET_TYPE: TrinketType = LAST_VANILLA_TRINKET_TYPE + 1;
28
28
 
29
- // eslint-disable-next-line isaacscript/strict-enums
29
+ // eslint-disable-next-line complete/strict-enums
30
30
  const FIRST_MODDED_CARD_TYPE: CardType = LAST_VANILLA_CARD_TYPE + 1;
31
31
 
32
- // eslint-disable-next-line isaacscript/strict-enums
32
+ // eslint-disable-next-line complete/strict-enums
33
33
  const FIRST_MODDED_PILL_EFFECT: PillEffect = LAST_VANILLA_PILL_EFFECT + 1;
34
34
 
35
35
  /**
@@ -574,7 +574,7 @@ export class ModdedElementSets extends Feature {
574
574
  @Exported
575
575
  public getPlayerCollectibleMap(
576
576
  player: EntityPlayer,
577
- ): Map<CollectibleType, int> {
577
+ ): ReadonlyMap<CollectibleType, int> {
578
578
  const collectibleArray = this.getCollectibleTypes();
579
579
 
580
580
  const collectibleMap = new Map<CollectibleType, int>();
@@ -603,7 +603,7 @@ export class ModdedElementSets extends Feature {
603
603
  }
604
604
  }
605
605
 
606
- collectibleType--; // eslint-disable-line isaacscript/strict-enums
606
+ collectibleType--; // eslint-disable-line complete/strict-enums
607
607
  } while (itemConfigItem !== undefined);
608
608
  }
609
609
 
@@ -976,7 +976,7 @@ export class ModdedElementSets extends Feature {
976
976
  public getPlayerTrinketsWithCacheFlag(
977
977
  player: EntityPlayer,
978
978
  cacheFlag: CacheFlag,
979
- ): Map<TrinketType, int> {
979
+ ): ReadonlyMap<TrinketType, int> {
980
980
  const trinketTypesWithCacheFlag =
981
981
  this.getTrinketsTypesWithCacheFlag(cacheFlag);
982
982
 
@@ -116,9 +116,7 @@ export class PickupIndexCreation extends Feature {
116
116
  v.level.pickupData.getAndSetDefault(roomListIndex);
117
117
 
118
118
  let pickupIndex = getStoredPickupIndex(pickup, pickupDescriptions);
119
- if (pickupIndex === undefined) {
120
- pickupIndex = this.getPostAscentPickupIndex(pickup);
121
- }
119
+ pickupIndex ??= this.getPostAscentPickupIndex(pickup);
122
120
 
123
121
  return pickupIndex;
124
122
  }
@@ -186,6 +184,7 @@ export class PickupIndexCreation extends Feature {
186
184
  * pickup could re-appear during The Ascent. If this is the case, we store the metadata on a
187
185
  * separate map to reference later.
188
186
  */
187
+ // eslint-disable-next-line complete/no-mutable-return
189
188
  private getPickupDataMapForCurrentRoom():
190
189
  | Map<PickupIndex, PickupDescription>
191
190
  | undefined {
@@ -347,7 +347,7 @@ export class RunInNFrames extends Feature {
347
347
  }
348
348
 
349
349
  function checkExecuteQueuedFunctions(
350
- // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
350
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
351
351
  queuedFunctions: QueuedFunction[],
352
352
  frameCount: int,
353
353
  newNumRoomsEntered: int,
@@ -368,7 +368,7 @@ function checkExecuteQueuedFunctions(
368
368
  }
369
369
 
370
370
  function checkExecuteIntervalFunctions(
371
- // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
371
+ // eslint-disable-next-line complete/prefer-readonly-parameter-types
372
372
  intervalFunctions: IntervalFunction[],
373
373
  frameCount: int,
374
374
  newNumRoomsEntered: int,
@@ -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
 
@@ -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
  > = {
@@ -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;
@@ -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);
@@ -1648,8 +1648,8 @@ export enum ModCallbackCustom {
1648
1648
  POST_PLAYER_COLLECTIBLE_REMOVED,
1649
1649
 
1650
1650
  /**
1651
- * Fires from the `ENTITY_TAKE_DMG` callback when a player takes fatal damage. Return false to
1652
- * prevent the fatal damage.
1651
+ * Fires from the `ENTITY_TAKE_DMG` callback when a player takes fatal damage. You can optionally
1652
+ * return false to prevent the fatal damage.
1653
1653
  *
1654
1654
  * Note that this function does properly take into account Guppy's Collar, Broken Ankh, Spirit
1655
1655
  * Shackles, and Mysterious Paper. It also takes into account using The Bible on Satan.
@@ -2450,7 +2450,8 @@ export enum ModCallbackCustom {
2450
2450
 
2451
2451
  /**
2452
2452
  * Fires from the `POST_PEFFECT_UPDATE_REORDERED` callback when an item becomes queued (i.e. when
2453
- * the player begins to hold the item above their head).
2453
+ * the player begins to hold the item above their head). You can optionally return false if you
2454
+ * want the item to not be granted to the player.
2454
2455
  *
2455
2456
  * Note that this callback will only fire once per Forgotten/Soul pair.
2456
2457
  *
@@ -2464,7 +2465,7 @@ export enum ModCallbackCustom {
2464
2465
  * function preItemPickup(
2465
2466
  * player: EntityPlayer,
2466
2467
  * pickingUpItem: PickingUpItem,
2467
- * ): void {}
2468
+ * ): boolean | undefined {}
2468
2469
  * ```
2469
2470
  */
2470
2471
  PRE_ITEM_PICKUP,