isaacscript-common 6.6.0 → 6.6.1-dev.2

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 (820) hide show
  1. package/cachedClasses.d.ts +1 -0
  2. package/cachedClasses.js +59 -0
  3. package/cachedClasses.lua +2 -0
  4. package/callbacks/customRevive.js +153 -0
  5. package/callbacks/customRevive.lua +2 -0
  6. package/callbacks/itemPickup.js +64 -0
  7. package/callbacks/itemPickup.lua +2 -0
  8. package/callbacks/postAmbush.js +54 -0
  9. package/callbacks/postAmbush.lua +2 -0
  10. package/callbacks/postBombExploded.js +20 -0
  11. package/callbacks/postBombExploded.lua +2 -0
  12. package/callbacks/postBombInitLate.js +28 -0
  13. package/callbacks/postBombInitLate.lua +2 -0
  14. package/callbacks/postBoneSwing.js +49 -0
  15. package/callbacks/postBoneSwing.lua +2 -0
  16. package/callbacks/postCollectibleEmpty.js +32 -0
  17. package/callbacks/postCollectibleEmpty.lua +2 -0
  18. package/callbacks/postCollectibleInitFirst.js +27 -0
  19. package/callbacks/postCollectibleInitFirst.lua +2 -0
  20. package/callbacks/postCursedTeleport.js +120 -0
  21. package/callbacks/postCursedTeleport.lua +2 -0
  22. package/callbacks/postCustomDoorEnter.js +205 -0
  23. package/callbacks/postCustomDoorEnter.lua +2 -0
  24. package/callbacks/postDiceRoomActivated.js +39 -0
  25. package/callbacks/postDiceRoomActivated.lua +2 -0
  26. package/callbacks/postDoorRender.js +20 -0
  27. package/callbacks/postDoorRender.lua +2 -0
  28. package/callbacks/postDoorUpdate.js +20 -0
  29. package/callbacks/postDoorUpdate.lua +2 -0
  30. package/callbacks/postEffectInitLate.js +28 -0
  31. package/callbacks/postEffectInitLate.lua +2 -0
  32. package/callbacks/postEffectStateChanged.js +31 -0
  33. package/callbacks/postEffectStateChanged.lua +2 -0
  34. package/callbacks/postEsauJr.js +70 -0
  35. package/callbacks/postEsauJr.lua +2 -0
  36. package/callbacks/postFamiliarInitLate.js +28 -0
  37. package/callbacks/postFamiliarInitLate.lua +2 -0
  38. package/callbacks/postFamiliarStateChanged.js +31 -0
  39. package/callbacks/postFamiliarStateChanged.lua +2 -0
  40. package/callbacks/postFlip.js +59 -0
  41. package/callbacks/postFlip.lua +2 -0
  42. package/callbacks/postGreedModeWave.js +31 -0
  43. package/callbacks/postGreedModeWave.lua +2 -0
  44. package/callbacks/postGridEntity.js +107 -0
  45. package/callbacks/postGridEntity.lua +2 -0
  46. package/callbacks/postGridEntityCollision.js +49 -0
  47. package/callbacks/postGridEntityCollision.lua +2 -0
  48. package/callbacks/postGridEntityRender.js +20 -0
  49. package/callbacks/postGridEntityRender.lua +2 -0
  50. package/callbacks/postHolyMantleRemoved.js +33 -0
  51. package/callbacks/postHolyMantleRemoved.lua +2 -0
  52. package/callbacks/postItemDischarged.js +94 -0
  53. package/callbacks/postItemDischarged.lua +2 -0
  54. package/callbacks/postKnifeInitLate.js +28 -0
  55. package/callbacks/postKnifeInitLate.lua +2 -0
  56. package/callbacks/postLaserInitLate.js +28 -0
  57. package/callbacks/postLaserInitLate.lua +2 -0
  58. package/callbacks/postNPCInitLate.js +28 -0
  59. package/callbacks/postNPCInitLate.lua +2 -0
  60. package/callbacks/postNPCStateChanged.js +31 -0
  61. package/callbacks/postNPCStateChanged.lua +2 -0
  62. package/callbacks/postNewRoomEarly.js +69 -0
  63. package/callbacks/postNewRoomEarly.lua +2 -0
  64. package/callbacks/postPickupCollect.js +37 -0
  65. package/callbacks/postPickupCollect.lua +2 -0
  66. package/callbacks/postPickupInitFirst.js +52 -0
  67. package/callbacks/postPickupInitFirst.lua +2 -0
  68. package/callbacks/postPickupInitLate.js +28 -0
  69. package/callbacks/postPickupInitLate.lua +2 -0
  70. package/callbacks/postPickupStateChanged.js +31 -0
  71. package/callbacks/postPickupStateChanged.lua +2 -0
  72. package/callbacks/postPitRender.js +20 -0
  73. package/callbacks/postPitRender.lua +2 -0
  74. package/callbacks/postPitUpdate.js +20 -0
  75. package/callbacks/postPitUpdate.lua +2 -0
  76. package/callbacks/postPlayerChangeHealth.js +43 -0
  77. package/callbacks/postPlayerChangeHealth.lua +2 -0
  78. package/callbacks/postPlayerChangeType.js +31 -0
  79. package/callbacks/postPlayerChangeType.lua +2 -0
  80. package/callbacks/postPlayerCollectible.js +74 -0
  81. package/callbacks/postPlayerCollectible.lua +2 -0
  82. package/callbacks/postPlayerFatalDamage.js +74 -0
  83. package/callbacks/postPlayerFatalDamage.lua +2 -0
  84. package/callbacks/postPlayerInitLate.js +28 -0
  85. package/callbacks/postPlayerInitLate.lua +2 -0
  86. package/callbacks/postPlayerReordered.js +109 -0
  87. package/callbacks/postPlayerReordered.lua +2 -0
  88. package/callbacks/postPoopRender.js +20 -0
  89. package/callbacks/postPoopRender.lua +2 -0
  90. package/callbacks/postPoopUpdate.js +20 -0
  91. package/callbacks/postPoopUpdate.lua +2 -0
  92. package/callbacks/postPressurePlateRender.js +20 -0
  93. package/callbacks/postPressurePlateRender.lua +2 -0
  94. package/callbacks/postPressurePlateUpdate.js +20 -0
  95. package/callbacks/postPressurePlateUpdate.lua +2 -0
  96. package/callbacks/postProjectileInitLate.js +28 -0
  97. package/callbacks/postProjectileInitLate.lua +2 -0
  98. package/callbacks/postPurchase.js +39 -0
  99. package/callbacks/postPurchase.lua +2 -0
  100. package/callbacks/postRockRender.js +20 -0
  101. package/callbacks/postRockRender.lua +2 -0
  102. package/callbacks/postRockUpdate.js +20 -0
  103. package/callbacks/postRockUpdate.lua +2 -0
  104. package/callbacks/postRoomClearChanged.js +41 -0
  105. package/callbacks/postRoomClearChanged.lua +2 -0
  106. package/callbacks/postSacrifice.js +38 -0
  107. package/callbacks/postSacrifice.lua +2 -0
  108. package/callbacks/postSlotDestroyed.js +64 -0
  109. package/callbacks/postSlotDestroyed.lua +2 -0
  110. package/callbacks/postSlotInitUpdate.js +49 -0
  111. package/callbacks/postSlotInitUpdate.lua +2 -0
  112. package/callbacks/postSlotRender.js +48 -0
  113. package/callbacks/postSlotRender.lua +2 -0
  114. package/callbacks/postSpikesRender.js +20 -0
  115. package/callbacks/postSpikesRender.lua +2 -0
  116. package/callbacks/postSpikesUpdate.js +20 -0
  117. package/callbacks/postSpikesUpdate.lua +2 -0
  118. package/callbacks/postTNTRender.js +20 -0
  119. package/callbacks/postTNTRender.lua +2 -0
  120. package/callbacks/postTNTUpdate.js +20 -0
  121. package/callbacks/postTNTUpdate.lua +2 -0
  122. package/callbacks/postTearInitLate.js +28 -0
  123. package/callbacks/postTearInitLate.lua +2 -0
  124. package/callbacks/postTearInitVeryLate.js +32 -0
  125. package/callbacks/postTearInitVeryLate.lua +2 -0
  126. package/callbacks/postTransformation.js +37 -0
  127. package/callbacks/postTransformation.lua +2 -0
  128. package/callbacks/postTrinketBreak.js +64 -0
  129. package/callbacks/postTrinketBreak.lua +2 -0
  130. package/callbacks/preBerserkDeath.js +35 -0
  131. package/callbacks/preBerserkDeath.lua +2 -0
  132. package/callbacks/preNewLevel.js +45 -0
  133. package/callbacks/preNewLevel.lua +2 -0
  134. package/callbacks/reorderedCallbacks.js +136 -0
  135. package/callbacks/reorderedCallbacks.lua +2 -0
  136. package/callbacks/subscriptions/postAmbushFinished.js +20 -0
  137. package/callbacks/subscriptions/postAmbushFinished.lua +2 -0
  138. package/callbacks/subscriptions/postAmbushStarted.js +20 -0
  139. package/callbacks/subscriptions/postAmbushStarted.lua +2 -0
  140. package/callbacks/subscriptions/postBombInitLate.js +20 -0
  141. package/callbacks/subscriptions/postBombInitLate.lua +2 -0
  142. package/callbacks/subscriptions/postBoneExploded.js +20 -0
  143. package/callbacks/subscriptions/postBoneExploded.lua +2 -0
  144. package/callbacks/subscriptions/postBoneSwing.js +16 -0
  145. package/callbacks/subscriptions/postBoneSwing.lua +2 -0
  146. package/callbacks/subscriptions/postCollectibleEmpty.js +21 -0
  147. package/callbacks/subscriptions/postCollectibleEmpty.lua +2 -0
  148. package/callbacks/subscriptions/postCollectibleInitFirst.js +21 -0
  149. package/callbacks/subscriptions/postCollectibleInitFirst.lua +2 -0
  150. package/callbacks/subscriptions/postCursedTeleport.js +16 -0
  151. package/callbacks/subscriptions/postCursedTeleport.lua +2 -0
  152. package/callbacks/subscriptions/postCustomDoorEnter.js +21 -0
  153. package/callbacks/subscriptions/postCustomDoorEnter.lua +2 -0
  154. package/callbacks/subscriptions/postCustomRevive.js +21 -0
  155. package/callbacks/subscriptions/postCustomRevive.lua +2 -0
  156. package/callbacks/subscriptions/postDiceRoomActivated.js +21 -0
  157. package/callbacks/subscriptions/postDiceRoomActivated.lua +2 -0
  158. package/callbacks/subscriptions/postDoorRender.js +22 -0
  159. package/callbacks/subscriptions/postDoorRender.lua +2 -0
  160. package/callbacks/subscriptions/postDoorUpdate.js +22 -0
  161. package/callbacks/subscriptions/postDoorUpdate.lua +2 -0
  162. package/callbacks/subscriptions/postEffectInitLate.js +20 -0
  163. package/callbacks/subscriptions/postEffectInitLate.lua +2 -0
  164. package/callbacks/subscriptions/postEffectStateChanged.js +20 -0
  165. package/callbacks/subscriptions/postEffectStateChanged.lua +2 -0
  166. package/callbacks/subscriptions/postEsauJr.js +16 -0
  167. package/callbacks/subscriptions/postEsauJr.lua +2 -0
  168. package/callbacks/subscriptions/postFamiliarInitLate.js +20 -0
  169. package/callbacks/subscriptions/postFamiliarInitLate.lua +2 -0
  170. package/callbacks/subscriptions/postFamiliarStateChanged.js +20 -0
  171. package/callbacks/subscriptions/postFamiliarStateChanged.lua +2 -0
  172. package/callbacks/subscriptions/postFirstEsauJr.js +16 -0
  173. package/callbacks/subscriptions/postFirstEsauJr.lua +2 -0
  174. package/callbacks/subscriptions/postFirstFlip.js +16 -0
  175. package/callbacks/subscriptions/postFirstFlip.lua +2 -0
  176. package/callbacks/subscriptions/postFlip.js +16 -0
  177. package/callbacks/subscriptions/postFlip.lua +2 -0
  178. package/callbacks/subscriptions/postGameStartedReordered.js +16 -0
  179. package/callbacks/subscriptions/postGameStartedReordered.lua +2 -0
  180. package/callbacks/subscriptions/postGreedModeWave.js +16 -0
  181. package/callbacks/subscriptions/postGreedModeWave.lua +2 -0
  182. package/callbacks/subscriptions/postGridEntityBroken.js +28 -0
  183. package/callbacks/subscriptions/postGridEntityBroken.lua +2 -0
  184. package/callbacks/subscriptions/postGridEntityCollision.js +28 -0
  185. package/callbacks/subscriptions/postGridEntityCollision.lua +2 -0
  186. package/callbacks/subscriptions/postGridEntityInit.js +28 -0
  187. package/callbacks/subscriptions/postGridEntityInit.lua +2 -0
  188. package/callbacks/subscriptions/postGridEntityRemove.js +26 -0
  189. package/callbacks/subscriptions/postGridEntityRemove.lua +2 -0
  190. package/callbacks/subscriptions/postGridEntityRender.js +28 -0
  191. package/callbacks/subscriptions/postGridEntityRender.lua +2 -0
  192. package/callbacks/subscriptions/postGridEntityStateChanged.js +28 -0
  193. package/callbacks/subscriptions/postGridEntityStateChanged.lua +2 -0
  194. package/callbacks/subscriptions/postGridEntityUpdate.js +28 -0
  195. package/callbacks/subscriptions/postGridEntityUpdate.lua +2 -0
  196. package/callbacks/subscriptions/postHolyMantleRemoved.js +25 -0
  197. package/callbacks/subscriptions/postHolyMantleRemoved.lua +2 -0
  198. package/callbacks/subscriptions/postItemDischarged.js +21 -0
  199. package/callbacks/subscriptions/postItemDischarged.lua +2 -0
  200. package/callbacks/subscriptions/postItemPickup.js +25 -0
  201. package/callbacks/subscriptions/postItemPickup.lua +2 -0
  202. package/callbacks/subscriptions/postKnifeInitLate.js +20 -0
  203. package/callbacks/subscriptions/postKnifeInitLate.lua +2 -0
  204. package/callbacks/subscriptions/postLaserInitLate.js +20 -0
  205. package/callbacks/subscriptions/postLaserInitLate.lua +2 -0
  206. package/callbacks/subscriptions/postNPCInitLate.js +20 -0
  207. package/callbacks/subscriptions/postNPCInitLate.lua +2 -0
  208. package/callbacks/subscriptions/postNPCStateChanged.js +24 -0
  209. package/callbacks/subscriptions/postNPCStateChanged.lua +2 -0
  210. package/callbacks/subscriptions/postNewLevelReordered.js +16 -0
  211. package/callbacks/subscriptions/postNewLevelReordered.lua +2 -0
  212. package/callbacks/subscriptions/postNewRoomEarly.js +16 -0
  213. package/callbacks/subscriptions/postNewRoomEarly.lua +2 -0
  214. package/callbacks/subscriptions/postNewRoomReordered.js +16 -0
  215. package/callbacks/subscriptions/postNewRoomReordered.lua +2 -0
  216. package/callbacks/subscriptions/postPEffectUpdateReordered.js +25 -0
  217. package/callbacks/subscriptions/postPEffectUpdateReordered.lua +2 -0
  218. package/callbacks/subscriptions/postPickupCollect.js +20 -0
  219. package/callbacks/subscriptions/postPickupCollect.lua +2 -0
  220. package/callbacks/subscriptions/postPickupInitFirst.js +20 -0
  221. package/callbacks/subscriptions/postPickupInitFirst.lua +2 -0
  222. package/callbacks/subscriptions/postPickupInitLate.js +20 -0
  223. package/callbacks/subscriptions/postPickupInitLate.lua +2 -0
  224. package/callbacks/subscriptions/postPickupStateChanged.js +20 -0
  225. package/callbacks/subscriptions/postPickupStateChanged.lua +2 -0
  226. package/callbacks/subscriptions/postPitRender.js +22 -0
  227. package/callbacks/subscriptions/postPitRender.lua +2 -0
  228. package/callbacks/subscriptions/postPitUpdate.js +22 -0
  229. package/callbacks/subscriptions/postPitUpdate.lua +2 -0
  230. package/callbacks/subscriptions/postPlayerChangeHealth.js +25 -0
  231. package/callbacks/subscriptions/postPlayerChangeHealth.lua +2 -0
  232. package/callbacks/subscriptions/postPlayerChangeType.js +20 -0
  233. package/callbacks/subscriptions/postPlayerChangeType.lua +2 -0
  234. package/callbacks/subscriptions/postPlayerCollectibleAdded.js +21 -0
  235. package/callbacks/subscriptions/postPlayerCollectibleAdded.lua +2 -0
  236. package/callbacks/subscriptions/postPlayerCollectibleRemoved.js +21 -0
  237. package/callbacks/subscriptions/postPlayerCollectibleRemoved.lua +2 -0
  238. package/callbacks/subscriptions/postPlayerFatalDamage.js +29 -0
  239. package/callbacks/subscriptions/postPlayerFatalDamage.lua +2 -0
  240. package/callbacks/subscriptions/postPlayerInitLate.js +25 -0
  241. package/callbacks/subscriptions/postPlayerInitLate.lua +2 -0
  242. package/callbacks/subscriptions/postPlayerInitReordered.js +25 -0
  243. package/callbacks/subscriptions/postPlayerInitReordered.lua +2 -0
  244. package/callbacks/subscriptions/postPlayerRenderReordered.js +25 -0
  245. package/callbacks/subscriptions/postPlayerRenderReordered.lua +2 -0
  246. package/callbacks/subscriptions/postPlayerUpdateReordered.js +25 -0
  247. package/callbacks/subscriptions/postPlayerUpdateReordered.lua +2 -0
  248. package/callbacks/subscriptions/postPoopRender.js +22 -0
  249. package/callbacks/subscriptions/postPoopRender.lua +2 -0
  250. package/callbacks/subscriptions/postPoopUpdate.js +22 -0
  251. package/callbacks/subscriptions/postPoopUpdate.lua +2 -0
  252. package/callbacks/subscriptions/postPressurePlateRender.js +22 -0
  253. package/callbacks/subscriptions/postPressurePlateRender.lua +2 -0
  254. package/callbacks/subscriptions/postPressurePlateUpdate.js +22 -0
  255. package/callbacks/subscriptions/postPressurePlateUpdate.lua +2 -0
  256. package/callbacks/subscriptions/postProjectileInitLate.js +21 -0
  257. package/callbacks/subscriptions/postProjectileInitLate.lua +2 -0
  258. package/callbacks/subscriptions/postPurchase.js +16 -0
  259. package/callbacks/subscriptions/postPurchase.lua +2 -0
  260. package/callbacks/subscriptions/postRockRender.js +22 -0
  261. package/callbacks/subscriptions/postRockRender.lua +2 -0
  262. package/callbacks/subscriptions/postRockUpdate.js +22 -0
  263. package/callbacks/subscriptions/postRockUpdate.lua +2 -0
  264. package/callbacks/subscriptions/postRoomClearChanged.js +20 -0
  265. package/callbacks/subscriptions/postRoomClearChanged.lua +2 -0
  266. package/callbacks/subscriptions/postSacrifice.js +25 -0
  267. package/callbacks/subscriptions/postSacrifice.lua +2 -0
  268. package/callbacks/subscriptions/postSlotAnimationChanged.js +20 -0
  269. package/callbacks/subscriptions/postSlotAnimationChanged.lua +2 -0
  270. package/callbacks/subscriptions/postSlotDestroyed.js +26 -0
  271. package/callbacks/subscriptions/postSlotDestroyed.lua +2 -0
  272. package/callbacks/subscriptions/postSlotInit.js +20 -0
  273. package/callbacks/subscriptions/postSlotInit.lua +2 -0
  274. package/callbacks/subscriptions/postSlotRender.js +20 -0
  275. package/callbacks/subscriptions/postSlotRender.lua +2 -0
  276. package/callbacks/subscriptions/postSlotUpdate.js +20 -0
  277. package/callbacks/subscriptions/postSlotUpdate.lua +2 -0
  278. package/callbacks/subscriptions/postSpikesRender.js +22 -0
  279. package/callbacks/subscriptions/postSpikesRender.lua +2 -0
  280. package/callbacks/subscriptions/postSpikesUpdate.js +22 -0
  281. package/callbacks/subscriptions/postSpikesUpdate.lua +2 -0
  282. package/callbacks/subscriptions/postTNTRender.js +22 -0
  283. package/callbacks/subscriptions/postTNTRender.lua +2 -0
  284. package/callbacks/subscriptions/postTNTUpdate.js +22 -0
  285. package/callbacks/subscriptions/postTNTUpdate.lua +2 -0
  286. package/callbacks/subscriptions/postTearInitLate.js +20 -0
  287. package/callbacks/subscriptions/postTearInitLate.lua +2 -0
  288. package/callbacks/subscriptions/postTearInitVeryLate.js +20 -0
  289. package/callbacks/subscriptions/postTearInitVeryLate.lua +2 -0
  290. package/callbacks/subscriptions/postTransformation.js +20 -0
  291. package/callbacks/subscriptions/postTransformation.lua +2 -0
  292. package/callbacks/subscriptions/postTrinketBreak.js +21 -0
  293. package/callbacks/subscriptions/postTrinketBreak.lua +2 -0
  294. package/callbacks/subscriptions/preBerserkDeath.js +26 -0
  295. package/callbacks/subscriptions/preBerserkDeath.lua +2 -0
  296. package/callbacks/subscriptions/preCustomRevive.js +29 -0
  297. package/callbacks/subscriptions/preCustomRevive.lua +2 -0
  298. package/callbacks/subscriptions/preItemPickup.js +25 -0
  299. package/callbacks/subscriptions/preItemPickup.lua +2 -0
  300. package/callbacks/subscriptions/preNewLevel.js +16 -0
  301. package/callbacks/subscriptions/preNewLevel.lua +2 -0
  302. package/classes/DefaultMap.js +145 -0
  303. package/classes/DefaultMap.lua +2 -0
  304. package/classes/ModUpgraded.js +57 -0
  305. package/classes/ModUpgraded.lua +2 -0
  306. package/constants.js +143 -0
  307. package/constants.lua +2 -0
  308. package/constantsFirstLast.js +156 -0
  309. package/constantsFirstLast.lua +2 -0
  310. package/enums/AmbushType.js +6 -0
  311. package/enums/AmbushType.lua +2 -0
  312. package/enums/CornerType.js +8 -0
  313. package/enums/CornerType.lua +2 -0
  314. package/enums/DecorationVariant.js +11 -0
  315. package/enums/DecorationVariant.lua +2 -0
  316. package/enums/HealthType.js +18 -0
  317. package/enums/HealthType.lua +2 -0
  318. package/enums/ModCallbackCustom.js +1213 -0
  319. package/enums/ModCallbackCustom.lua +2 -0
  320. package/enums/PocketItemType.js +10 -0
  321. package/enums/PocketItemType.lua +2 -0
  322. package/enums/RockAltType.js +9 -0
  323. package/enums/RockAltType.lua +2 -0
  324. package/enums/SerializationType.js +7 -0
  325. package/enums/SerializationType.lua +2 -0
  326. package/enums/SlotDestructionType.js +6 -0
  327. package/enums/SlotDestructionType.lua +2 -0
  328. package/enums/private/CopyableIsaacAPIClassType.js +9 -0
  329. package/enums/private/CopyableIsaacAPIClassType.lua +2 -0
  330. package/enums/private/SaveDataKey.js +8 -0
  331. package/enums/private/SaveDataKey.lua +2 -0
  332. package/enums/private/SerializationBrand.js +41 -0
  333. package/enums/private/SerializationBrand.lua +2 -0
  334. package/features/characterHealthConversion.js +86 -0
  335. package/features/characterHealthConversion.lua +2 -0
  336. package/features/characterStats.js +52 -0
  337. package/features/characterStats.lua +2 -0
  338. package/features/collectibleItemPoolType.js +45 -0
  339. package/features/collectibleItemPoolType.lua +2 -0
  340. package/features/customGridEntity.js +148 -0
  341. package/features/customGridEntity.lua +2 -0
  342. package/features/customStage/backdrop.js +191 -0
  343. package/features/customStage/backdrop.lua +9 -7
  344. package/features/customStage/customStageConstants.js +2 -0
  345. package/features/customStage/customStageConstants.lua +2 -0
  346. package/features/customStage/exports.js +147 -0
  347. package/features/customStage/exports.lua +8 -1
  348. package/features/customStage/gridEntities.js +138 -0
  349. package/features/customStage/gridEntities.lua +2 -0
  350. package/features/customStage/init.js +104 -0
  351. package/features/customStage/init.lua +4 -9
  352. package/features/customStage/metadata.json +1 -0
  353. package/features/customStage/metadata.lua +2 -0
  354. package/features/customStage/shadows.d.ts +0 -1
  355. package/features/customStage/shadows.js +63 -0
  356. package/features/customStage/shadows.lua +31 -19
  357. package/features/customStage/streakText.d.ts +1 -1
  358. package/features/customStage/streakText.js +35 -0
  359. package/features/customStage/streakText.lua +14 -3
  360. package/features/customStage/util.js +36 -0
  361. package/features/customStage/util.lua +2 -0
  362. package/features/customStage/v.js +18 -0
  363. package/features/customStage/v.lua +2 -0
  364. package/features/customStage/versusScreen.js +184 -0
  365. package/features/customStage/versusScreen.lua +8 -1
  366. package/features/debugDisplay/debugDisplay.js +183 -0
  367. package/features/debugDisplay/debugDisplay.lua +2 -0
  368. package/features/debugDisplay/exports.js +441 -0
  369. package/features/debugDisplay/exports.lua +2 -0
  370. package/features/debugDisplay/v.d.ts +18 -0
  371. package/features/debugDisplay/v.js +61 -0
  372. package/features/debugDisplay/v.lua +2 -0
  373. package/features/deployJSONRoom.js +532 -0
  374. package/features/deployJSONRoom.lua +2 -0
  375. package/features/disableAllSound.js +63 -0
  376. package/features/disableAllSound.lua +2 -0
  377. package/features/disableInputs.js +130 -0
  378. package/features/disableInputs.lua +2 -0
  379. package/features/extraConsoleCommands/commandsDisplay.js +236 -0
  380. package/features/extraConsoleCommands/commandsDisplay.lua +2 -0
  381. package/features/extraConsoleCommands/commandsSubroutines.js +109 -0
  382. package/features/extraConsoleCommands/commandsSubroutines.lua +2 -0
  383. package/features/extraConsoleCommands/exports.js +53 -0
  384. package/features/extraConsoleCommands/exports.lua +2 -0
  385. package/features/extraConsoleCommands/init.js +239 -0
  386. package/features/extraConsoleCommands/init.lua +2 -0
  387. package/features/extraConsoleCommands/listCommands.js +1081 -0
  388. package/features/extraConsoleCommands/listCommands.lua +2 -0
  389. package/features/extraConsoleCommands/v.js +25 -0
  390. package/features/extraConsoleCommands/v.lua +2 -0
  391. package/features/fadeInRemover.js +51 -0
  392. package/features/fadeInRemover.lua +2 -0
  393. package/features/fastReset.js +61 -0
  394. package/features/fastReset.lua +2 -0
  395. package/features/forgottenSwitch.js +33 -0
  396. package/features/forgottenSwitch.lua +2 -0
  397. package/features/pause.js +68 -0
  398. package/features/pause.lua +2 -0
  399. package/features/persistentEntities.js +120 -0
  400. package/features/persistentEntities.lua +2 -0
  401. package/features/playerInventory.js +89 -0
  402. package/features/playerInventory.lua +2 -0
  403. package/features/ponyDetection.js +63 -0
  404. package/features/ponyDetection.lua +2 -0
  405. package/features/preventCollectibleRotation.js +81 -0
  406. package/features/preventCollectibleRotation.lua +2 -0
  407. package/features/registerHotkey.js +91 -0
  408. package/features/registerHotkey.lua +2 -0
  409. package/features/roomClearFrame.js +42 -0
  410. package/features/roomClearFrame.lua +2 -0
  411. package/features/runInNFrames.js +189 -0
  412. package/features/runInNFrames.lua +2 -0
  413. package/features/runNextRoom.js +34 -0
  414. package/features/runNextRoom.lua +2 -0
  415. package/features/saveDataManager/exports.js +183 -0
  416. package/features/saveDataManager/exports.lua +2 -0
  417. package/features/saveDataManager/load.js +69 -0
  418. package/features/saveDataManager/load.lua +2 -0
  419. package/features/saveDataManager/main.js +131 -0
  420. package/features/saveDataManager/main.lua +2 -0
  421. package/features/saveDataManager/maps.js +9 -0
  422. package/features/saveDataManager/maps.lua +2 -0
  423. package/features/saveDataManager/merge.js +139 -0
  424. package/features/saveDataManager/merge.lua +2 -0
  425. package/features/saveDataManager/save.js +43 -0
  426. package/features/saveDataManager/save.lua +2 -0
  427. package/features/saveDataManager/saveDataManagerConstants.js +4 -0
  428. package/features/saveDataManager/saveDataManagerConstants.lua +2 -0
  429. package/features/saveDataManager/serializationBrand.js +12 -0
  430. package/features/saveDataManager/serializationBrand.lua +2 -0
  431. package/features/sirenHelpers.js +90 -0
  432. package/features/sirenHelpers.lua +2 -0
  433. package/features/stageHistory.js +43 -0
  434. package/features/stageHistory.lua +2 -0
  435. package/features/taintedLazarusPlayers.js +92 -0
  436. package/features/taintedLazarusPlayers.lua +2 -0
  437. package/featuresInitialized.js +16 -0
  438. package/featuresInitialized.lua +2 -0
  439. package/functions/ambush.js +35 -0
  440. package/functions/ambush.lua +2 -0
  441. package/functions/array.js +423 -0
  442. package/functions/array.lua +2 -0
  443. package/functions/benchmark.js +28 -0
  444. package/functions/benchmark.lua +2 -0
  445. package/functions/bitwise.js +74 -0
  446. package/functions/bitwise.lua +2 -0
  447. package/functions/bombs.js +11 -0
  448. package/functions/bombs.lua +2 -0
  449. package/functions/boss.js +137 -0
  450. package/functions/boss.lua +2 -0
  451. package/functions/cacheFlag.js +11 -0
  452. package/functions/cacheFlag.lua +2 -0
  453. package/functions/cards.js +217 -0
  454. package/functions/cards.lua +2 -0
  455. package/functions/challenges.js +9 -0
  456. package/functions/challenges.lua +2 -0
  457. package/functions/character.js +102 -0
  458. package/functions/character.lua +2 -0
  459. package/functions/charge.js +202 -0
  460. package/functions/charge.lua +2 -0
  461. package/functions/chargeBar.js +44 -0
  462. package/functions/chargeBar.lua +2 -0
  463. package/functions/collectibleCacheFlag.js +68 -0
  464. package/functions/collectibleCacheFlag.lua +2 -0
  465. package/functions/collectibleSet.js +108 -0
  466. package/functions/collectibleSet.lua +2 -0
  467. package/functions/collectibleTag.js +65 -0
  468. package/functions/collectibleTag.lua +2 -0
  469. package/functions/collectibles.js +469 -0
  470. package/functions/collectibles.lua +2 -0
  471. package/functions/color.d.ts +1 -1
  472. package/functions/color.js +60 -0
  473. package/functions/color.lua +2 -0
  474. package/functions/debug.js +60 -0
  475. package/functions/debug.lua +2 -0
  476. package/functions/deepCopy.js +361 -0
  477. package/functions/deepCopy.lua +2 -0
  478. package/functions/deepCopyTests.js +308 -0
  479. package/functions/deepCopyTests.lua +2 -0
  480. package/functions/direction.js +41 -0
  481. package/functions/direction.lua +2 -0
  482. package/functions/doors.js +326 -0
  483. package/functions/doors.lua +2 -0
  484. package/functions/easing.js +142 -0
  485. package/functions/easing.lua +2 -0
  486. package/functions/eden.js +32 -0
  487. package/functions/eden.lua +2 -0
  488. package/functions/effects.js +11 -0
  489. package/functions/effects.lua +2 -0
  490. package/functions/entity.js +324 -0
  491. package/functions/entity.lua +2 -0
  492. package/functions/entitySpecific.js +481 -0
  493. package/functions/entitySpecific.lua +2 -0
  494. package/functions/entityTypes.js +6 -0
  495. package/functions/entityTypes.lua +2 -0
  496. package/functions/enums.js +151 -0
  497. package/functions/enums.lua +2 -0
  498. package/functions/familiars.js +85 -0
  499. package/functions/familiars.lua +2 -0
  500. package/functions/flag.js +137 -0
  501. package/functions/flag.lua +2 -0
  502. package/functions/flying.js +88 -0
  503. package/functions/flying.lua +2 -0
  504. package/functions/globals.js +230 -0
  505. package/functions/globals.lua +2 -0
  506. package/functions/gridEntity.js +488 -0
  507. package/functions/gridEntity.lua +2 -0
  508. package/functions/gridEntitySpecific.js +109 -0
  509. package/functions/gridEntitySpecific.lua +2 -0
  510. package/functions/input.js +95 -0
  511. package/functions/input.lua +2 -0
  512. package/functions/isaacAPIClass.js +48 -0
  513. package/functions/isaacAPIClass.lua +2 -0
  514. package/functions/jsonHelpers.js +40 -0
  515. package/functions/jsonHelpers.lua +2 -0
  516. package/functions/jsonRoom.js +132 -0
  517. package/functions/jsonRoom.lua +2 -0
  518. package/functions/kColor.d.ts +1 -1
  519. package/functions/kColor.js +63 -0
  520. package/functions/kColor.lua +2 -0
  521. package/functions/language.js +13 -0
  522. package/functions/language.lua +2 -0
  523. package/functions/level.js +20 -0
  524. package/functions/level.lua +2 -0
  525. package/functions/log.js +567 -0
  526. package/functions/log.lua +2 -0
  527. package/functions/map.js +45 -0
  528. package/functions/map.lua +2 -0
  529. package/functions/math.js +103 -0
  530. package/functions/math.lua +2 -0
  531. package/functions/mergeTests.js +213 -0
  532. package/functions/mergeTests.lua +2 -0
  533. package/functions/minimap.js +80 -0
  534. package/functions/minimap.lua +2 -0
  535. package/functions/nextStage.js +290 -0
  536. package/functions/nextStage.lua +2 -0
  537. package/functions/npc.js +101 -0
  538. package/functions/npc.lua +2 -0
  539. package/functions/pickupVariants.js +47 -0
  540. package/functions/pickupVariants.lua +2 -0
  541. package/functions/pickups.js +219 -0
  542. package/functions/pickups.lua +2 -0
  543. package/functions/pills.js +160 -0
  544. package/functions/pills.lua +2 -0
  545. package/functions/player.js +808 -0
  546. package/functions/player.lua +2 -0
  547. package/functions/playerCenter.js +50 -0
  548. package/functions/playerCenter.lua +2 -0
  549. package/functions/playerDataStructures.js +114 -0
  550. package/functions/playerDataStructures.lua +2 -0
  551. package/functions/playerHealth.js +321 -0
  552. package/functions/playerHealth.lua +2 -0
  553. package/functions/playerIndex.js +160 -0
  554. package/functions/playerIndex.lua +2 -0
  555. package/functions/pocketItems.js +124 -0
  556. package/functions/pocketItems.lua +2 -0
  557. package/functions/positionVelocity.js +136 -0
  558. package/functions/positionVelocity.lua +2 -0
  559. package/functions/random.js +73 -0
  560. package/functions/random.lua +2 -0
  561. package/functions/revive.js +140 -0
  562. package/functions/revive.lua +2 -0
  563. package/functions/rng.d.ts +1 -1
  564. package/functions/rng.js +117 -0
  565. package/functions/rng.lua +2 -0
  566. package/functions/roomData.js +174 -0
  567. package/functions/roomData.lua +2 -0
  568. package/functions/roomGrid.js +81 -0
  569. package/functions/roomGrid.lua +2 -0
  570. package/functions/roomShape.js +99 -0
  571. package/functions/roomShape.lua +2 -0
  572. package/functions/rooms.js +487 -0
  573. package/functions/rooms.lua +2 -0
  574. package/functions/run.js +53 -0
  575. package/functions/run.lua +2 -0
  576. package/functions/saveFile.js +104 -0
  577. package/functions/saveFile.lua +2 -0
  578. package/functions/seeds.js +18 -0
  579. package/functions/seeds.lua +2 -0
  580. package/functions/serialization.js +52 -0
  581. package/functions/serialization.lua +2 -0
  582. package/functions/set.js +99 -0
  583. package/functions/set.lua +2 -0
  584. package/functions/sound.js +9 -0
  585. package/functions/sound.lua +2 -0
  586. package/functions/spawnCollectible.js +66 -0
  587. package/functions/spawnCollectible.lua +2 -0
  588. package/functions/sprite.js +80 -0
  589. package/functions/sprite.lua +2 -0
  590. package/functions/stage.js +172 -0
  591. package/functions/stage.lua +2 -0
  592. package/functions/string.js +37 -0
  593. package/functions/string.lua +2 -0
  594. package/functions/table.js +143 -0
  595. package/functions/table.lua +2 -0
  596. package/functions/tears.js +31 -0
  597. package/functions/tears.lua +2 -0
  598. package/functions/transformations.js +101 -0
  599. package/functions/transformations.lua +2 -0
  600. package/functions/trinketCacheFlag.js +46 -0
  601. package/functions/trinketCacheFlag.lua +2 -0
  602. package/functions/trinketGive.js +121 -0
  603. package/functions/trinketGive.lua +2 -0
  604. package/functions/trinkets.js +169 -0
  605. package/functions/trinkets.lua +2 -0
  606. package/functions/tstlClass.js +125 -0
  607. package/functions/tstlClass.lua +2 -0
  608. package/functions/types.js +27 -0
  609. package/functions/types.lua +2 -0
  610. package/functions/ui.js +124 -0
  611. package/functions/ui.lua +2 -0
  612. package/functions/utils.js +172 -0
  613. package/functions/utils.lua +2 -0
  614. package/functions/vector.js +68 -0
  615. package/functions/vector.lua +2 -0
  616. package/index.js +140 -0
  617. package/index.lua +2 -0
  618. package/initCustomCallbacks.js +133 -0
  619. package/initCustomCallbacks.lua +2 -0
  620. package/initFeatures.js +51 -0
  621. package/initFeatures.lua +2 -0
  622. package/interfaces/AddCallbackParameterCustom.js +2 -0
  623. package/interfaces/AddCallbackParameterCustom.lua +2 -0
  624. package/interfaces/ChargeBarSprites.js +2 -0
  625. package/interfaces/ChargeBarSprites.lua +2 -0
  626. package/interfaces/Corner.js +2 -0
  627. package/interfaces/Corner.lua +2 -0
  628. package/interfaces/CustomGridEntityData.js +2 -0
  629. package/interfaces/CustomGridEntityData.lua +2 -0
  630. package/interfaces/CustomStage.js +2 -0
  631. package/interfaces/CustomStage.lua +2 -0
  632. package/interfaces/CustomStageLua.d.ts +64 -24
  633. package/interfaces/CustomStageLua.js +13 -0
  634. package/interfaces/CustomStageLua.lua +2 -0
  635. package/interfaces/JSONRoomsFile.js +2 -0
  636. package/interfaces/JSONRoomsFile.lua +2 -0
  637. package/interfaces/PlayerHealth.js +2 -0
  638. package/interfaces/PlayerHealth.lua +2 -0
  639. package/interfaces/PocketItemDescription.js +2 -0
  640. package/interfaces/PocketItemDescription.lua +2 -0
  641. package/interfaces/SaveData.js +2 -0
  642. package/interfaces/SaveData.lua +2 -0
  643. package/interfaces/TrinketSituation.js +2 -0
  644. package/interfaces/TrinketSituation.lua +2 -0
  645. package/interfaces/private/TSTLClassMetatable.js +2 -0
  646. package/interfaces/private/TSTLClassMetatable.lua +2 -0
  647. package/maps/PHDPillConversions.js +20 -0
  648. package/maps/PHDPillConversions.lua +2 -0
  649. package/maps/cardMap.js +208 -0
  650. package/maps/cardMap.lua +2 -0
  651. package/maps/characterMap.js +86 -0
  652. package/maps/characterMap.lua +2 -0
  653. package/maps/collectibleDescriptionMap.js +728 -0
  654. package/maps/collectibleDescriptionMap.lua +2 -0
  655. package/maps/collectibleNameMap.js +727 -0
  656. package/maps/collectibleNameMap.lua +2 -0
  657. package/maps/defaultPlayerStatMap.js +14 -0
  658. package/maps/defaultPlayerStatMap.lua +2 -0
  659. package/maps/falsePHDPillConversions.js +34 -0
  660. package/maps/falsePHDPillConversions.lua +2 -0
  661. package/maps/gridEntityTypeToBrokenStateMap.js +29 -0
  662. package/maps/gridEntityTypeToBrokenStateMap.lua +2 -0
  663. package/maps/gridEntityXMLMap.js +128 -0
  664. package/maps/gridEntityXMLMap.lua +2 -0
  665. package/maps/pillEffectMap.js +88 -0
  666. package/maps/pillEffectMap.lua +2 -0
  667. package/maps/roomShapeToTopLeftWallGridIndexMap.js +14 -0
  668. package/maps/roomShapeToTopLeftWallGridIndexMap.lua +2 -0
  669. package/maps/roomTypeMap.js +39 -0
  670. package/maps/roomTypeMap.lua +2 -0
  671. package/maps/trinketDescriptionMap.js +196 -0
  672. package/maps/trinketDescriptionMap.lua +2 -0
  673. package/maps/trinketNameMap.js +195 -0
  674. package/maps/trinketNameMap.lua +2 -0
  675. package/objects/LRoomShapeToRectangles.js +33 -0
  676. package/objects/LRoomShapeToRectangles.lua +2 -0
  677. package/objects/backdropTypeToRockAltType.js +66 -0
  678. package/objects/backdropTypeToRockAltType.lua +2 -0
  679. package/objects/bossNamePNGFileNames.js +112 -0
  680. package/objects/bossNamePNGFileNames.lua +2 -0
  681. package/objects/bossPortraitPNGFileNames.js +115 -0
  682. package/objects/bossPortraitPNGFileNames.lua +2 -0
  683. package/objects/callbackRegisterFunctions.js +170 -0
  684. package/objects/callbackRegisterFunctions.lua +2 -0
  685. package/objects/cardDescriptions.js +104 -0
  686. package/objects/cardDescriptions.lua +2 -0
  687. package/objects/cardNames.js +104 -0
  688. package/objects/cardNames.lua +2 -0
  689. package/objects/cardTypes.js +103 -0
  690. package/objects/cardTypes.lua +2 -0
  691. package/objects/challengeNames.js +51 -0
  692. package/objects/challengeNames.lua +2 -0
  693. package/objects/characterNames.js +46 -0
  694. package/objects/characterNames.lua +2 -0
  695. package/objects/coinSubTypeToValue.js +13 -0
  696. package/objects/coinSubTypeToValue.lua +2 -0
  697. package/objects/colors.d.ts +1 -0
  698. package/objects/colors.js +24 -0
  699. package/objects/colors.lua +2 -0
  700. package/objects/directionNames.js +9 -0
  701. package/objects/directionNames.lua +2 -0
  702. package/objects/directionToDegrees.js +9 -0
  703. package/objects/directionToDegrees.lua +2 -0
  704. package/objects/directionToVector.js +10 -0
  705. package/objects/directionToVector.lua +2 -0
  706. package/objects/doorSlotFlagToDoorSlot.js +13 -0
  707. package/objects/doorSlotFlagToDoorSlot.lua +2 -0
  708. package/objects/doorSlotToDirection.js +13 -0
  709. package/objects/doorSlotToDirection.lua +2 -0
  710. package/objects/doorSlotToDoorSlotFlag.js +13 -0
  711. package/objects/doorSlotToDoorSlotFlag.lua +2 -0
  712. package/objects/isaacAPIClassTypeToBrand.js +9 -0
  713. package/objects/isaacAPIClassTypeToBrand.lua +2 -0
  714. package/objects/isaacAPIClassTypeToCopyFunction.js +12 -0
  715. package/objects/isaacAPIClassTypeToCopyFunction.lua +2 -0
  716. package/objects/languageNames.js +11 -0
  717. package/objects/languageNames.lua +2 -0
  718. package/objects/oppositeDoorSlots.js +13 -0
  719. package/objects/oppositeDoorSlots.lua +2 -0
  720. package/objects/pillEffectClasses.js +56 -0
  721. package/objects/pillEffectClasses.lua +2 -0
  722. package/objects/pillEffectNames.js +55 -0
  723. package/objects/pillEffectNames.lua +2 -0
  724. package/objects/pillEffectTypes.js +55 -0
  725. package/objects/pillEffectTypes.lua +2 -0
  726. package/objects/playerNamePNGFileNames.js +55 -0
  727. package/objects/playerNamePNGFileNames.lua +2 -0
  728. package/objects/playerPortraitPNGFileNames.js +52 -0
  729. package/objects/playerPortraitPNGFileNames.lua +2 -0
  730. package/objects/roomShapeBounds.js +46 -0
  731. package/objects/roomShapeBounds.lua +2 -0
  732. package/objects/roomShapeCorners.js +268 -0
  733. package/objects/roomShapeCorners.lua +2 -0
  734. package/objects/roomShapeLayoutSizes.js +39 -0
  735. package/objects/roomShapeLayoutSizes.lua +2 -0
  736. package/objects/roomShapeToBottomRightPosition.js +22 -0
  737. package/objects/roomShapeToBottomRightPosition.lua +2 -0
  738. package/objects/roomShapeToDoorSlotCoordinates.js +109 -0
  739. package/objects/roomShapeToDoorSlotCoordinates.lua +2 -0
  740. package/objects/roomShapeToDoorSlots.js +69 -0
  741. package/objects/roomShapeToDoorSlots.lua +2 -0
  742. package/objects/roomShapeToDoorSlotsToGridIndexDelta.js +113 -0
  743. package/objects/roomShapeToDoorSlotsToGridIndexDelta.lua +2 -0
  744. package/objects/roomShapeToGridWidth.js +18 -0
  745. package/objects/roomShapeToGridWidth.lua +2 -0
  746. package/objects/roomShapeToTopLeftPosition.js +23 -0
  747. package/objects/roomShapeToTopLeftPosition.lua +2 -0
  748. package/objects/roomShapeVolumes.js +30 -0
  749. package/objects/roomShapeVolumes.lua +2 -0
  750. package/objects/roomTypeGotoPrefixes.js +33 -0
  751. package/objects/roomTypeGotoPrefixes.lua +2 -0
  752. package/objects/roomTypeNames.js +34 -0
  753. package/objects/roomTypeNames.lua +2 -0
  754. package/objects/serializedIsaacAPIClassTypeToIdentityFunction.js +12 -0
  755. package/objects/serializedIsaacAPIClassTypeToIdentityFunction.lua +2 -0
  756. package/objects/stageTypeSuffixes.js +10 -0
  757. package/objects/stageTypeSuffixes.lua +2 -0
  758. package/objects/stageTypeToLetter.js +12 -0
  759. package/objects/stageTypeToLetter.lua +2 -0
  760. package/objects/transformationNames.js +18 -0
  761. package/objects/transformationNames.lua +2 -0
  762. package/objects/versusScreenBackgroundColors.js +36 -0
  763. package/objects/versusScreenBackgroundColors.lua +2 -0
  764. package/objects/versusScreenDirtSpotColors.js +36 -0
  765. package/objects/versusScreenDirtSpotColors.lua +2 -0
  766. package/package.json +1 -1
  767. package/patchErrorFunctions.js +67 -0
  768. package/patchErrorFunctions.lua +2 -0
  769. package/sets/LRoomShapesSet.js +8 -0
  770. package/sets/LRoomShapesSet.lua +2 -0
  771. package/sets/bossSets.js +374 -0
  772. package/sets/bossSets.lua +2 -0
  773. package/sets/charactersThatStartWithAnActiveItemSet.js +15 -0
  774. package/sets/charactersThatStartWithAnActiveItemSet.lua +2 -0
  775. package/sets/charactersWithBlackHeartFromEternalHeartSet.js +6 -0
  776. package/sets/charactersWithBlackHeartFromEternalHeartSet.lua +2 -0
  777. package/sets/charactersWithFreeDevilDealsSet.js +3 -0
  778. package/sets/charactersWithFreeDevilDealsSet.lua +2 -0
  779. package/sets/charactersWithNoRedHeartsSet.js +16 -0
  780. package/sets/charactersWithNoRedHeartsSet.lua +2 -0
  781. package/sets/charactersWithNoSoulHeartsSet.js +13 -0
  782. package/sets/charactersWithNoSoulHeartsSet.lua +2 -0
  783. package/sets/chestPickupVariantsSet.js +16 -0
  784. package/sets/chestPickupVariantsSet.lua +2 -0
  785. package/sets/consoleCommandsSet.js +61 -0
  786. package/sets/consoleCommandsSet.lua +2 -0
  787. package/sets/familiarsThatShootPlayerTearsSet.js +12 -0
  788. package/sets/familiarsThatShootPlayerTearsSet.lua +2 -0
  789. package/sets/lostStyleCharactersSet.js +13 -0
  790. package/sets/lostStyleCharactersSet.lua +2 -0
  791. package/sets/mineShaftRoomSubTypesSet.js +9 -0
  792. package/sets/mineShaftRoomSubTypesSet.lua +2 -0
  793. package/sets/narrowRoomShapesSet.js +8 -0
  794. package/sets/narrowRoomShapesSet.lua +2 -0
  795. package/sets/redHeartSubTypesSet.js +7 -0
  796. package/sets/redHeartSubTypesSet.lua +2 -0
  797. package/sets/sinEntityTypesSet.js +11 -0
  798. package/sets/sinEntityTypesSet.lua +2 -0
  799. package/sets/singleUseActiveCollectibleTypesSet.js +12 -0
  800. package/sets/singleUseActiveCollectibleTypesSet.lua +2 -0
  801. package/sets/storyBossesSet.js +17 -0
  802. package/sets/storyBossesSet.lua +2 -0
  803. package/shaderCrashFix.js +17 -0
  804. package/shaderCrashFix.lua +2 -0
  805. package/types/AnyEntity.js +2 -0
  806. package/types/AnyEntity.lua +2 -0
  807. package/types/CollectibleIndex.js +2 -0
  808. package/types/CollectibleIndex.lua +2 -0
  809. package/types/PickingUpItem.js +38 -0
  810. package/types/PickingUpItem.lua +2 -0
  811. package/types/PlayerIndex.js +2 -0
  812. package/types/PlayerIndex.lua +2 -0
  813. package/types/private/IsaacAPIClass.js +2 -0
  814. package/types/private/IsaacAPIClass.lua +2 -0
  815. package/types/private/SerializedIsaacAPIClass.js +2 -0
  816. package/types/private/SerializedIsaacAPIClass.lua +2 -0
  817. package/types/private/TSTLClass.js +2 -0
  818. package/types/private/TSTLClass.lua +2 -0
  819. package/upgradeMod.js +47 -0
  820. package/upgradeMod.lua +2 -0
