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
@@ -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;
@@ -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(
@@ -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
 
@@ -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
 
@@ -203,21 +203,21 @@ function copiedObjectHasNoReferencesForArray() {
203
203
  error("The copied object does not have an equal array.");
204
204
  }
205
205
 
206
- oldObject.abc[0]++;
206
+ oldObject.abc[0]!++; // eslint-disable-line @typescript-eslint/no-non-null-assertion
207
207
  if (arrayEquals(oldObject.abc, newObject.abc)) {
208
208
  error(
209
209
  "The copied object has an equal array after a modification to the old array.",
210
210
  );
211
211
  }
212
- oldObject.abc[0]--;
212
+ oldObject.abc[0]!--; // eslint-disable-line @typescript-eslint/no-non-null-assertion
213
213
 
214
- newObject.abc[0]++;
214
+ newObject.abc[0]!++; // eslint-disable-line @typescript-eslint/no-non-null-assertion
215
215
  if (arrayEquals(oldObject.abc, newObject.abc)) {
216
216
  error(
217
217
  "The copied object has an equal array after a modification to the new array.",
218
218
  );
219
219
  }
220
- newObject.abc[0]--;
220
+ newObject.abc[0]!--; // eslint-disable-line @typescript-eslint/no-non-null-assertion
221
221
  }
222
222
 