@@ -0,0 +1,423 @@
1
+ import { getRandomInt } from "./random";
2
+ import { getRandomSeed, isRNG, newRNG } from "./rng";
3
+ import { isNumber, isTable } from "./types";
4
+ import { erange, repeat } from "./utils";
5
+ /**
6
+ * Helper function for determining if two arrays contain the exact same elements. Note that this
7
+ * only performs a shallow comparison.
8
+ */
9
+ export function arrayEquals(array1, array2) {
10
+ if (array1.length !== array2.length) {
11
+ return false;
12
+ }
13
+ return array1.every((array1Element, i) => {
14
+ const array2Element = array2[i];
15
+ return array1Element === array2Element;
16
+ });
17
+ }
18
+ /**
19
+ * Shallow copies and removes the specified element(s) from the array. Returns the copied array. If
20
+ * the specified element(s) are not found in the array, it will simply return a shallow copy of the
21
+ * array.
22
+ *
23
+ * This function is variadic, meaning that you can specify N arguments to remove N elements.
24
+ *
25
+ * If there is more than one matching element in the array, this function will only remove the first
26
+ * matching element. If you want to remove all of the elements, use the `arrayRemoveAll` function
27
+ * instead.
28
+ */
29
+ export function arrayRemove(originalArray, ...elementsToRemove) {
30
+ const array = copyArray(originalArray);
31
+ arrayRemoveInPlace(array, ...elementsToRemove);
32
+ return array;
33
+ }
34
+ /**
35
+ * Shallow copies and removes the specified element(s) from the array. Returns the copied array. If
36
+ * the specified element(s) are not found in the array, it will simply return a shallow copy of the
37
+ * array.
38
+ *
39
+ * This function is variadic, meaning that you can specify N arguments to remove N elements.
40
+ *
41
+ * If there is more than one matching element in the array, this function will remove every matching
42
+ * element. If you want to only remove the first matching element, use the `arrayRemove` function
43
+ * instead.
44
+ */
45
+ export function arrayRemoveAll(originalArray, ...elementsToRemove) {
46
+ const array = copyArray(originalArray);
47
+ arrayRemoveAllInPlace(array, ...elementsToRemove);
48
+ return array;
49
+ }
50
+ /**
51
+ * Removes all of the specified element(s) from the array. If the specified element(s) are not found
52
+ * in the array, this function will do nothing.
53
+ *
54
+ * This function is variadic, meaning that you can specify N arguments to remove N elements.
55
+ *
56
+ * If there is more than one matching element in the array, this function will remove every matching
57
+ * element. If you want to only remove the first matching element, use the `arrayRemoveInPlace`
58
+ * function instead.
59
+ *
60
+ * @returns True if one or more elements were removed, false otherwise.
61
+ */
62
+ export function arrayRemoveAllInPlace(array, ...elementsToRemove) {
63
+ let removedOneOrMoreElements = false;
64
+ for (const element of elementsToRemove) {
65
+ let index;
66
+ do {
67
+ index = array.indexOf(element);
68
+ if (index > -1) {
69
+ removedOneOrMoreElements = true;
70
+ array.splice(index, 1);
71
+ }
72
+ } while (index > -1);
73
+ }
74
+ return removedOneOrMoreElements;
75
+ }
76
+ /**
77
+ * Removes the specified element(s) from the array. If the specified element(s) are not found in the
78
+ * array, this function will do nothing.
79
+ *
80
+ * This function is variadic, meaning that you can specify N arguments to remove N elements.
81
+ *
82
+ * If there is more than one matching element in the array, this function will only remove the first
83
+ * matching element. If you want to remove all of the elements, use the `arrayRemoveAllInPlace`
84
+ * function instead.
85
+ *
86
+ * @returns True if one or more elements were removed, false otherwise.
87
+ */
88
+ export function arrayRemoveInPlace(array, ...elementsToRemove) {
89
+ let removedOneOrMoreElements = false;
90
+ for (const element of elementsToRemove) {
91
+ const index = array.indexOf(element);
92
+ if (index > -1) {
93
+ removedOneOrMoreElements = true;
94
+ array.splice(index, 1);
95
+ }
96
+ }
97
+ return removedOneOrMoreElements;
98
+ }
99
+ /**
100
+ * Shallow copies and removes the elements at the specified indexes from the array. Returns the
101
+ * copied array. If the specified indexes are not found in the array, it will simply return a
102
+ * shallow copy of the array.
103
+ *
104
+ * This function is variadic, meaning that you can specify N arguments to remove N elements.
105
+ */
106
+ export function arrayRemoveIndex(originalArray, ...indexesToRemove) {
107
+ const indexesToRemoveSet = new Set(indexesToRemove);
108
+ const array = [];
109
+ originalArray.forEach((element, i) => {
110
+ if (!indexesToRemoveSet.has(i)) {
111
+ array.push(element);
112
+ }
113
+ });
114
+ return array;
115
+ }
116
+ /**
117
+ * Removes the elements at the specified indexes from the array. If the specified indexes are not
118
+ * found in the array, this function will do nothing. Returns true if one or more elements were
119
+ * removed.
120
+ *
121
+ * This function is variadic, meaning that you can specify N arguments to remove N elements.
122
+ *
123
+ * @returns Whether or not any array elements were removed.
124
+ */
125
+ export function arrayRemoveIndexInPlace(array, ...indexesToRemove) {
126
+ const legalIndexes = indexesToRemove.filter((i) => i >= 0 && i < array.length);
127
+ legalIndexes.sort();
128
+ if (legalIndexes.length === 0) {
129
+ return false;
130
+ }
131
+ for (let i = array.length - 1; i >= 0; i--) {
132
+ array.splice(i, 1);
133
+ }
134
+ return true;
135
+ }
136
+ export function arrayToString(array) {
137
+ if (array.length === 0) {
138
+ return "[]";
139
+ }
140
+ const strings = array.map((element) => tostring(element));
141
+ const commaSeparatedStrings = strings.join(", ");
142
+ return `[${commaSeparatedStrings}]`;
143
+ }
144
+ /**
145
+ * Helper function to combine two or more arrays. Returns a new array that is the composition of all
146
+ * of the specified arrays.
147
+ *
148
+ * This function is variadic, meaning that you can specify N arguments to combine N arrays. Note
149
+ * that this will only perform a shallow copy of the array elements.
150
+ */
151
+ export function combineArrays(...arrays) {
152
+ const elements = [];
153
+ for (const array of arrays) {
154
+ for (const element of array) {
155
+ elements.push(element);
156
+ }
157
+ }
158
+ return elements;
159
+ }
160
+ /**
161
+ * Helper function to perform a shallow copy.
162
+ *
163
+ * @param oldArray The array to copy.
164
+ * @param numElements Optional. If specified, will only copy the first N elements. By default, the
165
+ * entire array will be copied.
166
+ */
167
+ export function copyArray(oldArray, numElements) {
168
+ if (numElements === undefined) {
169
+ numElements = oldArray.length;
170
+ }
171
+ const newArray = [];
172
+ for (let i = 0; i < numElements; i++) {
173
+ const oldElement = oldArray[i];
174
+ if (oldElement !== undefined) {
175
+ newArray.push(oldElement);
176
+ }
177
+ }
178
+ return newArray;
179
+ }
180
+ /** Helper function to remove all of the elements in an array in-place. */
181
+ export function emptyArray(array) {
182
+ array.splice(0, array.length);
183
+ }
184
+ /**
185
+ * Helper function to get all possible combinations of the given array. This includes the
186
+ * combination of an empty array.
187
+ *
188
+ * For example, if this function is provided an array containing 1, 2, and 3, then it will return an
189
+ * array containing the following arrays:
190
+ *
191
+ * - [] (if `includeEmptyArray` is set to true)
192
+ * - [1]
193
+ * - [2]
194
+ * - [3]
195
+ * - [1, 2]
196
+ * - [1, 3]
197
+ * - [2, 3]
198
+ * - [1, 2, 3]
199
+ *
200
+ * From: https://github.com/firstandthird/combinations/blob/master/index.js
201
+ *
202
+ * @param array The array to get the combinations of.
203
+ * @param includeEmptyArray Whether or not to include an empty array in the combinations.
204
+ * @param min Optional. The minimum number of elements to include in each combination. Default is 1.
205
+ * @param max Optional. The maximum number of elements to include in each combination. Default is
206
+ * the length of the array.
207
+ */
208
+ export function getArrayCombinations(array, includeEmptyArray, min, max) {
209
+ if (min === undefined || min <= 0) {
210
+ min = 1;
211
+ }
212
+ if (max === undefined || max <= 0) {
213
+ max = array.length;
214
+ }
215
+ const addCombinations = (n, src, got, all) => {
216
+ if (n === 0) {
217
+ if (got.length > 0) {
218
+ all[all.length] = got;
219
+ }
220
+ return;
221
+ }
222
+ for (let j = 0; j < src.length; j++) {
223
+ const value = src[j]; // eslint-disable-line @typescript-eslint/no-non-null-assertion
224
+ addCombinations(n - 1, src.slice(j + 1), got.concat([value]), all);
225
+ }
226
+ };
227
+ const all = [];
228
+ for (let i = min; i < array.length; i++) {
229
+ addCombinations(i, array, [], all);
230
+ }
231
+ if (array.length === max) {
232
+ all.push(array);
233
+ }
234
+ // Finally, account for the empty array combination.
235
+ if (includeEmptyArray) {
236
+ all.unshift([]);
237
+ }
238
+ return all;
239
+ }
240
+ /**
241
+ * Helper function to get an array containing the indexes of an array.
242
+ *
243
+ * For example, an array of `["Apple", "Banana"]` would return an array of `[0, 1]`.
244
+ */
245
+ export function getArrayIndexes(array) {
246
+ return erange(array.length);
247
+ }
248
+ /**
249
+ * Helper function to return the last element of an array.
250
+ *
251
+ * If the array is empty, this will return undefined.
252
+ */
253
+ export function getLastElement(array) {
254
+ return array[array.length - 1];
255
+ }
256
+ /**
257
+ * Helper function to get a random element from the provided array.
258
+ *
259
+ * @param array The array to get an element from.
260
+ * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
261
+ * `RNG.Next` method will be called. Default is `getRandomSeed()`.
262
+ * @param exceptions Optional. An array of elements to skip over if selected.
263
+ */
264
+ export function getRandomArrayElement(array, seedOrRNG = getRandomSeed(), exceptions = []) {
265
+ if (array.length === 0) {
266
+ error("Failed to get a random array element since the provided array is empty.");
267
+ }
268
+ const arrayWithoutExceptions = arrayRemove(array, ...exceptions);
269
+ const randomIndex = getRandomArrayIndex(arrayWithoutExceptions, seedOrRNG);
270
+ const randomElement = arrayWithoutExceptions[randomIndex];
271
+ if (randomElement === undefined) {
272
+ error(`Failed to get a random array element since the random index of ${randomIndex} was not valid.`);
273
+ }
274
+ return randomElement;
275
+ }
276
+ /**
277
+ * Helper function to get a random element from the provided array. Once the random element is
278
+ * decided, it is then removed from the array (in-place).
279
+ *
280
+ * @param array The array to get an element from.
281
+ * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
282
+ * `RNG.Next` method will be called. Default is `getRandomSeed()`.
283
+ * @param exceptions Optional. An array of elements to skip over if selected.
284
+ */
285
+ export function getRandomArrayElementAndRemove(array, seedOrRNG = getRandomSeed(), exceptions = []) {
286
+ const randomArrayElement = getRandomArrayElement(array, seedOrRNG, exceptions);
287
+ arrayRemoveInPlace(array, randomArrayElement);
288
+ return randomArrayElement;
289
+ }
290
+ /**
291
+ * Helper function to get a random index from the provided array.
292
+ *
293
+ * @param array The array to get the index from.
294
+ * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
295
+ * `RNG.Next` method will be called. Default is `getRandomSeed()`.
296
+ * @param exceptions Optional. An array of indexes that will be skipped over when getting the random
297
+ * index. Default is an empty array.
298
+ */
299
+ export function getRandomArrayIndex(array, seedOrRNG = getRandomSeed(), exceptions = []) {
300
+ if (array.length === 0) {
301
+ error("Failed to get a random array index since the provided array is empty.");
302
+ }
303
+ return getRandomInt(0, array.length - 1, seedOrRNG, exceptions);
304
+ }
305
+ /**
306
+ * Initializes an array with all elements containing the specified default value.
307
+ *
308
+ * For example:
309
+ *
310
+ * ```ts
311
+ * const playerTransformations = initArray(false, PlayerForm.NUM_PLAYER_FORMS - 1);
312
+ * ```
313
+ */
314
+ export function initArray(defaultValue, size) {
315
+ const array = [];
316
+ repeat(size, () => {
317
+ array.push(defaultValue);
318
+ });
319
+ return array;
320
+ }
321
+ /**
322
+ * Since Lua uses tables for every non-primitive data structure, it is non-trivial to determine if a
323
+ * particular table is being used as an array. `isArray` returns true if:
324
+ *
325
+ * - the table contains all numerical indexes that are contiguous, starting at 1
326
+ * - the table has no keys (i.e. an "empty" table)
327
+ */
328
+ export function isArray(object) {
329
+ if (!isTable(object)) {
330
+ return false;
331
+ }
332
+ // First, if there is a metatable, this cannot be a simple array and must be a more complex
333
+ // object.
334
+ const metatable = getmetatable(object);
335
+ if (metatable !== undefined) {
336
+ return false;
337
+ }
338
+ // Second, handle the case of non-numerical keys.
339
+ const keys = Object.keys(object);
340
+ const hasAllNumberKeys = keys.every((key) => isNumber(key));
341
+ if (!hasAllNumberKeys) {
342
+ return false;
343
+ }
344
+ const tableLength = object.length();
345
+ if (tableLength === 0) {
346
+ return true;
347
+ }
348
+ // Third, check for non-contiguous elements. (Lua tables start at an index of 1.)
349
+ for (let i = 1; i <= tableLength; i++) {
350
+ const element = object.get(i);
351
+ if (element === undefined) {
352
+ return false;
353
+ }
354
+ }
355
+ return true;
356
+ }
357
+ /**
358
+ * Helper function to see if every element in the array is N + 1.
359
+ *
360
+ * For example, `[2, 3, 4]` would return true, and `[2, 3, 5]` would return false.
361
+ */
362
+ export function isArrayContiguous(array) {
363
+ let lastValue;
364
+ for (const element of array) {
365
+ if (lastValue === undefined) {
366
+ lastValue = element - 1;
367
+ }
368
+ if (element !== lastValue - 1) {
369
+ return false;
370
+ }
371
+ }
372
+ return true;
373
+ }
374
+ /** Checks if an array is in the provided 2-dimensional array. */
375
+ export function isArrayInArray(arrayToMatch, parentArray) {
376
+ return parentArray.some((element) => arrayEquals(element, arrayToMatch));
377
+ }
378
+ /**
379
+ * Shallow copies and shuffles the array using the Fisher-Yates algorithm. Returns the copied array.
380
+ *
381
+ * From: https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array
382
+ *
383
+ * @param originalArray The array to shuffle.
384
+ * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
385
+ * `RNG.Next` method will be called. Default is `getRandomSeed()`.
386
+ */
387
+ export function shuffleArray(originalArray, seedOrRNG = getRandomSeed()) {
388
+ const array = copyArray(originalArray);
389
+ shuffleArrayInPlace(array, seedOrRNG);
390
+ return array;
391
+ }
392
+ /**
393
+ * Shuffles the provided array in-place using the Fisher-Yates algorithm.
394
+ *
395
+ * From: https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array
396
+ *
397
+ * @param array The array to shuffle.
398
+ * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
399
+ * `RNG.Next` method will be called. Default is `getRandomSeed()`.
400
+ */
401
+ export function shuffleArrayInPlace(array, seedOrRNG = getRandomSeed()) {
402
+ let currentIndex = array.length;
403
+ const rng = isRNG(seedOrRNG) ? seedOrRNG : newRNG(seedOrRNG);
404
+ while (currentIndex > 0) {
405
+ currentIndex -= 1;
406
+ const randomIndex = getRandomArrayIndex(array, rng);
407
+ swapArrayElements(array, currentIndex, randomIndex);
408
+ }
409
+ }
410
+ /** Helper function to sum every value in an array together. */
411
+ export function sumArray(array) {
412
+ return array.reduce((accumulator, element) => accumulator + element);
413
+ }
414
+ /**
415
+ * Helper function to swap two different array elements. (The elements will be swapped in-place.)
416
+ */
417
+ export function swapArrayElements(array, i, j) {
418
+ const value1 = array[i]; // eslint-disable-line @typescript-eslint/no-non-null-assertion
419
+ const value2 = array[j]; // eslint-disable-line @typescript-eslint/no-non-null-assertion
420
+ array[i] = value2;
421
+ array[j] = value1;
422
+ }
423
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9pc2FhY3NjcmlwdC1jb21tb24vc3JjL2Z1bmN0aW9ucy9hcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixNQUEwQixFQUMxQixNQUEwQjtJQUUxQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNuQyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxPQUFPLGFBQWEsS0FBSyxhQUFhLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQ3pCLGFBQWlDLEVBQ2pDLEdBQUcsZ0JBQXFCO0lBRXhCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2QyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUM1QixhQUFpQyxF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
@@ -498,3 +498,5 @@ function ____exports.sumArray(self, array)
498
498
  )