223
223
  function copiedObjectHasChildObject() {
@@ -377,6 +377,7 @@ export function isAngelRoomDoor(door: GridEntityDoor): boolean {
377
377
  * Room.)
378
378
  */
379
379
  export function isBlueWombDoor(door: GridEntityDoor): boolean {
380
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
380
381
  return door.TargetRoomIndex === GridRoom.BLUE_WOMB;
381
382
  }
382
383
 
@@ -385,6 +386,7 @@ export function isBlueWombDoor(door: GridEntityDoor): boolean {
385
386
  * vanilla, the door will only appear in the Boss Room of the sixth floor.)
386
387
  */
387
388
  export function isBossRushDoor(door: GridEntityDoor): boolean {
389
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
388
390
  return door.TargetRoomIndex === GridRoom.BOSS_RUSH;
389
391
  }
390
392
 
@@ -493,6 +495,7 @@ export function isHiddenSecretRoomDoor(door: GridEntityDoor): boolean {
493
495
  * (In vanilla, the door will only appear in the starting room of The Chest / Dark Room.)
494
496
  */
495
497
  export function isMegaSatanDoor(door: GridEntityDoor): boolean {
498
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
496
499
  return door.TargetRoomIndex === GridRoom.MEGA_SATAN;
497
500
  }
498
501
 
@@ -501,6 +504,7 @@ export function isMegaSatanDoor(door: GridEntityDoor): boolean {
501
504
  * you to the Repentance floor.
502
505
  */
503
506
  export function isRepentanceDoor(door: GridEntityDoor): boolean {
507
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
504
508
  return door.TargetRoomIndex === GridRoom.SECRET_EXIT;
505
509
  }
506
510
 
@@ -525,6 +529,7 @@ export function isSecretRoomDoor(door: GridEntityDoor): boolean {
525
529
  * contains the portal to The Void. (In vanilla, the door will only appear in the Hush Boss Room.)
526
530
  */
527
531
  export function isVoidDoor(door: GridEntityDoor): boolean {
532
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
528
533
  return door.TargetRoomIndex === GridRoom.VOID;
529
534
  }
530
535
 
@@ -425,6 +425,7 @@ export function isActiveEnemy(entity: Entity): boolean {
425
425
 
426
426
  // 912
427
427
  case EntityType.MOTHER: {
428
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
428
429
  if (entity.Variant === MotherVariant.MOTHER_1) {
429
430
  const npc = entity.ToNPC();
430
431
  if (npc !== undefined && npc.State === NPCState.SPECIAL) {
@@ -441,7 +442,7 @@ export function isActiveEnemy(entity: Entity): boolean {
441
442
  }
442
443
  }
443
444
 
444
- // eslint-disable-next-line deprecation/deprecation
445
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
445
446
  return entity.IsActiveEnemy(false);
446
447
  }
447
448
 
@@ -640,8 +641,8 @@ export function setEntityRandomColor(entity: Entity): void {
640
641
  }
641
642
 
642
643
  /**
643
- * Helper function to spawn an entity. Use this instead of the `Isaac.Spawn` method if you do not
644
- * need to specify the velocity or spawner.
644
+ * Helper function to spawn an entity. Always use this instead of the `Isaac.Spawn` method, since
645
+ * using that method can crash the game.
645
646
  *
646
647
  * Also see the `spawnWithSeed` helper function.
647
648
  *
@@ -653,7 +654,7 @@ export function setEntityRandomColor(entity: Entity): void {
653
654
  * @param spawner Optional. The entity that will be the `SpawnerEntity`. Default is undefined.
654
655
  * @param seedOrRNG Optional. The seed or RNG object to use to generate the `InitSeed` of the
655
656
  * entity. Default is undefined, which will make the entity spawn with a random
656
- * seed using the `Isaac.Spawn` method.
657
+ * seed.
657
658
  */
658
659
  export function spawn(
659
660
  entityType: EntityType,
@@ -666,6 +667,7 @@ export function spawn(
666
667
  ): Entity {
667
668
  const room = game.GetRoom();
668
669
 
670
+ // We do an explicit check to prevent run-time errors in Lua environments.
669
671
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
670
672
  if (positionOrGridIndex === undefined) {
671
673
  const entityID = getEntityIDFromConstituents(entityType, variant, subType);
@@ -678,16 +680,7 @@ export function spawn(
678
680
  ? positionOrGridIndex
679
681
  : room.GetGridPosition(positionOrGridIndex);
680
682
 
681
- if (seedOrRNG === undefined) {
682
- return Isaac.Spawn(
683
- entityType,
684
- variant,
685
- subType,
686
- position,
687
- velocity,
688
- spawner,
689
- );
690
- }
683
+ seedOrRNG ??= newRNG();
691
684
 
692
685
  const seed = isRNG(seedOrRNG) ? seedOrRNG.Next() : seedOrRNG;
693
686
  return game.Spawn(
@@ -230,7 +230,7 @@ export function getRandomEnumValue<T extends TranspiledEnum>(
230
230
  * `satisfies` operator with the `Record` type instead.
231
231
  */
232
232
  export function interfaceSatisfiesEnum<
233
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
233
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-unnecessary-type-parameters
234
234
  T extends Record<Enum, unknown>,
235
235
  Enum extends string | number,
236
236
  >(): void {} // eslint-disable-line @typescript-eslint/no-empty-function
@@ -277,9 +277,9 @@ export function validateCustomEnum(
277
277
  *
278
278
  * This is useful to automate checking large enums for typos.
279
279
  */
280
- export function validateEnumContiguous<T extends TranspiledEnum>(
280
+ export function validateEnumContiguous(
281
281
  transpiledEnumName: string,
282
- transpiledEnum: T,
282
+ transpiledEnum: TranspiledEnum,
283
283
  ): void {
284
284
  const values = getEnumValues(transpiledEnum);
285
285
  const lastValue = values.at(-1);
@@ -296,7 +296,7 @@ export function validateEnumContiguous<T extends TranspiledEnum>(
296
296
 
297
297
  const valuesSet = new ReadonlySet(values);
298
298
  for (const value of iRange(lastValue)) {
299
- if (!valuesSet.has(value as unknown as T[keyof T])) {
299
+ if (!valuesSet.has(value)) {
300
300
  error(
301
301
  `Failed to find a custom enum value of ${value} for: ${transpiledEnumName}`,
302
302
  );
@@ -115,7 +115,7 @@ export function hasFlag<T extends BitFlag | BitFlag128>(
115
115
  * (This is equivalent to checking if the flag is equal to 0, but this is not possible without
116
116
  * casting the flag to a number.)
117
117
  */
118
- export function isEmptyFlag<T extends BitFlag | BitFlag128>(flag: T): boolean {
118
+ export function isEmptyFlag(flag: BitFlag | BitFlag128): boolean {
119
119
  return flag === 0;
120
120
  }
121
121
 
@@ -220,8 +220,7 @@ export function getNewGlobals(): ReadonlyArray<[AnyNotNil, unknown]> {
220
220
  const newGlobals: Array<[AnyNotNil, unknown]> = [];
221
221
  for (const [key, value] of pairs(_G)) {
222
222
  if (!defaultGlobals.has(key)) {
223
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
224
- const keyValueTuple: [AnyNotNil, unknown] = [key, value as any];
223
+ const keyValueTuple: [AnyNotNil, unknown] = [key, value];
225
224
  newGlobals.push(keyValueTuple);
226
225
  }
227
226
  }
@@ -256,7 +255,7 @@ export function setLogFunctionsGlobal(): void {
256
255
  const globals = _G as Record<string, unknown>;
257
256
 
258
257
  for (const exports of [logExports, logMiscExports, logEntitiesExports]) {
259
- // eslint-disable-next-line isaacscript/no-object-any
258
+ // eslint-disable-next-line complete/no-object-any
260
259
  for (const [logFuncName, logFunc] of Object.entries(exports)) {
261
260
  globals[logFuncName] = logFunc;
262
261
  }
@@ -816,7 +816,7 @@ export function isGridEntityBroken(gridEntity: GridEntity): boolean {
816
816
  * the `PRE_ROOM_ENTITY_SPAWN` callback for narrowing the type of the first argument.
817
817
  */
818
818
  export function isGridEntityXMLType(num: number): num is GridEntityXMLType {
819
- return GRID_ENTITY_XML_TYPES_SET.has(num); // eslint-disable-line isaacscript/strict-enums
819
+ return GRID_ENTITY_XML_TYPES_SET.has(num); // eslint-disable-line complete/strict-enums
820
820
  }
821
821
 
822
822
  /**
@@ -861,6 +861,7 @@ export function isPostBossVoidPortal(gridEntity: GridEntity): boolean {
861
861
 
862
862
  return (
863
863
  saveState.Type === GridEntityType.TRAPDOOR &&
864
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
864
865
  saveState.Variant === TrapdoorVariant.VOID_PORTAL &&
865
866
  saveState.VarData === 1
866
867
  );
@@ -1042,6 +1043,7 @@ export function removeGridEntity(
1042
1043
  // corresponding effect.
1043
1044
  if (gridEntityType === GridEntityType.STATUE) {
1044
1045
  const effectVariant =
1046
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
1045
1047
  variant === StatueVariant.DEVIL
1046
1048
  ? EffectVariant.DEVIL
1047
1049
  : EffectVariant.ANGEL;
@@ -1147,15 +1149,19 @@ export function spawnGiantPoop(topLeftGridIndex: int): boolean {
1147
1149
  return (
1148
1150
  topLeft !== undefined &&
1149
1151
  topLeft.GetType() === GridEntityType.POOP &&
1152
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
1150
1153
  topLeft.GetVariant() === PoopGridEntityVariant.GIANT_TOP_LEFT &&
1151
1154
  topRight !== undefined &&
1152
1155
  topRight.GetType() === GridEntityType.POOP &&
1156
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
1153
1157
  topRight.GetVariant() === PoopGridEntityVariant.GIANT_TOP_RIGHT &&
1154
1158
  bottomLeft !== undefined &&
1155
1159
  bottomLeft.GetType() === GridEntityType.POOP &&
1160
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
1156
1161
  bottomLeft.GetVariant() === PoopGridEntityVariant.GIANT_BOTTOM_LEFT &&
1157
1162
  bottomRight !== undefined &&
1158
1163
  bottomRight.GetType() === GridEntityType.POOP &&
1164
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
1159
1165
  bottomRight.GetVariant() === PoopGridEntityVariant.GIANT_BOTTOM_RIGHT
1160
1166
  );
1161
1167
  }
@@ -1219,6 +1225,18 @@ export function spawnGridEntityWithVariant(
1219
1225
  ): GridEntity | undefined {
1220
1226
  const room = game.GetRoom();
1221
1227
 
1228
+ // We do an explicit check to prevent run-time errors in Lua environments.
1229
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1230
+ if (gridIndexOrPosition === undefined) {
1231
+ const gridEntityID = getGridEntityIDFromConstituents(
1232
+ gridEntityType,
1233
+ variant,
1234
+ );
1235
+ error(
1236
+ `Failed to spawn grid entity ${gridEntityID} since an undefined position was passed to the "spawnGridEntityWithVariant" function.`,
1237
+ );
1238
+ }
1239
+
1222
1240
  const existingGridEntity = isVector(gridIndexOrPosition)
1223
1241
  ? room.GetGridEntityFromPos(gridIndexOrPosition)
1224
1242
  : room.GetGridEntity(gridIndexOrPosition);
@@ -13,19 +13,21 @@ function tryEncode(this: void, luaTable: unknown) {
13
13
  * Converts a JSON string to a Lua table.
14
14
  *
15
15
  * In most cases, this function will be used for reading data from a "save#.dat" file. If decoding
16
- * fails, it will return a blank Lua table instead of throwing an error. (This allows execution to
17
- * continue in cases where users have no current save data or have manually removed their existing
18
- * save data.)
16
+ * fails, it will return undefined instead of throwing an error. (This allows execution to continue
17
+ * in cases where users have no current save data or have manually removed their existing save
18
+ * data.)
19
19
  *
20
20
  * Under the hood, this uses a custom JSON parser that was measured to be 11.8 times faster than the
21
21
  * vanilla JSON parser.
22
22
  */
23
- export function jsonDecode(jsonString: string): LuaMap<AnyNotNil, unknown> {
23
+ export function jsonDecode(
24
+ jsonString: string,
25
+ ): LuaMap<AnyNotNil, unknown> | undefined {
24
26
  const [ok, luaTableOrErrMsg] = pcall(tryDecode, jsonString);
25
27
  if (!ok) {
26
28
  // Instead of throwing an error, continue execution of the callback.
27
29
  logError(`Failed to convert the JSON string to a Lua table: ${jsonString}`);
28
- return new LuaMap();
30
+ return undefined;
29
31
  }
30
32
 
31
33
  return luaTableOrErrMsg;
@@ -531,9 +531,7 @@ export function isRedKeyRoom(roomGridIndex: int): boolean {
531
531
  * @param roomGridIndex Optional. Default is the current room index.
532
532
  */
533
533
  export function isRoomInsideGrid(roomGridIndex?: int): boolean {
534
- if (roomGridIndex === undefined) {
535
- roomGridIndex = getRoomGridIndex();
536
- }
534
+ roomGridIndex ??= getRoomGridIndex();
537
535
 
538
536
  return roomGridIndex >= 0 && roomGridIndex <= MAX_LEVEL_GRID_INDEX;
539
537
  }
@@ -567,9 +565,8 @@ export function newRoom(
567
565
  ): int | undefined {
568
566
  const level = game.GetLevel();
569
567
 
570
- if (seedOrRNG === undefined) {
571
- seedOrRNG = level.GetDungeonPlacementSeed();
572
- }
568
+ seedOrRNG ??= level.GetDungeonPlacementSeed();
569
+
573
570
  const rng = isRNG(seedOrRNG) ? seedOrRNG : newRNG(seedOrRNG);
574
571
 
575
572
  const newRoomCandidate = getNewRoomCandidate(rng, ensureDeadEnd);
@@ -222,8 +222,11 @@ function getEntityLogLine(this: void, entity: Entity, num?: int): string {
222
222
  msg += ` - Position: (${entity.Position.X}, ${entity.Position.Y})\n`;
223
223
  msg += ` - Velocity: (${entity.Velocity.X}, ${entity.Velocity.Y})\n`;
224
224
  msg += ` - HP: ${entity.HitPoints} / ${entity.MaxHitPoints}\n`;
225
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
225
226
  msg += ` - Parent: ${entity.Parent}\n`;
227
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
226
228
  msg += ` - Child: ${entity.Child}\n`;
229
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
227
230
  msg += ` - SpawnerEntity: ${entity.SpawnerEntity}\n`;
228
231
  msg += ` - SpawnerType / SpawnerVariant: ${entity.SpawnerType}.${entity.SpawnerVariant}\n`;
229
232
  msg += ` - FrameCount: ${entity.FrameCount}\n`;