499
499
  end
500
500
  return ____exports
501
+
502
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL2FycmF5LnRzIl0sIm5hbWVzIjpbInJlcGVhdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQkFBNkI7QUFBcEI7QUFDVCxnQkFBNkM7QUFBcEM7QUFBZTtBQUFPO0FBQy9CLGtCQUFrQztBQUF6QjtBQUFVO0FBQ25CLGtCQUErQjtBQUF0QjtBQUFRLE1BQUFBOzs7Ozs7Ozs7OztBQXdFakIsaURBQ0U7VUFDRztBQUVDLHFDQUEyQjtBQUMvQixjQUFXLGtCQUFXO0FBQ2hCOzs7QUFFRix3QkFBUSwwQkFBYzttQkFDbEIsU0FBUztBQUNYLCtDQUEyQjtvQkFDM0IseUJBQWEsT0FBTzs7O2NBRWYsY0FBUzs7QUFHcEIsV0FBTztBQWhCVDs7Ozs7Ozs7Ozs7QUErQkEsOENBQ0U7VUFDRztBQUVDLHFDQUEyQjtBQUMvQixjQUFXLGtCQUFXO0FBQ2Qsc0JBQVEsMEJBQWM7V0FDeEIsU0FBUztBQUNYLHVDQUEyQjtZQUMzQix5QkFBYSxPQUFPOzs7QUFJeEIsV0FBTztBQWJUOzs7Ozs7QUF1R0EscUNBQ0UsVUFDQTtPQUVJO0FBQ0Ysc0JBQWM7O0FBR1YscUJBQWdCOztBQUNiLGtCQUFJO2NBQUcsSUFBSTtBQUNaLCtCQUFhLFNBQVM7ZUFDeEI7QUFDRiwwQ0FBYzs7QUFIZTs7O0FBT2pDLFdBQU87QUFoQlQ7Ozs7Ozs7O0FBa0xBLCtDQUNFLE9BQ0EsV0FDQTtPQURBO1FBQUEsWUFBd0I7O09BQ3hCO1FBQUEsYUFBcUM7O09BRWpDLFVBQWlCO1FBQ25CLE1BQ0U7O0FBSUosV0FBTzs7UUFBYTtRQUFHLFNBQWU7UUFBRztRQUFXOztBQVh0RDs7Ozs7Ozs7QUFrSUEsK0NBQ0UsT0FDQTtPQUFBO1FBQUEsWUFBd0I7O0FBRXBCLHlCQUFlO0FBRWIsZ0JBQU0sV0FBTSxlQUFhLGFBQVksWUFBTztVQUUzQyxlQUFlO0FBQ3BCLHNDQUFnQjtBQUVWLDRC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
@@ -0,0 +1,28 @@
1
+ import { log } from "./log";
2
+ /**
3
+ * Helper function to benchmark the performance of a function.
4
+ *
5
+ * This function is variadic, which means that you can supply as many as you want to benchmark.
6
+ *
7
+ * @returns An array containing the average time in milliseconds for each function. (This will also
8
+ * be printed to the log.)
9
+ */
10
+ export function benchmark(numTrials, ...functions) {
11
+ log(`Benchmarking ${functions.length} function(s) with ${numTrials} trials.`);
12
+ const averages = [];
13
+ functions.forEach((func, i) => {
14
+ let totalTimeMilliseconds = 0;
15
+ for (let j = 0; j < numTrials; j++) {
16
+ const startTimeMilliseconds = Isaac.GetTime();
17
+ func();
18
+ const endTimeMilliseconds = Isaac.GetTime();
19
+ const elapsedTimeMilliseconds = endTimeMilliseconds - startTimeMilliseconds;
20
+ totalTimeMilliseconds += elapsedTimeMilliseconds;
21
+ }
22
+ const averageTimeMilliseconds = totalTimeMilliseconds / numTrials;
23
+ log(`The average time of the function at index ${i} is: ${averageTimeMilliseconds} milliseconds`);
24
+ averages.push(averageTimeMilliseconds);
25
+ });
26
+ return averages;
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2htYXJrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvaXNhYWNzY3JpcHQtY29tbW9uL3NyYy9mdW5jdGlvbnMvYmVuY2htYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFNUI7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLFNBQWMsRUFDZCxHQUFHLFNBQTRCO0lBRS9CLEdBQUcsQ0FBQyxnQkFBZ0IsU0FBUyxDQUFDLE1BQU0scUJBQXFCLFNBQVMsVUFBVSxDQUFDLENBQUM7SUFFOUUsTUFBTSxRQUFRLEdBQVUsRUFBRSxDQUFDO0lBQzNCLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsSUFBSSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5QyxJQUFJLEVBQUUsQ0FBQztZQUNQLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVDLE1BQU0sdUJBQXVCLEdBQzNCLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO1lBQzlDLHFCQUFxQixJQUFJLHVCQUF1QixDQUFDO1NBQ2xEO1FBQ0QsTUFBTSx1QkFBdUIsR0FBRyxxQkFBcUIsR0FBRyxTQUFTLENBQUM7UUFDbEUsR0FBRyxDQUNELDZDQUE2QyxDQUFDLFFBQVEsdUJBQXVCLGVBQWUsQ0FDN0YsQ0FBQztRQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN6QyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMifQ==
@@ -36,3 +36,5 @@ function ____exports.benchmark(self, numTrials, ...)
36
36
  return averages
37
37
  end
38
38
  return ____exports
39
+
40
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL2JlbmNobWFyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnQkFBb0I7QUFBWDs7Ozs7OztBQVVULHFDQUNFO1VBQ0c7SUFFSCxPQUFJLDRCQUFnQixnQkFBZ0Isa0NBQXFCLGVBQVM7QUFFNUQscUJBQWtCO0lBQ3hCO1FBQUE7UUFBa0IsZUFBQyxNQUFNO0FBQ25CLDBDQUF3Qjs7QUFDbkIsMEJBQUk7c0JBQUcsSUFBSTtBQUNaLGtEQUF3QjtvQkFDOUI7QUFDTSxnREFBc0I7QUFDdEIsb0RBQ0osc0JBQXNCO0FBQ3hCLG9FQUF5QjtBQU5JOzs7QUFRekIsNENBQTBCLHdCQUF3QjtZQUN4RCxPQUNFLHlEQUE2QyxPQUFDLHFCQUFRLDZCQUF1QjtBQUUvRSxzQ0FBYztRQWRFOztBQWlCbEIsV0FBTztBQXhCVCIsImZpbGUiOiJiZW5jaG1hcmsubHVhIiwic291cmNlUm9vdCI6IiJ9
@@ -0,0 +1,74 @@
1
+ import { addFlag } from "./flag";
2
+ /** Helper function to convert a set of flags to a single `BitFlags` object. */
3
+ export function arrayToBitFlags(array) {
4
+ let flags = 0;
5
+ for (const flag of array) {
6
+ flags = addFlag(flags, flag);
7
+ }
8
+ return flags;
9
+ }
10
+ /** Helper function to convert an array of bits to the resulting decimal number. */
11
+ export function convertBinaryToDecimal(bits) {
12
+ const bitsString = bits.join("");
13
+ return parseInt(bitsString, 2);
14
+ }
15
+ /**
16
+ * Helper function to convert a number to an array of bits.
17
+ *
18
+ * @param number The number to convert.
19
+ * @param minLength Optional. Equal to the minimum amount of bits that should be returned. If the
20
+ * converted number of bits is below this number, 0's will be padded to the left
21
+ * side until the minimum length is met. Default is undefined (which will not cause
22
+ * any padding).
23
+ */
24
+ export function convertDecimalToBinary(number, minLength) {
25
+ const bits = [];
26
+ const bitsString = number.toString(2);
27
+ for (const bitString of bitsString) {
28
+ const bit = tonumber(bitString);
29
+ if (bit === undefined) {
30
+ error(`Failed to convert the following number to binary: ${number}`);
31
+ }
32
+ bits.push(bit);
33
+ }
34
+ if (minLength !== undefined) {
35
+ while (bits.length < minLength) {
36
+ bits.unshift(0);
37
+ }
38
+ }
39
+ return bits;
40
+ }
41
+ /**
42
+ * Helper function to count the number of bits that are set to 1 in a binary representation of a
43
+ * number.
44
+ */
45
+ export function countSetBits(n) {
46
+ let count = 0;
47
+ while (n > 0) {
48
+ n &= n - 1;
49
+ count += 1;
50
+ }
51
+ return count;
52
+ }
53
+ /** Helper function to get the value of a specific but in a binary representation of a number. */
54
+ export function getKBitOfN(k, n) {
55
+ return (n >>> k) & 1;
56
+ }
57
+ /** Helper function to get the number of bits in a binary representation of a number. */
58
+ export function getNumBitsOfN(n) {
59
+ let numBits = 0;
60
+ while (n > 0) {
61
+ numBits += 1;
62
+ n >>>= 1;
63
+ }
64
+ return numBits;
65
+ }
66
+ /** Helper function to convert a set of flags to a single `BitFlags` object. */
67
+ export function setToBitFlags(set) {
68
+ let flags = 0;
69
+ for (const flag of set.values()) {
70
+ flags = addFlag(flags, flag);
71
+ }
72
+ return flags;
73
+ }
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0d2lzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL2JpdHdpc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVqQywrRUFBK0U7QUFDL0UsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsS0FBeUI7SUFFekIsSUFBSSxLQUFLLEdBQUcsQ0FBZ0IsQ0FBQztJQUM3QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtRQUN4QixLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM5QjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELG1GQUFtRjtBQUNuRixNQUFNLFVBQVUsc0JBQXNCLENBQUMsSUFBVztJQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBYyxFQUFFLFNBQWU7SUFDcEUsTUFBTSxJQUFJLEdBQVUsRUFBRSxDQUFDO0lBRXZCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUU7UUFDbEMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUNyQixLQUFLLENBQUMscURBQXFELE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDdEU7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2hCO0lBRUQsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFO1FBQzNCLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQjtLQUNGO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxDQUFNO0lBQ2pDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUVkLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNaLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsS0FBSyxJQUFJLENBQUMsQ0FBQztLQUNaO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsaUdBQWlHO0FBQ2pHLE1BQU0sVUFBVSxVQUFVLENBQUMsQ0FBTSxFQUFFLENBQU07SUFDdkMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELHdGQUF3RjtBQUN4RixNQUFNLFVBQVUsYUFBYSxDQUFDLENBQU07SUFDbEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNaLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFDYixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ1Y7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsK0VBQStFO0FBQy9FLE1BQU0sVUFBVSxhQUFhLENBQzNCLEdBQTRCO0lBRTVCLElBQUksS0FBSyxHQUFHLENBQWdCLENBQUM7SUFDN0IsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDL0IsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDOUI7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMifQ==
@@ -75,3 +75,5 @@ function ____exports.setToBitFlags(self, set)
75
75
  return flags
76
76
  end
77
77
  return ____exports
78
+
79
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL2JpdHdpc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsaUJBQXdCO0FBQWY7O0FBR1QsMkNBQ0U7QUFFSSxrQkFBUTtBQUNaLGNBQVcsZUFBUTtBQUNqQixnQkFBUSxhQUFRLE9BQU87O0FBR3pCLFdBQU87QUFSVDs7QUFZQSxrREFBdUM7QUFDL0IsdUJBQWEsbUJBQVU7QUFDN0IsV0FBTyxlQUFTLFlBQVk7QUFGOUI7Ozs7Ozs7O0FBY0Esa0RBQXVDLFFBQWdCO0FBQy9DLGlCQUFjO0FBRWQsdUJBQWEsNkJBQWdCO0FBQ25DLGNBQVcsYUFBYTtBQUNoQixvQkFBTSxTQUFTO1dBQ2pCO1lBQ0YsTUFBTSxpRUFBcUQ7O0FBRTdELDBCQUFVOztPQUdSO2NBQ0ssUUFBYztZQUNuQix5QkFBYTs7O0FBSWpCLFdBQU87QUFsQlQ7OztBQXlCQSx3Q0FBNkI7QUFDdkIsa0JBQVE7VUFFTCxJQUFJO0FBQ1QsZ0JBQUssSUFBSTtBQUNULHdCQUFTOztBQUdYLFdBQU87QUFSVDs7QUFZQSxzQ0FBMkIsR0FBUTtBQUNqQyxXQUFPLEtBQU8sSUFBSztBQURyQjs7QUFLQSx5Q0FBOEI7QUFDeEIsb0JBQVU7VUFDUCxJQUFJO0FBQ1QsNEJBQVc7QUFDWCxpQkFBTzs7QUFHVCxXQUFPO0FBUFQ7O0FBV0EseUNBQ0U7QUFFSSxrQkFBUTtBQUNaLGNBQVcsUUFBUSxtQkFBSTtBQUNyQixnQkFBUSxhQUFRLE9BQU87O0FBR3pCLFdBQU87QUFSVCIsImZpbGUiOiJiaXR3aXNlLmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
@@ -0,0 +1,11 @@
1
+ /** Helper function to find out how large a bomb explosion is based on the damage inflicted. */
2
+ export function getBombRadiusFromDamage(damage) {
3
+ if (damage > 175) {
4
+ return 105;
5
+ }
6
+ if (damage <= 140) {
7
+ return 75;
8
+ }
9
+ return 90;
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9tYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9pc2FhY3NjcmlwdC1jb21tb24vc3JjL2Z1bmN0aW9ucy9ib21icy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrRkFBK0Y7QUFDL0YsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE1BQWE7SUFDbkQsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFO1FBQ2hCLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUU7UUFDakIsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyJ9
@@ -10,3 +10,5 @@ function ____exports.getBombRadiusFromDamage(self, damage)
10
10
  return 90
11
11
  end
12
12
  return ____exports
13
+
14
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL2JvbWJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsbURBQXdDO09BQ2xDLFNBQVM7QUFDWCxlQUFPOztPQUdMLFVBQVU7QUFDWixlQUFPOztBQUdULFdBQU87QUFUVCIsImZpbGUiOiJib21icy5sdWEiLCJzb3VyY2VSb290IjoiIn0=